A year ago, I had zero programming experience. For the last month I’ve been working at Melange as a front-end engineer with React Native. How did I get here?
Once I settled on learning to code (post coming soon) I took CS50x, Harvard’s introduction to computer science. It was great and I happily recommend it to anybody. The first lecture is a pleasure to watch even on its own.
After that, I began the Odin Project (more on that choice below). It took me about eight months to finish. I did the Node route and didn’t do the final project. I went part-time at my job as a library cataloguer and was able to reserve 20 hours a week for learning. It went like this:
Work: Mondays, Tuesdays, and Wednesday mornings.
Code: Wednesday afternoons, Thursdays, and Fridays.
However, I spent a lot of my ‘free’ time coding (or reading documentation, tutorials, etc.). Super roughly, I’d say I spent 35-40 hours a week on the whole venture. That was from May to November. In November, I quit my job and moved across the country with my girlfriend (who bought a house!). I started working on TOP full-time, so maybe bump the hours up to 50. You can see this in my GitHub contributions, ha ha.
I was extremely lucky to have the savings to spend that time on TOP. I think somebody working full-time without dependents to support could complete it in a year, very roughly.
There are more or less three routes for learning to code:
- Get a CS degree
- Attend a bootcamp
- Teach yourself
The problem with #1 is that it takes four years and a chunk of money. I decided to learn to code at 26. I did not want to finish at 30.
I briefly considered #2, but friends discouraged it. I'm glad they did. In the abstract, Lambda School's model seems great and far superior to the traditional university model, but they and the bootcamp industry seem like a huge mess.
So I settled on #3. But even with that, there are a lot of potential routes. FreeCodeCamp, CodeAcademy, Udemy courses, etc. Again and again I heard there was an issue of hand-holding with the first two: students learn introductory skills, but are never really thrown at challenging projects on their own. I also tried to keep in mind the problem with autodidacticism: The likelihood that small gaps in knowledge will creep in without the learner knowing. When you don’t know what you don’t know, it’s pretty hard to guess at what you need to know! So I knew I wanted a comprehensive curriculum without handholding. And I knew I wanted something that would lead to a portfolio I could use toward getting a job.
Somehow, I found the Odin Project, and it was exactly what I wanted. It's a free curriculum with a Discord. To finish you have to git gud at trying things on your own and persevering. It requires actually setting up an IDE and Git (and Linux!). The internal lessons are thorough with plentiful external links to expand on concepts. When I finished projects, I could actually deploy them to GitHub Pages (and eventually, Firebase and Netlify). It feels really good to show friends projects you're proud of. I'm still proud of recreating Twitter.
What didn’t work
Were there gaps in TOP? Not really. I think it could benefit from a lesson on serverless functions (especially because it recommends using Firebase on one or two projects), but overall it was incredibly thorough and I would happily recommended it. Some asides:
Using modules and factory functions in the Tic Tac Toe project was a bit much for me to wrap my head around at the time.
There are no TAs or profs, so your best hope on problem-solving within TOP is posting your bug to the Discord and hoping it gets noticed before somebody else posts their problem. Overall this teaches self-sufficiency, but there were occasions where I could have saved a lot of time and hair-pulling by just having somebody experienced look over my code for ten minutes.
However, these were minor issues against the benefit of having a free and full curriculum with a community attached. When would I not recommend it as path?
- You’re bad at managing your own time, whether due to organization or discipline issues. Still, I’d recommend starting, and if you find it isn’t working for you, switch to something more structured.
- You have the money, time, and desire for a full CS degree.
- You have no interest in web development. TOP is a web development curriculum. If you want to learn CS, learn CS.
Other reasons to not do TOP apply to learning programming in general: Becoming frustrated easily, lacking curiosity, etc.
For Real Tho
I’m now working for Melange as their front-end developer, creating an app in React Native (though I also made that landing page!). I don’t want to spoil more than that, but we’ll have something exciting to share very soon. I'm still immensely grateful to the people behind Odin for what they've mind, and I strongly recommend it to anybody learning to program. If you have any questions about learning to program, please email me! Community college is also an option, but I haven't heard much about it as an option so I can't speak to it. Sorry!