Artificial Scarcity Is Not The Solution

In the digital space, putting a price on non-physical goods has been a challenge at least since the rise of the internet. The market mechanisms of the physical world do not translate well because of one simple missing ingredient: Scarcity. A craftsman creating a table can easily put a price tag on that table because... Continue Reading →

Much of Your Work Will Go To Waste

It may sound like an overly pessimistic assessment of the state of our industry. My intention is not to sound cynical, however, I think we need to be honest with young engineers entering the field of software development: There is a real possibility, that a lot of the code that you will write during your... Continue Reading →

The Trouble With Rewrites

I have a bit of a soft spot for legacy systems. They have a certain charming ugliness to them. Clearly, there is a ton of challenges with legacy projects, partly related to organizational incentives, and partly related to technical concerns. Sometimes the response to these challenges is: Let’s rewrite all of it. I think that... Continue Reading →

On Referring to your Colleagues as Customers

I have observed a pattern that companies large enough to develop internal tooling institutionalize a vocabulary that evokes the impression of a supplier-customer relationship between the teams building these internal tools and the teams using them. I would argue that saying “the customers request a feature” when talking about internal users does more harm than... 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 →

On U-Boot Projects

Projects that are executed against the will and without the knowledge of the management are a particularly fascinating artifact of the software engineering world. The English term I heard used for these is “Skunkworks”. However, I particularly like the German expression for such stealth missions: U-Boot (submarine). Nobody is aware of the U-Boot until it... 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 →

The Management Proliferation Cycle

I think that most practitioners in the technology space will have come across a project with an incredibly skewed managers-to-doers ratio. Symptoms are typically long discussions that are detached from the on-the-ground reality, difficulties to build consensus about the right approach because of the number of opinions involved, and a way too long wish lists... Continue Reading →

Impactful Work Versus Salary

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 →

Blog at WordPress.com.

Up ↑