The Unrealistic Deadline Anti-Pattern
A reasonable deadline for the project was approximately 3 months but it had to be completed in a month. At this time an agile book will indicate that the developer should talk to the owner and come to a reasonable deadline. Unfortunately, in this case the owner was fixed with the deadline and was not willing to move it further.
The author further concludes that following the agile principles would have killed the project. He dropped some of the agile principles and practices, and finished the project in 29 days.
Yes, the resultant code was messy but at the end I get to keep my job.
I have no problem with Mohammad dropping agile practices/principles in order to complete this on time and to help him keep his job (especially in the current economy). I do have a problem with the idea that ‘Agile’ can kill a project. The only thing that killed this project is the unrealistic deadline which was set by the owner. The fact that the project was delivered within the requested time frame, and even assuming that it is completely satisfactory to the owner, does not mean that it was a good idea to hold this project to a deadline which only allowed for one third of the estimated workload.
Now some of you are probably thinking “the deadline couldn’t have killed the project since it was delivered within that deadline!”. True, to a point. We all know what happens when developers face tight deadlines: they take technical shortcuts and they accumulate technical debt. Mohammad already stated that the resulting code was messy so i guess it’s safe to assume there’s quite a bit of technical debt there. Being in technical debt is like owing money to Tony Soprano… you better get out of debt fast or things are gonna get much worse, very soon even. The longer you wait with paying off the debt, the more you’ll lose certain abilities and possibilities.
Getting out of technical debt can be pretty expensive, but there’s not really an alternative. If you don’t get out of debt, further maintenance of the code base and adding new features will only become more expensive over time. Failure to pay off the debt will sooner or later kill the project entirely because the gains that the project brings are no longer greater than the costs that come with it. At that point, the decision is often made to build a new system to replace the old one. The new one is gonna fix all of the problems of the old one. And if you’re lucky, the managers will have figured out by then that unrealistic deadlines only cost more money in the long term than a reasonable deadline would have.