Analysis is not BDUF

Agile methods are designed to cope with changing or vague requirements, and posit that big design up-front (BDUF) is wasteful, as the shifting requirements will make the design obsolete. Too often though, analysis and requirements gathering are lumped together with BDUF and the baby gets thrown out with the bathwater.

Certain requirements can be captured early, and indeed, should be captured as early as possible. Ironically, these are often the requirements that receive the least attention – the so-called non-functional requirements. These include such things as low maintenance, responsiveness, reliability, ease of upgrade etc. Sometimes the non-functional requirements can turn out to be the most important ones. For example, if a project is designed to replace an existing system that is always breaking, then the most important requirement from the point of view of the CTO / key sponsor may be that it is easy and cheap to maintain. Problem is, sometimes the non-functional requirements are so obvious to the customer that they forget to tell the delivery team. This is what requirements analysis aims to address.

Finally, on the subject of changing requirements, how many projects really start out as stock trading applications and turn into an air traffic control system?

Its all about differentiating the real requirements from the (to the business) incidental details.

10 Development Practices

For tonight’s XtC:

  • Short methods
  • Classes with personality – do one job well
  • Minimise duplication
  • Clearly express intent
  • Test algorithms not implementation
  • Code to interfaces
  • Law of Demeter / Tell Don’t Ask
  • Methods that return values should be idempotent
  • Demarcate functional individuality with interfaces
  • Understand the big picture – what problem are you trying to solve?

View image

Reality Bites

At the risk of appearing to backpedal I’m going to point at Tim’s response to my ‘project death’ post, and then claim that what he said is what I meant 🙂

Project cancellation is just one manifestation of reality impinging itself on a project, albeit an extreme one. Reality biting is the generalisation of the specific example I was using.

Definitely an improvement, thanks Tim.

This idea is worth pursuing. Where do we go from here?

Mindless Philosophy

So I was in the supermarket queue yesterday buying my lunch, not really thinking about much, and randomly sampling the conversations around me, as you do. Except that I can never really think about nothing. Every sentence or phrase around me was causing my thoughts to cascade and spin off in every direction, either forming an opinion about the subject, picking apart logical errors, or linking the topics mentioned with similar experiences of my own. Sometimes the price you pay for being blessed with lots of thoughts is that of having lots of thoughts, when all you want to do is eat pizza.