Should Unit Tests Verify Requirements Only?

There is a very interesting presentation by Ian Cooper titled TDD - Where Did It All Go Wrong. If you are interested in Test-Driven Development (TDD), whether for or against it, you should watch that. Regardless of your opinion, Ian makes some very thoughtful points. In summary: Ian is definitely in favour of TDD, but thinks many people (including himself originally) are not doing it right.

Actually the assertion he makes is not exclusively about Test Driven Development: the claim is that tests should verify the externally visible behaviour of modules, and not their implementation. In effect (my phrasing), any test should be checking behaviour that is specified in a requirements document, change ticket, etc. and NOT lower level details. Such tests are closer to integration-tests than unit-tests, with some practical compromises that ensure they run fast enough to give developers feedback without breaking their concentration. This seems to lead in the direction of Behaviour-Driven Development.

sdkman: the Software Development Kit Manager

This is a quick note about a very cool tool for installing development tools for Java/Groovy/Kotlin/Scala, and more, on linux/unix systems. For those familiar with the nodejs management tool nvm, sdkman provides similar features for other languages.

Cluster Locks and Outbox Patterns

Book Review: Fundamentals of Software Architecture

Various New Articles on Software Architecture

This year is going to be a very busy one for personal reasons (all good). I have therefore (with some sadness) resigned from my current place of employment and am taking some time off. That wasn’t easy to do, as the company, people, and work were all great.

However this has given me more free time recently to catch up on writing articles for this site; some new and some which have been half-completed for a very long time. These latest articles are:

Artificial Intelligence According to John Oliver

Comedian/journalist John Oliver has posted the best introduction to artificial intelligence (ChatGPT and relatives) that I know of. If you’re looking to explain to anyone what AI is, and what the pros/cons are, I can strongly recommend this Youtube video. Well, assuming they don’t mind a few rather rude words..


My employer has kindly agreed to publish a small project developed by myself as open-source.

jdbc-audit-proxy is a server and matching JDBC driver which forwards JDBC calls from any JDBC-enabled client application (eg Squirrel, DBeaver, IntelliJ) to any relational database. It is intended for a specific purpose: to give developers and support staff access to privacy-sensitive databases when needed while keeping an audit-trail to detect abuse and to (hopefully) be compliant with laws such as the European GDPR. It also resolves issues related to login credentials for the target database, and to network accessibility of the database(s).

This project is in use in a production environment. However it is not being actively maintained on github; you are welcome to use it but please don’t expect support.

Some Thoughts on Software Architecture

Well, it’s been quite a while since the last post here. This isn’t because I’ve had nothing to say - in fact quite the opposite, I’ve been very busy. I do have some free time coming up and will hopefully post a series of articles in the next few months.

To start with, I’ve written an article on Thoughts on the Role of Software Architect. In it, I discuss the wide range of responsibilities of a “software architect” at my current employer.

I also wrote a few architecture-centric blog-articles for my employer’s tech blog regarding team structure (STOSA) and an approach to distributing data throughout a microsystem architecture (distributed read models):