## Simplicity: What is it?

What is simplicity in software? How do we know when we’ve achieved it? What does it look like?

We often talk about complexity in software, indirectly or otherwise. An Extreme Programming mantra is *Do the simplest thing that could possibly work*. We talk about *being pragmatic*, presumably in the hope that pragmatism will result in a simpler, fit-for-purpose solution.

But what is simplicity in software? How do we know when we’ve achieved it? What does it look like?

Of course, there is no simple answer to this question and I am sure mathematicians and philosophers will have a lot to say on the subject. For example, Prof. John Maeda is in the process of defining a set of laws for simplicity in design. MIT Media Laboratory has initiated a major research agenda focused on SIMPLICITY.

In the context of software, I believe we need to partition problems into manageable classes so that we can start to talk about them in a useful way. For example, an obvious class of problems is that of algorithms, some of which can be expressed mathematically and so can be simplified or reduced using algebra or logic.

Having classified the domain of problems, what are we going to do with those classifications? Well, I think we can apply something like the language of patterns to each classification: Name, (Class of) Problem, Context, Forces, Solution, Resulting Context, Rationale.

But this is not enough, there is yet another dimension to consider: *who the solution is being communicated to*. We want to arrive at a simple solution because the next person coming to the software needs to understand it. We do not want to burden them with solving a complex puzzle. After all, that person might well be you in a year’s time.

I have been talking to a number of people about this problem and it is clear that it is not trivial to describe simplicity in software. It is ironic that we spend a great deal of time divining solutions we hope are elegant and simple, but very little is understood about simplicity to help us know when we have achieved it.

I hope to learn, find and discover more about this subject, ideas and pointers are very welcome.

Interestingly, JOT has an article on Complexity in this months magazine.