musings on music and life

December 16, 2016

My experiences with learning “Data Science” in 2016

Filed under: Coding, Data Science — sankirnam @ 11:21 pm

Well, 2016 is drawing to a close…

This has been a weird year globally, with the death of a lot of influential people in history (including, among others, Muhammad Ali and lately J. Jayalalitha, the Chief Minister of Tamil Nadu, India), and some other strange political occurrences (Brexit and Trump getting elected). I haven’t posted here much because I have a million thoughts swirling around my mind all the time now, and finding a couple of hours of focused time in order to distill them down into an article on a single topic is a bit challenging. Nonetheless, there is something that I want to discuss today.

Firstly, I had the sobering realization a few days ago that it has been 2 years since I finished my PhD and I have nothing concrete to show for it; I’ve been unemployed for the past two years. Well, I’ve learned some valuable things about life and other topics which I wouldn’t have been able to learn otherwise, but it has been at a rather expensive cost: progress in my career.

In any case, one of the major themes of this year (for me) was that I made major progress in learning programming! I want to share what I learned so that others who are thinking of venturing down this path can learn from my experiences.

Firstly, my motivation in learning to code resulted in me being a little unfocused; I was unemployed and seeing a lot of people around me getting hired for cushy tech jobs with great salaries. Desperation shouldn’t be your only motivation for trying something. I was also unaware of the vast variety of “coding” jobs out there, and they can be quite different; CSS is considered “coding”, but it is vastly different from doing software development in C++, for instance.

I’m all for teaching computer science principles in the grade school level; the basics of control flow are not terribly complicated – it’s just logic, after all. Understanding looping, recursion, iterations, and conditionals does not require a very advanced background in any other subject, and knowing these will take you very far later on in life. I’m a strong believer that everyone should learn to code, given the increasing automation that is threatening all industries today. Those who can code will be the last people to have their jobs automated out of existence, pure and simple.

All this being said, I started my journey down this rabbit hole with Codecademy. I highly recommend this for others who also have no formal background in programming/CS, as it eases you into the relevant concepts of the language of your choice. It’s a great place to learn the higher-level languages (such as JavaScript, Python, and Ruby), but keep in mind that the courses are introductory, and very short (they can be completed in a few hours). They’re designed to give you just enough knowledge so that you can go out and keep learning on your own or from other sources.

After Codecademy, my next stop was FreeCodeCamp. FreeCodeCamp is amazing, and I hope it grows from strength to strength over time. It is the brainchild of Quincy Larson, and it attempts to create a fairly rigorous curriculum in Full-Stack Web Development starting from scratch; no prior knowledge is required, like Codecademy. The first lesson is literally “Hello World!”. It starts off with a comprehensive coverage of the front-end (website building with HTML and CSS), and also covers responsive design using Twitter’s Bootstrap API. It then progresses into JQuery and vanilla JavaScript, and it has you also do some pretty challenging algorithm challenges, which reinforce your understanding of all the methods and properties in JavaScript. The bonus with FreeCodeCamp is that it also has you working on projects, which can be incorporated into a portfolio so that you have something to show to prospective employers.

Web Development has the lowest barrier to entry among all the different types of programming, and that’s why places like FreeCodeCamp thrive. It was after doing it for a while that I realized webdev wasn’t for me, however; I don’t have the patience to mess around with DOM elements and get that alignment juuuuust right; if I really had to choose, I would be more comfortable doing back-end stuff.

I continued working on JavaScript and FreeCodeCamp while applying to programming bootcamps in April-May 2016, and eventually ended up taking a “Data Science” bootcamp by Logit in Hollywood. I wrote about it earlier,  so there’s no need to reiterate what’s already been said. I felt like “Data Science” would be the best fit, given what I had experienced with programming thus far, and also (naively) thought it would give me the best ability to leverage my PhD.

