Development process

Architecture without documentation is incomplete

17 October 2020

Designing good architecture is only half the battle. You also need to be able to communicate your architecture to anybody who is likely to use it.

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.

Why trunk-based development isn’t for everybody

9 September 2019

There’s more to adopting trunk-based development than deciding to shun long-lived branches. You need a confident development team, a loosely coupled code base and efficient build automation to make it stick.

Agile metrics. You get what you measure. In a bad way.

12 August 2019

Agile process tends not to generate the kind of metrics that management teams feed on. Should this be a problem?

Does code quality matter? Using SonarQube with legacy code bases

22 July 2019

Attempts at SonarQube adoption often fail to gain traction with development teams. The concern is that it presents a view of code quality that is not relevant to the problems teams face on a day-to-day basis. Does it measure the wrong thing?

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.

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.

Sharing microservices across large organisations

8 March 2019

Sharing microservices across organisational boundaries is much harder than it looks. There are technical, operational, organisational and financial issues that need to be considered if you want to be successful.

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.

Can TOGAF and Agile really go together?

27 January 2018

On the face of it, TOGAF describes a very different world to the agile preference for working software over documentation. That doesn’t mean that TOGAF is incompatible with agile, so long as you’re prepared to adapt its numerous building blocks.

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.

What should a Scaled Agile “architectural runway” look like?

12 October 2017

The Scaled Agile Framework talks about an “architectural runway” as the main deliverable for agile architecture, yet it’s vague on the detail of what this looks like.

When does refactoring become rewriting?

19 June 2017

Refactoring describes a very specific and controlled technique for improving code. The problem is that it is often used to describe wholesale changes to code bases that should be treated as a rewrite.