Cutting up large systems into smaller components is one typical task of software architecture. Many modern architectures follow a (micro-) service pattern which is one particular family of strategies to decompose a larger system into smaller parts. It would be short-sighted to apply any such method without consideration of its respective strengths and weaknesses and... Continue Reading →
Bayesian Software Architectures: An Exercise of Predicting the Future
I have talked about how software architecture design is a way of constraining the solution space for a project. Here is another angle on this: Any attempt to design a software architecture is an exercise in predicting the future. The usual way to make predictions is to extrapolate data from the past. This is based... Continue Reading →
Map Data I: It’s All About Relations
Map data is an interesting beast. Having worked on it for the last couple of years, I can note that many of the general data processing challenges arise. However, map data also comes with a number of particular features that set it apart. I have split this series into five parts: It's All About Relations.The... Continue Reading →
On Ambitious Goals
I am a fan of setting stretch goals that are just a little bit beyond what seems realistically achievable. They are motivating and communicate a certain optimism about the capabilities of the team. However, not all dimensions of a project lend themselves to ambitious goal-setting. We should be particularly careful about goals that affect technical... Continue Reading →
Architecture Annealing
The term “Software Architecture” can evoke the impression that it describes a blueprint that needs to be completed before actual development work can start. This association is natural given the origin of the term: The architecture of a building better be complete before the construction begins. Unfortunately, this vision is also at odds with what... Continue Reading →
What Problem Blockchains Actually Solve
Blockchains are polarising the tech community. I have repeatedly criticized, that current Blockchain-based solutions are mostly hype and little substance. However, that is an oversimplification of the truth. Blockchains are an interesting technology and they do address a real existing problem. However, I would argue that it is not the problem that people want to... 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 →
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 →
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 →