Avoiding growth by accretion

Software has a tendency to grow by accretion - a gradual build-up of material causing what was a small and simple nucleus to become a large, complex object with many layers. It's the same mechanism by which planets form. A small clump of particles attracts other particles, and this new »

What is a Technical Architect anyway?

I spent a fair chunk of my career being a technical architect, most of which I also spent dreading the inevitable, "so what do you do for a living?" question at parties. Mostly I settled on answering, "I don't know" and quietly sobbing in a corner, because at least that »

Services in the Monolith

It's become accepted that microservices, when done right, are a Good Thing - helping you keep your responsibilities nicely separated, easily share functionality between applications, and scale in a granular fashion where only the hot spots are spread across a multitude of servers. It's less commonly accepted, but even more »

The state of TDD

The state of test-driven development across our industry is terrible. This may seem a rather brazen statement, given pretty much everybody and their dog is writing tests somewhere vaguely around the same point as they write code, and you don't have to scroll far down this blog to find an »

Strict pattern adherence considered harmful

Overly strict TDD and SOLID are this generation's factory pattern and XML. If you don't know what I mean by that, open a piece of "enterprise grade" code from the early 2000s (you do have a stash of that kicking around, right?) That boilerplate-laden J2EE or .net 1.0 code »