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!

Technical vs Architectural Debt

I was first introduced to the idea of splitting technical debt into two distinct parts during a conference talk given by Rebecca Wirfs-Brock. She talked about there being a real difference between simple cleanup such as renaming or adding clarity and architectural restructuring.

Optimizing collaboration

A manager at a past client of mine once had a new request come in. The new request would impact multiple different teams, that would all have to make changes to their individual pieces and then integrated. Because it was potentially a large change, he asked all the teams involved to come up with an estimate and they came back with a total estimate of ten to twelve weeks.

Ensemble Programming

Ensemble programming (aka “Mob Programming” or “Software Teaming”) is a technique where the entire team works together on a single story at the same time, on the same computer. It takes pair programming to the next level by including everyone.

Defects / Bugs

Surprisingly, there isn’t much agreement on what a defect is or how they should be addressed. This page explains our position on defects and how we feel they should be dealt with.

Neurotransmitters that drive behaviour

While science has identified hundreds of different neurotransmitters in our brains, there are a number that are most commonly identified with behaviour. Each of these are part of our survival mechanism and will encourage or discourage specific behaviours with the goal of keeping us safe.

Technical Debt

The term “technical debt” is widely used in the industry even if there isn’t a clear definition of it and almost nobody uses the term in the way Ward Cunningham meant when he first coined it. It’s most commonly used to describe things in our environment, usually but not always code, that slow us down. These are things that are working - not bugs - but that are implemented in a poor way that makes them more difficult to understand or modify.

Pre-requisites for Continuous Improvement

Continuous improvement is a process of constantly seeking out ways to improve and optimize performance, processes, and overall organizational success. An agile environment hinges on this notion of continuous improvement. We don’t expect to be perfect today but we do expect to be improving over time.

Multiple boards for a single team

Many teams assume that they have to fit all their work on to one board and that’s not true. Kanban boards are there to help you visualize and manage the system. If one board can do that well then one board is fine. If it would be easier or better to visualize and manage across multiple boards then that’s what you should do.

Who should define the workflow?

We regularly talk about optimizing the workflow but we don’t talk as often about who should be doing that optimization. Should it be the manager, or some dedicated process specialist, or should we be leaving it up to the team to figure out their own workflow?