John K. Ousterhout - A Philosophy of Software Design

This article is part of the serie: clean-code

Posted Jan 15, 2024
By Balázs HIDEGHÉTY
2 min reading time

Achieving excellence in software development demands a balanced mix of hands-on creativity and principled methodology. As a leader (CEO, founder, technical lead), you need to figure out what works for you and your team!

Now let’s tackle “software design” again, from a slightly different perspective


Previously, we drew attention to Robert C. Martin’s Clean Code. We acknowledged his principles-driven approach, and besides coding, we touched on management and architecture-related topics as well.

Today, let me tackle the same problem – effective, maintainable, scalable code – from a different perspective.

Allow me to introduce John Osterhout’s Philosophy of Software Design and his hands-on magic secrets.

Despite some differences in approaches between the two mentioned authors, their goal is the same.

The book highlights these major secrets of success:

  1. Working code isn’t enough: it must minimize complexity.
  2. Strategic vs. tactical programming (mindset).
  3. Classes should be deep [1].
  4. Define errors out of existence [2].

Stay tuned - Summaries of the videos will be coming soon!

Link to the book: A Philosophy of Software Design: Ousterhout, John | Amazon.com: Books

Link to the google talk video: A Philosophy of Software Design | John Ousterhout | Talks at Google - YouTube

A summary done on the YT channel HowieCode: 7 Software Design Concepts from John Ousterhout - YouTube


📌 Make sure you and your team subscribe (follow me) on  LinkedIn so you don’t miss out on the latest insights!


  1. In contrast to Robert Martin’s approach, which is easy to misinterpret (classes should be small, should do one thing), Osterhout’s way of defining meaningful classes is probably easier to understand. ↩︎

  2. Here, the author showcases how easy it can be to provide a better user and programmer experience by avoiding errors (exceptions) just by looking at things from a slightly different angle. ↩︎


Further Reading
Designing Microservices the Right Way

Remember, business goals are rarely about having a top-notch system!

Finally, we have arrived at the point where we can discuss the pinnacle of modern software architecture: microservices.

Simple API - Integration Problems and Patterns

Even the simplest distributed system – yes, even integrating against a single API – can pose significant challenges (more than 80% of solutions that SMEs have). Mind-blowing, right!?

Distributed System Design and Fallacies

Distributed applications (APIs)? Avoid technical hiccups! Break free from misconceptions and build truly resilient distributed systems!