On Greener Grass Design Decisions

When making technology choices, most of us have to learn the hard way that almost every single decision we take comes with a trade-off. Most of the time technology choice A will have some advantage over technology choice B and vice versa. Very rarely a choice will turn out to be “Pareto-dominant”, meaning superior along... Continue Reading →

On Referring to People as Resources

I would like to address a pet peeve of mine: The unfortunate habit in some circles to refer to people as “resources“ in staffing-related discussions. In the past, I have heard phrases like “We will need more Java resources“ or “Can we find more DevOps resources”. In this piece, I want to argue that, more... Continue Reading →

Code Quality Stress Tests

Famously, there is no really good way to measure code quality. Tales are being told of shops that lift metrics like code coverage to the status of a sacred yardstick that business decisions can be based on and the absurd consequences of such practices. The best real quality metrics that I have found so far... Continue Reading →

The Hype Trojan Horse

The newly formed German government has recently signed a coalition agreement that emphasizes a new digital agenda. One of the proposals is to investigate the use of blockchain technology for land title registers and priorities of the digital strategy include AI and quantum computing. At the same time, we observe that for contact tracing during... Continue Reading →

Code Archeology

I have become very interested in patterns that cause software code to end up in the famous big ball of mud. One of the phenomena that I want to explore today is the fact that every business decision leaves a trace. This article includes a tourist guide for those interested in diving into the code... Continue Reading →

The Trouble With Platforms

It almost seems like a rite of passage: Every company sooner or later discovers they need to build a “platform”. The idea is simple: If you find the common denominator behind the company's development activities, you can build the tooling that allows future projects to be more cost-effective provided they make use of the same... Continue Reading →

On CV-Driven Development

When someone first mentioned the term CV-driven development to me, I remember finding it both extremely apt and equally funny. The concept describes the propensity of software professionals to select a tool not only by its ability to do the job but by its effect on the engineer’s career prospects. Indeed, some risky bets on... Continue Reading →

Problem Space and Solution Space

An extremely fundamental concept that is influencing most of my thinking around software projects is the distinction between the problem space and the solution space. It is one of the best models that I have found so far to think about the software development process on an abstract level. In this article, I would like... Continue Reading →

The Inverse Darwinism of Software Projects

I have become increasingly interested in understanding why it is so common for softwares projects to end up in the famous “Big Ball of Mud”, a state in which the incidental complexity of a system reaches a point that makes every small modification extremely painful. Only once we understand the reasons we can design strategies... Continue Reading →

Blog at WordPress.com.

Up ↑