The Usual Suspects
August 12, 2012 2 Comments
I’ve often looked at the contents of my home directory and sighed. I’m very good at sighing. I have many half-started and even some half-finished projects on the go. I’ve previously described myself as ADD when it comes to programming projects – I’m very good at starting, but find it difficult to get to version 1.0.
I can count 10 repositories on this computer, which only accounts for around the last year, give or take a couple of long-running projects which have had enough activity during that time to make it on here. There is a raytracer (in two languages), a C compiler (well, most of a C preprocessor so far), a website and catalogue program for a family member’s business, a Tetris clone, a Serial Terminal, Personal Kanban web app and a copy of the gtkterm repository, along with a couple of work-related items.
So why is it that I have so many? Clearly I run out of drive, but is it a problem? I hear of other people who have got their main project that they work on day after day. In the extreme case, there is Linus Torvalds working on the Kernel, but there are less notable examples, such as Minecraft, which was originally developed by just one person. Is it just that these people have one main project that continues to hold their attention, along with a smattering of un-noteworthy forays? I’d like to think so.
Maybe a good way of continuing to have drive would be to open source my application and sponge off the energy of other programmers, but somewhat selfishly, I don’t want to. Most of my personal projects are just that. Personal. I get plenty of opportunity to code as a team sport when I’m at work, so unless I’m desperately new to a particular technology and would like to learn good habits and conventions, I’d rather do it alone. I have been working on said C Compiler for nearly two years now and I still haven’t even gotten past the preprocessor step. It’s a surprising amount of work (and I am doing everything by hand, not using Lex or even functions like strtol where possible) but I have had a bunch of fun.
Many people who aren’t programmers can’t comprehend that when I’m done writing software all day at work, I quite enjoy firing up the laptop and having a bash at some more programming. I suppose they just don’t understand the sheer variety that can be contained within writing code. Which is, I think, where this post is eventually taking me.
Having a bunch of projects is a good thing. Of sorts. It’s really quite difficult to keep sharp in a multitude of areas, but at the same time, it’s really quite easy to keep dull when you’re working in just a single area. Hell, I was employed originally, not because of my programming skills, but because I tinkered with Linux in my spare time and was, at that moment, attempting to write a network-aware workplace competition Super 14 Scoring Application in Python. So even though I was able to happily pass the programming test in the interview, that was more of a box ticked, rather than anything even remotely job-getting impressive. Oh and I apparently had good personal skills. I’ve grown an *awful lot* in my inter-personal skills areas since then, so I struggle to fathom other candidates who had worse skills than I.
So I guess that’s it. I tinker, in a bunch of different areas. I get discouraged every now and then I pick up a different area. Things aren’t always complete, but no one’s paying me to have them done by a certain date, so it’s not a problem. I guess I’ll always get distracted and flit from project to project, but I get good practice at learning new things – so much so that it’s one of my strengths. I’ll eventually finish something – unless it takes me more than 20 years to realise that it’s never going to be finished.
Coding at work and coding for myself are two quite different beasts. I use a bug tracker (entirely unlike work’s, I might add). I may wrestle with automake and autoconf, but it’s arguably by choice. I sometimes even assemble bugs and wishes into vague plans for something approaching a release, but I’m my own product owner. OTOH my scrum master-self would rather I had more time and energy available for personal projects, but isn’t that always the way?
Pingback: Software is a Total Mindset « A Million Code Monkeys