Open Source Ages Developer's Manifest
I was thinking over the past couple of weeks about my own personal take on open source development and where I fit in it:
We've all been there once or twice before - or, at least, saw it so happen to the guy behind the next flat screen - taking part in a dead-end project, no hope for reaching maturity; delirious mind start-ups that somehow sprung into existence, waiting from the first moment to be redeemed by the sound of closing taps, in the meantime taking up your day, your energies; situations where inner politics thrive and professionalism isn't sought after; you find yourself thinking about avoiding bug fixes, avoiding the next wave of dismissals, avoiding innovativeness - what for, right?
Folks, we've all walked near that path at some stage or the other, and the only way to break the cycle of (code's) life and death is to liberate it; liberating yourself, while in the process:
Forget about the system. Forget about the timelines. Forget about the features, the backlogs, the release date whispering in your ear. Instead, try to write the best piece of code you've ever written, every time anew. I am thinking about the kind of code that you'd be happily taking along with you to your next project, to your next client, to your next job or gig (getting permission is often easier than you think). Hack, you may have written such a badass piece of code, that you'd think that the world has a right to have it(yes! with permission, duh); like poetry; wine; a special treat you've invented all by yourself and you want it to be get spread to as many people as possible (mine's Pumpkin/Taragon soup, btw).
And so, totally unhoped for, your code may receive the gift of immortality - or at least, the equivalent in an environment where technologies change from grounds up every several years, rendering previous code anachronistic.
But then, coming to think of it, while writing your god-inspired piece of code, something else happened: Without noticing, forgetting the world around you, you became a better coder, a better designer, or a better architect. You got yourself a better understanding of processes, algorithms, concurrrency issues, or a far more specific topic. When I started consulting, not so many years ago, I remember often finding myself wondering: how does one become knowledgeable enough to work as a consultant; Now, I think I have found at least one of the answers.
See, personally, I'm not the reading type, let's be honest about it. I'm *okay* with reading articles while confined in space and time (taking the train, that sort of stuff), but not much more than that. Pretty bad, I admit. A friend at work just finished reading today the unbelievably massive ~900 pages long "Pro Spring 2.5", a point where I found myself utterly baffeled, bewildered and gobsmacked: How on earth can one do that without taking the year off? This is something I might never be able to comprehend, let alone do it myself. My take would probably be: could've better invested all that good time re-reading one of Heinlein's classics.
My take, I've said that, now, didn't I?
And so, back from my digression, here I am, at an ordinary point in time, being given - again - a development task, contemplating whether I should put my efforts in finishing it just-in-time or writing the best code I can, even if that means digging in forums for half a day to find a clean solution, instead of patching and moving on - with all due respect to gant charts, PMs or endless managerial meetings, I'll take my best effort to achieve the latter.
No, seriously, Why?
I think that if there is something that can be called the values of developers, these values would probably include not tolerating duplications; not wanting to live in a world where code awaits refactoring for months while staling; not accepting anything but a good, generic, solution to a problem.
I say, let's always try to kick it up a notch. Do what we have to do to become better at what we're doing. After all, isn't this what most of it is all about? Apps come and go, greasy Markom folks get spawned as you read this post, with every cycle of fresh grads. Isn't this the only salvation of the seasoned developers from sharing the same destiny as copy-paste marionettes, code monkeys, hollow typing machines?
Love to hear your thoughts...