Unit tests are a liability, and I am not being ironic.

I have always been an advocate of proper unit testing. I believe it is a necessary attribute of building maintainable software. I also thought myself pretty experienced in writing sensible (unit) tests, but reading Unit Testing Principles, Practices and Patterns was an eye-opener in several ways. Vladimir Khorikov spends his 300+ pages teaching us what distinguishes high-quality tests from the time wasters. He assumes you know your way around the tooling already. It’s not a hard book and if you have testing experience you should get through it quickly. The examples are in C# but translate easily to Java. Let me summarize what has stuck with me most.

Scaffolding work in the historic town of Sandwich, Kent
Continue reading “Unit tests are a liability, and I am not being ironic.”

Microservices just aren’t simple

My first experience with Hashicorp Consul was when I was tasked to take over some minor maintenance of a simple Springboot app to which my predecessor had added this platform. Consul has everything to set up and run a distributed and horizontally scaled application environment (read: microservices). But since we had only one service and one instance of it, deploying Consul was completely unnecessary and only there as a learning exercise. Good old microservices; you’d think they should be past their peak of inflated expectations by now, but I still regularly find them between the must-have requirements for projects in companies that do not strike me as the kind of hyper-scaler for which microservices were invented and intended. But I could be wrong.

Weverijmuseum, Geldrop
Continue reading “Microservices just aren’t simple”

Voting without an opinion, whether for parliament or during Scrum poker

Tomorrow we choose a new Parliament. Parties have shared their positions in their respective programs on all sorts of fundamental and more topical issues that will affect our present and future lives. Some parties have a clear ideological (religious) bent while others are more pragmatic. Whoever you vote for, you effectively support a wide array of positions that may not be all your own and which can often only be fleshed out in a diluted fashion, but that’s what’s democratic coalition government is about. What you certainly can never have as an individual is an informed opinion on everything important.

Continue reading “Voting without an opinion, whether for parliament or during Scrum poker”

A problem just begging to be automated

Last January I wrote a post on programming just for fun, by way of introducing my new portfolio website aligilo.com. I promised an update, so here goes.
Hobby projects: the word has a derogatory ring to it, but I think they are vital to your relevance as a developer and a way to stay motivated. Maybe you work at a place where you enjoy unlimited freedom to build what you fancy using whatever tools rock your boat, but that’s not how it usually works in the for-profit world. That world doesn’t revolve around you, except in your universe of private projects.

From the promotional poster of our play Fair Trade
Continue reading “A problem just begging to be automated”

The dead-end road that is end-to-end testing

Roy Braam wrote an interesting article in the latest Java Magazine 1/2021 that I wholeheartedly agree with about the dubious usefulness of en-to-end testing. Just to make it clear: an end-to-end test is not to ensure the integrity of your own software components, but to make sure that they cooperate well with everything that is outside your sphere of influence. As these concerns are opaque and fickle by nature you would think they merit very thorough testing. In practice however you will benefit more from building for failure as a strategy to counter anything that could go wrong. If your automatic process relies on a manually edited Excel sheet on a Windows share and someone left it open during the weekend – I’m not making this up – you’re toast anyway. Let me explain by means of a recent real-world example.

Knole Park, Sevenoaks, Kent, UK
Continue reading “The dead-end road that is end-to-end testing”