For the last few weeks, I’ve been hunkering down to get down to something that I always wanted to learn – web development in order to build my own side projects for fun through Treehouse. Treehouse provides a easy to approach platform, so that anyone can learn pretty much all the mainstream topics of learning to code, starting with the latest HTML/CSS standards, web development as well as iPhone and Android app development.
As a former non-technical founder and product manager, it was hard to understand how long a particular feature might take to build let alone what technology might be appropriate. It was one thing to read about stuff you’d find on HackerNews and understand what people were writing about conceptually, but it’s entirely different when you’re handcrafting your own software, hacking on your own stuff and having at least a modicum of understanding of what the hell is going on.
After combing the Treehouse forum for an answer that had been bugging me with one of their Rails modules, I stumbled upon a thread asking what’s the best way to learn on Treehouse – so this is my take on how I’ve been learning and using their platform.
1. Use the forums and ask as many questions as you need to
As you’re going through the video lectures, lots of questions will naturally arise. The forums are a community driven resource and 95% of the time, they’ll have encountered the same problem you’re encountering or at least encountered a situation similar to yours so you have a starting point of where to figure out your problem. Usually, I would spend the time to figure out the problem myself, like if a test errors out, it’s been usually a typo of my own. The instructors there are pretty responsive and answer questions within a few hours, and if your questionsn is on a weekend, they’ll have an answer ready by Monday (instructors have lives too you know… thanks Jason! ;). In any case, it’s a great way to get to know the other students through their own threads, to see how they’re progressing, which gives you encouragement that you’re not going through it alone.
Check out a thread I started on the Treehouse Forums
2. Blocking out time for your coding adventures
This is a tip I picked up after reading Zack Shapiro’s blog. While he has his own views on learning to code online, one of the points that resonated with me is giving yourself time to be able to learn, fail and learn again. Learning to code is no trivial pursuit. It takes a while to wrap your brain in terms of how everything works (like MVC for instance) and to piece everything together. Consistently dedicating time in your calendar is so important, which can mean the difference between staying in it for the long haul (this is a lifelong skill that you’re learning right?) and giving up within a few short weeks.
3. Googling stuff or referring to Stack Overflow
For those edge cases or questions that aren’t answered in the forums or simply because I’m curious, I Google it. 99.9% of your questions have already been tackled, so if you’re not able to figure a problem out within a reasonable amount of time, simply ask the internets and you’ll find your answer. This is a worthwhile habit to ingrain earlier on as developers don’t have the luxury of time to figure out problems that have already been tackled in much more elegant ways than they would have thought of themselves using boilerplate code (Twitter bootstrap).
4. To make any worthwhile progress, use Parkinson’s Law
Parkinson’s Law states that “work expands so as to fill the time available for its completion“. Blocking out time in your schedule, (such as having a 4 hour block) to finish a stage and reviewing it is a challenging goal, but not impossible. By setting constraints for yourself, the onus is on you to get as much done as possible within the time block you’ve set for yourself.
If your concentration and focus isn’t rock solid yet, you might want to check out RescueTime.
5. Use Spaced repetition learning software
The efficacy of spaced repetition software has been written about many times already, especially for software development. When it comes to learning code, being presented stuff you’ve learned on a regular basis can help reinforce what you’ve learned so that it’ll eventually committed to long term memory. I use Anki flash cards software (it’s a free download) and spend a few minutes every morning to review through concepts I have a hard time understanding a concept I’ve just learned (like MVC). If you’re too lazy to come up with questions on your own, you can copy the Treehouse quiz questions and create your own cards that way. I You should read about Derek Sivers post about it as it’s a fascinating read.
6. Show off your work
This may be blogging or showing off your working examples that you’ve learned from Treehouse – but I find this reinforces what you’ve learned and allows you to see how you’re progressing and how far you’ve come along. It’s a great way to build momentum and will be incredibly humbling to see how far you’ve come along after you’ve created your own pieces of work
7. Go to meetups and connect with people at similar skill levels to you
There’s something to be said about connecting with people in real life and sharing your struggles and experiences. Perhaps working on a beginner project together, or simply going through exercises and explaining concepts you’ve learned can help reinforce what you’re learning or give a different perspective. While you can get by without interacting with anyone, as social creatures, I think you’re better off interacting with people who are going through the same process.
Right now there are over 75 Treehouse meetup groups around the world, so that would be one of the best ways to start.
8. Getting real life mentors
This one might be trickier. Maybe you have friends who are developing software and can act as a mentor or maybe you don’t. If you don’t, attend meetups where you can connect with others to see if you can cultivate friendships that way and find a mentor there. Having someone who can call you on your own bullshit, give you feedback when necessary and encourage you to persevere are crucial to keep the momentum going.
9. Learn outside of Treehouse too!
The point is, you need to mold and take ownership of your own learning. Think of Treehouse and these other “Education as a Service” platforms as the training wheels to get you up to speed in terms of the foundations of programming. Make the learning journey your own and choose your own adventure.