Software Engineering Principles

Working together on a project, company or product means spending a lot of time together. A common set of principles build the foundation of every team and every company. The two principles that have proven to work for me are:

Simplicity

Making decisions based on simplicity leads to beautiful and high-quality solutions. Crucial decisions should always be challenged by simplicity, as this reduces complexity in the long term. Reaching and keeping simplicity is hard work and doesn’t mean building simple solutions. Most of the time simplicity can only be reached through iterating complex systems and reducing their complexity step by step.

Automating Everything

Software is fundamentally changing our world and daily lives. Even though software engineering is still a very young discipline, it has an impact on almost everything we do. The beauty of software is that it can automate and scale tasks. Coding means writing a process and making it infinitely repeatable. An algorithm which is written once can be run millions of times without the need of any raw materials or human interaction. This allows to not only double or triple the efficiency of a problem, but making it a thousand times more efficient and repeatable. Every task that has to be repeated multiple times should be replaced by software in order to minimize errors and save resources in the long term.