Skip to main content

Posts

ACCU London is Back!

ACCU London started in 2007, and that feels like an age ago now. I understand that after being passed from organiser to organiser if finally fizzled out around COVID. But now it’s back in the very capable hands of Oana May . In a basement studio near Old Street Station, about forty of us gathered for an excellent talk from a previous CTO at Monzo, and some 121 advice sessions from experts. I certainly enjoyed being an ‘expert’ and the four people I spoke to had some interesting and engaging questions, not all of which I could answer! How Engineering Skills Actually Improve in 2026 Meri Williams explored how software engineers develop their skills and why experience alone doesn't necessarily make someone a good teacher. Using the four stages of competence, from unconscious incompetence through to unconscious competence, Meri explained how experienced engineers often struggle to articulate why they do things a particular way. What has become second nature to them can be difficult t...
Recent posts

The Art of Hiding in Plain Sight

Abstraction, Encapsulation, Information Hiding and Behavioural Compatibility Abstraction, encapsulation, information hiding and Behavioural compatibility are four fundamental principles of software engineering. They're closely related and frequently confused, but they describe different things. None is specific to a particular programming language or paradigm, and all three apply to software design at every level, from individual functions to distributed systems. I've been writing software professionally for more than twenty-five years, and I've certainly used these terms without always considering the differences between them. Recently, I wanted to understand their origins and, in particular, the design principles that allow an implementation to change without affecting its public interface or externally observable behaviour. The aim is to design software so that its implementation can be changed in the future without affecting its clients. Refactoring immediately comes to...

Back to C++ London, Without the C++

I was delighted to be asked to be a last minute speaker at C++ London , even though I haven’t used C++ in anger for more than two decades. So, I was very relieved my Zero to Deployed talk went down well.  The meetup was held at Maven Securities, which have lovely, spacious offices right next to Liverpool Street station, so it was really easy for me to get too. As well as about one hundred other faces, there were we a few familiar ones from my C++ days, including Phil Nash who was also speaking about testing in the age of AI, another non-C++ talk. Phil Nash argued that code written by LLMs needs testing just as much as code written by humans, and that LLMs can write tests for their own code, provided they are given appropriate guidance. LLMs can follow Test-Driven Development (TDD), but simply telling them to use TDD isn't enough. They need to understand the process: start with a failing test, write only enough code to make it pass, and then refactor, paying particular attention to...

The Mythical Man-Month by Frederick P. Brooks Jr. - A Review

The Mythical Man-Month by Frederick P. Brooks Jr. was first published in 1975 and is widely regarded as one of the most important books about software engineering and managing software projects. Fifty years later, however, I question just how relevant much of it remains. There is no doubt that Brooks understood many of the challenges involved in developing software, and some of his observations remain as relevant today as they were when he first made them.  However, software engineering has changed enormously over the last fifty years, and even over the last thirty. Modular software development, Agile practices, modern tooling and, more recently, artificial intelligence have changed the way we design, build and deliver software. Consequently, while I found some interesting ideas and useful reminders throughout the book, I also found a great deal that felt dated, unnecessarily lengthy or simply less applicable to modern software engineering. Brooks' Law Perhaps the most famous idea...

The Maid, The Shoe and The Castle

The Maid When we were offered the opportunity to stay in a suite at the Maids Head Hotel in Norwich, even though we live in Norwich, we couldn’t resist and booked it for our 19th wedding anniversary. And I’m so pleased we did. We’ve travelled a lot this year, so it was nice to have time together away from home without a long journey. Everything about the experience was perfect. The room, which was the Paston Suite , was large and provided lovely views of the Cathedral and Tombland. The bathroom was spacious too. The staff were lovely and couldn’t have been more helpful throughout our stay. When we arrived, we found an anniversary card and two swans formed from towels and surrounded by petals. This made us feel really special and valued. There's something quite special about staying in a hotel in your own city. We know Norwich extremely well, of course, but staying in the heart of it made the experience feel like a proper break rather than simply another night at home. The Shoe Nor...

Premature Optimisation: We Knew Better 50 Years Ago

All good software engineers want to write good code. Unfortunately, many software engineers believe that good code must always be efficient, leading them to optimise unnecessarily or prematurely. Code is written primarily for people to read, so it should be as clear and simple as possible. One of the few constants in software engineering is change, and clear, simple code is easier to change without introducing bugs. However, what good software engineers really want to write is good software. This is even more important in the new world of AI, but this isn’t an article about AI. I am not suggesting that code never needs to be optimised, or that an engineer shouldn’t consider performance when writing it. For example, a value that is expensive to evaluate but remains constant should be initialised outside a loop rather than recalculated on every iteration. However, halving the execution time of a 2ms calculation in a request that also makes a 40ms database call makes very little differenc...

Essays, Papers, White Papers and Articles: What's the Difference?

I've been writing and blogging for as long as I can remember, and I've never really understood the difference between articles, essays, papers and white papers. I've certainly never known when I should use each term. So I asked ChatGPT to explain the differences and when I should use each one. This is what it told me. It turns out there's quite a bit of overlap, but the main differences come down to purpose, audience, evidence and formality. Essays An essay is about exploring an idea, developing an argument or expressing a point of view. It's often personal, reflective and doesn't necessarily require extensive research or a formal structure. For example, I've been reading a lot about software optimisation recently, particularly the views of Donald Knuth, Michael Jackson, Brian Kernighan and P. J. Plauger. If I were to bring their ideas together, compare them with my own experience and reach a conclusion about premature optimisation, that would make a good es...