Learning Roadmap
17 Jan 2015One of the hardest things about self-guided learning is coming up with a disciplined curriculum of some sort. School is good for giving you some kind of structure in which to learn, but when you're learning on your own, you can go in any direction, which can be good and bad. When you don't know a lot, you may not even know what is worth learning and what isn't. It's really easy to end up learning "spastically" -- by which I mean, I'll learn a little bit of this until I see something shiny over here and then I'll learn that before I finish learning this, etc. Meanwhile maybe there's something else that is super important to what your end-goal is, but since you didn't read the right blog posts, you never even find out about it... the proverbial "things you don't know that you don't know."
So it's important to start with a rough roadmap, and re-assess that roadmap regularly to see what spots you're missing. Here is my current roadmap:
- take the EdX.org Software as a Service Part 2 class. Part 1 was super helpful in terms of learning basic Ruby/Rails, testing and agile practices. Part 2 focuses on more advanced Rails topics as well as working with legacy code. I am currently in week 2 of this class, which ends in mid-February.
- continue writing an app per week, with the following caveats:
- I want to learn at least one new thing per app. currently it's pretty hard not to learn one new thing, as I know relatively little. But as I learn more, I will probably want more specific goals like "learn to make an API for my app" or "learn to write a simple gem".
- Since I am also taking the EdX SaaS class, on weeks where my SaaS homework is pretty involved, I can substitute that homework assignment for my weekly app
- Level UP Rails -- I heard about this curriculum through the Ruby Rogues podcast episode "Apprenticeship with Joseph Mastey and Jill Lynch of Enova" where Joseph talks about implementing an apprenticeship program at his company for onboarding new hires who show a lot of potential but who may not be as technically proficient. These apprentices spend the first few months just learning the company's stack, codebase, and a lot of other basic skills. Joseph also mentioned that the curriculum that he designed is now open source! It's available at https://leveluprails.com/. So far I'm really enjoying this curriculum. It provides just enough guidance and links about each topic so that you know what you should learn, without providing too much more. Then it's your responsibility to Google it if you want to know more. There are also exercises at the end of each section. I also find the way the exercise titles are phrased to be amusing... I'm not sure if this was a conscious decision but they're phrased to sound like unit test describe blocks..., for example "Knows what ports are and can use netstat to find them". You can follow my progress on github, where I'll record my answers to the exercises as well as whatever personal notes I want to remember for later.
- Read Practical Object Oriented Design in Ruby by Sandi Metz - this is a great book so far. If you haven't already, go watch Sandi Metz's talks on YouTube. I've learned so much from her.
- Continue to blog at least once a week.
- read JS Enlightenment
- read Practicing Rails
- learn a JavaScript framework (Ember? Backbone? Angular? Meteor?)
- Continue to attend meetups / hackathons
- Create my resume webpage
- Make some business cards
- ride the Atlanta Streetcar which just opened up about a month ago.
- go to the Martin Luther King Center I've lived within 2 miles from the MLK center, drive by it all the time, and yet I've never visited. There's no excuse for that!