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
Author: Bob
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?
Modulo arithmetic in everyday life and code
Despite its scarily maths-sounding name, I suspect that you have already come across modulo arithmetic, even though it probably didn't have that name. In this article I'll go into a few examples of modulo arithmetic in the everyday world, and how the practical limitations faced by computers cause modulo arithmetic to crop up when you … Continue reading Modulo arithmetic in everyday life and code
Tests to hold code securely in place
If you have automated tests for your code, you are doing better than some programmers. However, how good are those tests? In this article I'll explore how tests can be good (or not). Cable clip analogy Before I get into tests, I want to introduce something that will be useful as an analogy for them. … Continue reading Tests to hold code securely in place
Balanced trees
In a previous article on complexity, i.e. performance trends in code, I said that trees can be useful ways of storing data, but they only work if they’re reasonably well balanced. In this context, balanced means that no path from the root node of the tree to a leaf node is much longer than any … Continue reading Balanced trees