All of this content used to be spread over three different blogs at three different domains and it's now been merged into one. Why was it ever three? Because at the time it seemed reasonable that each of them was for a different audiences, and yet over time I've found that the lines between topic areas got blurrier and tended to overlap. So now they're all together in one place.

If you encounter things that seem broken, please let me know and I'll get them fixed.

Browse by topic area:


There's a lot here and if you're not sure where to start, here are some popular starting points. From these, you'll find crosslinks to even more topics. Enjoy!

Why we branch the code

Branching is a great workaround for problems elsewhere in the system that we are unable or unwilling to fix.

Flow Efficiency

Flow efficiency (sometimes called Cycle Efficiency) is a metric that gives us a sense of how much time work is waiting. A flow efficiency of 100% would indicate that we are adding value to the work item for the entire time it’s in progress. 50% would imply that half the time we’re working on it and half the time the work is just waiting.

Rapid feedback

One of the key things we’re trying to get with Agile is faster and more effective feedback so that we can make better decisions. This extends into to the technical practices just as much as it does in our meetings and processes.

Self-sufficient teams

A number of years ago, a client of mine had a new feature request come to one part of the company. It was a significant change that would touch quite a few teams to get done and when they asked those teams how long it would take, the answer was somewhere between 10 and 12 weeks.

“Assume positive intent”

When dealing with troublesome or difficult situations, someone will often chime in with the advice “assume positive intent”. Sometimes teams will even bake this into their working agreements as something they should always do. While I really do like the sentiment, if taken literally as a hard rule, this can be dangerous advice.

Building capacity when hiring juniors

My comments yesterday on social media about encouraging the hiring of juniors seemed to resonate. So let me tell you about two of the very best teams I’ve worked with. Two teams of juniors, that were freshly hired, many straight out of school and none of them having worked professionally for long.

Perverse Incentives: Coffee Badging

I learned a new term today: “Coffee Badging”. This is when a company has mandated that people be in the office, so they travel in to the office, swipe their badges, grab a coffee and perhaps talk to someone, and then head home again, where they remain for the rest of their working day.

CI is not a server

We often hear things like “we’ve set up CI”, which makes no actual sense when you consider what CI is. It’s not a server or a tool, Continuous Integration (CI) is an ongoing practice whereby we keep the code continuously integrated. That sounds simple but has more subtlety than you might expect. Many places today that think they’re doing CI, actually aren’t, and as a result aren’t getting the benefit they could.