My purpose with this post it not to make a case about why you should become a developer (or if you should become one at all), I will do that another time. I’m here, because a lot of people have asked me how. One way of course would be to spend years at a university, but on one hand you would learn a lot of theory that you don’t really need for a first job and can learn later, on the other hand you would have to learn and practice the basics on your own anyways. Programming bootcamps are also a good accelerator for learning programming, but I’m going to assume that you are all alone in a cave, and all you have is a laptop and internet.
Word of warning: this is NOT going to be easy. You will probably gain some confidence at first, but inevitably you will arrive to a point where you feel like you are not cut out for this. That is normal, and Why Learning to Code is So Damn Hard by Erik Trautman explains the reasons behind it. At some point everyone is on the verge of giving up, because you need to train your brain for a different form of thinking and that takes time and persistence. Nobody is born with this ability, and almost everyone can learn it. The trick is not to give up, take your time, and do not relent.
The first thing I usually suggest people is to either go through the Django Girls tutorial or try Code Combat or even both. The goal here is to get a general feel of how programming works. Note that Code Combat is meant for children, but I think it’s fun for adults as well. Don’t spend much time on these though. It’s just an appetizer.
Next you can go to Codecademy and Coursera and enroll into some beginner courses. Codecademy is better for learning the basics of a language while Coursera is a great place for learning theory behind coding.
Try to find an introductory course to a language of your choice. (If unsure, go with Python. It’s a beginner friendly language, and a well marketable knowledge.) Once you start to gain some confidence pick some simple project like doing a minesweeper remake that let’s you practice the basics.
While you learn the ins and outs of a language enroll into a “fundamentals of computing” course. (Coursera has one with this very title.) After you finished that one your next stop should be some sort of Algorithms 101. Although this later one will not be necessary to gain confidence in coding, you should be prepared for algorithmic questions by the time you start interviewing for actual positions.
Note that Coursera is free as long as you don’t need a degree. If you use Coursera for free you can not enroll into specializations (multiple courses in a bundle) but you can see the list of courses included in the specialization and enroll into them one by one.
Once you have gone through a couple of introductory courses with the language of your choice, you will need to practice. The best way to do that is to head to CodeWars and Hackerrank. These sites do not teach programming, but provide a plethora of programming exercises you can sharpen your skills on.
At this point you should be able to solve any bite sized programming challenge. The next step is learning how to write sustainable code. Once you learned the basics you will inevitably run into the problem of your code getting all tangled up, and as you add to the project it will get harder and harder to move on. Robert C. Martin is an expert at explaining the techniques for avoiding that. You can either read his books Clean Code, Clean Coder, Clean Architecture, or watch his Clean Coders video series. (The later one is pretty expensive, so I recommend the books.)
Finally pick a larger project, like building a photo sharing website or blog engine. Spend a few weeks working on it, adding more and more features, and see how well you can maintain your code as it gets bigger.
That’s it! Once you have gone through all of that material, you should be prepared for your first ever interview. I suggest trying some companies that you are not very excited about, since you will need to get some experience with the interviews. Once you start getting offers you should submit your CV to companies where you would really like to work.
Note that doing all that will take you anywhere between half a year to two years depending on how much time you can devote to practicing, but once you get there it will be totally worth the effort you put into it.
One thing you need to be aware of, is that Google, Facebook, Amazon and similar tech giants are not likely to be your first employer if you take this route. These companies require a deep understanding of algorithms that takes time to develop. Once you have your first job as a software developer you can start aiming higher by reading The Algorithm Design Manual by Steven S. Skiena and practicing the exercises in Cracking the Coding Interview by Gayle Laakmann McDowell.
Some additional tips
While going through all of this material alone is an option, you might have a much easier — although still pretty hard — journey if you can find people to help you out. Be ready to ask questions when you need to. If you have a friend who is a programmer, try to get them to be your mentor. They don’t need to teach you anything, just answer your questions from time to time when you get stuck. Don’t overwhelm your mentor though, try to find the answers yourself first.
It is also immensely useful to have a companion on the journey. If some of your friends are planning to learn coding as well, team up, and start the journey together. When either of you gets stuck, the other might be able to help you out before you go and ask your mentor. Also, practicing in pairs can be way more effective than working alone.
Find a community of developers. Most cities have meetups where you can befriend other developers. If you can find a local group organizing coding dojos, Coderetreats or Lean Pokers make sure you frequent those events. (All three can be attended with absolutely minimal knowledge.) It’s also a great place to find a mentor if you didn’t manage to do so so far.
Finally remember: google is your best friend, and stack overflow knows the answer to most of your questions. Don’t shy away from trying to look for a solution online. Remember that most programmers will look things up online multiple times a day even with years of experience. If you get an error message, just copying and pasting it into google will probably get you much-much closer to a solution than trying to decipher that message alone.