A Philosophy of Software Design, 2nd Edition: The Frustrations Of Unknown unknowns

Introduction

A Philosophy of Software Design by John Ousterhout is a superb book and one I would recommend to any one regardless of where they are in their career because it will make them a better Developer. Chapter 2 is my favourite and is worth the price of the book by itself. It is in this chapter where the author defines complexity, it’s symptoms and its causes. In this post I focus on Unknown unknowns which Ousterhout called the worst occurrence of the three symptoms of complexity.

Definition

The author defines this symptom as “it is not obvious which pieces of code must be modified to complete a task, or what information a developer must have to carry out the task successfully”. Having been afflicted with this symptom far too many times, my definition would be an exasperated “I didn’t know I needed to change that!”

My Frustrations

When a release fails due to an unexpected issue no one on the team anticipated, it can be frustrating. The change gets attention for the wrong reasons, leading to extra work and stress as we rush to fix the problem and correct any data issues. Earlier tactical decisions or quick fixes often set up the release for failure from the start.

One positive to take when you bump into scenarios like this is that you know a little bit more about your system than you did before and to update whatever documentation you have.

The Solution

As Ousterhout highlights, there are no quick fixes or silver bullets. Complexity such as Unknown unknowns thrive in systems that lack clarity. In contrast, a well-designed, obvious system allows developers to quickly understand the code and make changes which don’t result in P1 tickets being raised.

The Podcast

Shortly after writing this, I found the excellent Book Overflow podcast who have an episode on this book and urge you to check it out. Unfortunately I can’t find a link directly to the show but you should be able to find it via your podcast player.

Acknowledgment

Thanks to this Hacker News thread which brought the A Philosophy of Software Design book to my attention.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.