I used the word “naively” in the previous paragraph; here’s what I learned:

  1. Getting a job after a bootcamp is all about how strong your resume is prior to the bootcamp. Now, that may not seem fair, as people want to go to bootcamps to “reset” their careers and get a fresh start, but the reality is that you really can’t learn much in just 12 weeks. And now that bootcamps are getting more popular, employers are looking for other ways to distinguish you from the hundreds or thousands of other people who are also taking bootcamps. Sure, you took a JavaScript bootcamp, but what else stands out? Do you have an advanced degree (MS/PhD) or did you go to a top university (Harvard/Stanford/MIT/Caltech/CMU etc.)? Do you have relevant prior work experience?
  2. In “Data Science”, degrees in CS, math, statistics, computational fields (e.g. computational biology), biostatistics, or physics are extremely sexy. If you have one, flaunt it as much as you can! Any other degree (including my PhD in Organic Chemistry, as I discovered) is worthless in this context. That’s because “Data Science” is a poorly defined field and a lot of employers still don’t know what they want. If you look at job descriptions, most will require knowledge of a scripting language (R or Python), Java, a lower-level language (C or C++), thorough understanding of SQL, and Bash scripting (on Linux). These are not things you can pick up in a few weeks at a bootcamp.
  3. The “Data Science” market is cooling off right now. A few years ago, there was a massive hype surrounding “Data Science”, and there were numerous articles talking about how there was a critical shortage of “Data Scientists” in the country. My experiences have shown the opposite, however – it took one of my friends in my cohort (who has a PhD in physics, one of the “sexy” subjects I mentioned above), about 4 months to land a job after the bootcamp.

So – what useful, actionable advice can I give after all this? What I can say is that if you want to learn “Data Science”, all the material is available online for free. The advantage with a bootcamp is that it gives you a roadmap of what to study, as well as connections – to your classmates, instructors, and other people who the organization is affiliated with. Out of all the courses I’ve seen and taken online regarding “Data Science”, this progression is probably the best, and most logical (feel free to leave comments if you have other suggestions):

  1. Start with Codecademy if you have 0 programming experience. If you want to get into Web Development, complete the JavaScript, HTML, CSS and related tracks, and then dive right into FreeCodeCamp. Otherwise, if you think you may want to do Data Science or want to have a broader understanding of CS fundamentals, stick with Python.
    N. B. Something to keep in mind: if you have no prior experience with programming, don’t worry about R. R is a specialized language for statistics; it is written by statisticians for statisticians, and the syntax is very challenging even for experienced programmers.
  2. Once you’ve completed Codecademy, the next course I would take is MIT’s 6.00.1x Intro CS course on EdX. I have taken this course myself and I have written about it. This course gives you a fantastic intro to the fundamentals of computer science at a fairly rigorous academic level, and it uses Python as well, so that should give you more practice with programming in vanilla Python. The follow-up course 6.00.2x is also good and covers more advanced topics including algorithms, random walks, and other topics, which should put you in a good position to learn more about “Data Science”.
  3. HarvardX’s PH526x course on EdX is a good follow up to this sequence, since it introduces a lot of the popular Python packages for “Data Science” including numpymatplotlib, Pandas, and others. I also just finished the course earlier this week and will put my thoughts on it in a separate post here.
  4. Microsoft DAT210x on EdX is also highly recommended, and I also wrote about it after completing the course. This course gives plenty of practice with machine learning, and will put you in a good position to learn more about any of the algorithms in the course (K-Means, KNN, SVM, Random Forest, and others).

So – after taking all of these courses, THEN you can think about joining a bootcamp to further your knowledge. I wish I had done all the above courses before I did the “Data Science” bootcamp this summer; I would have been in a better position to learn, absorb, and better assimilate the material. But what’s done is done, and I’m continuing to learn Python, Machine Learning, and “Data Science” concepts at my own pace. I’m continuing to practice vanilla Python on Hackerrank, and you can follow my progress on my github – I’m trying to make github commits on a regular basis so that it makes a favorable impression on whoever happens to stumble across it! Interestingly, some of my repositories are getting a fair bit of traffic….so, you never know!

I sincerely hope that this rather “stream-of-consciousness” post helps you, if you do decide to venture down this path!

 

Advertisements

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: