Now most of the better programmers love to code. Most Professional programmers love a challenge. So, to play to these twin desires, a lot of us have hard drives littered with the five-to-fifteen minute test bed projects that we create as we tackle a programming challenge.
This post is not about those projects.
This post is about the three quarters written Pente game that has been languishing on your hard drive for three years or the redesign to your website that you can never seem to quite finish or cool little app that just needs that last bit of spit and polish before you can release it to the world. These are the projects this post is about.
And why are they not done? The challenge to create them in the first place was exciting! Why is the bloom gone from the rose?
I think that this is a critical flaw in the personality of most programmers (Myself included). We love the challenge at the start. The puzzle that needs solving. We may spend hours or days working out how to do a single coding trick that we needed at the time. We sweat blood trying to breath a form of life into our creations.
Then when we get to the equivalent of getting our creations through Junior High, we look down on our creations and say we'll finish it later. We've got this other idea that we want to work on right now. And, so the cycle repeats itself, over and over again.
But, why do we abandon our nearly completed creations? Some say that it is because the creation process is done and now we need to polish and primp our creation so that it is truly finished and this is not nearly as fun as the process of creation. That may be true, but are we just big adolescents then, chasing after a series of "Oh shinny!" objects, that once we catch them are not nearly as fulfilling as we thought? Or are we intellectually lazy and when we get to the parts we do not find as fun we wander off in search of new challenges?
Could it be how we are trained to code in the first place?
From the moment we start we are bombarded with code snippets on how to do this or that. Homework assignments are fragments that do this or that function, never a complete application. If we are ever given an assignment to write a complete application, it is a class long project and is given such grading weight that we are almost forced to understand that "A complete application is so hard, we need to make it a very substantial part of your grade".
I do not know the answer to my question for myself, let alone everyone else. But, I can tell you that the last little bit of getting finished software out the door is about as fun to me as doing the dishes after a fine meal. but, just like those dishes, if you do you work and finish what you start then it gets easier the next time. After a few iterations, you will find yourself cranking our completed projects like copies out a Xerox machine. And if you think the high from solving a problem is great, then you will love the feeling of having your software being used the world over.
So, have you finished something today?