A lighter note…

…but not a lighter solution:

FizzBuzz Enterprise Edition

The package structure alone is enough to give anybody who’s worked with over-architected “enterprise grade solutions” a giggle, or at least a grim chuckle.

Anticipation is the enemy of appropriate solutions. I think that it’s often more harmful to do premature abstraction and optimization than it is to do them after they’re needed. It is – as with so many software design decisions – a judgement call based on everything that you know about the project. A brilliant developer I used to work with (John Heintz) expressed it as a rule of thumb:

  1. Make it work.
  2. Make it right.
  3. Make it fast.

Agile development means cycling through each of these phases, doing each of them as they’re needed and not one iteration before if you can help it.

Comments are closed.