Learning via Weekend Projects

Ten years ago I found it utterly trivial to learn something new. I would pick out a random book on the subject and devour it, or just sort of bang my head against it over and over until I figured it out. Especially during college, I was an absolute sponge for learning new stuff. Looking back now, some of the things I learned seem pretty crazy to me now – an RTOS in 68030 assembly? I certainly haven’t retained much of that!

These days I’m finding it harder and harder to pick up new skills or technologies on a whim. Maybe it’s because I’m over 30 and that’s just how it goes, or maybe I’m cynical and have too much bias to be open to new things. Or maybe it’s not actually harder at all, and just seems like it. I’m not sure.

What I do know is that I still, for whatever reason, desperately want to learn new stuff. So I tend to spend a lot of my energy looking at and playing with new things.

The ‘Weekend Project Method’

The best way I’ve found to do this is what I call the weekend project method. There’s no big revelation or secret here, it’s just what it sounds like.

  • Pick some new technology.
  • Decide on a simple/toy application to make using it.
  • Spend the weekend getting as far as you can.

I’m sure this seems obvious! The thing is that it really works. In fact I don’t think I can recall something that I use in my day-to-day work that I didn’t first learn via weekend project.

But what to build?

I’ve found that the real trick isn’t so much the part where you learn the new thing, but actually the analysis paralysis where you try to figure out what to build with it.

Here’s some ideas that worked for me:

  • Todo List – Bummer. I had to go there. But there’s a reason it’s a popular way to demonstrate new libraries/etc. It does cover a lot of the basics of building apps. Bonus points for making it actually save the data to a server or something since that adds a whole extra layer of complexity.
  • A Game – If you want to do something a bit more interactive you could try building a game of some kind. It can be something simple like a solitaire implementation, or you can go all out and make something that is multi-player or has several levels. I wanted to learn React-DnD, so I built my favourite solitaire game: Onirim
  • Integrations – Make a Wikipedia viewer, or something that shows the performance of your recent mailing list campaigns, or a Slack bot, or aggregate and display ‘+1 comment’ stats for GitHub repositories :)
  • Clone a Popular Service – The good ‘ol Twitter clone. Or go against the grain and pick your favourite service. Simpler is probably better since you don’t need to make a production ready app or anything.
  • Something You Need – Sometimes there’s a little pet annoyance you have in your job or life. Use your new tech choice to solve it as simply as possible. For example I was helping developers migrate their card info to Stripe, and I occasionally had to phone them with a password. “J as in… Giraffe?”, so I built Phoneticizer on a Saturday afternoon.
  • Challenges – Often regular ‘problem sets’ can be pretty boring to work on, but once in a while you might see someone post a challenge to build a real-ish thing online somewhere. For example check out Flux Challenge.
  • An Open Source Library – Along the lines of ‘something you need’, take your new tech and make something to share. It’s ok if other projects already exist. At least to start with the idea isn’t to supplant something else, but just to use it as a learning experience. That’s how jQuery-TourBus started, and it’s my most popular open source project now.

Hopefully some of those resonate with you or at least give you some ideas. Pick something cool you’ve been wanting to learn and prepare for a weekend of learning!∗

∗ Doesn’t actually have to be all in one weekend :)