I badly wanted to learn how to code for so long, but kept putting it off because I thought it was too hard, it would take years or perhaps a computer science degree, and there was so much contradictory information out there that I didn't even know where to start. In short I was overwhelmed. It took me many years of dabbling and false starts until I finally made the leap from non-coder to coder last year. Here are the five steps that I took that ultimately lead to my learning success:
1. Get Inspired
The first and most crucial step to learning how to code is to get really excited. The prospect of becoming a creator is intoxicating, so this is the easy part. It’s critical that you immerse yourself in the coding culture and see the amazing things that you can do with coding. Read a book like being digital, watch movies like Pirates of the Silicon Valley, and make Hacker News your home page. If you haven’t read Paul Graham’s essays, do so. Attend a meet up like NYConRails where new developers show off their first projects and talk to them about their experience. If you aren't really into the idea of coding in the first place, you won't have the motivation to do any of the next steps.
2. Get Committed
Success in learning how to code is much more about your work ethic than your intellect. To go from having no coding experience to being able to make cool things on your own and be employable you’ll need to put in around 1000 hours of work. Anyone claiming there is a faster way is selling you snake oil. The only short cut is if you have an incredible intellectual gift for coding. I’ve met a few amazing people where learning how to code probably took a fraction of that time. They are extremely rare, and you should assume you are not one of them, regardless of how bright you are in other areas. For the vast majority of us, you need to put in the time to get the results. It is essential that you make this time commitment, and that you have enough grit to not give up when the going gets tough (which at times it will).
3. Get Conceptual
I strongly believe your first step in learning should be a high level overview of computer science. I’ve taken a bunch of intro to computer science classes online and hands down the best is Harvard’s CS50. It will give you the foundation you need to be ready for the practical knowledge you learn later. You will learn about concepts such as algorithms, loops, hashes, arrays, searching, how computers work, how the internet works and so much more. Don’t worry about doing the homework exercises in C - without TA’s you can easily go down rabbit holes. Just watch the lectures, play around with Scratch, and you'll be fine.
4. Get Practical
Learning about things like loops and arrays from the CS50 class is great in theory, but it won’t help you write code in javascript or ruby. I suggest that you learn HTML, CSS, Javascript, and Ruby generally following the Flatiron School's prework curriculum. This took me about 150 hours, but I already had some previous knowledge in these subjects, so it could take you more time. In general when thinking about what order you want to learn a particular subject, I would start off doing basic exercises on codecademy, then move on to do videos and questions on treehouse, then do challenging coding exercises on codeschool.
5. Get Help
Doing all of this on your own is just not possible for most of us. At some point you are going to get stuck. This will lead you to become discouraged after a while, which is why a lot of people end up quitting. This happened to me a few times when I was trying to learn on my own. It doesn’t have to be that way though. Ask for help on stackoverflow, go to tech meet ups, find a mentor, take a skill share class. If you can get through the first hundred or so hours on your own and are still really serious, the best thing you can do is go to a program like The Flatiron School. I did this last year, and it is the reason I was finally able to learn how to code. Immersing yourself in a high-intensity, challenging learning environment will dramatically accelerate your progress, and give you access to the mentors to guide you and the peers to support you.
Learning to code is a long and difficult journey. To actually see a big goal like this through you'll need a game plan, which I hope I have provided. Although it was not easy to make this transition, it has been really wonderful for my life. Making software energizes me, stimulates my creativity, and gives me a sense of pride every day. It's hard but totally possible, and if it's something you want you should go for it with all you've got.