The other day someone asked me an interesting question:
How do you know when you’ve done enough analysis?
I’m not really sure how to answer that one.
Sometimes you are forced to stop when you run out of time. But if time is your only guide you risk ending up with something too vague to be implementable. Which means someone has to make quick and dirty decisions about how to implement it. And that’s a fast route down a short road to a lack of business buy-in. A short road too many of us have been forced down by sponsors who care more about delivery than quality or by project mangers who confuse analysis with planning on the one hand and specification on the other. No bitterness here, then.
The perfectionist’s answer is that you stop when you’ve nailed down every last detail. But that way another kind of madness lies. Over-specification produces inflexible processes which cannot accommodate the unexpected. Remember those early web forms which required “Zip Codes” to be numerical, and therefore couldn’t be used by people outside the USA? Over-specification also infantilises the people using the process, which may or may not be a good thing. And it can give you processes or requirements that are just plain wrong unless the detail has been provided by practitioners.
But it’s usually lumpier than that because there’s never time for infinite detail. The bit that’s easy ends up being over-specified but the hard stuff is still vague, as exemplified by my favourite systems diagram:
This of course is why we use tools like use cases and swim-lane diagrams to impose standards, drive out that ambiguity and ensure we have detail where we need it, but not where we don’t.
In the end it’s a judgement call. You use your tools, consult the business, trust your developers, empower your users, and deliver on time.
In the words of Albert Einstein:
The song that’s been driving through my head as I type this is Don’t Stop Till You Get Enough, which is eerily appropriate in so many ways. The difficult thing, as Jackson himself illustrated so clearly, is to know when enough is enough.
Make everything as simple as possible, but not simpler.