I recently ran across an article discussing strategies for learning a new computer language (while still having a life) that was both inspiring and a little depressing. I agree that success at something as mushy and large as “learn a new computer language” is best approached as a “series of little wins”.
Inspiring, because I recognized many of the techniques the authors uses to bootstrap learning a new language: we both have a similar approach, where we grok enough of the docs and READMES to get a purchase, and build from there. This can be a very good way of iteratively building up a new skill while side-stepping information overload. Experience has taught me that I do not do well trying to sip from a firehose, and I’m at my best taking the smallest sips.
Java, C++, and C were all crash courses for me: I spent all my free time at work, school, or home thinking about, or reading about, or actually coding the language. But I’ve also learned enough Perl, Lua, and Ruby to get by (and get hired) as a Pragmatic learning background task while busy with other stuff.
Fast-forward a few years, though, and I’m less inclined (and less able) to successfully negotiate these total submersions in something. It’s not just that I have a life (of a sort), and not just that I have more things vying for my attention. I’m also less able to stay interested at this level. There seems to be a finer balance (or perhaps I’m more aware of it now) of full-on submersion and idle musings.
Anyway, the author of that article I mention shows how he very successfully grokked a new language ecosystem to satisfy the itch he wanted to scratch. And he did it in a way that matches what I do in the same situation (well, I don’t schedule the time in my calendar so strictly, but this is a minor point). So, why depressing, then?
Part of this balance I’m speaking of relies heavily on maintaining some level of interest; the itch I need to scratch. This is complicated thing, at least for me. I do it for my career, but not just my career. I do it because I think the tech is cool, but not just because it’s cool. I do it to stay sharp, but I can just as easily stay sharp diving deeper into something I already know. It feels like there is an odd calculus here that drives me to make those first steps, and then keep going.
This last year has been hard for me to decide on the Next Language to Learn. I’ve made noises about immersing myself in functional coding via Haskell, which gave way to my practical need to finally get Python under my belt (since it seems to have occluded Lua in the niche both live in). I really ought to spend more time with Python, and the little hacking I’ve done with my daughter has been great. But I’m not really inspired by it; there’s no real itch there. For example, my latest crush is Groovy, yet another JVM language that has been on my radar for awhile, but I’m not sure how long this will last. I’d really like an excuse to use Spock, but without a daily need to be a test-driven Java coder there isn’t a lot of scratch there, either.
It seems to me that maybe I ought to find the itch first, and then see which tools scratch it best. Perhaps that’s the thing: I don’t have much itch lately. Honestly, I may just need a new job that requires me to drop everything and learn something new so I can immediately apply what I know.
Then again, I am still pretty good at short, intense learning sessions. Maybe the key is to try and converge some of those interests and hobbies so they reinforce each other. I mean, there is an obvious connection between robotics and Python. And both of these could lead to actual employment doing either in this town. So those reinforce each other. SDR, Amateur Radio, and Python are also pretty commonly found together. Python and Quality Time with my Kid is still a thing.
Uh. Ok. Apparently, I should just continue to concentrate on Python. Maybe I will schedule time in my calendar to work on a Python project.