The different levels of testing are well known: A bug found by the customer is extremely expensive, a bug found in acceptance testing somewhat less. At the end of the chain, usually, unit tests are listed as the quickest and cheapest mechanism to catch quality problems early. I would argue that this hierarchy still lacks... 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 →
Gathering Requirements
I have noticed a fairly anecdotal negative correlation between the effectiveness of the interactions between a product manager and the engineering team and the frequency with which either party uses the phrase “gathering requirements”. As I am generally curious about how language determines our understanding of the process of software development, I would like to... 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 →
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 →
Software Projects and the Tower of Babel
The biblical myth of the Tower of Babel mourns what humanity had been capable of, had the Lord not chosen to confound our languages lest we learn to work together effectively. I want to argue that even teams that share a common mother tongue get lost in translation more often than we might think and... Continue Reading →