On Company Values

Senior leadership did the analysis: The root of the problem at XYZ Corp was a lack of clearly defined value statements that underpin the company’s unique culture! Problems like this demand the corporate weapon of choice to jump into action: The Workgroup. The Workgroup started to flesh out a series of carefully crafted statements that... Continue Reading →

Linguistic Entropy and Chinese Whispers

I am certainly not the only one observing that the workplace has a tendency to make any word that described an interesting or innovative concept almost meaningless over time. The word “Agile” is an often cited example of a concept that has taken on so many different meanings over time that it’s information content has... Continue Reading →

Escalating Java Records

Records are part of the Java language since version 14. They are a useful feature for types that primarily capture data and avoid some of the boilerplate that Java is famous for. While many traditional class hierarchies could be translated to records, I found the discussion around which of them should be adapted to that... Continue Reading →

Organising Hiring as a Sealed Bid Auction

Most people perceive salary negotiation as an unpleasant activity. One particular issue with the salary negotiation process that has been observed is, that candidates unable to approach a negotiation from a position of strength are at a disadvantage. While I am not sure by how much this moves the needle against people already in a... Continue Reading →

Availability vs Latency: A False Dichotomy

When designing distributed systems, we sometimes think of latency and availability as two technical dimensions to balance out in our designs. I would like to argue that a more useful perspective would be to see them as two sides of the same coin. When discussing the design of a system, we typically need to carefully... Continue Reading →

Why Aren’t DevPMs a Thing?

The proponents of DevOps (myself included) usually bring forward arguments that evolve around breaking silos: “You build it, you run it”. This, according to the philosophy, leads to deliverables that take operational concerns into account, more automation and less finger-pointing. Many of these same arguments could also be applied to some of the other organisational... Continue Reading →

To Data Or Not To Data

It is modern to be data-driven. Organizations brag: “We make decisions based on data.” Having spent a decent amount of time building data-crunching systems, I have a lot of sympathy for this attitude. In fact, I have suggested data-driven approaches in previous articles. But I also think that the tendency to measure and quantify everything... Continue Reading →

Clean Code: Simple and Easy

If we had to write a list of typical skills we expect of Software Engineers, “writing clean code” would probably be on it. However, the trouble with clean code is that it is hardly an objective measure. I don't think I've ever worked in a team where everyone had the same understanding of what it... Continue Reading →

A Solution to the Diamond Dependency Problem

In this article, I want to explore a strategy of dependency management that enables transitive dependencies to evolve independently and to disentangle the gnarly problem of conflicting transitive dependencies. Dependency hell is a real place. The times I am struggling trying to find a matching set of dependencies are moments in which I ask myself... Continue Reading →

Blog at WordPress.com.

Up ↑