The Simplest Thing That Could Possibly Work
Tags: programming, architecture, learning
Published: 2021-09-20 16:38:05

---
title: The Simplest Thing That Could Possibly Work
published: true
description: Learn about a core design principle of software
tags: programming,architecture,learning
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v4v9q8qiba7seam8uzrr.jpg
---

[Wiki inventor Ward Cunningham](https://en.wikipedia.org/wiki/Ward_Cunningham) once recalled [an experience](https://www.artima.com/articles/the-simplest-thing-that-could-possibly-work#part3) he had with [Kent Beck](https://en.wikipedia.org/wiki/Kent_Beck), the creator of [XP](https://en.wikipedia.org/wiki/Extreme_programming):

> When [Kent] and I were playing with Smalltalk, we found it amazing what Smalltalk would do compared to anything either of us had used before...sometimes the programming was almost effortless, as if Smalltalk had been made to write that program. It was amazing. But other times we'd be programming away, and we'd say, "Now, wait a second, what are we working on here?" We'd just get stuck. And if we were stuck more than a minute, I'd stop and say, "Kent, what's the simplest thing that could possibly work?"

Cunningham explained that approaching software design from the angle of "what's the simplest thing that could possibly work" was a mind hack that reliably got them free time and time again.

"The simplest thing that could possibly work" soon became adopted as [a general design principle by early Agile practioners](http://www.agilenutshell.com/simplest_thing).

## Simple is the goal

It's not clear how simplicity relates to software. Software is complex, especially in 2021. But there's an easy thought experiment that explains why simplicity should be a goal of software design. Imagine that you are designing a mousetrap. The simple mousetrap that we all know and love probably comes to mind immediately. And another popular design is seen in the board game [Mouse Trap](https://en.wikipedia.org/wiki/Mouse_Trap_%28game%29).

Of course, we all know that the hilarity of Mouse Trap stems from it being a [Rube Goldberg machine](https://en.wikipedia.org/wiki/Rube_Goldberg_machine). Instead of being _the simplest thing that could possibly work_ it is the _most convoluted thing that could possibly work._ Half the time, it does not even complete the chain of overcomplicated events that are needed to drop the basket, thereby sparing the player who was unlucky enough to land underneath it.

An ordinary mousetrap is easily preferable.

## Simple is better

There are many other expressions of "the simplest thing that could possibly work." The US Navy developed the [K.I.S.S. principle](https://en.wikipedia.org/wiki/KISS_principle) in the mid-20th Century. The idea of "elegance" is often linked to simplicity. Edsger Djikstra also linked reliability to simplicity when he said, "Simplicity is prerequisite for reliability." And Leonardo Da Vinci called simplicity "the ultimate sophistication."

> A designer knows that he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away.
>
> de Saint-Exupery's Law of Design

Sometimes, _complexity_ in design literature is discussed instead. This is simply the other side of the coin:

> The purpose of software engineering is to control complexity, not to create it.
>
> Pamela Zave

And:

> Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges, and it causes end-user and administrator frustration.
>
> Ray Ozzie

And, one of my personal favorites:

> Fools ignore complexity; pragmatists suffer it; experts avoid it; geniuses remove it.
>
> Alan Perlis

## But, simplicity is not easy

No one said that simplicity is _easy_ to achieve, though.

![The Life of a Software Engineer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3j1uzqipnr9szov5q7v.jpeg)

Dijkstra, as always, has a great thought to leave us with:

> Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.
> 
> Edsger W. Dijkstra