Matt Gibb sent around the following on the 80k alumni list, and said I could pass it on - thought people reading this post might be interested: "A couple of people have asked for recommendations on the quickest way to learn. I have a limited perspective, but I have spent the last 8 years developing, have attended one bootcamp (Insight Data Science), which was per unit time the single most valuable educational experience I have ever had, and I have been able to visit many of the top bootcamps in the Bay: HackReactor, AppAcademy, Hackbright, Makersquare etc. I know many of the founders personally and/or have taken investment from them. Anyway, here's my 2 cents that I believe will be helpful, based on what I have seen work. Take it with a hefty pinch of salt.
- If you are going to learn one web development language, learn Javascript. It is hacky, but it is the only browser language (ignoring clojurescript, scala.js etc. which you might consider tackling much later), you can cobble together the whole stack in it: frontend, backend (node, meteor, sails.js), database (mongo, rethinkdb, firebase). HackReactor have a JS-only syllabus, and are one of the top schools in the world.
- If you are going to learn one sql database, learn Postgres.
- If you are going to learn one frontend framework, learn React.js. Angular's source code and design are a bit messy and you will ship a faster, more reliable product with React. With React Native, you will soon be able to deliver iOS and Android apps in too.
- If you are going to learn one data/machine learning language, learn Python (numpy, scipy, pandas, scikit-learn).
After the above:
- If you are going to learn one Big Data language, learn Scala (spark, akka, http://www.reactivemanifesto.org/, https://www.coursera.org/course/reactive)
I have found codeschool.com really helpful, but I know there are many other great resources out there which I haven't played with.
I would recommend going to a (well-regarded) bootcamp over self study, because you will make progress at about 3 times the rate for a few reasons:
- The courses are designed to focus aggressively on the most important/high ROI things to learn. When I was getting started, I found I would just be diffusing through this unknown space of related technologies with little idea what was most important, and ending up learning a load of unimportant trivia along the way.
- You will end up stuck on a missing semicolon or closing bracket for 10 minutes, not 2 days.
- You will be surrounded by smart, determined people that will push you to be your best and give you valuable solicited (and unsolicited!) feedback
- Every day you will be immersed in creative ideas and evolving products that will influence your own
- You can ask any question you can imagine and almost certainly get an informed answer quickly
For example to automatically test a batch of solar cells on performance, match supply and demand on the electricity grid, help a doctor find a tumor in an MRI image, process a lot of money traffic. These things do not typically happen on a consumer website.
Learning to code will allow you to do all these things. Coincidentally, part of my PhD was in in image segmentation/registration, I am building a real-time Dutch auction now to drive down costs for students, and the solutions/skills required are much closer to web dev than you might think. Don't worry just get started :)"
I'd like to add some more information to this.
As mentioned, front-end coders are in less demand and are paid less. There's a very good reason for this... it is MUCH easier to learn. It's best to pick up design ability as well as coding ability if you want to earn-to-give through front-end.
Some of the last languages on the list are for data science programming. While there's crossover applicability of these to regular programming, they are, for the most part, easier to learn and with some great salaries themselves. There's also great demand for data scientists. So don't dismiss R because it's 20th most popular... that also means that there isn't enough supply, and it has the benefit of being relatively easy to learn.
I recommend looking at the momentum of languages as well. One example of positive momentum is Javascript; a number of JS-based frameworks are becoming popular, and it is becoming more and more used for front-end, back-end, and all other aspects of web dev. Python is one that's becoming learned initially more because of its versatility; it's used for web dev as well as data science.