Sharpen Your Axe Before Starting Your Next Project
Filed Under Human Factors, Software ProcessThis is a reader guest post by Jeremy Neuharth. Jeremy is a .NET software engineer with State Bank and Trust and enjoys learning and assisting teams in implementing release management and continuous integration.
Abe Lincoln was quoted:
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
Despite Abe’s wisdom and personal experience to teach us otherwise, I find continued pressure to dive into projects with little to no planning in efforts to “save time”. Additionally, the introductions of agile processes (and misrepresentations) have given some an excuse to toss out planning and communication on a whole new level.
So let’s take Abe’s simple yet effective quote and break it down into an easy to understand project, such as balancing the checkbook. I will quickly run through two scenarios.
Scenario 1:
I jump over to my desk excited to get started recording transactions in my check book register. I realize I have a few receipts in my wallet so I go to get them. On the way I decide I’m feeling thirsty, so I head into the kitchen to grab a soda. I have my soda and sit back down at my desk, but realize I forgot the receipts I got up for in the first place. I run out to retrieve them once again. After I get back to my desk, I look at my computer where I notice an email and get sidetracked by reading the newest post on Codesqueeze. By this time my evening has disappeared, it’s late and I’m tired so I hit the sack and put off balancing the checkbook until tomorrow.
Scenario 2 (Abe’s Way):
The end of the month has arrived, and I realize I need to balance the checkbook or the wife will not be happy. Before I begin, I write down a short list of items that I need in order to insure that the checkbook gets balanced. In no particular order, it looks something like this:
- Gather all my receipts and the bank statement
- Grab the tools I will need to assist in completing the task (pencil, scratch paper, and calculator)
- Pick up the checkbook
- Clean off the desk of any distractions
- Swing into the kitchen and get a soda
- Turn on “number crunching music”
- Shut off my computer and tell myself there is nothing good to read on Codesqueeze
- Close the door to the office so no one will bother me
During the process of making the list, I realize I need to add another item I hadn’t previously considered: leaving my cell phone in the living room on the silent setting. I am now prepared to execute my simple plan, which allows me to finish the balancing of the checkbook in record time. Because of this, I’m able to move on to other more enjoyable tasks and I reap the added bonus of keeping my wife happy as she knows how much money we now have in our account.
This might be simple example, but how many times have you started a project with the wrong tools, solved a problem that didn’t need solving, or discovered after jumping in that a different approach would have been more effective? How many times would a two-hour brain storming session with your client save man months worth of refactoring and building different logic within your code.
The point is you can’t go wrong dedicating some time to planning and preparation. While we may discover along the way that we might not be able to sharpen the axe as much as we should, taking Abe’s advice to do some sharpening could very well be less risky then just diving in.
7 Responses to “Sharpen Your Axe Before Starting Your Next Project”
A.D.D style development does seem to plague the software community. I think of it more like hiking. If you read a map and take out the compass now and then you can insure you get to your campsite at a normal pace. If you don’t want to use the map and prefer to just sprint, chances are you’ll be tired, cold and settle for flat ground. The larger the project, and the further away the campsite, the greater the need to slow down and make sure you’re going in the right direction.
Having the discipline to slow down is rather difficult, when sprinting is the expectation.
We always knew you would do good, Jeremy. Congratulations. Keep it up.
Very concise and straight to the point. Good job Jeremy. Honestly man, I’ve learned a lot more from you, Jeremy. Thanks to you, i’m a much better programmer than i could ever imagine! Way to go man. Great article. Planning rocks! (:-)
What appears to be an impossible mountain quickly becomes a series of manageable hills when the proper tools and preparations are made.
Enjoyed your blog Jeremy,There’s some wisdom in those words.
Taking time for some planning and preparation before any project will help us make the boss happy at work or more importantly, the wife happy at home! Great article Jeremy!
Jerermy
This is continuous theme that I have to pitch in every company that I work for. It is amazing how many organizations can grasp this simple by crucial concept in theory, but fail on executing when deadlines are in the mix.
I cannot emphasize enough how crucial having a sharp axe before you begin is. Thanks for sharing such a clear message.
I am very pleased that you are a good writer as well as a good programmer, Jeremy.
When I was in the computer software business, planning was always an important task, especially if more than one programmer was involved. And consults with the engineer was always a first step. I’m surprised that anyone who has gone through a computer science course would need to be reminded of a planning phase for a project. That should be part of the training.