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!

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.