No blog would be complete without a post on simplicity, so here’s mine. Simplicity is:
- The ultimate sophistication
- Taking a pencil into space
- Ditching basecamp … if it doesn’t do half what you want, then its simple to stop using it
When it comes to building software, keeping it simple can mean anything, or nothing. Is less features simple, or is it simpler to have the tools at hand to do the job? Is better design simple, or is less design simple? Is less engineering simple, or is more engineering simple?
Here are six trade-offs for keeping software development simple:
| S | Scope | Keeping the scope simple means less complexity, but less product. Keeping the scope simple is a good divide-and-conquer strategy, but needs to be done within a bigger context to ensure its not just scatter-gun approach for developing features. |
| I | Interface | Keeping the interface simple means a lot of design and testing and hiding and automating complexities, which can mean more logic and more complicated engineering. |
| M | Maintenance | Keeping the maintenance simple means good engineering and architecture, but with more cost and less-simplicity up-front. |
| P | Planning | The most simple approach is to take the first and most obvious solution, but is likely to mean more complex scope and interface and can result in building the wrong thing. |
| L | Logic | The fewer business rules and behind-the-scenes smarts, the simpler it is to understand and build, but needs to balanced with the scope. To simplify logic without simplifying the scope will lead to under-engineered software. To simplify the scope will naturally lead to simpler logic. |
| E | Engineering | Doing proper R&D and architecture will give a simpler, more elegant solution, but requires more work upfront and isn’t the simple approach of ‘just building it’. |
Focusing on keeping the scope, interface and maintenance simple is a good thing. Trying to make the planning, logic or engineering simple is a bad thing.
All this aside, the most important factor to keep simple is the cost/benefit. As Joel Spolsky says, “With six years of experience running my own software company I can tell you that nothing we have ever done at Fog Creek has increased our revenue more than releasing a new version with more features. Nothing.”.

Actually NASA did take pencils into space for their earlier missions. The whole Space Pen thing was an independent product, that just advertised as if NASA had asked them to design it.
The pencils weren’t very good, though – the particles from broken points gummed up the air filters, and they would burn happily in the high oxygen concentration atmospheres used in early missions.
I can’t find a reference anywhere at the moment, but I remember that Russians alledgedly took ordinary disposable pens up and used them successfully, more recently.
So something that appears simple isn’t so simple after all. An even better analogy of software. Thanks Jim.
Great article, must remember this next time I speak with clients
. Anyway isn’t software always simple, just comes down to time and money, right??
Keep it up.
Cheers