Sunday, March 13, 2011

Agile Software Development: The Good Parts

Like Javascript, Agile has become all but unavoidable. In Javascript: The Good Parts, Douglas Crockford briefly imagines the world as it might have been if Java applets had not been displaced by Javascript as the client-side web application platform of choice. "But Java did fail, and Javascript is flourishing, so there is evidence that Javascript did something right."

There are reasons, too, for Agile's popularity, and some of them are good reasons. As with Javascript, it pays to identify the bits that work and avoid those that lead to unnecessary problems.

Agile boils down to a series of tradeoffs. Some of the things that Agile sacrifices may not be dispensable in some or even most projects. And some of the things that it optimizes for may not figure into a project's viability.

Here are a few ideas associated with Agile that I have found to have broad application, and which, if they continue to prove useful, I hope will be preserved by future trends in the management of software development. This list isn't complete.

  • Development is research and should inform design, not just execute it
  • An incomplete implementation and the feedback it elicits is often a better guide to what users need than a priori requirements
  • Tests make it easier to introduce new behavior while preserving the old
  • Pay the cost of change on the installment plan