Stop Working With Blunt Tools

Clarke Ching introduced me to a story of 2 woodcutters – one worked furiously but finished late whilst another stopped frequently to sharpen his tools and finished early.  (He tells it better than I do) – I think it’s actually based on an Abraham Lincoln quote:

“If I had eight hours to chop down a tree, I’d spend six hours sharpening my ax.”

Let’s think more about developing software the Lincoln way

What tool sharpening should you do before you start chopping?

If you paid off or prevented some of the debt you were facing before new work started, would it enable your project to run faster, more smoothly, with reduced risk, a lower chance of defects or a lower maintenance cost?

A previous employer had a great strategy. Every new release of the product had 2 top priority named features on the priority list for “cleaning up” and “levelling up”.

Cleaning up:

  1. Get all unit and regression tests passing (and keep them there).
  2. Address all build failures and warnings (and keep them under control).
  3. Delete all functionality, code and tests that will have been deprecated for more than 3 releases. (and add alerts to functionality that will be removed in the next release)
  4. Fix all defects that put us below releasable quality before we’ve even started (and keep them there).

Levelling up:

  1. Raise the tools we use to those that are best supported, newest in the market or offer improvements to our working conditions.
  2. Raise the libraries we use to the latest supported versions and address any issues.
  3. Raise the platform versions we’ll support when the product ships and address any issues. (and remove support for obsolete or out of date platforms).

No major release started full-tilt on functional work until these were cleared.

Like all good practices, this isn’t new thinking, it correlates to 3 components of the lean 5S strategy; sort (seiri), straighten (seiton) and shine (seiso). Rather than just describing what was done, here’s some tangible benefits for the clean up & level up approach…

  1. There were no unpleasant surprises for our customers on a new release. We had a standard platform, support and deprecation policy and kept to it. Our customers liked it when we did predictable things.
  2. For the development teams levelling up was a common risk. Addressing this at the beginning of a project was a valuable de-risking activity. Where we hit critical problems, we could make clear, early upgrade decisions and where there were fewer issues we would develop full-time on updated versions throughout the project with regression on older supported platforms available from prior development cycles.
  3. Removing old parts of the product made life significantly easier for the teams. The reduced testing, regression and maintenance load allowed us to speed up development - much like scraping barnacles off the hull of a boat to help it run faster. Cleaning up also allowed us to take some sensible baseline code metrics before any new work started.
  4. Giving teams space and time to clean and level up before starting functional work had a positive impact on morale. We felt that we were trusted to “do the right thing” rather than “just ship it”. This empowered us to continue doing the right thing throughout the rest of our work.

Give your teams some time out to sharpen their tools and sort, straighten & shine the workshop before new work starts. It will make a difference to the performance of your team and the quality of the end result.

Share
avatar

About The Captain

Captain Crom started programming and debugging games from magazines on his Brother’s BBC as a small boy in the early 1980s. With early qualifications in both computer science & art and a love of live music it became clear he was destined for bad things. His tyrannical ways commenced with a degree in Computing & Informatics at Plymouth and from the mid 1990's a career in the software industry. After formative years as "The Scourge of the Thames Valley" between Reading and Bracknell with occasional raids on the San Francisco Bay area, since 2004 he has been seen sailing stretches of the A10 North and South of the Isle of Ely with the primary source of his raids targeted around Cambridge. Sightings have also been rumored as far afield as Scotland, Norway, India, Nevada, Florida and Georgia. The Captain has served in companies ranging from successful startups and ailing dot-coms to global corporations, spanning roles from IT, consulting, support, development and management through to agile coaching. The common thread in each of his roles is that he has always chosen to join software product groups - usually large-scale enterprise software. His large-scale product and organizational focus differentiates him from the more common textbook agile captains. (Other differentiators include his distinctive hoop earrings and love of spiced rum) The Captain's Agile experience started with a blend of FDD and XP in what he describes as "the most disciplined team he had ever served with". He subsequently moved onto using Scrum and XP blended with Theory Of Constraints, Kanban and Lean philosophies to improve software delivery techniques in other organizations. He believes every member of a delivery team should spend time with customers supporting the product they produced. “Sitting at the dirty end of a product (or cutlass) completely changes the way you think about business processes and write software for the rest of your softwarefaring career!”
This entry was posted in People, Simple Tools, Technical and tagged , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>