A cliche of technology projects is the presence of an overly negative senior engineer who will not hesitate to communicate their disapproval, often accompanied by an extremely negative opinion on the realisability of a given project. I have seen managers finding it difficult to deal with such a situation. In this article, I want to... Continue Reading →
Meetings: A Curious Status Symbol
The fact that individuals that are considered high status in an organization often spend a frightening amount of time in meetings has apparently caused some people to draw the opposite conclusion: In some circles, having a lot of meetings seems to have become a status symbol, a sign that one’s input is valued. This observation... Continue Reading →
On Myths and Superstition in Business
Those who are on the quest for wisdom and enlightenment about business life have an enormous array of best-selling books to pick from. Even better, you need to look no further than your LinkedIn timeline, a place full of advice on leadership, management, and decision making. The only catch: Nobody seems to care if these... Continue Reading →
“What does this thing do?”
There are many principles and rules out there that offer guidance about good code design. I am generally skeptical about dogmas. Nevertheless, sometimes when I am deep in the trenches I do find it useful to have a rule of thumb to apply to quickly assess whether I'm on the right track. Such a rule... Continue Reading →
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 →
Map Data V: False Assumptions Programmers Make
Famously, engineers tend to make wrong assumptions about a lot of things: Names and time are two well-known examples. Maps are a rich source of edge cases. Especially when you start dealing with global maps, be prepared: That weird situation you assume does not exist? Somewhere in the world, it does. This article is part... 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 →