Software Philosophy

Published: September 12, 2020 · Previous · Next

Motivated by the current trend towards a more complex and less understandable1 2 3 4 5 6 software world, I tried to formulate my personal software philosophy. I came up with these four headlines.

Simplicity and Readability Counts

You do not write code for computers, but for humans.7

This very statement says it all. Since we developers must deal with all the mess we create, it is priority number one to create a readable mess. The human brain is some kind of a ring buffer. After time we forget things. It must be easy to re-read and re-understand a codebase. In order to achieve this goal there are a few things I consider important:

The Power of (Good) Defaults

Configuring things is annoying. It is even more annoying when non-trivial initial configuration is required. This might be unavoidable for server software such as e-mail. But it is avoidable for things like a text editor. I used to use vim a long time ago. The defaults are annoying8 and small tweaks (e.g. set background=dark) are always needed. I migrated to nvim which has “strong defaults” as a design goal. Deploying a fresh Linux machine and installing/configuring a few programmes is refreshing now, since I can just use my tools without any tweaks.

To make your software usable my thoughts are:

Minimal Dependencies

Drew has written an article about dependencies and maintainers. I think his article makes a good match.

Choose the Right Tool

I love this one. Chose the right tool for your task. Think outside the box and use tools which are simple, easy to remember, and available. Do not start writing a e.g. custom Python script for every small task. A lot of problems are solved and there are a lot of good solutions available. Know these solutions and use them wisely.


It got better the last years, though.