The common wisdom is that working in fields with high social impact such as environmental protection or education requires lowering one's salary expectations whereas some of the fields that have the reputation of being lucrative financially also face the suspicion of exploitative culture or frequent moral hazards such as finance or the petrochemical sector. While... Continue Reading →
Has Any Great Idea Ever Been Developed at the Water Cooler?
The fact that open-plan offices have become the norm in the software industry is a mystery to me. I know very few engineers working in these environments that appreciate them and all the quantitative evidence that I am aware of seems to favor good ol’ walls. Open spaces are often promoted as environments that “foster... Continue Reading →
The Reorganization Pendulum
Let us talk about everyone’s favorite pastime: Reorgs! There are many reasons why they happen, some very valid (like economic necessity or making sure the right people end up in the right position) some a bit less (e.g. a new manager wanting to leave a scent mark or sidelining an underperformer without stepping on anyone's... Continue Reading →
The Unappreciated Beauty of Legacy Code
Legacy systems are getting a bad rep in the industry. In this post, I want to investigate why that is, highlight some of the aspects that make legacy systems interesting, and explore some ideas on how we might get around some of the frustrations that legacy systems cause. Where does the bad reputation of legacy... Continue Reading →
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 →
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 →
Every Simple Language Will Eventually End Up Turing Complete
It is a cliche of the software world that change is the only constant. Nevertheless, despite the constant mushrooming of new technologies, it seems that some principles stay surprisingly constant, at least during the period that I can remember. In this article, I would like to propose one such constant by postulating the theorem of... Continue Reading →