Principles of improvement

Dawid Laszuk published on
5 min, 814 words

No one plans to fail, yet everyone has seen failed projects. Why is that? I don't know.

At least one of the reasons for failed projects is the over-reliance on good intentions. We're going to make things good because we want to make things good so they're going to be good. Powerful as it sounds, it might not be enough. When it's our work then we find external reasons and when it's someone else's then they become excuses. After the fact it's easy to point out the obvious or the logical changes that should have been made.

Do I have a solution for that? Of course not. But over the years I have developed and adopted some principles that I believe help me in making things better.


These principles are not new, they're not mine, and they're not unique. They're just a collection of principles that I find useful and that I try to follow. The common theme is that mistakes happen, and almost all of them are of human nature. It's ok to make mistakes but it's better to minimise their occurrences and learn from those that have already happened.

Reversible over irreversible changes

Try to position yourself to be able to propose and make (easily) reversible changes, in contrast to irreversible changes. The principle is also sometimes called "two-way door" vs "one-way door". That's to highlight that almost every change can be reversed but with two-way doors to reverse it by going back through the door, whereas with a one-way door you need to rely on another set of doors to get back. In this case, reversibility means that there's little to no cost to revert the change. With one-way doors, the cost, or the likelihood of high cost, is much higher.

Processes over good intentions

A process, especially the one written down, is easier to follow than some ideal scenario in one's head. Good intentions, especially the ones that aren't written down, can be too optimistic and too vague. A "good intention" depends on someone's skill set, specifically adaptability, which has its limits. A written down process anyone can follow, provide feedback on, and improve.

Automation over manual work

If it can be automatically input or validated then it should be. Manual work is error-prone and time-consuming.

Documentation over tribal knowledge

If you learned something, write it down. There are jokes about job security through tribal knowledge but this is extremely short sighted. It's more productive for everyone when multiple people can read about something at the same time rather than a single person explaining the same thing multiple times. From hiring and leading, having someone as a bottleneck means that I'm going to think how to remove the bottleneck. In contrast, if everyone learns from your experience AND you can contribute to the team, you're the most valuable person.

Simplicity over complexity

You might be impressing new people by showing how much you know on a specific topic. However, to impress senior people, show how you took a complex topic and made it simple. Simplicity often means less moving parts, which means smaller breaking surface. In complex systems, it's also easier to make a mistake and harder to find it.

Something over nothing

The world evolves, the problems evolve. If it takes months or years to come up with a solution to a current problem, chances are that when you're done, the problem is different. Often, one doesn't even understand what the problem is in the first place as they don't have all the information. Getting something out there, even if it's not perfect, means that we can observe whether the problem is as we know it or whether it changes.

Unity over exceptions

Also known as "don't reinvent the wheel". I don't like the "wheel" phrase as it implies that the "wheel" is perfect yet every vehicle uses a different wheel (size, shape, material). But within the same problem-domain try to first reuse the same solution. If your company uses a specific tool for a specific problem, don't introduce a new one unless you have a very good reason. You're definitely going to have some problems with the tool and reusing what's there already means that you can check how others have solved the same problem, or reach out to others who have worked on it. Of course, you might notice that the tool is lacking and you might be the one to improve it or introduce something better, in which case others might follow.