Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Coding to a deadline - why it is just like hunting bears.

by EvdB (Deacon)
on Jun 03, 2003 at 09:27 UTC ( [id://262608]=perlmeditation: print w/replies, xml ) Need Help??

Stage directions: This meditation takes place in a large clearing in Canada. Stage left is the hunter and stage right is the bear (suitably fierce and annoyed). The whole stage has mosquitoes in the air. As the scene starts the bear starts to charge the hunter, who (whilst loading his gun) speaks to the audience.

I often tend to think of developing software to a deadline as similar to shooting charging bears. At first the bear is a long way off, you can see it clearly and get a good aim. If you take your time and shoot it well - the job is done.

The problem is the mosquitoes. You see as you are calmly aiming at the bear you are constantly being bitten and distracted. If you are not careful by the time that you have slapped all the mosquitoes the bear is almost on top of you and any shot you can get off is rushed and not the clean kill that you had wanted.

The irony is that the bear (software) is the main target. But the mosquitoes (telephone calls, interuptions, unimportant emails) are the things that get your attention. No self respecting hunter is going to boast over his beer that he swatted twenty mosquitoes, but sometimes they are just impossible to ignore.

So here is my personal list of ways to deal with the mosquitoes:

  • Make a list of small jobs. Then do it from start to finish. ie line the mossies up and swat them all in one go.
  • Only do the small jobs when you know what the job is. If the job is not clear then you will have to do it again as you will not get it right first time. ie only try to swat the mossie when it lands.
  • Make it clear that there are times when you do not like to be disturbed. ie wear mossie repellant.
  • Switch off the phone, quit the email client, turn off the radio, lock the shoot from inside a hide.

The mossies are not important, they do not pay the bills. However they prevent you from getting on with the real work and so need to be dealt with.

Good swatting.

--tidiness is the memory loss of environmental mnemonics.

Replies are listed 'Best First'.
Re: Coding to a deadline - why it is just like hunting bears.
by gmax (Abbot) on Jun 03, 2003 at 10:07 UTC

    This is a clear message we get from DeMarco&Lister's Peopleware

    An additional insight from the same source is to improve the environment to get you work in a flow, i.e. a status of concentration where your mind is properly applied to the context, and your thoughts are well connected, so you are in a problem-solving state.

    Anyone working on the thinking business (such as programmers) need time to focus on their problem and start being productive about that. It takes at least fifteen minutes to "enter the flow", so if I get a 10 minutes phone call every hour I am only producing 35 minutes worth of my job. And if I get a 1 minute phone call every 15 minutes, I am just not working at all!

    Your recommendations fit very well in this scenario. Reduce the noise (mosquitos! ++) and improve your job's quality.

    Update There is an interesting review of Peopleware at Slashdot

     _  _ _  _  
    (_|| | |(_|><
Re: Coding to a deadline - why it is just like hunting bears.
by BrowserUk (Patriarch) on Jun 03, 2003 at 10:18 UTC

    Nice analogy++

    Besides the mozzies, the other big problem is when the Park Rangers (management) insist on clearing the path for the Bear, bringing forward it's imminent arrival (the delievery date).

    Worse still is when they insist on you using an antique flintlock (hardware) and and grapeshot (poor tools to get the job done.

    Examine what is said, not who speaks.
    "Efficiency is intelligent laziness." -David Dunham
    "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller

Re: Coding to a deadline - why it is just like hunting bears.
by neilwatson (Priest) on Jun 03, 2003 at 13:53 UTC
    Breaking up a project into small jobs is indeed the key. It gives you a moral boost to see things accomblished and helps you focus.

    To add to the funny anologies is the park ranger, who used to be an angler, whispering in your ear how to shoot the bear as it charges from close to point blank range.

    Neil Watson

Re: Coding to a deadline - why it is just like hunting bears.
by Elgon (Curate) on Jun 03, 2003 at 19:58 UTC

    Your analogy is excellent and on a subject close to my heart. Here are my thoughts and experiences.

    In essence, I work as an IT consultant and you'll see from my homenode that I have the vast total of experience of about three months. To be fair to myself I have a total of about eighteen months of practical software development - analysis, design, programming and testing - experience. In my current build/test role I spend an awful lot of time doing things which I often feel get in the way of my developing clean code (shell scripts in this case) or testing it scrupulously - I have meetings to attend, phone calls to take, people to query for information, my boss to keep fed and watered etc... These are the minor everyday tasks which are the mosquitos.

    I generally have about three main tasks on the go at once, all of which require a rotating schedule of my time; some more and some less. These are the bears which need shooting.

    Where I feel that the analogy work is that you must focus through these annoyances to keep your aim on the bear. To (mis)quote...

    "When a samurai is out walking and it begins to rain. He does not run for he knows that he will get wet. He continues to walk and enjoys the novelty of the experience."

    On the other hand, talk of swatting the mosquitos I feel is not helpful as they are irritations which must be endured, however swatting them will never help, you simply have to deal with them and there will always be more.

    Consider this: Every time you phone someone to get clarification of a point in some documentation or to get the results of a pending decision it is you who is sucking the blood of your coworkers, and yet you would achieve very little of any use if you never receieved this information - constantly having to revise code or regression test.

    Essentially the point here is about learning to context shift with as little disruption as possible: Being able to focus absolutely on a single task is a hugely important skill in complex software development, but being able to switch between multiple tasks rapidly and easily is surely a skill worth developing, although there is always an overhead associated with it. It is not an easy skill to acquire and one which I am finding hard to get to grips with.

    On the practical side, I shall say this: Keep a list of current tasks either in a notebook or on your computer desktop in notepad or emacs with percentages completed. Don't be afraid to tell people that you can't talk right now because you're busy - with the caveat that you call them back when you're at a natural break point. Divide up your tasks into atomic units - sections of a task which it makes sense to complete before moving on to anything else. In short, manage your time - a task at which most people are very bad. Not to develop these skills in parallel with your coding skills is what I would see as being the sin of false laziness - they will save you time in the long run.

    Please, if this node offends you, re-read it. Think for a bit. I am almost certainly not trying to offend you. Remember - Please never take anything I do or say seriously.

      I agree (shock horror) with almost all of the above. However I would like to clarify a bit to bring my analogy in line with your wisdom.

      I will define mosquitoes as unneeded interuptions. For example: A co-worker phones to ask you to email him something for a meeting next week. This should not be a phone call which interupts you then and there, but rather an email - which you can deal with whilst in the email client.

      Calls about the code are not mosquitoes - rather they are actions like cleaning your gun - tedious but essential.

      I suppose I am trying to say that if most people, before disturbing, thought "Hmmm, what will the answer be and how will I get it? Should I ask the question in a different way?" it would be a good thing.

      Not even slightly offended - you will have to try harder...

      --tidiness is the memory loss of environmental mnemonics

Re: Coding to a deadline - why it is just like hunting bears.
by svsingh (Priest) on Jun 03, 2003 at 15:05 UTC
    Make a list of small jobs.

    I use this too. The biggest thing I think it helps with is it allows you to delegate projects to others (I've never seen a team with a balanced workload) or helps you switch to a parallel task when you're stuck on another one.

    I don't really understand the psychology of it, but sometimes working on something else helps me figure out the solution to the original problem.

    Great analogy. Thanks for sharing it.

Re: Coding to a deadline - why it is just like hunting bears.
by dws (Chancellor) on Jun 04, 2003 at 17:26 UTC
    If you are not careful by the time that you have slapped all the mosquitoes the bear is almost on top of you and any shot you can get off is rushed and not the clean kill that you had wanted.

    This anology scales to cover project leadership. Here, you're passing out tranquilizer darts to the team, and making sure they know what they're shooting at. Your team gets several shots at the bear. Each shot slows it down a bit (keeping it from charging). The goal is to guide the tranquilized bear into a big box. If your team screws up early shots, you have less time for later shots. If you (the project leader) get too distracted swatting mosquitoes, you'll be slow to hand out darts. If the team doesn't get darts quickly enough, or if they get distracted, they won't hit the bear and it won't slow down, putting more pressure on the team to make later shots count.

    Adding shooters when the bear charges doesn't work, because you have to stop and teach them how to use your particular bear gun. Meanwhile, the people on the team who can shoot and are forced to dig through your pack to get darts, which is slow and error prone.

    In situations like this, one tactic that works is to split the leadership. On leader takes off his clothes and stands up, gathering most of the mosquitoes to him. The other leader has fewer mosquitoes to swat, and can focus on coaching shooters and handing out tranquilizer darts. While effective, this approach tends to be send the "sacrificial" leader to the hospital for a lengthy recovery.

Re: Coding to a deadline - why it is just like hunting bears.
by sauoq (Abbot) on Jun 04, 2003 at 17:58 UTC

    Those aren't mosquitoes... those are new nodes.

    "My two cents aren't worth a dime.";
Re: Coding to a deadline - why it is just like hunting bears.
by Anonymous Monk on Jun 04, 2003 at 16:58 UTC
    did you that studies indicate the mosquitoes of the Brooks Range (AK) would drain a naked person of blood in less than five minutes?

    There are videotapes of Grizzlies going insane charging up and down the the river because of the mosquitoes...

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://262608]
Approved by Corion
Front-paged by diotalevi
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (6)
As of 2024-07-19 09:52 GMT
Find Nodes?
    Voting Booth?

    No recent polls found

    erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.