Today I came across a blog that describes a sentiment that comes up periodically. It describes a development group that does not believe it needs to follow the agile development process. The team is composed of experienced developers with a track record of delivering the goods.
I’m not much of a fan of agile myself, but I believe in process as part of software development. I think the real sentiment being expressed is that experience trumps process. Maybe that is an appropriate cost/benefit tradeoff in this case. But it is certainly not appropriate in all cases. It’s really a statement that failure of your system is essentially inconsequential.
Consider an airline pilot. They have gone through the process of flying a plane from one point to another hundreds of more times than you have started new development projects. Yet they go through the process of filing flight plans, the pre-flight checklist, and all of the other steps of assuring a successful, safe flight. Would you want them to act differently? No, because the consequences of a failure could be catastrophic.
My personal heroes in the area of software development are the Shuttle Flight Software development team. They write software that never fails. And they do it over and over. There are no super rock-star ninja code cowboys on this team. They achieve that performance by strictly following a well-defined, detailed process.
Nobody really cares if your social network clone crashes every so often. But if you write software that does something difficult and important, like controlling the braking system in a car, controlling a medical device with the potential to blind you, interprets medical information where an error could injure or kill a patient or cause an unwarranted abortion, or software that launches a space shuttle, you want every possible advantage you can get. A good development process contributes to those advantages.