I've just recently realized, again, that I have so little free time that I cannot be wasting it reading weblogs or other news sites. It's not that life is too short —life is too short, but that's not the point here— but the fact that if you don't just do it now, you won't do it in the future either. And what you, and by you I mean of course me, need to do right now, is to learn to become a better programmer. (Writing this essay will hopefully help me to become a better programmer, too.)
I am slowly resurrecting as a practicing programmer, thanks to, for example, Steve Yegge's great Drunken Blog Rants(tm) (which I, incidentally, found through reading weblogs, if I remember correctly). I've always tried keep myself up-to-date with the latest and the greatest, and I do hone my skills by hobby programming, but I feel like Steve sometimes (in Being the Averagest):
Every few years, I would read some critical book, or have some weighty flash of insight, and realize that I'd been operating all this time in what could only be termed "clueless mode", and that I hadn't really known what I was doing after all.
I've been in the comfort zone for way too long.
Sure, I've been reading a lot of programming books, but reading amounts to nothing if you don't do anything based on it. I'm not sure what the correct balance between reading and doing is, but I'm sure that it's nowhere near 95% reading and 5% doing. It's more like vice-versa.
One really concrete impact that Yegge's rants have had on me, is that I've finally started to really learn Emacs. I use Eclipse on my dayjob only because I've found it more comfortable (yeah, there's the comfortability again) for Java coding than Emacs. But whenever I program in Python, or do any other kind of text editing, it's always Emacs.
And boy do I know little about Emacs.
I've been using it on and off for maybe ten years. (Yeah, I know, that's nothing compared to the 60 gazillion years you've been using it.) I know a few tricks and many more key combos (though I don't score high with keywiz.el). I'm somewhat slick with Python mode.
But, still, I am a complete newbie with Emacs. And that's A God Damn Shame.
Because, you know what. Emacs is one of those things that are really worth learning. It really is, I'm not kidding. (It's not the only thing worth learning, of course, and it might not be something you should learn. But it's a good prototypical example of something worth learning properly.)
What's more, it's not even that hard. I've always thought Emacs Lisp as some mysterious arcana of the Ancient Wizards, but it's not. It's really simple and straight-forward. After an hour or two learning Emacs Lisp, I was ready to write the first Emacs Lisp Function To Improve My Productivity. Nothing fancy, but it did its job. (If you really want to know what it did: it's a function that initializes a new buffer for me with a proper mode and such and fills it with some boiler-plate code that I just hate writing again and again.)
It's not like it's going to Save Me Time, but it did get me back into the habit of automation. What's more important, I am not afraid to go about doing something more adventurous with Emacs Lisp. I know I can do pretty complicated stuff with it if I need to. (As a side-effect, I've been learning more and more of basic Emacs stuff, too.) And doing personal extensions to Emacs pretty fuckin' easy. After all, it's a dynamic environment.
(I once took a look at Eclipse's plugin system and it made my head hurt. Yeah, a lot of people make Eclipse plugins and it has its own advantages. But let me assure you that it's a lot harder than extending Emacs. A lot.)
Getting back to the original point: what this all means is that I really have to find the time to actually learn specific things, like for example Emacs Lisp. But learning takes time. Unlike thinking about learning and actually just surfing the web or watching the telly. "Yeah, I'll do that later." There is no "later", there is just "now".
As a pretty recent father and a full-time house-husband (I am taking care of our daughter till summer), those "now"s are getting few and far between. Realizing that the clock is ticking at 24:00 and that you will be waked at around 06:00 and expected to entertain a hyper-active toddler is not always the greatest of feelings. (Not that I wouldn't enjoy entertaining our daughter, but still.)
Thus I've finally begun to realize how little I have time.
There is no question about it. It's either weblogs or becoming a better programmer. It's either TV or keeping myself employable. It's either reddit/digg/whatever or learning Emacs Lisp And Stop Wasting Time. It's either random web surfing or actually doing something worthwhile.
I will take the Red Pill, thank you.
Jarno Virtanen, 11.4.2006.
email:
jajvirta@gmail.com
My weblog, Python Owns
us