Want to build better software? Get a haircut

Jacob Orshalick

A short story on the importance of continuous feedback.

I recently got a haircut from a new hairdresser. I frequent a local bargain salon that regularly has new staff. My haircut isn’t complicated enough to spend more than $20. Even with someone new, I’m a happy customer, usually in and out in less than 30 minutes.

We started the usual way. She asked me a few questions about how I wanted my hair cut and she pointed out a few specifics. But then, she did something different. She turned my chair sideways where I couldn’t see the mirror while she worked.

She cut and trimmed for about 30 minutes. So far so good. When she felt she was done, she turned my chair toward the mirror. It looked nothing like what I thought I described. The fade was too low, the hair on top was too long, and my part wasn’t right.

I gave some further instruction. This time I pointed while describing. Again, she turned my chair away from the mirror, worked another 15 minutes and turned me back. It still didn’t look right.

At this point, I gave instruction but suggested she keep me turned toward the mirror while she worked. The haircut was done in 5 minutes. Either I’m really bad at describing my haircut, or there was something else going on here.

Hairdressers understand the importance of continuous feedback. There’s a reason mirrors line the walls of the salon. If we can see what they’re doing, we can correct mistakes early, maybe even before they happen.

Put a mirror on your work

Why do we think that software is any different? A verbal description, even with some diagrams and hand-waving, never guarantees we understand what the end users want. We need them to see what we’re working on. We need feedback. Continuously.

The shorter we can get the cycle of code -> release, the quicker we can get our code in front of end users. How?

Some tips:

  • Smaller work items: try to make your features / user stories / use cases (choose your adventure) smaller.
  • Continuous delivery: every development team should automate the build and deployment process.
  • Involve decision makers: once we get our code deployed, someone (think Product Owner) needs to sign off or tell us how to make it better.
  • A “can-do” team attitude: developers need to view feedback as an opportunity to improve and take action.

So remember…

Learn from hairdressers and put a mirror on your work. Elicit feedback early and often. It’s much more likely you’ll get your software right the “first” time.

Related stories:

Enjoy this? Subscribe to our newsletter to get articles delivered straight to your inbox.