I was out at a local establishment indulging in a few sinful liquids when the conversation turned to the fact that neither myself or my companion could identify with the new wave of methodologies. We just aren’t able to see how Agile or TDD or XP are the answer to all of our development woes. None of this things, in our minds, are silver bullets for the software devleopment process. Yes there are features from each that we like, we adore or we try to implement in our development environments. We also see things that we can’t use, understand or we simply don’t want to try because of the situations that we’re in.

For me, I love the idea of unit tests for as much of the application as possible. This stems from my last three months as a support programmer and how I hated deciding when something was fixed and when it wasn’t. I also like the idea of two people working on the same code (I choose to implement this through mandatory code reviews instead of two developers at one box coding).

What we don’t like about Agile and XP is it’s tendencies towards continually implementing new features and being reactive to the end users every whim. One of the keys to a successful project (software development or planting flowers in the garden) is that you need to have a start point, something to work on and a concrete end point. By continually allowing additions or changes to the scope of the software development you are essentially saying “Our end point is somewhere out there”. This is all well and good except for two things. One, you have no endpoint so you have no ability to say you are finished. Two, having no endpoint takes away a key motivational factor from the development team…getting finished.

For us software development boils down to this:

  • You need to have a starting point (specs usually will do just fine)
  • You need to know how you are going to take all that starting point data and turn it into something useful (architecture and planning)
  • You need to have an endpoint to plan and strive for (completion date which is backed by concrete scope management)These three things are essential to being successful. I’ve seen it done folks. You can have written in stone scope, and you can commit to a delivery date 10 months from now and yes, you can deliver solid, business ready software on time and on budget. The times I’ve seen this done are the times I’ve worked on projects where the PM can manage the three items listed above. In the end you don’t need some new fangled methodology to accomplish these things. Accomplishing these goals very much are methodology and technology agnostic.

I’m the Igloo Coder and I’m thinking that blending Agile and XP might give me two developers who do yoga at their workstation.