Datasports on Software Development

Articles and updates from Datasports about the craft of software

Sharpening The Axe

leave a comment »

Introduction

The following quote is often misattributed to Abraham Lincoln:

Give me six hours to chop down a tree, and I will spend the first four hours sharpening the axe.

My bit of research hasn’t been able to identify the correct source of this remark, but regardless of who said it, I think it contains some valuable wisdom that is directly applicable to the development of software systems, large and small. In this article, I share some thoughts about being properly equipped and prepared to develop software in a professional setting.

1. The Axe as a Tool

Implicit in this statement is the idea that the correct tools are available for the job: an axe for chopping down the tree, and a stone suitable for sharpening the axe. This is a situation of which many software developers, architects, and team leads will be deeply jealous. The way that many of us end up working would be more like trying to chop down a tree with a hammer and a collection of screwdrivers. Yes, good tools often have significant pricetags, but I like to classify every expenditure of money as one of the following:

  1. Wasting: The money is gone, and you have nothing of value to show for it, either in terms of a product, an experience, or a service rendered. I’m thinking about stuff like high-end speaker cables, ear candling, or your 17th beer on a night out. No good comes of it.
  2. Spending: The money has been used for expenses that can’t be avoided, and you get the expected value for your money. Here I’m thinking of things like rent, utilities, food, and taxes.
  3. Investing: The money has been used in a way that will yield an even greater return. This might mean fixing a leaky faucet, upgrading to a more efficient vehicle, or pursuing an education.

Of course, we’re used to seeing spending derided as waste, and waste rationalized as investment. There will always be some personal judgement involved in how we classify expenditures. With that said, in the case of tools for software development, we have clear metrics to guide decisions: the cost of the tool, the cost of labor, and the tool’s impact on productivity. If a feature-laden software modeling tool results in architects and senior developers spending hours creating beautiful diagrams that convey no more information than a 10 minute whiteboard session, it’s not an investment regardless of how much a manager may want to improve the quality of the team’s documentation, or how little it may cost.

Similarly, if the annual license for a rapid application development platform costs as much as a developer’s salary but empowers a team of 3 to do work that would otherwise require 10 people or more, then it is not a waste.

I am fond of saying “Good tools don’t cost money, they save money”. This is equal parts advocacy for having the correct tools for a given job, and a definition of just what constitutes a good tool in my view.

Going back to the metaphor of the sharpened axe, to properly equip a development team involves providing the necessary tools and access to resources, properly preparing and configuring them for use, and ensuring that the team is proficient and comfortable with them.

2. The Metaphorical Axe

Whatever tools we have or lack as we go about our work, the most important axe we will bring to bear on the problems we must chop down is the mind. In this context, what does it mean to sharpen the axe? I think that the answer is a set of practices and activities that break down into 2 broad categories, discussed here.

2.1. Preparing Your Mind

We invest time in a number of strategic and tactical activities to prepare for the work of software development. Strategically, we pursue education, practice, read articles, and experiment with new and evolving technologies and practices over long periods of time to develop the skills and the craft of writing high quality, performant software. Tactically, we show up for work well-rested and positive, ready to engage in productive activity.

2.2. Planning and Analysis

As with money, time can be wasted, spent, or invested. We have all been in organizations that suffered from paralysis by analysis, and at the other extreme are organizations where the mantra is “Just get it done!” Using too much time to try to anticipate every possible outcome and a perfect solution before beginning the creation of hard deliverables is one way to waste time. Rushing into poorly thought out solutions for misunderstood problems is another.

Begin your work with a broad large-scale plan, and at key intervals (such as hitting defined milestones, or every morning when you begin work) refine your smaller-scale plans for the tasks immediately before you. Keep on track by focusing yourself on manageable goals. Keep clear on what is the next problem to be solved, and your best understanding of how to solve it. Seek clarification if you’re not sure about requirements, and consult with others if you’re not sure about how good your solution is.

3. Making and Measuring Progress

At first glance, someone sitting beside a tree and sharpening an axe for 4 hours may not appear to be making any progress. However, the sharpness of a physical axe is something that can be measured, so progress can be demonstrated at any time in those 4 hours before the axe ever meets the tree. Don’t make the mistake of approaching planning and analysis as a “sit and think” activity, create products along the way that demonstrate your progress.

If you are reading background information or reviewing existing code, make notes. If you’re clarifying comments or refining a design, document the results. All of this helps to retain your focus on the task at hand, and to regain that focus quickly if you are interrupted for some reason. It also makes it easier to account for how your time has been used, and to engage others in your project as needed.

4. Conclusion

With money spent on tools, and time spent on planning and preparation, we want to ensure that we are making wise investments. This involves finding the right balance, which will vary from person to person, and from task to task. While the details differ, the importance of having the correct tools, the correct understanding of the problem, and a correct solution is universal.

If you have found this article interesting or helpful, please take some time to post your comments, questions, or suggestions on this blog.

Thanks,
Phil Martin
Datasports Inc.

Advertisements

Written by datasports

Apr 9, 2012 at 5:33 PM

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: