SDT Conference 2011, London Position Paper

An Empirical Approach to Reducing Uncertainty

Uncertainty is a problem at many different levels in most software projects. For example consider these questions:

Each of these difficulties can be helped by thinking empirically - with scenarios and examples. Developing test-driven software can help in a number of ways, but we need to consider that different kinds of projects cope with different kinds of uncertainty.

Here are two example project types with different kinds of uncertainty:

1) In a banking project there may be more uncertainty deciding what exactly the system should do and what the exact policies should be. By contrast the technologies used to develop the system may be quite conservative.

2) In a mobile data system it may be clear what the system should do but require a greater deal of technical investigation (for example, spike solutions with new and undocumented hardware) to establish whether it can be done and what it would cost.

A concrete, empirical acceptance-test driven approach encourages people to concentrate on discovering what we need rather than speculative design.

I’m interested in technologies and methods that help people to think concretely and empirically about what systems should do. Specifically that means: