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 »

Pass-through objects

Take a look at this class: public class ThingHandler : IThingHandler { private readonly IUnderlyingThingHandler _underlyingThingHandler; public ThingHandler(IUnderlyingThingHandler underlyingThingHandler) { _underlyingThingHandler = underlyingThingHandler; } public Thing GetThing(int parameter) { return _underlyingThingHandler.GetThing(parameter); } } I've seen variants of this everywhere I've worked. Sometimes it doesn't have the dependency injected, sometimes it catches and immediately rethrows »

Architecture Envy

My comment on a failed project: "The architecture looks like someone spent an afternoon throwing darts at the index page of Gang of Four". There's a serious point buried in this, which is that most of us will spend at least some of our time working on projects that neither »

Ownership: Architecture

I talked yesterday about what happens when development teams lose ownership of the software requirements. In that, I mentioned that teams need to own their architecture and technology stack. Surely this is so self-evident it barely needs mentioning? Well, not quite. In fact, it's incredibly common for developers to be »