Software Lessons from a Tree Cutter

Thursday, 15 April 2010

by Silumesii Maboshe

Some weeks ago, after what seemed like two weeks of continuos rain in Lusaka, the skies cleared. The moisture-laden soil was too soft to hold a very tall, very old tree at my Aunt’s house. When it fell, it filled the whole backyard. It was an act of God that her house was not damaged. She called in one Mr Zulu, a tree cutter, to chop it down to size and asked me to watch him work. She called me to be a supervisor. I did not expect to be a student.

Small Teams Are Awesome

I am continuously impressed with how a small team of people can accomplish large tasks. This was no exception. Mr Zulu worked with two other tree cutters to take down what appeared to me three days worth of work. In about five hours they had done most of the job of taking the tree down to size. One could now see one end of the yard from the other.

Divide and Conquer Intelligently

Computing Science theory has a lot to say about reducing problems into sizable chunks and tackling those. I had never witnessed this with quite so much elegance. My take on the tree cutting would have been to cut the tree in half from the main trunk and then smaller and smaller pieces. Mr Zulu’s approach was to prioritise his dividing. There was still a stray branch that had settled on the roof of my Aunt’s house. He began on the roof, carefully making sure that area was clear first. Had he taken my approach that branch could have torn a hole through the house!

Cover Your Teammates

Another observation from Mr Zulu’s team was that even though they worked on the tree simultaneously, they were always “covering” each other and making sure that each of the others around the tree was safe. There were dangers from falling branches, trunks, flying wood-chips and even having an axe slip from one’s hands.

Trees Are Tangible, Software Is Not

I wish software was as tangible and tactile as the fallen tree. This intangibleness makes problems in the software space harder to deal with. The ideas, however, still translate.

It would have been a challenge to have more than even five people work on the tree. Extra effort would have had to go to managing who was doing what. I can imagine that more people would have been “resting” than getting work done. That kills morale.

Divide and conquer is a powerful tool that produces even better results when done intelligently. In this particular case had a brute-force approach been taken (my initial approach) the result would have been catastrophic.

Working in teams is about working together. Covering each other in software can be done in bug-testing, documentation, communication or simple observation. The earlier a problem is noticed, the better.

Every Day Is an Opportunity to Learn

As the chips of wood fell out from the tree as the tree cutters’ axes collided with it, I realised that there are lessons to be learned everywhere. Who would have thought that observing people hack away at an old fallen tree could help me be a better software developer?