When I started my programming career, I was convinced that waterfall is the way to go. I felt the need to have clear specifications for the project I was working on since the very beginning. The let me see what you’ve done so far e-mails from the customers were a real pain in the ass, because since no partial releases were scheduled, I usually had to pick and choose parts of the project that seemed to work and build an adhoc release. The result was what one might call a Frankenstein of software development that had major bugs, didn’t quite work and the only thing it could do right was to annoy everybody. The client was annoyed because he was feeling that his money are not well spent and I was annoyed because I was stuck with a meddling client who doesn’t stick to the agreed plan. If the release isn’t scheduled for another three months, the he should go and bother somebody else. Maybe a government employee from the IRS. But instead of doing just that, the client was sending bug reports – fix this, change that – on the “Franky version”. So the project was slowly branching into two. We had to continue the development of the main branch, as initially agreed, but we also had to do some bug fixing and changes to the adhoc version. Fixing those bugs was taking away valuable development time and the estimated time of delivery was being pushed further and further in the distant future.
Now that he could see parts of the software, the client was changing his mind about some of the specifications and was asking for new features that weren’t originally planed. Features that were incompatible with what we’ve done so far. And…long story short: epic fail!
After spending about 2 years in the waterfall hell, I have found out about Agile development and scrum. It’s a whole different approach that divides a large scale project into smaller parts that are easier to implement, easier to test and easier to change if the customer changes his mind. In the current economical climate, even without meddling customers, a waterfall approach to software development is bound to fail. Imagine how things looked 12 months ago and how they look now. A software project must be able to adapt quickly and meet the market’s requests.
I have found this video on Adobe’s (Romania) blog that explains agile development and scrum in about 10 minutes. Enjoy!
The above video was created by Axosoft – a company that specializes in creating scrum software. If you find that video interesting, check out their site or their twitter feed @axosoft.