A few weeks ago I posted a video on why I think I failed to learn programming many times over the years. Here’s a quick a summary:
I only read books
I thought I could do it all by myself
The things I was making with code didn’t look like what I wanted to make
I gave up when things got difficult
I didn’t have a good roadmap
I underestimated how many different things I needed to learn in the process
How did I do things differently this time? What did I focus on? What changed?
Click for the video version if you’d rather watch than read.
*These principles apply to learning all kinds of things, I just happened to notice their prominence after reflecting on my learning to code failures.
1. I focused on online courses
Instead of reading books, I referenced online courses, YouTube videos, , tutorials, and even asked other people for feedback. Ironically I didn’t use books at all during this time. This worked for me because book learning turns out to be not as effective of a way to learn something as complex as computer programming and full stack development. Its heavily graphical in nature (using code editors or IDE’s, terminals, graphics and styling). And I suppose since it’s largely visual and spatial, that’s the way I learn it best as well.
2. I didn’t think I could do it alone
I didn’t expect to silo myself in and just learn everything completely on my own; especially after failing so many times. This last time around I was older and a little wiser so maybe that helped, but I assumed I would need help along the way. Also when I asked people for help I took their advice and constructive criticism.
3. I picked interesting projects and learning materials that had me building things like I’d be doing on the job
This one is twofold: a) the output should be interesting to you, b) as well as produce things like you’d be producing on the job. I found resources that taught me things I knew I needed to learn in a way that was still interesting to me. For me this was everything around making full stack applications. Essentially web apps with a frontend, a server, and a database. Anything that acts like an “App” but is on a website. I also made some small games for fun as well.
I see this a LOT of good examples on YouTube. If you’re interested in iPhone programming I’d pick a video like “Your first iOS app in 1 hour.” Pick an app idea that excites you. It might be a TODO app, or a restaurant app, or a game. Whatever idea energizes you the most.
I still practice this today when I need to learn something new and it’s proven much faster to get results.
4. I did not give myself an out
Even when it got difficult I kept learning and kept applying to jobs. Even if I was staring at the same error message for 10 hours that day.
This of reminds me of one of the final scenes in Gattaca when Ethan Hawk’s character out swims brother even though his DNA is not as good (potential heart defect I believe). After the race where his brother almost drowns we find out his secret: he didn’t save anything for the swim back… I didn’t save anything for the swim back. For me this meant quitting my job and going all in. My old job and my old industry weren’t fallback options for me. While this last part isn’t something I’d recommend for everyone, it ended up working for me. Regardless, if you really want to learn programming, don’t quit until you have actually learned it!
5. I researched a decent roadmap
I didn’t have a perfect roadmap, but I didn’t need one (SPOILER: I don’t think there is a perfect roadmap). To get a decent roadmap I talked to people in the industry and then researched the topics I wanted to learn after our discussions. Then I began to plan a fairly simple learning roadmap that I thought would give me the skills I needed to be employable… and it worked!
I also have an article that touches on this topic in: Ultralearning aka how I learned to code if you’re interested.
6. I embraced the chaos
Lastly, I embraced the fact that I had a lot of different things I needed to learn and then started chiseling away at those topics on my roadmap. I let the resources and my roadmap slowly guide me to comprehension. Gradually I got more and more familiar with the topics until I became proficient. Programming. Databases, SQL, Mongodb, HTTP requests, servers, JavaScript, React, CSS styling, authentication, etc.
And about 7 months after I started this learning-to-code journey I had my first offer! And the rest is history. I’ve been coding full time since then and I enjoy it so much that I hope to be able to encourage and share that joy with others through videos and writing.
If you know anyone learning to code, or learning something challenging right now send this their way if you think it might encourage them!
-Jesse