31 May 2005

How to keep it simple

By Andrew Clifford

Achieving simplicity requires more than wishful thinking. To really keep things simple, you need to deeply understand how IT delivers value.

I wince every time I hear the phrase "Keep it simple, stupid."

I can't disagree with the sentiment. But too often, it is only sentiment.

To get beyond the sentiment, we need to ask two questions: "Why do we make things complicated?" and "How can we keep things simple?"

Nobody sets out to make things complicated. But somehow complexity always creeps in. I think the two main culprits are design overshoot and ignorance of purpose.

Overshoot is a common problem in any design process.

Most designs start simple. But the designer quickly sees that the design needs just a little more refinement. So they look in a little more detail at the requirements. They add a little more to the design.

The problem is, they don't know when to stop. Rigour is good, more rigour is better. They gather ever more nuanced requirements, and fill the solution with cleverer and cleverer design. Bit by bit, the complexity of the solution grows to dwarf the complexity of the problem.

It's easy enough to avoid this. After a while we should take our design and simplify it back around the original needs and purpose. We should aim for something with the simplicity of the very first design, but with the wrinkles taken out.

Which brings us to the second source of complexity.

I think we don't really know why we do IT. We think we know - we have requirements, and designs and plans. But the bit we don't really, deeply, truly understand is how we will get value from a system. We can't simplify our designs, because we don't know the core purpose we should be simplifying around.

Not only does our ignorance stop us simplifying, it makes us add complexity. We don't know how we will get value from a system, so we "bet" that a system with more functions and more options will somehow deliver more value. Future users and designers fill the system with more and more features on the off chance some will be useful.

To keep things simple, we need to be absolutely clear about purpose.

Purpose isn't about having a statement on the strategic importance of IT. It doesn't need a project management plan. It isn't written in the 100-page design document.

In IT, purpose is simply about understanding what needs to be remembered, calculated and communicated.

To gain clarity of purpose, we need to really, deeply, truly understand four things.

This understanding will show us which of the functions of a system will give benefit, and which can be dropped. It will give the focus we need to simplify the design, and to avoid overshoot.

But without this understanding, we are truly stupid. And no amount of sentiment will keep it simple.