Whenever I develop a project, of virtually any size, I experience a series of highs and lows relating to my confidence in my ability to do the project.
At Quote/Proposal stage, my confidence is supreme. I know I can do this. I have a beautiful, perfect vision of what this will be after I have built it. I know that no matter what anyone else comes up with, my idea is better, nay, is truer.
Come the Modelling Stage, my confidence has plumetted. Lost in the details, I see the infinite ways in which things can go wrong, and the nearly-as-numerous ways that each task could be accomplished. But which one is best? The most efficient? The purest? The most cost-effective? the most fool-proof? etc.
AFter modelling comes the IA design, including schema, file-structure. My enthusiasm returns somewhat here, but now I am plagued by doubts. I am making decisions that will affect everything that follows, and these are being carved in stone. I simply hope I’ve not missed anything and plan as best as I can.
The Development stage begins with a wave of relief crashing over my psyche, washing clean the doubts. As the flood subsides, I’m left with only joy; joy of the creative process of coding, of problem-solving, of giving birth to this wonderment that is the application. This is the stage where quite often time simply disapears from me, so lost in the world of my code I am. I feel sometimes that the spirits of the code I am to write simply hover around my head, waiting me to reach up, pluck them and paste them into my masterwork collage (it’s often about this time that I realize I’m also faint with hunger, and probably hallucinating).
The coding done, it’s time to shore up the documentation. This process, while tedious, is affirming, as I now, purely in writing, rehash my code. Reading my code again will let me see how clean, how pure my code was. If the code needs heavy documentation, I often see here how needlessly complex I made element X, and simplify it. The user-manual begins to take shape here, and I am confident that what I have done is Good.
But all children must be set free, and the testing phase is agony to me. Wracked with doubt, I clench my fists and grind my teeth in worry as the application is tested, abused, broken by the world at large (ok, normally the development team, then the client). Battered, bruised but still alive, the application returns to me, whereupon I nurture it back to health. Older, wiser, perhaps a little more jaded by the stupidity of the world, the Application sets forth once again. Not until my application returns unblemished do I finally cut the cord.
The Application launched, I am again wrent assunder by doubt. Was it ready? Will people like it? Did I not do something right? What detail was missed? How long will it live? But gradually, this subsides as I realize that it is doing alright. Later yet, this will turn to pride, as I unexpectedly happen upon one of my progeny, or better yet, commentary about it. My application is alive! And I, I was the one that brought it to life!