Philipp Hauer's Blog

Java Ecosystem, Kotlin, Distributed Systems, Sociology of Software Development

The Wall of Coding Wisdoms in Our Office

Posted on Feb 20, 2020. Updated on Feb 24, 2020

There are some principles in software development that I always try to keep in mind. They guide me when I’m in danger of heading in the wrong direction. That’s why I printed those principles and hung them on a wall in our office. In this post, I share this subjective set of quotes with you. There is also a PDF for download available.

The Wall of Coding Wisdoms in Our Office

The Wall in Our Office

The Wall of Coding Wisdoms in our office

The Wall of Coding Wisdoms in our office

The Quotes

Premature optimization is the root of all evil. Donald Knuth

Premature optimization is the root of all evil. Donald Knuth

Source: Book ‘The Art of Computer Programming’ by Donald Knuth (1968). Wikiquote: Donald Knuth

Rules of optimization: 1. Don’t! 2. Don’t… yet. 3. Profile before optimizing. Michael Jackson

Rules of optimization: 1. Don’t! 2. Don’t… yet. 3. Profile before optimizing. Michael Jackson

Source: Rules Of Optimization

As a programmer, never underestimate your ability to come up with ridiculously complex solutions for simple problems. Thomas Fuchs

As a programmer, never underestimate your ability to come up with ridiculously complex solutions for simple problems. Thomas Fuchs

Source: Tweet by Thomas Fuchs

Get your data structures correct first, and the rest of the program will write itself. David Jones

Get your data structures correct first, and the rest of the program will write itself. David Jones

Source: Programming Pearls

The #1 rule of distribute computing: Don’t distribute your computing! At least if you can in any way avoid it. DHH (David Heinemeier Hanson)

The #1 rule of distribute computing: Don’t distribute your computing! At least if you can in any way avoid it. DHH (David Heinemeier Hanson)

Source: DHH (David Heinemeier Hanson) in ‘The Majestic Monolith’. Moreover, Martin Fowler’s FirstLaw has the same message: “My First Law of Distributed Object Design: Don’t distribute your objects”.

Scalability. The #1 problem people don’t actually have but still solve. Eberhard Wolff

Scalability. The #1 problem people don’t actually have but still solve. Eberhard Wolff

Source: Tweet by Eberhard Wolff

Shared + Mutable = Danger! Andrey Breslav

Shared + Mutable = Danger! Andrey Breslav

Source: KotlinConf 2018 Keynote by Andrey Breslav

Prefer duplication over the wrong abstraction. Sandi Metz

Prefer duplication over the wrong abstraction. Sandi Metz

Source: Talk “All the Little Things” and the post “The Wrong Abstraction” by Sandi Metz.

I also like the following quotes from the talk:

  • “I felt like I had to understand everything in order to help with anything.” (5:05)
  • “Duplication is far cheaper than the wrong abstraction”
 Avoid premature distribution. 2. Avoid premature abstraction. Both offer a lure of purity, cleanliness and scalability but add complexity and operational/cognitive overhead. Karl Isenberg

  1. Avoid premature distribution. 2. Avoid premature abstraction. Both offer a lure of purity, cleanliness and scalability but add complexity and operational/cognitive overhead. Karl Isenberg

Source: Tweet by Karl Isenberg

Data dominates. If you’ve chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming. Rob Pike’s 5. Rules of Programming

Data dominates. If you’ve chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming. Rob Pike’s 5. Rules of Programming

Source: Rob Pike’s 5 Rules of Programming

Compassionate Tech Values: Ego < Humility. Elitism < Inclusion. Competition < Cooperation. Being Smart < Learning. Being a Rockstar < Being a Mentor. April Wensel

Compassionate Tech Values: Ego < Humility. Elitism < Inclusion. Competition < Cooperation. Being Smart < Learning. Being a Rockstar < Being a Mentor. April Wensel

Source: Talk Cultivating Compassionate Tech Communities by April Wensel (Tweet). With a little update taken from a newer version of this slide.

More

Humbly, I like to add the following:

KISS &gt; DRY

KISS > DRY

Background

I believe that over-engineering is a dangerous tendency in our profession. That’s why many quotes revolve around avoiding over-engineering in terms of premature performance optimization, distribution, abstraction or scalability. Hanging up those quotes reminds us every day on what’s important and point out situations where we have lost focus.

Download

Download the all-in-one PDF.

Contribution

I really like to thank our Product Owner Anna-Karoline Abraham for creating the beautiful and colorful pictures of the quotes.