Programmed to fail

One aspect of programming that fascinates me is the psychology of software development. To study Agile is to study people and their interactions, and there are some interactions that seem incredibly hard to break.

Given how often software projects overrun it astounds me that the same patterns occur again and again. Developers seem very reluctant to admit they’re late and tend not to question deadlines until its clear the deadline is now ridiculous. There is a hope that, somehow, everything will fall into place and everything will work come delivery time. And yet experience tells us that things invariably go wrong – the hope is irrational and yet near universal.

Those managing the team can easily spot the signs that a project is drifting into trouble. Confident answers to progress become couched in qualifiers. Progress reports become terse, or filled with excuses. Progress reports may also start sounding very similar week on week. At this point the project sponsors should be alerted to the issue, but again people seem to cling onto this hope that everything will be OK. Reporting up is rarely done early enough or emphatically enough.

Reports of delays need to be emphatic and early as, the closer to release date you get, the less willing sponsors seem to be to accept delays. This may be due to hard and fast deadlines (e.g. shipping physical boxes of software), but I’ve seen it in teams where the deadline is nothing more than a notional line in the sand. Yes, moving that line may be problematic, but not nearly as problematic as putting poorly functioning software live, or missing the deadline with no contingency at all. Simply defining delays in the project as “unacceptable” doesn’t make them go away. Software development is an art, not a science and delivery dates should be treated as malleable until the software is actually delivered.

With all three levels refusing to face facts its little wonder that we have the issues in software development that we do. Agile helps us by giving us tools to counter these issues, but until people can get out of the Big Project Mentality the psychology of large deadlines in the distant future becoming looming deadlines in the very near future will prevail.