This article is about kindness at work, particularly kindness as part of building software (although much of it is relevant to all businesses). I’ve been meaning to write something like this for ages, and finally was given a kick up the backside by watching an excellent talk by Dan Terhorst-North. I really recommend the talk … Continue reading Be Kind
Chaos engineering and the relationship between code and teams
This article is about a few things – chaos engineering, an analogy that explains it, then digging a bit deeper into the relationship between software and the team that produced it. It was sparked by a conversation with Stuart Day, for which I’m very grateful. Chaos engineering Chaos engineering is a technique to improve the … Continue reading Chaos engineering and the relationship between code and teams
Generative AI and skills
There has been a lot in tech news and opinion recently about what generative AI will or won’t do, such as take away jobs from programmers and testers. I’ve had a long enough career in software to be able to put generative AI in a bigger context, which I think helps to understand some of … Continue reading Generative AI and skills
You’re probably not working at Facebook
This article is about deciding when to implement architectural changes and large functional changes to a software system. There is no general right or wrong answer, because it depends on the context of your users/customers and your organisation. Even though they are the best-known, Big Tech companies such as Facebook are in the small minority, … Continue reading You’re probably not working at Facebook
You’re probably wrong
In this article I make a suggestion that might sound absurd: when developing software, you should assume that you’re wrong. Once you make this assumption, it can influence quite a lot of what we do and how we do it in ways that I think help us to deliver better software. Why do I think … Continue reading You’re probably wrong
Writing numbers as words
This article is about how numbers are written as words in various languages. It also has a tiny bit about functions, specifically fixed points of functions, which I use to describe how numbers work in the different languages. I speak only one of the languages below as a native, so I've probably made lots of … Continue reading Writing numbers as words
Nim
Nim is a simple game for two people. In this article I will describe it in case you don't know it (or don't know this version of it), and then describe how I've modelled it in a C# program and what I learned about the game as a result. The game There is a simple … Continue reading Nim
Is this a bug, a missing feature, or neither?
Software makers have this question a lot. They get some feedback from a user, and they must decide if it’s a bug, a missing feature, or neither. In this article I will explore this question using the analogy of a car. The simple answer is that there’s a lot of nuance – i.e. ‘it depends’ … Continue reading Is this a bug, a missing feature, or neither?
Reducing risk and disruption during migration using a blue/green approach
When a system needs to change from one version to the next, this can be disruptive and risky. One approach to reducing this disruption and risk is a via a blue/green approach. Changing from one version to the next is also known as migration, upgrading or updating. I will describe the blue/green approach using three … Continue reading Reducing risk and disruption during migration using a blue/green approach
International languages?
There are several things that are either official or de facto international languages. (I’m using a more elastic meaning of the word language than you might expect.) It’s interesting to look at the history and influences behind these languages, because they often leave fingerprints on the language. Who are the languages for? Who decides on … Continue reading International languages?