Do your retrospectives produce real change or just the same conversation, over and over on repeat? My Retrospective Magic course teaches you the techniques (including the neuroscience behind why most retros fail) to run retrospectives that actually move the needle.
50% off until April 19 — use code SPRING2026.

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!

Understanding the users

My very first professional programming job was at a large bank that had invested in a full UX lab. One-way glass, cameras, and a full setup where we could watch real branch staff using the software we had been working on.

Tip: Run tests in random order

Almost every automated test framework has the ability to run the tests in random order and some even do it that way by default. If you aren’t already running your tests in random order then start now. You’ll be amazed at what problems this will uncover.

Underutilized skills and talent

A common push-back to pairing or ensemble/mobbing work is that not everyone can contribute and therefore it would be a waste to have them there. “We’re building an iPhone app and our backend people can’t help”.

No blockers

When I was a kid, we liked to play with two way radios. I’d say something and end it with “over”. Then my friend would say something and again “over”. The word “over” had no actual meaning to us, except to indicate that we’d finished speaking.

Excessive sub-tasks

I worked with a team once that had gotten into the habit of creating sub-tasks for every little thing they could think of. This list included such obvious items as “write the code” and “test the code” and a typical story would have about twenty of these sub-tasks attached.

Ambiguity in wording

If I say that a thing costs five dollars but I don’t specify if that’s Canadian Dollars, US Dollars, or Australian Dollars then we might all think we understand the price but we don’t, because I used language that sounded precise and yet was actually ambiguous. What I think I said and what others think I said were substantially different.

Code smells

Imagine that you reach into the back of the fridge and you find some food that looks appetizing, but you’re not sure how long it’s been back there. Is it still ok to eat? So you give it sniff; does it smell ok?

Getting out in nature

Feeling stressed? Getting out in nature might be that quick fix that you need.

Stages of competence

The conscious competence model describes four, or possibly five, different stages that we move through as we are learning a new skill.