Are you just looking for the latest articles and want to skip all the preamble and summary? Click here.

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, let me know and I'll get them fixed.

Browse by topic area:

CategoryFormerly found at
Psychology & BehaviourUnconsciousAgile.com
Flow, Kanban, ScrumImprovingFlow.com
Metrics and ForecastingImprovingFlow.com & MikesHardMetrics.com
Technical PracticesAgileTechnicalExcellence.com


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!

Steps to improving predictability

If you have a need to know when the work will be done or how much you can do in a certain period of time then predictability will be important to you. We have great tools like Monte Carlo for probabilistic forecasting but the truth is that the forecast we generate is only as good as the data we give it. Garbage in yields garbage out. So how do we improve our data to make it inherently more predictable?

Where should a tech lead start?

I was recently talking to a developer who had just been promoted to tech lead. They were asking what they should be doing differently now. I suggested the first things I’d focus on are that their job is now…

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.