How many times that I wanted to complete a software project by next week, but end up finishing it days, weeks, months or years later. That’s the irony of software shipping that which even Microsoft’s Windows Vista have to slip by years and still fail to reach perfection (or decent usability).
I wanted to revamp MMW Property to have the same functionality as MMW Food, which shouldn’t take more than a week to do (programmer’s optimism kicks in). Then I found out that the framework I am using had been upgraded to version 2, so I decided to use the latest version (oh no!) to ensure continuation of support and better feature, and perhaps cleaner code. As usual, the migration path isn’t exactly smooth as expected (but constantly being denied). Since I am in the process of “upgrading”, I might as well make the code more reusable, thus putting in lots of effort to make them modular in hope that it might benefit me in the future.
Days and weeks just slip by me and I have yet to complete the work, and my attention is required to attend to other projects in between. I “planned” to finish it by end of February, but I only managed to deliver the minimal version by middle of May. At the end, I have to cut features and do the bare minimum just to push this product to Live mode. In the last few days before Live, no matter how much features I cut and how hard I push myself through the nights, I just couldn’t finish the work by that day itself without at least a few more nights of delay. That’s the curse of software development that it just couldn’t be delivered on time.
So, what caused the delay? I would probably say Changing of Framework, Too Reusability Conscious and Interruption by other Projects are the main culprits (but I might not want to sacrifice them). Software Development for my own consumption might need to go on and to be maintained for years to come (by Me!!!), thus I have to make sure it could be maintained properly and remain extensible for the next few years to come. But doing too much is no good as well, as we spent so much effort on something which we might not have the opportunity to reap the benefit in the future.
One thing is for sure, if the deadline is the utmost priority (where you would be screwed or not paid for being late), then please don’t develop/upgrade the framework. If time is scare, screw reusability. Just focus all your time to develop what the project requires you to develop, not spent your time developing a master piece. And that’s the main reason most software are so darn difficult to maintain out there, because we have demanding customer which want the product to be delivered yesterday. Isn't not totally the customers' fault as well, just that software development could get pretty tricky at times (what to gain and what to give up on). But if they slightly more fate or being more understanding, that would help greatly. If the deadline is not negotiable, then prepare for all hell break loose.
Anyway, MMW Property is out, I am happy and would probably need to spend another week to touch up, followed by years of enhancement and maintenance.