I want to learn Go. I’ve read a lot about it, its docs and code. I’ve seen it in action. But I still haven’t written a single line of Go. Recently, in presence of some good white noise, I did a bit of introspection and realized why I haven’t done so yet. I discovered that I do the following before deciding to embark on learning a new skill:
- Have a project in mind that requires the new skill
- Start ASAP after the initial thought
- Use the most basic or immediately available tools if it helps with 2
Quick notes on the above before I give you some examples. You need to have a project you care about otherwise you will lose interest due to the lack of purpose. You won’t go far and instead will stick to basics. You need to start ASAP because your interest may wear off if delayed. You can argue that if one is truly interested, this is not an issue. I agree but just as when sometimes an idea is better than its reality counterpart, reality can sometimes be better than the idea. And for those of us who are only lightly taken by an idea, getting down and dirty with it has the potential to get us full on excited. But if we let it slip, we forever remember how it wasn’t such a big deal anyway.
Have a project in mind
You’ll be surprised to know that 12 years into my programming life, I didn’t touch type. But then one semester when I had Perl as one of my subjects in college, I had been reading about vim and its magic powers. I had also seen it used by gurus to achieve superhuman feats. Blown away by it, I decided I wanted to learn to use vim. It was impossible to just use vim for everything due to the obvious fact that one had to know to touch type and I didn’t — it would frustrate the hell out of me. So I carefully picked one thing to use vim with — my Perl programming assignment, which took a mighty 80 hours to get done! That was it. In two weeks, I learned to touch type at 70 wpm and use vim as my primary editor and I credit it to picking this one well defined bounded project, which was my assignment.
On the other hand, I’ve always liked to be able to play an instrument. I’ve dabbled in it year after year. But not once do I remember having a single project in mind to go with it. As I’m looking back, I can easily see how there was never a specific piece of music I really wanted to master, let alone a song I that wanted to write. I can just as easily see that if I did have a project, however simple, I would have learnt enough to get the ball rolling. But without it, I never crossed the learning barrier.
Start as soon as possible
I didn’t drive until I was 23. And when I did, it was to impress someone else! So I had a project. I could have asked my brother to sit with me while I was learning (by the way, in Australia, one needs to log 120 hours of driving before s/he’s allowed to drive alone). Since I didn’t live with him, I had to wait for the weekend which was days away. In just an hour since I’d decided to take driving lessons, I called a driving school and booked a lesson for the next day. Even though only a day had passed, I was nervous as hell. No one to cheer me on. My only encouragement was the freshness of my excitement from the day before. I kid you not that after that lesson, I booked another 70 hours for everyday that followed. It cost me a lot of money ($50 an hour) but I knew if I let gaps in it, I’d chicken out.
In contrast, every time I got excited about swimming, I said I’d wait until I find a good instructor. Never happened.
Use immediately available tools
My dad’s been a professional tailor for 50+ years. I had seen him work and hence had an idea of what was involved. I was never interested in doing any such myself though. But I’m a hacker and I love building stuff. Making a suit isn’t that different to writing a piece of software. So naturally, at some point the idea that I could sew my own clothes became very interesting. The Sunday afternoon when the idea hit, I followed the subconscious checklist: a project? bed and pillow cover; start time? now; tools? oh crap, I don’t have a sewing machine. Should I wait to see my dad next week when I go visit him and borrow his machine? No, it’d be too late.
I googled for the only shop that was open that afternoon. I lived in the suburbs and didn’t have a car! The shop would close in few hours. I called a cab and picked up the cheapest sewing machine. In less than an hour, I had made my first pillow cover. Yes. I could do it and it was fun. Had I left it alone that day, it could have been years until I came around to it again.
Some ideas stick and some are transient. For the latter, taking a quick action helps reinforce it. It may turn out to be your greatest idea. An xkcd style graph seems appropriate here.
Now here’s where I pop my own pill, looking for a Go project instead of waiting for one to fall in my lap. Off I Go.