When the solution is the problem

How to prevent over-engineering & useless features in software

If all you have is a hammer, everything looks like a nail

Building software is like surgery

There is no hammer

How to stop over-engineering

Ask three questions

  1. “Could the technology be replaced by an equally viable low-tech or non-technological approach to the situation?
  2. Does a technological intervention result in more trouble or harm than the situation it’s meant to address?
  3. Does a technology solve a computationally tractable transformation of a problem rather than the problem itself?” (i.e. is the technology a pale substitute for the real solution)

Shift the company culture

  1. Value not doing things. Start a conversation in your company about “less is more.” REWORK and Getting Real evangelize this message in a form that software teams will appreciate.
  2. Consider extravention. That’s right, explore which features you can remove to improve the product. Antoine de Saint Exupéry captures extravention in one bright line: “perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away.” (If you’re looking for a more formal approach to extravention, read How to Cut Features and Enjoy it — 20+ questions to find the simplest design.)
  3. Document the roads not taken. In order to overcome the Law of the Instrument and prevent revisiting the same ground in the future, document what you’re not doing and why you’re not doing it. Put the roads not taken on the wiki, even if your every instinct tells you to put them in a file drawer. Just as domain bias encourages us to start hammering without thinking, publication bias discourages us from documenting the things that we don’t do. (Publication bias is powerful enough to blind history itself. Can you name one person, living or dead, who is celebrated for not doing something?)

Keep creating

Further reading

--

--

Data, visualization, machine learning, and abstract algebra. CTO and co-founder @QuiltData. Recent talks https://goo.gl/U9VYr5.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Aneesh Karve

Data, visualization, machine learning, and abstract algebra. CTO and co-founder @QuiltData. Recent talks https://goo.gl/U9VYr5.