Crux was developed at work; but as far as act of writing code was concerned, it was basically me; as the only human being; slamming away at the keyboard during the middle of the nights to deliver a project which would help one of our customers track their inventory as it moved across various departments. The code that went in the codebase and eventually in the base framework followed one simple thought process. This post is about that approach or way-of-life.
As a trickle of few downloads happen on the CodePlex SVN and as a small team of rather talented programmers starts looking at it; some interesting ideas have started emerging. Every time however, an idea for a new massive feature is thrown in, over a casual discussion, I tend to take on a rather defensive stance.
It is not because I doubt the team's ability to shape the idea into reality.
It is merely because --- I hate code.
For someone who loves programming enough to write romantic poetry on it, the claim of hating the idea of writing code, sounds like a joke; even to myself; as I write this; but it is, as a matter of fact, true.
There are cases where I hate the idea of writing code; from the core of my heart; particularly when the idea of writing a class, a function or a page cannot catch me by my collar and convince me that it needs to turned into reality that exists in the form of a framework or application feature.
For months, I considered it something that was under the YAGNI label and felt rather passionately about it or synonymous to making-each-feature-work-hard-before-you-implement-it thought process; but it is in fact more than that. It is indeed a way of life described rather well by Richard Bach in the Foreword of his book Illusions - The Adventures of a Reluctant Messiah. Richard explains:
I do not enjoy writing at all. If I can turn my back on an idea, out there in the dark, if I can avoid opening the door to it, I won’t even reach for a pencil.
But once in a while there’s a great dynamite-burst of ﬂying glass and brick and splinters through the front wall and somebody stalks over the rubble, seizes me by the throat and gently says, “I will not let you go until you set me, in words, on paper.”
That’s how I met Illusions.
At the first sound of it, the idea might sound like a poetic exaggeration; but the approach has, in its own subtle way, become an integral part of my thought process. If an idea doesn't haunt me enough it doesn't get translated into C#.
If a thought doesn't haunt me enough, it doesn't get translated into a blog post and doesn't show up here.
Whether you are a developer, a designer, a writer or whatever-it-is-that-you are; develop a love-hate relationship with your ideas. Entertain thoughts without accepting them; give them room and environment to flourish or grow but when it comes to nurturing them or standing behind them pick the ones which are strong enough to catch you by your collar and not let you go till the time you take them up.
If you have to convince yourself consciously about the strength or effectiveness of an idea, it is not good enough to bring you happiness and satisfaction in the long run. Next time you get an idea that needs to turn into code, a blog-post or take any other form of existence; try ignoring it; and see if it gets strong enough to strike back and remind you of its need to exist.
If it does, you'll begin to genuinely love and enjoy the process of seeing it come into existence.
If it doesn't, it was just a distraction or just something that wasn't worth wasting time on.