Rants

Generative AI does not mean the “end of programming”

12 December 2023

The demise of software engineers is one of those tired old tropes that refuses to die. Perhaps the programming revolution has already happened…?

The shared code fallacy: Why internal libraries can be an anti-pattern

15 July 2023

Most internal shared libraries are based on the fallacy that code sharing always makes development more efficient.

Internal developer platforms and the cult of Kubernetes

13 April 2023

We all agree that engineering enablement is important, but “platform teams” can often be a fig leaf for organisational anti-patterns and overly complex Kubernetes implementations.

Naming things is easy. Abstraction is much harder.

13 June 2020

One of the more pervasive myths in software development is that naming things is hard.

Don’t use test coverage as a target

19 February 2020

Code coverage can be a useful technique for discovering untested parts of your code base, but it makes for a useless target.

There’s more to publishing external APIs than choosing an API management vendor

17 November 2019

Publishing a public API involves many considerations, from billing and metering through to documentation and on-boarding. These are likely to be addressed through a collection of solutions rather than a single all-singing, all-dancing API management platform.

Monorepos. For when life isn’t already complicated enough.

22 June 2019

Many of the apparent benefits of monorepos can be realised through improvements in engineering culture and architecture rather than adopting a specific approach to source code storage.

The case against maturity models

8 June 2019

Maturity models are a popular way of looking at development challenges. The problem is that they are an arbitrary and inflexible tool and they tend to encourage the wrong mindset.

Why the Scaled Agile Framework (SAFe) can be agile kryptonite

23 March 2019

The problem with SAFe is that you can implement it without writing a single unit test or automating a single build…scaled agile may be an oxymoron.

Should teams choose their own languages and tools?

24 February 2019

Standardisation does have a place, but it should be reserved for infrastructure and collaboration rather than languages and tools.

How I learned to love the “Agile Industrial Complex”

30 August 2018

There is a growing sense of unease around how larger organisations have implemented agile. In particular, there is a tendency towards centralised control that can be at odds with the agile preference for individuals over process.

Relax. There’s no conflict between architecture and agile.

16 February 2018

Agile teams still need to make architecture decisions, but in supporting them architects should seek “just enough” architecture over “big design up front” and practical solutions over large-scale abstract thinking.

Entity services: when microservices are worse than monoliths

13 December 2017

Finely-grained, entity-based services seem to be advocated by some pretty authoritative sources. This is unfortunate as they are something of an anti-pattern that can undermine many of the benefits of decomposing an monolith into micoservices.

Technical debt is an overused and lazy metaphor

18 November 2017

Technical debt may be a useful metaphor for describing how bad code design undermines productivity to non-technical audiences, but it does not help in understanding the longer term problems that affect code bases.

Are OpenAPI and Swagger trying to turn REST into SOAP?

14 August 2017

Open API and Swagger enable the same kind of automated discovery and integration that WSDL and SOAP were invented to support. In doing so they undermine the design of REST APIs and don’t even provide adequate documentation.