Ascent Lookout 2014 Atos - Ascent Magazine: promises of a converging world Ascent magazine: A magazine into the future of our ever-more connected planet Ascent 2016 - Enterprise without boundaries Ascent Look Out: Anticipating the new opportunities and challenges created by the emergence of new technologies

The Simplicity Advantage

Over the last couple of months I have found myself thinking time and time again of this quote attributed to Bruce Lee:

Atos The Simplicity Advantage“One does not accumulate but eliminate. It is not daily increase but daily decrease. The height of cultivation always runs to simplicity.”

When working on or reviewing technical architecture, software designs or code I always feel un-easy if the solution is starting to seem complex or big. For some, size and complexity may appear impressive but, for me, creating great software is about finding simple solutions. Why do I think this? Three reasons:

Simple solutions enable you to be more agile.

Projects need to be agile to support the businesses of the future which will be agile. Complex solutions do not lend themselves to agility. In Getting Real (an eBook from 37signals who created BaseCamp, CampFire and Ruby on Rails) this is described aptly:

“You’d think that twice as much code would make your software only twice as complex. But actually, each time you increase the amount of code, your software grows exponentially more complicated.”

It goes on to describe how reducing the size and complexity of the code reduces the level of management required, the amount of maintenance work and the number of bugs.

This matches my experience. As I described in this post, reducing the size of a code base enables you to innovate more rapidly and reduces the cost of maintaining and updating your product.

Simple solutions require significantly less effort to develop.

It stands to reason that if you are writing fewer lines of code then your project can be completed in less time. But there are other savings as well. As Jamie Arnold put it in his post about the agile delivery of a large government project:

“Had we focussed on fewer things from the outset, the overhead of getting people up to speed and the additional communication needed to manage this would have been far less and our momentum would have increased. Lesson: We should have committed to doing less.”

Simple solutions allow you to deliver more value.

It is my belief that all projects should aim to deliver as much value as possible, as quickly as possible. Choosing a simple approach enables this. This idea challenges the notion that you should always deliver exactly what is requested/required at the outset. Getting Real has advice in this area too:

“The key is to restate any hard problem that requires a lot of software into a simple problem that requires much less. You may not be solving exactly the same problem but that’s alright. Solving 80% of the original problem for 20% of the effort is a major win. The original problem is almost never so bad that it’s worth five times the effort to solve it.”

Sometimes this may mean changing a business process to fit a simpler software solution. And if you do decide to change a business processes you may well find that it can benefit from a reduction in complexity in the same ways that software does.

In summary…

Perhaps all of this advice is best summed up by a quote widely attributed to a man who evidently knew a thing or two about software development, Bill Gates:

“I choose a lazy person to do a hard job, because a lazy person will find an easy way to do it.”

Image source: Flickr.com


Categories: CIO Agenda, Technology
David Daly

David has worked within the IT industry for over 14 years. In that time he has worked variously as a developer, analyst, technical architect and project manager. He now runs a team of 8 software developers responsible for delivering software that is used by over 1500 railway stations across the UK.He has successfully delivered numerous software projects and enhanced software development practices. Furthermore, by building close relationships with clients, he has strongly aligned the activities of his team with the commercial goals of his customers.David often challenges conventionally accepted wisdom and has a passion for proving that alternative approaches can produce better results.He lives in Nottingham with his better half, his 2 year old daughter and a female cat called Bob.Outside of work David enjoys running, climbing, walking, skiing and playing piano in a 60s covers band.

  • JF James

    Fully agree, some quotes I would like to share about simplicity:
    – “Deleted code is debuged code” from J. Sickel,
    – “The computing scientist’s main challenge is not to get confused by the complexities of his own making” from E.W Dijkstra,
    – “Today’s abstraction are tomorrow’s restriction” from D. Blevins.
    The disctinction between essential complexity and accidental complexities made by F. Brooks is also very interesting:
    – essential complexity: inherent to the problem to be solved, not avoidable,
    – accidental complexity: caused by the approach to solve the problem, non-essential and avoidable.
    So let’s adopt the KISS attitude !