Slashdot Mirror


How Do You Accurately Estimate Programming Time?

itwbennett writes "It can take a fairly stable team of programmers as long as six months to get to a point where they're estimating programming time fairly close to actuals, says Suvro Upadhyaya, a Senior Software Engineer at Oracle. Accurately estimating programming time is a process of defining limitations, he says. The programmers' experience, domain knowledge, and speed vs. quality all come into play, and it is highly dependent upon the culture of the team/organization. Upadhyaya uses Scrum to estimate programming time. How do you do it?"

483 comments

  1. Chop features. by tjstork · · Score: 2, Interesting

    Estimating accurately isn't so much of an art of estimating accurately, as it is being able to figure what to chop that still gets the product in on some semblance of being on time and in a way that people like it. The deal is, you have to be able to get a screen or database up and running ok in some x number of hours, and prioritize, to fit that estimate. Once you start doing that, then you can adjust your estimates to allow for more features or yes.

    --
    This is my sig.
    1. Re:Chop features. by Rob+the+Bold · · Score: 1

      The deal is, you have to be able to get a screen or database up and running ok in some x number of hours, and prioritize, to fit that estimate. Once you start doing that, then you can adjust your estimates to allow for more features or yes.

      Unfortunately, features usually get cut by chance rather than by plan since no one wants to give up on anything, including the deadline. As you suggest, it would be be better to do it in a conscious way, but that seems way too rare in practice.

      --
      I am not a crackpot.
    2. Re:Chop features. by oldspewey · · Score: 2, Insightful

      It's the Project/Program Manager's job to manage scope expectations in such a way that features do indeed get cut by plan rather than chance. Having said that, very, very few PMs I've worked with are actually good at this aspect of their jobs. Most of them prefer to avoid conflict and maintain a sort of comfortable fiction with the client until things reach a point where that fiction is simply unmaintainable.

      --
      If libertarians are so opposed to effective government, why don't they all move to Somalia?
    3. Re:Chop features. by Hognoxious · · Score: 4, Funny

      features usually get cut by chance rather than by plan since no one wants to give up on anything, including the deadline.

      Have you ever asked which feature has the highest priority, and received the answer, "all of them"?

      The type of twits who give that answer always think they're combining the wit of Oscar Wilde, the insight of Confucius and the cock of John Holmes.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    4. Re:Chop features. by Anonymous Coward · · Score: 0, Funny

      You can create software on time, have good quality, or cheaply. Pick one.

    5. Re:Chop features. by 2short · · Score: 4, Insightful


      Exactly. Ship date is a feature. It will have lower priority than some features, and higher priority than some other features.
      I've never seen a team that could estimate, months in advance, when a particular feature set would ship.
      I've been part of great teams that regularly review progress and have the power to adjust priorities.

    6. Re:Chop features. by Anonymous Coward · · Score: 0

      Y'all supposed to mod this funny (or insightful?) because the original punchline was "Pick 2". I'm not the same AC, I swear.

    7. Re:Chop features. by Sanat · · Score: 2, Interesting

      Nice insight in handling the ship date opportunity.

      My method was to carefully calculate (as well as possible) the ship date points of the various features/modules and when:

      Writing mainly in a C environment then double the time estimate which is pretty accurate and the client is usually very pleased to see things fall in line ahead of the estimated dates

      When writing in other languages (RoR, etc.) then it is tripled and the customers are still pleased.

      And these clients and customers are where you get your referrals.
       

      --
      And in the end, the love you take is equal to the love you make
    8. Re:Chop features. by haruharaharu · · Score: 2, Insightful

      If you can get people to actually prioritize features, then you have a chance in hell of cutting features by plan. The common first response to such a request is to rate all features as pri 1, to which the formula response is "so you mean I can just implement in any order i like?". If business is at all reasonable, they can be brought around to at least grouping features into required, really want, nice to have, and maybe, but the first challenge there is talking to them at all. This isn't really something you should be talking to middle management about if you expect an answer in reasonable time.

      --
      Reboot macht Frei.
    9. Re:Chop features. by fedos · · Score: 1

      I am a cost estimator for an organization that contracts out development, I have never been employed in software development. Instead of asking how long it will take, we use parametric tools to estimate development schedules (including design, implementation, and test). We get estimates of the size and complexity of the software and then use a tool such as SEER-SEM or PRICE TruePlanning to estimate time for each phase of development. These tools can be calibrated to your organization's past performance and also provide risk analysis.

      Does anyone use these tools outside of the cost estimating community?

    10. Re:Chop features. by Hognoxious · · Score: 2, Informative

      No, because the people who actually do software development know that using "parametric tools to estimate development schedules" means guessing the future based on an approximation of the past.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    11. Re:Chop features. by Cryacin · · Score: 1

      Hey, dont' forget the business acumen of Warren Buffet!

      --
      Science advances one funeral at a time- Max Planck
    12. Re:Chop features. by tempest69 · · Score: 3, Insightful

      Exactly. Ship date is a feature. It will have lower priority than some features, and higher priority than some other features. I've never seen a team that could estimate, months in advance, when a particular feature set would ship. I've been part of great teams that regularly review progress and have the power to adjust priorities.

      Shipdate was the feature dropped in Duke Nukem Forever.. So it ships with all features..

    13. Re:Chop features. by poopdeville · · Score: 1

      Don't ask about priorities. Ask what you should work on first.

      --
      After all, I am strangely colored.
    14. Re:Chop features. by NewbieProgrammerMan · · Score: 1

      No, because the people who actually do software development know that using "parametric tools to estimate development schedules" means guessing the future based on an approximation of the past...

      ...and often, that approximation of a past development event is substantially different from the project for which you want an estimate.

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
    15. Re:Chop features. by Hognoxious · · Score: 1

      What do you take me for, some kind of pilchard? I tried that once. The answer? Everything!

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    16. Re:Chop features. by ScrewMaster · · Score: 1

      Estimating accurately isn't so much of an art of estimating accurately, as it is being able to figure what to chop that still gets the product in on some semblance of being on time and in a way that people like it. The deal is, you have to be able to get a screen or database up and running ok in some x number of hours, and prioritize, to fit that estimate. Once you start doing that, then you can adjust your estimates to allow for more features or yes.

      Dirty Harry: A man's got to know his limitations.

      --
      The higher the technology, the sharper that two-edged sword.
    17. Re:Chop features. by ScrewMaster · · Score: 1

      No, because the people who actually do software development know that using "parametric tools to estimate development schedules" means guessing the future based on an approximation of the past...

      ...and often, that approximation of a past development event is substantially different from the project for which you want an estimate.

      As investment firms usually disclaim: past performance is no guarantee of future performance.

      --
      The higher the technology, the sharper that two-edged sword.
    18. Re:Chop features. by chaboud · · Score: 1

      Make sure to read Orson Scott Card's How Software Companies Die (commonly known as "Programmers and Bees"). This sort of over-refinement of estimation is not only pointless (in that it presumes far greater association between the past and the future than is likely to exist), it's destructive to the goal of making good software in a reasonable time-frame (if that is still the goal).

      Some element of the planning and development process has to bake down to trust and awareness. If a dev says that something will take an unreasonable amount of time, a good project manager should be able to smell the BS and, more importantly, recognize that the dev might be sand-bagging a feature he/she hates. That dev might, in turn, actually take that long to do it. If you have cultural and motivational problems, no amount of process refinement is going to help. It's just going to drive the competent developers away and leave you with a slow death-spiral of longer estimates and crappier software.

      High, low, medium risk? When I hear people baking things into categories, that's fine. When I see them plan schedules from the information reduced into categories (instead of cycling back and asking devs), the bozo-bit gets flipped. Aggregability is NP-hard, and it's important to remember that you're not going to be able to bake something as complex as software down into a weekend management seminar. If I could give one piece of advice to managers and devs looking to get better estimates, I'd say: "Go with your gut. As you get better at it, and your team gets better at working together, your intuitive estimates will get an order-of-magnitude better than the estimates that would have been derived from an over-simplified system. If you try to commoditize software, you get whatever the market will bear."

    19. Re:Chop features. by pnewhook · · Score: 1

      Estimating accurately isn't so much of an art of estimating accurately, as it is being able to figure what to chop that still gets the product in on some semblance of being on time and in a way that people like it.

      The point is that if you were able to estimate accurately in the first place, you wouldn't be ever in the situation where you have to decide between all the features that were requested and on-time.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    20. Re:Chop features. by pnewhook · · Score: 1

      I tried that once. The answer? Everything!

      Then stop complaining, take the features that haven't been done, prioritize them yourself based on what you believe are the most important to get the most functionality the fastest, put a timeline on the integration and testing of each feature and present it back to the manager.

      If he can't do the job, do it for him. He should be impressed with your planning abilities and willingness to take charge. If not, then he's an idiot - look for a new job.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    21. Re:Chop features. by pnewhook · · Score: 1

      because the people who actually do software development know that using "parametric tools to estimate development schedules" means guessing the future based on an approximation of the past.

      What's wrong with that? If the next project can be shown to be similar in complexity and size to previous projects, then that type of estimating should be fine. Add risk for overall, and higher risk for the proportion that is different.

      Parametric estimation is used in all disciplines, not just software. There is no reason software has to be different.

      If it always takes me 20-30 minutes to drive to work, then I can assume tomorrows drive will be the same. Unless of course I leave from a different location.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    22. Re:Chop features. by pnewhook · · Score: 1

      and often, that approximation of a past development event is substantially different from the project for which you want an estimate.

      Then if the new project is completely different, then you cant use the past programs to estimate. One of the parameters in parametric estimating is how similar the current project is in size and complexity.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    23. Re:Chop features. by NewbieProgrammerMan · · Score: 1

      If you're creating a quote for developing essentially the same software project over again, I wager that you're probably doing something wrong.

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
    24. Re:Chop features. by Canberra+Bob · · Score: 2, Insightful

      The trouble is one of the biggest impact items - ie. the customers or vendors - will almost never be the same project to project. Other peoples experiences may differ but I always find that the people involved usually are the biggest factor determining if a project meets deadlines or not and you have no idea what they will be like until the project begins. Even the same person may perform differently project to project, on the first they may be a dedicated resource, on the next the project is one of a dozen they are working on simultaneously so can only devote a fraction of the time and effort of the original. I have had projects that in reality should have taken a few hours take a couple of weeks while other highly complex projects lasting several months go off without a hitch and come in early, all due to the different people.

    25. Re:Chop features. by pnewhook · · Score: 1

      If you're creating a quote for developing essentially the same software project over again, I wager that you're probably doing something wrong.

      If you don't know the difference between similar and same, then you're doing something wrong.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    26. Re:Chop features. by Ihmhi · · Score: 1

      A buddy of mine is in a private contractor. He figures out the materials and time needed for a project and then adds 30% to both. He has yet to go once over budget or past deadline, and he rarely comes sailing in way under budget or deadline either. It's a good rule of thumb.

    27. Re:Chop features. by Kjella · · Score: 1

      Have you ever asked which feature has the highest priority, and received the answer, "all of them"?

      "In other words, none of them"

      --
      Live today, because you never know what tomorrow brings
    28. Re:Chop features. by bronney · · Score: 1

      Parent +1 insightful please. Exactly. The work we do everyday is highly dynamic not because of the programs or news. It's the people.

    29. Re:Chop features. by Hognoxious · · Score: 0, Flamebait

      If he can't do the job, do it for him. He should be impressed with your planning abilities and willingness to take charge. If not, then he's an idiot - look for a new job.

      Who died and made you king? You sound like those PHBs I was talking about.

      Anyway, I've tried that. Take a guess which happened.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    30. Re:Chop features. by kevingolding2001 · · Score: 1

      It's a good rule of thumb.

      That may be true for you your buddy in particular, and in general for people who know what they are doing.

      But I have been involved in many projects that have been handicapped by poor specs, poor existing code-base, badly designed existing database schema, shoddy development practices etc. that make a mockery of 30%.
      The last estimate I was required to give was in September last year. One developer said half a week. I said three months. We are still working on it.

    31. Re:Chop features. by Hognoxious · · Score: 1

      So that means I can go to the pub for the afternoon?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    32. Re:Chop features. by ls671 · · Score: 1

      > As investment firms usually disclaim: past performance is no guarantee of future performance.

      http://en.wikipedia.org/wiki/Peak_oil

      --
      Everything I write is lies, read between the lines.
    33. Re:Chop features. by pnewhook · · Score: 1

      I can guess that you didn't find a new job but prefer just to bitch about how stupid everyone else is in your company.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    34. Re:Chop features. by Hognoxious · · Score: 1

      Perhaps we know each other? You certainly sound like them.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    35. Re:Chop features. by Hognoxious · · Score: 1

      What's wrong with that?

      Yeah, you can always predict the future based on the past. I mean the banks do it all the time and it works for them.

      If it always takes me 20-30 minutes to drive to work, then I can assume tomorrows drive will be the same. Unless of course I leave from a different location.

      They never have road closures for bad weather or accidents where you live?

      You just illustrated one problem with it: it's only as good as the assumptions. The other problem is that people place far too much faith in it. They don't realise the figure that comes out to 3 decimal places is based on data that's basically a guess. GIGO.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    36. Re:Chop features. by pnewhook · · Score: 1

      Seriously. I give you advice that *works* and you come back with "who died and made you king". With an attitude like that no wonder you are at odds with your supervisors.

      Obviously I didn't respond with what you want to hear so here it is. You are a coding genius that can do no wrong, limited by the fact that everyone around you (except you) is a complete moron. No one else knows how to do it right except you. People enjoy your bitching and complaining because pointing out everyones idiocy in this manner makes them better people. If it wasn't for you and your genius skills, the entire company would collapse in a fit of stupidity. You are a God amongst programmers.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    37. Re:Chop features. by Hognoxious · · Score: 1

      If a dev says that something will take an unreasonable amount of time, a good project manager should be able to smell the BS

      A good PM who's a former dev might. One without that background won't have a clue. He'll swallow false claims and falsely blame devs who are telling the truth more often than he'll get it right.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    38. Re:Chop features. by pnewhook · · Score: 1

      I'm not saying once you do the estimate based on past performance you dont add risk. Do you have a new team, is this a new language, new customer, etc. Take all the risks and for each estimate how long it will take extra if that risk actually occurs. multiply that by the probability of the risk occurring. If the risk is over 50% then remove it from the risk table and add it to your baseline schedule. Sum all these risk probabilities and present this with your original estimate. So your original schedule with factored risk is your total estimate (because some of the risks will happen). Also your total risk must be bigger than the longest unfactored risk to ensure you can cover it.

      This method of task estimation is standard in all industry - there's no reason software cant be estimated in the same manner.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    39. Re:Chop features. by Anonymous Coward · · Score: 0

      He wrote "essentially the same". Not "the same".

    40. Re:Chop features. by kwerle · · Score: 1

      Exactly. Ship date is a feature. It will have lower priority than some features, and higher priority than some other features...

      Wow. I've been doing this for decades, and I've never seen it put so succinctly.

      Thank you.

    41. Re:Chop features. by natehoy · · Score: 1

      The type of manager who answers "Everything!" is going to take you to task for "wasting" so much time working up a timeline and prioritizing stuff. "That's time you could have spent PROGRAMMING!"

      --
      "This post contains words, known to the State of California to cause thought. Wash brain thoroughly after reading."
    42. Re:Chop features. by pnewhook · · Score: 1

      That should never happen. If it does, then that guy doesn't deserve to be a manager and you should look for another job.

      You HAVE to work towards a plan, otherwise you are just working on a bunch of random features that may or may not be needed or work together.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    43. Re:Chop features. by chaboud · · Score: 1

      You either learn to read your people or learn to read what they say (and how they say it). If you don't, or you can't build enough trust to get real impressions from your people, you're not a good PM (at least, not functionally).

      Whether that requires being a former dev or not is a different debate. My best PM ever had never been a dev, but he learned how to code so he could be a better PM. He was eventually the Director of Engineering, quite deservedly so.

    44. Re:Chop features. by Anonymous Coward · · Score: 0

      Whether that requires being a former dev or not is a different debate. My best PM ever had never been a dev, but he learned how to code so he could be a better PM.

      Not much of a debate, really, since you just answered the question yourself.

  2. Function Point Analysis and Man Hours by GameGod0 · · Score: 1
    1. Re:Function Point Analysis and Man Hours by Anonymous Coward · · Score: 0

      Ah, good ol' function point analysis. I thought most intelligent people realized that it was a whole load of bullshit right around 1983 or so.

    2. Re:Function Point Analysis and Man Hours by Rob+the+Bold · · Score: 1

      Ah, good ol' function point analysis. I thought most intelligent people realized that it was a whole load of bullshit right around 1983 or so.

      Doesn't mean it's not useful -- just not useful for estimating actual time. You create an estimate, you've got data to back it up. Sure it's just as much a WAG as anything, but it's such a Scientific WAG, what with all the numbers and calculations. Gets management off your back until you miss enough deadlines, checkpoints, tollgates, or whatever they want to call them.

      --
      I am not a crackpot.
    3. Re:Function Point Analysis and Man Hours by Anonymous Coward · · Score: 0

      So my team has just spent about 6 man years making one very complicated system into a an HA pair of very complicated systems. From a user functional analysis that's one extra function with one big bang. There is no way that we could have gotten from that to 6 man years.

      Scrum all the way baby.

    4. Re:Function Point Analysis and Man Hours by Hognoxious · · Score: 1

      So my team has just spent about 6 man years making one very complicated system into a an HA pair of very complicated systems.

      High Availability, or Half Assed?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    5. Re:Function Point Analysis and Man Hours by boaworm · · Score: 3, Funny

      I always learned it like this:

      1) Make a guess, very generous one. Make sure there's plenty of space.
      2) Double it, as you will need an equal amount of time for testing and bugfixing when you're done writing.
      3) Double it again, as Murphy will make sure everything will fail, which will lead to inevitable delays.
      4) Multiple by PI

      Now you're pretty close to a realistic estimate!

      --
      Probable impossibilities are to be preferred to improbable possibilities.
      Aristotele
    6. Re:Function Point Analysis and Man Hours by Cryacin · · Score: 1

      Only if by "Agile" methodology they actually mean "Ad Hoc"

      --
      Science advances one funeral at a time- Max Planck
    7. Re:Function Point Analysis and Man Hours by ScrewMaster · · Score: 1

      I always learned it like this:

      1) Make a guess, very generous one. Make sure there's plenty of space. 2) Double it, as you will need an equal amount of time for testing and bugfixing when you're done writing. 3) Double it again, as Murphy will make sure everything will fail, which will lead to inevitable delays. 4) Multiple by PI

      Now you're pretty close to a realistic estimate!

      Back when I was a contract developer, I would often take my original estimate, double it, and then add thirty percent. That used to work well for me for some reason.

      --
      The higher the technology, the sharper that two-edged sword.
    8. Re:Function Point Analysis and Man Hours by PommeFritz · · Score: 1

      Interesting, this is the first time I see someone else use the 'pi' factor in time estimates. I once did a project that had a huge amount of overhead due to the usual (bad requirements analisys, big management overhead, inefficient testing etc etc) that really made a factor of more than three times the original estimate a realistic estimate.

    9. Re:Function Point Analysis and Man Hours by pnewhook · · Score: 1

      If you provide the estimate, then "miss enough deadlines, checkpoints, tollgates, or whatever", then obviously your original estimate was crap, no matter how you justified it.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    10. Re:Function Point Analysis and Man Hours by Canberra+Bob · · Score: 1

      Sounds similar to the method I used to use
      I would make an estimate, add a 50% buffer and double it and send it to the sales rep
      The sales rep came from a technical background so knew how IT projects went, so he would take my estimate, double it and add a buffer to that.
      This method actually produced estimates quite close to what turned into reality.

      I think the problem with estimates are that:
      a) developers are never as fast as they think they are,
      b) the customer always has something hidden in there that actually means something far more complex than what it appears,
      c) there are always unforseen things that go wrong eg a bug in some framework you use that you have to then spend time hacking around and
      d) the human factor - some people leave the project, some people would be more useful to the project if they had nothing to do with it, etc.

    11. Re:Function Point Analysis and Man Hours by Anonymous Coward · · Score: 0

      4) Multiple by PI

      Is that what they call "rounding up" ?

    12. Re:Function Point Analysis and Man Hours by Rob+the+Bold · · Score: 1

      If you provide the estimate, then "miss enough deadlines, checkpoints, tollgates, or whatever", then obviously your original estimate was crap, no matter how you justified it.

      Well, ya. But we were starting from the premise that you were gonna get "crap". I was being a little "sarcastic", as they say, with my description of the "benefits" of this particular method.

      --
      I am not a crackpot.
    13. Re:Function Point Analysis and Man Hours by b4dc0d3r · · Score: 1

      I'd moderate this retarded if I could, but it's not an option. Probably Palin had it removed. Anyway, allow me to explain.

      Not sure if I'm being clear here, but a "standard change" is not an estimate - it's something we've done before and know exactly how long it takes. If you are doing any actual estimating, the more "estimating" you do vs. using historical data, the more range of error you'll have. I'll babble on this subject for a while, but that's the gist of this post.

      There are different types of changes. If you're estimating something you've done a hundred times, you know exactly how long it will take. Something like custom configuration for a client, routine maintenance, things like that. You'll be correct on how long it takes.

      If a customer wants a new web service, and you've never done a web service, you're going to be wrong no matter how much you quantify. You can determine how many objects you need to create/update, but you can't tell how long it will take.

      In other words, estimating has to take into account many different things:

      How many objects will be updated/added
      How many of those will be trivial vs. complex changes
      Level of familiarity of the person/people implementing it
      Assumption that the number of objects is correct, and nothing was missed
      Necessary documentation available *and correct*
      Historical accuracy of estimating (are you getting better at estimating overall?)
      Historical accuracy of estimating the kind of change requested (are you getting better at estimating *this*?)
      Overhead of gates/reviews and change control or other process
      Testing resource availability, familiarity with the new items, correct documentation supplied to whomever is testing

      If MSDN or man page isn't correct, you're going to do a lot of debugging. If the client's web service you're connecting to doesn't match what you were given, you're doing rewrites once you hit testing. If your change is ready to go but a company-wide routing change is scheduled for the same date so you can't test your implementation, you're stuck. If the CSS works until someone enters a long comment, and you need to find a workaround to the layout, you're better off just saying won't fix.

      Bottom line, the more foreign something is, the more incorrect you will be. If you are estimating something you've already done, there's not need to estimate - it's already done! So by definition, we are either dealing with something simple like search/replace and run, or something foreign where you're going to be wrong no matter what.

      I'll close with - in a modern company, all code should be reusable. So you only do things once. So you can't learn to estimate more accurately, since you're always estimating something different. The only way to have accurate estimating is to have a solid team working together for a while, and doing similar work. Just limit yourself to things you know, and you'll be right.

    14. Re:Function Point Analysis and Man Hours by benhattman · · Score: 1

      Not sure why this was modded funny. It's actually a pretty reasonable way to make a good estimate. If it takes X time to crank out a working prototype feature, then it usually takes 3X to rigorously test and fix it, and it also takes 3X to take it from working to truly usable. If you want something well tested and easy to use, that's 9X total.

      The parent's math is a little generous (12.5X), but pretty much spot on. The real challenge people seem to have when making estimates is that when management asks "how long will it take to make X", they mean the final product X, while engineers think they are talking about the functional prototype because that's the part that's interesting to them. The rest is just "polishing" it up, which even though that polish part is 90% of the work, most engineers consider it trivial.

  3. Programming time? by Spyware23 · · Score: 1

    "when it's done"

    1. Re:Programming time? by __aaclcg7560 · · Score: 1

      Still waiting for Duke Nukem Forever?

    2. Re:Programming time? by Hognoxious · · Score: 1

      May bug! I'm waiting for the Hurd port of Duke Nukem Forever.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    3. Re:Programming time? by LowerTheBar · · Score: 2, Insightful

      Our development time is estimated based on when management has promised a feature/enhancement. Even when management has forgotten to tell the development team the promised date, until a few days beforehand. Apparently this is a very accurate way to estimate programming/testing time, because somehow we always make the dates. Of course there are times when sleep is not accounted for in these estimates.

    4. Re:Programming time? by Cryacin · · Score: 1

      I like walking on water as much as the next guy, but don't you hate getting your socks wet?

      --
      Science advances one funeral at a time- Max Planck
    5. Re:Programming time? by LowerTheBar · · Score: 1

      I understand the martyr reference, but this is pure self preservation...My team works in a large corporate environment, and while groups all around us are being cut (and we end up taking on the extra work), we still have jobs, and the fact that our team is the one management continues to come to, shows at least some amount of faith in us. We have a fantastic team and we are all willing to go the extra mile to stay in tact. Most of the technical people on the team are hourly contractors, so the extra cash helps.

  4. The formula by Anonymous Coward · · Score: 0

    6 x wild_guess + 2 weeks

    1. Re:The formula by SpryGuy · · Score: 1

      Actually I always use this:

          X = Initial Estimate

          What you tell management = Double X and raise the units by one.

      So if the initial estimate is 2 hours, then you tell management 4 days. If the intial estimate is 3 days, then you tell management 6 weeks. You get the picture.

      --

      - Spryguy
      There are three kinds of people in this world: those that can count and those that can't
    2. Re:The formula by Hognoxious · · Score: 2, Interesting

      Sadly, even that doesn't work.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  5. Simply, no software required. by loftwyr · · Score: 5, Funny

    I take the amount of time I think it will take, double it and move it up a time unit.

    So, if I think it will take two days, I estimate 4 weeks. If I think it will take a week, I estimate two months and so on.

    1. Re:Simply, no software required. by WrongMonkey · · Score: 4, Informative

      In other words: the Scotty Principle.

    2. Re:Simply, no software required. by loftwyr · · Score: 1

      Nah, by his own words, he just multiplied the actual time by 4.

    3. Re:Simply, no software required. by Rob+the+Bold · · Score: 3, Insightful

      I take the amount of time I think it will take, double it and move it up a time unit.

      So, if I think it will take two days, I estimate 4 weeks. If I think it will take a week, I estimate two months and so on.

      Exactly my method too. I assume we both stole it from the same place, but I can't remember where. I am also ashamed that it is often right.

      Which either means I'm lousy at estimating or brilliant. Or maybe just lousy at implementation. Or maybe nothing at all.

      But it doesn't matter, of course, since the boss will ask "Are you sure?" And we all know that that means "try to come up with an estimate that fits my predetermined schedule." So you either cut features/quality by plan or by fact. Usually by fact, since no one wants to give up anything. So you give up whatever doesn't happen to be done (or give up your release date -- which is also a feature of a sort).

      Deadlines are useful, though, in avoiding a DNF type situation.

      --
      I am not a crackpot.
    4. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      1 month becomes 2 years?

    5. Re:Simply, no software required. by brainboyz · · Score: 1

      2 quarters.

      minutes
      days
      weeks
      months
      quarters
      years

    6. Re:Simply, no software required. by brainboyz · · Score: 1

      and, of course, I forgot hours in there.

    7. Re:Simply, no software required. by Chapter80 · · Score: 3, Interesting

      The method I was taught in school, back in the days when Arthur Andersen existed, and prior to Andersen Consulting or AssVenture (or whatever they're called now), the method that was taught to me was credited to them, and looked like this:

      Estimate how long it will take, if everything goes right. Call it T1.
      Estimate the expected time it will take, knowing how some things usually go wrong. Call it T2.
      Estimate the worst possible case, if everything goes wrong, and there are lots of unforeseen issues - you are 99% sure you can get it done within this amount of time. Call it T3.

      The Weighted average estimate is (T1+(4*T2) + T3)/6

      This yields some very odd T values, but often works out to be a reasonable estimate. The developers may tell me "If all goes well, it'll take 2 days. I expect it to be 4 days. But worst case, it might be 40 days." And you end up with a 9.6 day estimate. (which is SIGNIFICANTLY different than the "I expect it to be 4 days".)

      ----

      The part I learned from working for a major computer manufacturer was this:

      Take whatever estimate the developers tells you, and tell the client to expect it in double that time (from today). If the lab tells you they'll have a fix by tomorrow, tell the client it'll be there the next day. If the lab tells you it'll be ready in three months, tell the customer 6 months. That way, as time goes by, the estimates become more real, and the variation from the estimate becomes more refined. And it accounts for the unavoidable time between when the lab releases the work, and when it gets installed at the customer's site.

      If, in January, I was told by the developers that it'd be ready in 2 months, I will tell the customer to expect it in 4 months (May). If in February, I haven't gotten a revised time-frame, then we still expect it in four months (June).

      Manage expectations, and don't let the customer down (particularly when things are outside my control).

    8. Re:Simply, no software required. by HoboCop · · Score: 1

      fortnight?

    9. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      8 hours -> 16 days
      1 day -> 2 weeks
      Do you go with the high or the low estimate here? Of course this assumes an 8 hour work day, but you would have to assume a 5 hour day for the two values to equate.

    10. Re:Simply, no software required. by computational+super · · Score: 4, Funny

      Hofstadter's law: It always takes longer than you expect, even after accounting for Hofstadter's law.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    11. Re:Simply, no software required. by Stregano · · Score: 1

      I wish I could do that at my job.

      Oh wait, I do. I am working on a project right now where one feature I am adding should only take a day or two, but I am estimating one week.

      I have no trick or anything to estimating, but I am still new at doing it.

      --
      The world is how you make it
    12. Re:Simply, no software required. by mhajicek · · Score: 1

      Nah, by his own words, he just multiplied the actual time by 4.

      Fail. 2 days x 4 = 4 weeks?

    13. Re:Simply, no software required. by SQLGuru · · Score: 1

      something about the Spanish Inquisition?!?!?!?!

    14. Re:Simply, no software required. by e2d2 · · Score: 1

      Actually the Scotty principle is much more effective because it adds +10 to management fear and +2 to sleight of hand.

      Manager: I need you to build X.
      Developer: It can't be done.
      Manager: Please! Look at it just try your best we really need this.
      Developer: It can't be done.
      Manager: WE'RE FUCKED! running away to hide

      2 Hours Later...
      Developer: I've done what you asked. It wasn't easy I had to alter the laws of physics but I managed to do just that!
      Manager: You are a fucking GOD amongst men sir. Give that man a medal!

    15. Re:Simply, no software required. by sanosuke001 · · Score: 1

      how does 2 days x 4 = 4 weeks? or 1 week x 4 = 2 months?

      I would say halving the internal estimation and then moving up the time unit. ie. 1 day to half a week or a week to 3.5 weeks (7 days / 2. * 7 days). doubling first seems a bit pessimistic (and blatantly made up)

      --
      -SaNo
    16. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      Four times two days is not four weeks...
      Four times one week is not two months...

      MailFail.

      He did exactly what he said he did - multiplied the time by 2, then increment the time-unit.

    17. Re:Simply, no software required. by maxwell+demon · · Score: 1

      Conclusion: The expected time is infinite. Because only infinity doesn't change if you add some finite amount to it.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    18. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      I just triple the time. 2 days = 6. That works.

    19. Re:Simply, no software required. by Hognoxious · · Score: 1

      If I think it will take a week, I estimate two months and so on.

      One month (two fortnights).

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    20. Re:Simply, no software required. by EatHam · · Score: 1

      All you have to do is remember that the first 90% of the project takes the first 90% of the time line, and the remaining 10% of the project takes the other 90% of time.

    21. Re:Simply, no software required. by jnik · · Score: 1

      I think it works better if you don't divide by six...

    22. Re:Simply, no software required. by MobileTatsu-NJG · · Score: 1

      Fail. 2 days x 4 = 4 weeks?

      No. Scotty's Principle = Actual Time x 4.

      He was talking about the principle, not the amount of time. :P

      --

      "I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)

    23. Re:Simply, no software required. by geminidomino · · Score: 1

      It's also self-defeating. Do it too many times, and it becomes obvious what you're doing, and they come to expect it, so when they want a natural-language parser written in PHP and you say it can't be done, they don't believe you.

    24. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      My equation is to take my first wild guess, double it, then add another 30%. That is for bare minimum code, no documentation or extensive testing. Doubling the estimate and bumping the time unit is probably more accurate.

    25. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      Nah, by his own words, he just multiplied the actual time by 4.

      2 days x 4 != 4 weeks. 1 week x 4 != 2 months.
      I take it today's moderator is not big on teh maths.

    26. Re:Simply, no software required. by dgatwood · · Score: 1

      In any given week, it's almost inevitable that 60-80% of my time will get sucked away by a project other than the one I planned to work on. So I estimate the worst case time that it would take if I worked on nothing but that project, then multiply by 5. :-D

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    27. Re:Simply, no software required. by jellomizer · · Score: 3, Insightful

      We do it backwards. The boss gives us the timeframe and we make the specs to match it.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    28. Re:Simply, no software required. by DeadCatX2 · · Score: 4, Funny

      I multiply all time estimates by pi, to account for running around in circles.

      --
      :(){ :|:& };:
    29. Re:Simply, no software required. by shock1970 · · Score: 1

      I think you meant that the first 90% of the project takes the first 10% of the time line, and the remaining 10% of the project takes the other 90% of time.

    30. Re:Simply, no software required. by blackraven14250 · · Score: 1

      I think it's funny that "Duke Nukem Forever" and "Did Not Finish" have the same acronym.

    31. Re:Simply, no software required. by BabyDuckHat · · Score: 1

      But it doesn't matter, of course, since the boss will ask "Are you sure?" And we all know that that means "try to come up with an estimate that fits my predetermined schedule."

      My other favorite manager question is, "How easy would it be to do such and such?".

      My reply, "If it's not easy does that mean I don't have to do it?"

    32. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      And never believe a programmer who claims the simple change will take only 5 minutes. Nothing can be accomplished in 5 minutes. The minimum is 20 minutes, even for a one character change.

      Anything worth doing takes 9 months plus a week, so your best bet is to figure out how much you can fit into that schedule. Plan out the essentials as being first, make that core a working demo that is debugged, presentable, and deliverable in the first month, then keep adding features until you run out of time.

    33. Re:Simply, no software required. by kill-1 · · Score: 1

      Personally, I always use 2 * T3. Has always worked out nice for me, but those were all rather small projects.

    34. Re:Simply, no software required. by Low+Ranked+Craig · · Score: 1

      Not sure why this is modded funny. Seems pretty accurate and real-world to me.

      --
      I still cannot find the droids I am looking for...
    35. Re:Simply, no software required. by DMUTPeregrine · · Score: 1

      You know, GP was saying that the Scotty principle is different. Thus the word "Nah" starting his sentence. I've heard the stated "double + move up a time unit" method referred to as "Murphy's law of time estimates" but I don't think Murphy had anything to do with it.

      --
      Not a sentence!
    36. Re:Simply, no software required. by DMUTPeregrine · · Score: 1

      Not always. The extra time could get shorter and shorter for each estimate, and therefore limit to a finite value. Only when you compute the limit does the finite value change more, forcing you to compute a new limit. Thus, avoid computing the actual limit, just get rather close.

      --
      Not a sentence!
    37. Re:Simply, no software required. by MobileTatsu-NJG · · Score: 1

      No, he majored in English. Reading comprehension, mostly.

      (He corrected the principle, not the math.)

      --

      "I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)

    38. Re:Simply, no software required. by Darinbob · · Score: 1

      I'm really bad at this myself. If I think something will take a week, it will take a month. If I think it will take a month it may only take a week. Luckily my bosses in the past have rarely asked for strict time estimates, but sometimes they do. The worst is giving estimates for a bug fix - how can you estimate how to fix a bug when you don't even know what the cause is and the bug isn't reproducible and the description is vague?

      The next big factor hinted at elsewhere is the domain knowledge. I can estimate better if I'm modifying my own code to do something similar. I estimate badly when it's a section of code I'm unfamiliar with or a large framework. This stuff, like the bug fixes, involves a lot of investigation, research, learning, etc. You can't easily estimate that stuff.

    39. Re:Simply, no software required. by adamofgreyskull · · Score: 2, Informative

      Exactly my method too. I assume we both stole it from the same place, but I can't remember where.

      fortune, aptly, sprung this on me last night:

      The Briggs - Chase Law of Program Development: To determine how long it will take to write and debug a program, take your best estimate, multiply that by two, add one, and convert to the next higher units.

    40. Re:Simply, no software required. by Hognoxious · · Score: 1

      the first 90% of the project takes the first 90% of the time line, and the remaining 10% of the project takes the other 90% of time.

      And the 50% that didn't get done is either teething troubles, maintenance issues or a new project.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    41. Re:Simply, no software required. by Hognoxious · · Score: 0, Flamebait

      I think you meant that the first 90% of the project takes the first 10% of the time line, and the remaining 10% of the project takes the other 90% of time.

      Errr, like yeah, you must be right. Because with what he said the time would add up to 180% - and that's logically impossible. I mean what a clown. Posting on an emailweb when he can't even do basic math. Consider him pwnd.

      [exit stage left, shaking head and muttering something about lawns]

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    42. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      I think he meant that the last 10% takes just as much time as the first 90% and the project will take longer than you thought it would.

    43. Re:Simply, no software required. by Hognoxious · · Score: 1

      Fail comprehension.

      loftwyr != Scotty. This should not need stating because, as any fule kno, Scotty has no equal.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    44. Re:Simply, no software required. by Cryacin · · Score: 1

      Sheldon? Is that you?

      --
      Science advances one funeral at a time- Max Planck
    45. Re:Simply, no software required. by Cryacin · · Score: 1

      But you don't do it every time. You just do it enough to get management to think that you are their secret weapon. Quite annoying when it's another team member doing it, as it games the system quite a bit.

      --
      Science advances one funeral at a time- Max Planck
    46. Re:Simply, no software required. by Anonymous Coward · · Score: 1, Informative

      two days, I estimate 4 weeks

      Nah, by his own words, he just multiplied the actual time by 4.

      8 days != 4 weeks. Guess again.

      Since the units are not uniform (like metric), moving up a time unit will have uneven results across all possibilities.

      2 seconds becomes 4 minutes (240 seconds) so x120
      2 minutes becomes 4 hours (240 minutes) so x120
      2 hours becomes 4 days (96 hours) so x48
      2 days becomes 4 weeks (28 days) so x14
      2 weeks becomes 4 months (Roughly 8-10 weeks) so x4-5 (as your limited set suggested)
      2 months becomes 4 years (48 months) so x24
      2 years becomes 4 decades (40 years) so x20
      2 decades becomes 4 centuries (400 years) so x200

      Average of the above multipliers: x68.75
      Average of just hours, days, weeks: x33

    47. Re:Simply, no software required. by Hognoxious · · Score: 1

      My equation is to take my first wild guess, double it, then add another 30%

      No wonder you always overrun. Why not just do it in one step - multiply by e.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    48. Re:Simply, no software required. by Hognoxious · · Score: 2, Funny

      I always add i, because most of the assumptions are imaginary.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    49. Re:Simply, no software required. by david_thornley · · Score: 1

      That's why I completely ignore Hofstadter's Law, and never take it into account.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    50. Re:Simply, no software required. by Cryacin · · Score: 1

      Seriously, the best thing to do is to say I'm not sure, but it will take me X time to get a better idea, we will discuss it then.

      The worst thing you can do is to provide solid estimates.

      The other thing you can do is to provide a risk metric with your estimate. I believe I will be finished in X time, with 50% certainty, and in X time with 90% certainty.

      If you have a good manager, and a reasonable boss, they will appreciate your candor, and understand that you are not sure. If they don't respect that, then stop respecting them, and buy yourself a magicians hat, with a few pieces of paper in there with time estimates, and start pulling it out of there. A bit dramatic, but at least worth a laugh in front of your team mates.

      --
      Science advances one funeral at a time- Max Planck
    51. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      I multiply by three. Guesstimating 1 time period, I'll announce 3 time periods.

    52. Re:Simply, no software required. by ScrewMaster · · Score: 1

      I think it's funny that "Duke Nukem Forever" and "Did Not Finish" have the same acronym.

      or "Dropped Numerous Features", or maybe "Deadline Needs Flexibility".

      --
      The higher the technology, the sharper that two-edged sword.
    53. Re:Simply, no software required. by Hognoxious · · Score: 2, Interesting

      I hope that doesn't get a funny mod. It deserves better.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    54. Re:Simply, no software required. by emt377 · · Score: 1

      The next big factor hinted at elsewhere is the domain knowledge. I can estimate better if I'm modifying my own code to do something similar. I estimate badly when it's a section of code I'm unfamiliar with or a large framework. This stuff, like the bug fixes, involves a lot of investigation, research, learning, etc. You can't easily estimate that stuff.

      Then you need to start with something more easily estimated: a ramp up task. This can usually be estimated. It usually helps to make up a few goals, like 1) being able to create a debug build from scratch on your dev system, 2) understanding of the problem solved by the software, 3) understanding of external interfaces (black box behavior) and a broad understanding of the design, 4) scoping out which parts of the implementation are relevant to your changes, and 5) a broad idea of what changes you will have to make.

      In the iteration after this you can then usually scope out the actual implementation task.

    55. Re:Simply, no software required. by Philip_the_physicist · · Score: 1

      Unfortunately, that last 10% is similarly divided. That's why one just ships it, and fixes it whenever. (Well, that's what certain big vendors do, anyway :( ).

    56. Re:Simply, no software required. by Philip_the_physicist · · Score: 1

      oh, damn, /. ate my HTML. The "whe" in whenever was supposed to be inside a del tag

    57. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      Should be 2pi for complete circles

    58. Re:Simply, no software required. by Sperbels · · Score: 1

      The worst is giving estimates for a bug fix - how can you estimate how to fix a bug when you don't even know what the cause is and the bug isn't reproducible and the description is vague?

      I hate this. And when you say you can't estimate something like that, they say: "oh just give us your best guess, we won't hold you to it." Then six months down the line you get called into someone's office and interrogated for an hour because you can't deliver "on time"...and by this time you forgot that they said they wouldn't hold you to the estimate so you end up trying to defend it...trying desperately to think of all the little things that went wrong and blow them up into bigger issues.

    59. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      Nah, by his own words, he just multiplied the actual time by 4.

      No, he multiplied it by 14

    60. Re:Simply, no software required. by UnknownSoldier · · Score: 1

      That's a variation of the classic 80/20 rule.

    61. Re:Simply, no software required. by digitrev · · Score: 1

      To be fair, you're probably only doing 5 hours of real work in a day anyways. So that sounds about right.

      --
      Cynical Idealist
    62. Re:Simply, no software required. by Glonoinha · · Score: 1

      You will get better at it as you do it more. Here's a piece I wrote a while back that explains my perspective on estimates. And evidently when I wrote that one I was quoting myself from a year before that.

      Simple guideline - ask the developer and adjust. Then adjust for team size.

      Newbie : 8x as long as estimated.
      Seasoned Developer : 3x as long.
      Elite Veteran : 2x as long.

      Reasoning behind the time estimate guidelines:

      New programmer fresh out of college: Take his estimate and multiply by 8x. Yes he could get it done in 1 day, assuming he got so cranked up on caffeine his eyes stopped blinking and he worked on that (and nothing else) for 24 hours straight. In the real world a newbie can dedicate about 2 real hours doing a particular task each day, the rest is spent coming up to speed on corporate coding standards and libraries, email, breaks, and not 'in the groove'. Also, you are expecting him to document it, unit test it, get it into revision control and deployed to the shared test environment but he didn't account for those in his estimate - his estimate was only for time to code the actual lines of code.

      Veteran programmer of average skill, single person project : multiply his estimate by 3x. A third of his day is spent hand-holding the newbie, and another third is spent hand-holding management. The other third is spent programming, but luckily he knows to pad the schedule some (not enough, but some.)

      Veteran programmer of uber skill, single person project : multiply his estimate by 2x. This is as good as it gets. A uber veteran programmer knows to leave his email client closed and his door closed so he can stay in the zone. He knows to pad the schedule more than he really thinks he should. And it still takes him twice as long as he expected, primarily because he doesn't account for the turnaround times from other people he needs to do things for him (DBA to do something to the database, sysadmin to do something in active directory, etc.)

      Multiple people working on the same project : increase the timeline by a factor of 1.2 per additional person. If two people ought to be able to do it in 10 days it will take 12. If 11 people (10 additional) ought to be able to do it in 10 days it will take ... 1.2^10 = about 6, so 10 x (1.2^10) = roughly 60 days = 12 weeks = 3 months.

      --
      Glonoinha the MebiByte Slayer
    63. Re:Simply, no software required. by Canberra+Bob · · Score: 1

      I hate this. And when you say you can't estimate something like that, they say: "oh just give us your best guess, we won't hold you to it." Then six months down the line you get called into someone's office and interrogated for an hour because you can't deliver "on time"...and by this time you forgot that they said they wouldn't hold you to the estimate so you end up trying to defend it...trying desperately to think of all the little things that went wrong and blow them up into bigger issues.

      One of the first things I learnt - always always ALWAYS ask for any stupid request / comment / statement in an email. "We won't hold you to it" rates very highly on the list of things I want in writing before I will commit to something. If they will not provide you with an email saying as much, make sure that you email them (preferably cc'ing someone) confirming their request and any problems you might see in it so they can't plead ignorance at that future date. That way when you do get called into that meeting you have something to back yourself up with. It has saved me on multiple occassions.

    64. Re:Simply, no software required. by BlackHawk-666 · · Score: 1

      If your estimates are out by a factor of 14 then it means you definitely are poor at estimates and most likely are poor at implementation - though that's less certain.

      You either massively underestimate the amount of time it takes to bring something full life cycle, are unaware of what full life cycle encounters, or imagine your abilities to be way beyond your actual capacity. You haven't been fired yet, so you're probably not that much worse than the people around you, or your project manager is also incompetent and hasn't picked up on your low output.

      Try getting some other workers on the projects to help you form an estimate, or sit with your project manager and get him to run you through estimating things like bug fixes, revision cycles, testing, documentation, and all the other myriad things you do to complete a project. Check your previous project plans to see how long previous sections of code took to produce and work out if the new one is harder or simpler and adjust accordingly.

      --
      All those moments will be lost in time, like tears in rain.
    65. Re:Simply, no software required. by pnewhook · · Score: 1

      So when you realized it would take longer than the first estimate you gave did you give the new estimate to your boss or did you just wait to get fried for your first incorrect estimate?

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    66. Re:Simply, no software required. by YeeHaW_Jelte · · Score: 1

      "Manage expectations, and don't let the customer down (particularly when things are outside my control)."

      As interesting as the Anderson method for estimations is, I find it more usefull to present customers not with a single estimate but a range. It'll be done in 5-10 days e.g. The more unknowns, the wider the range. The farther into the project, the tighter the range.

      This gives the client a usefull insight in the unknowns of software development, and sets his or her mind to the realities of it. Their expectations are more realistic, and if you manage to finish within the range; you've a happy customer.

      --

      ---
      "The chances of a demonic possession spreading are remote -- relax."
    67. Re:Simply, no software required. by Kjella · · Score: 1

      Estimate the worst possible case, if everything goes wrong, and there are lots of unforeseen issues - you are 99% sure you can get it done within this amount of time. Call it T3.

      The Weighted average estimate is (T1+(4*T2) + T3)/6

      That's also the PMI method, but the problem is estimating T3 and the outcome largely depends on T3 as you saw. The 95%, 99% and 99.9% T3 estimate will be way different because there's a really long tail, and then so will your weighted average. The three estimates usually map to:

      T1: I got a design in mind that will in general work
      T2: I got a design in mind that with some tweaking and fixing and reading docs it'll work
      T3: I got a design in mind that'll turn out to be unusable or impossible to execute

      T1 is fairly easy, T2 is usually just T1 multiplied by a fixed factor. But the last could push it back from "two days" to "critically depends on having an obscure bug fixed in middleware/base libraries that could take months". It's near unestimatable to say how bad it really could go.

      --
      Live today, because you never know what tomorrow brings
    68. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      If you think of the last time you worked on a project that came in on time, with the features envisaged and without pulling crazy hours and your hair out near the end of the cycle, then raise your hand. Please tell me how you estimate your programming time!

      In the end it is *always* guesswork. You are being asked to predict the future, and that is impossible, unless of course you can be given a flawless environment in a bubble to avoid any broken builds, forced code merges, network issues, so that you can only have 1 risk, yourself.

      I would follow the aforementioned Scotty principle, but that in effect is saying "I have no idea, but hey, it could never take that long could it!?"

      Writing software is a creative process in a often fluctuating chaotic environment, so maybe saying "I have no idea boss, but I will commit to giving you 4 solid hours of programming time each day over the term of the project, if you will commit to managing the risks to my development effort over the same period. If we both live up to it, it will be done as fast as humanly possible"
       

    69. Re:Simply, no software required. by etwills · · Score: 1

      I take the amount of time I think it will take, double it and move it up a time unit. So, if I think it will take two days, I estimate 4 weeks. If I think it will take a week, I estimate two months and so on.

      Mod parent insightful. I actually worked somewhere this was reasonably sensible; okay, the granularity of what we actually had was "hours", "mornings", "days", "weeks", "fortnights", "months" - (pretty much doubling again, looking back at it written down), but there really were so many meetings and other overheads that it made sense (that's probably what killed us, but I digress).

      ...and then sometimes management did the same again, which was nice. One demo I delivered in the predicted "few days tops" (including several additional features I anticipated followup requests for) which "we told [the customer] we'd need three months". The graphics design guy got plenty of time to beautify it and everyone was *very* happy :)

    70. Re:Simply, no software required. by marcosdumay · · Score: 1

      I've some times made that question, and the answer to your question would be "yes". If I want to know how easy is it, is because I want to know if it is viable/rational to implement.

    71. Re:Simply, no software required. by marcosdumay · · Score: 1

      You may want to multiply by i in order to get a completely imaginary estimate. Adding i will lead to an estimate that has a real part, and we know that can't be the case.

    72. Re:Simply, no software required. by ls671 · · Score: 1

      > double it and MOVE IT UP A TIME UNIT.

      days -> weeks
      weeks -> months
      months -> years

      --
      Everything I write is lies, read between the lines.
    73. Re:Simply, no software required. by Twylite · · Score: 1

      The Weighted average estimate is (T1+(4*T2) + T3)/6

      This is the PERT expected time applied to the project as a whole. PERT is a great idea especially if you provide your optimistic (T1), pessimistic (T3) and most likely (T2) estimates along with the result T. In that case you can cite the use of an established estimation technique and CYA as you have provided a clear indication (T3) that the project can miss the target.

      Some things we find very useful:

      • Break the project into chunks that look like something we've done before, and use PERT to estimate each chunk with respect to the developer mostly likely to do the work. Ensure that your chunks cover requirements, development, testing, documentation, packaging, configuration/SCM, integration & testing on site and user acceptance testing.
      • Construct a scheduling network from the chunks and determine the critical path. That gives an overall estimate on project effort and linear time.
      • Revise the effort and linear time up by 14% to 33% reflecting only 6-7 productive hours per 8-hour work day due to non-project overheads (company meetings, general admin, those "quick answers" on maintenance questions or opportunities or complexity estimates).
      • Add a further 8% to 12% to the revised estimate for quality assurance. This is over and above the time in each chunk for testing and review. Even experienced estimators underestimate the time required for their code to be reviewed by other developers.
      • Add a further 10% for risk. Risk from poor understanding or estimation of the extend of the task is built into each chunk using PERT; this represents risk of an external interruption to the process or to management processes that may impact on the schedule.
      • Revise the linear time up by 2-3 days per month, reflecting expected sick leave, annual leave and public holidays of critical path developers. We have 12 public holidays a year here; your figure may differ.
      • The result is the expected linear time to complete the project, assuming no interruptions and the availability of the identified development staff.
      • Inflate by 0% to 30% when promising a delivery date to customers, depending on the risk associated with late delivery.
      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    74. Re:Simply, no software required. by Rob+the+Bold · · Score: 1

      The Briggs - Chase Law of Program Development: To determine how long it will take to write and debug a program, take your best estimate, multiply that by two, add one, and convert to the next higher units.

      Thanks. I'd been wondering about where that came from. Also gives me some insight why I was still a little too optimistic: I left out the "+ 1" term.

      With that info, I found this delightful list of Eponymous Laws of Software Development.

      --
      I am not a crackpot.
    75. Re:Simply, no software required. by Anonymous Coward · · Score: 0

      This is a PERT estimation formulae. It closely relate to "average" expected time. There is PERT derivation (D=(T3-T1)/6) which cooresponds to "standard deviation" in statistics and let you predict percentile of the project completion to specified date.

    76. Re:Simply, no software required. by hesaigo999ca · · Score: 1

      Wow, only a tool could spew such crap

    77. Re:Simply, no software required. by Khashishi · · Score: 1

      that's why it's funny

  6. Specs by TheTick21 · · Score: 2, Insightful

    For me it really depends on how accurately they spec it out. If it is a general idea I can be an order of magnitude off easily. If it is a very accurate spec and needs little change throughout then I tend to be pretty accurate.

    1. Re:Specs by FooAtWFU · · Score: 1

      I don't work with detailed specs, but I do work with estimating a lot of small tasks (on the order of days at most) instead of estimating one big thing. I think that's sort of the Scrumm-my angle they're talking about in TFS, though.

      --
      The World Wide Web is dying. Soon, we shall have only the Internet.
    2. Re:Specs by Lumpy · · Score: 1

      You nailed it.

      If the Scope of work document is inaccurate then the estimate on time will be inaccurate.

      Give me a real Scope of work, I'll give you a real estimate of time. If someone would clamp battery terminals to the Executives nipples and not stop shocking them until they get it through their heads, we all would not have to guess.

      --
      Do not look at laser with remaining good eye.
    3. Re:Specs by quanticle · · Score: 1

      The thing that has bitten me before is that sometimes the spec. constrains the design and significantly increases the cost. To use the example provided by another post: lets say your client wants a Silverlight viewer for GIF images. The specification for the viewer is detailed enough that you can come up with a detailed estimate. However, unless you knew Silverlight very well ahead of time, you would not have realized that Silverlight could not display GIF images. This would blow any estimate out of the water, since now you have to spend a potentially indefinite amount of time looking for a reusable component or coding up your own viewer.

      --
      We all know what to do, but we don't know how to get re-elected once we have done it
    4. Re:Specs by pnewhook · · Score: 1

      That's not Scrum, thats just good practice. It's far easier to estimate when you break the project down into chunks instead of trying to just guess at the whole project. Breaking it down means you have gone through the exercise of understanding the problem and how to solve it.

      Anyone who submits a schedule to me should have the tasks between 1 day and two weeks duration. When I see schedule tasks on the order of months it means they don't understand the problem.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    5. Re:Specs by pnewhook · · Score: 1

      If the scope of work is vague, then fill in the gaps yourself with your assumptions, then hand that back with your estimate.

      It's obvious it's impossible to give an accurate estimate on vague requirements, so make them not vague. One of two things will happen - they will accept your estimate (so you're covered in case the requirements change later on), or they will say that the assumptions are incorrect, here's how it really is at which point you update your estimate.

      Either way you are working to a real spec, and the boss knows what you are working to as well.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
  7. The WAG Methodology by Anonymous Coward · · Score: 0

    ... aka "Wild Ass Guess." :-)

  8. Blindfold and dartboard by 91degrees · · Score: 1

    Write down all the possible times on bits of paper. Put on blindfold. Throw darts. There's your estimate. I'm consistently getting more accurate times than any other method.

  9. Why does a dog lick his balls? by Third+Position · · Score: 0, Offtopic

    How Do You Accurately Estimate Programming Time?

    I'm sure there's a great punch line that goes here, but I just can't think of one just now.

    Opening the floor for suggestions!

    --
    American Third Position
    Finally, a real choice!
    1. Re:Why does a dog lick his balls? by Rockoon · · Score: 1

      I can't because I'm using floating point.

      --
      "His name was James Damore."
    2. Re:Why does a dog lick his balls? by Opportunist · · Score: 1

      "By implementing it and then telling them how long it has taken".

      It's a bit like writing the specs AFTER coding the tool. Makes it heaps easier to deliver everything according to spec.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    3. Re:Why does a dog lick his balls? by Anonymous Coward · · Score: 0

      "By implementing it and then telling them how long it has taken".

      That approach came in very handy when I was designing my time-machine. Or will have been coming in very handy. Something like that.

    4. Re:Why does a dog lick his balls? by SQLGuru · · Score: 1

      Let's see.....there are 850 function points and it takes 77.1 minutes to code each function point. So that's (checking Excel) 100,000 minutes.......

      ref - http://slashdot.org/it/07/09/24/2339203.shtml

      Free estimate padding courtesy of MS.

    5. Re:Why does a dog lick his balls? by maxwell+demon · · Score: 1

      I'm still waiting for my future self to come with the construction plans for the time machine. He's already long overdue!

      --
      The Tao of math: The numbers you can count are not the real numbers.
    6. Re:Why does a dog lick his balls? by Anonymous Coward · · Score: 0

      I'm still waiting for my future self to come with the construction plans for the time machine. He's already long overdue!

      See, that's your problem right there. You should get your future self to bring you a time estimate first.

  10. There's a hard way and an easy way. by Anonymous Coward · · Score: 0

    How do you do it?"

    Equivocally. Like everyone else

  11. This is what I usually do. by tool462 · · Score: 4, Interesting

    I'll throw together a script that takes in all of the project parameters as input, then based on the number of people in the team, past performance, scheduling deadlines and intermediate deliverables, comes up with an estimate for final delivery.

    Then I throw out that number completely, and just multiply the time it took me to develop that script by five. This method has proven disturbingly accurate.

    1. Re:This is what I usually do. by DoofusOfDeath · · Score: 1

      Then I throw out that number completely, and just multiply the time it took me to develop that script by five. This method has proven disturbingly accurate.

      So you spend 16% of the project time developing estimates?

    2. Re:This is what I usually do. by tool462 · · Score: 4, Funny

      I figure it boosts my efficiency by getting all my wasted time in up front.

    3. Re:This is what I usually do. by Anonymous Coward · · Score: 2, Funny

      Then I throw out that number completely, and just multiply the time it took me to develop that script by five. This method has proven disturbingly accurate.

      So you spend 16% of the project time developing estimates?

      No kidding.

      How do you get it so low? Was your project manager sick?

    4. Re:This is what I usually do. by noidentity · · Score: 1

      Then I throw out that number completely, and just multiply the time it took me to develop that script by five. This method has proven disturbingly accurate.

      So in other words, you could offer to the one asking for an estimate, "I can give you an estimate, or complete the project 17% faster; your choice."

    5. Re:This is what I usually do. by mhajicek · · Score: 1

      Then I throw out that number completely, and just multiply the time it took me to develop that script by five. This method has proven disturbingly accurate.

      So you spend 16% of the project time developing estimates?

      16% of HIS project time. That's a small percentage of the team's man-hours if it's a large team.

    6. Re:This is what I usually do. by Anonymous Coward · · Score: 0

      The law of Fives is never wrong.

    7. Re:This is what I usually do. by haruharaharu · · Score: 1

      Then I throw out that number completely, and just multiply the time it took me to develop that script by five. This method has proven disturbingly accurate.

      So you spend 16% of the project time developing estimates?

      16% would be a merked improvement over our last project. We spent something like 30% in planning.

      --
      Reboot macht Frei.
    8. Re:This is what I usually do. by ericspinder · · Score: 1

      I like to say that one needs to be 20% done before knowing how long it will take.

      --
      The grass is only greener, if you don't take care of your own lawn.
    9. Re:This is what I usually do. by blackraven14250 · · Score: 1

      Notice: This was not planning. This was just the time to create an estimate.

    10. Re:This is what I usually do. by shock1970 · · Score: 1

      I've used that exact same methodology, but I've taken it to the next level...

      I throw out the number completely, then pass the script into an application development program, and voila, finished project in exactly the amount of time it took me to write the script

    11. Re:This is what I usually do. by haruharaharu · · Score: 1

      We did spend about 2 days on planning for a 2 week sprint - it was our first go at scrum and the whole thing was almost comical. Didn't help that our scrum master was a slow talker who didn't know how to be concise.

      --
      Reboot macht Frei.
    12. Re:This is what I usually do. by quanticle · · Score: 1

      Then what are you doing here?

      --
      We all know what to do, but we don't know how to get re-elected once we have done it
    13. Re:This is what I usually do. by tool462 · · Score: 2, Funny

      Estimating.

  12. Heh by jav1231 · · Score: 0

    You have to admit, there's some irony in "estimating" time with regards to computer programming.

    Yes, that's supposed to be funny. :(

  13. How do you do it? by John+Hasler · · Score: 1

    /dev/random works for me.

    --
    Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
  14. My Ass by i_ate_god · · Score: 4, Insightful

    I pull numbers out of my ass.

    If I am ahead of schedule, rock on
    If I am directly on schedule, rock on
    If I am behind schedule, creatively blame something that is out of my control to begin with, rock on

    --
    I'm god, but it's a bit of a drag really...
    1. Re:My Ass by MrCawfee · · Score: 1

      This happens to be my strategy too. No matter how long i say though, they expect it to be completed 15 minutes after they tell me about the problem... even if it is a 6 month project....

    2. Re:My Ass by NeoSkandranon · · Score: 1

      Even if management DOES understand, the sales guy has more clout than your manager because THIS IS AN IMPORTANT CLIENT GUYS. /bitter

      --
      If you can't see the value in jet powered ants you should turn in your nerd card. - Dunbal (464142)
    3. Re:My Ass by coinreturn · · Score: 1

      We have a name for this - PIDOOMA, which stands for Pulled It Directly Out Of My Ass. If the numbers are particularly rough, we will sometimes call it unwashed PIDOOMA to emphasize that we have not analyzed the numbers at all.

    4. Re:My Ass by Anonymous Coward · · Score: 1, Interesting

      I've taken this a step further and convinced my boss that the numbers I pull out of my ass don't mean anything. They continue to ask for them but understand that it's possible for me to be WAY out in either direction.

    5. Re:My Ass by Anonymous Coward · · Score: 0

      Any experienced developer will be thinking about who / what to blame for their estimates being out before they even give them. The reasons will depend on how far out the estimate ends up. If it is a couple of hours then "we were unable to connect to the development environment due to a network issue" will suffice or "Bob was sick on this day, hence why we are slightly out", if they are weeks / months out then you have to pull out the good 'ol "the customer was on the crack pipe when they put together the requirements - the requirements are nothing like what they actually needed" regardless of how well specced and thought through the requirements are. "Scope creep" is another good one to save the day, especially if you can back it up with emails to the PM outlining your concerns (the idea is to email the PM regarding scope creep over ANY request by the customer regardless of whether or not it is within scope). When the shit hits the fan you can blame the PM for "not managing customer expectations properly" and the customer for "not fully understanding what they wanted before they began the project". If you put your story together well enough you can end up way out with your estimates yet end up the hero by making it look that the only reason the project ever finished was because of you and everyone else just plain sucked. Management doesn't know any better - just point out that the customer wasn't using which is why they were so hopeless and any experienced PM would have picked up on this and handled the situation.

      Oh no - management are not the only ones who can play those games *evil laugh*

  15. joel on software by Anonymous Coward · · Score: 0

    I just make a wild guess and multiply by 2. Joel Sposky had a different take on time management:

    http://www.joelonsoftware.com/items/2007/10/26.html

    1. Re:joel on software by rrhal · · Score: 1

      That's what I do - make an estimate that you think gives you lots of time; then double it. It's still a WAG

      --
      All generalizations are false, including this one. Mark Twain
  16. W.A.G. by ipb · · Score: 5, Insightful

    After 40+ years of programming it's still a Wild Assed Guess.

    You're never given enough time to prepare your estimate, marketing has already
    determined the delivery date, and management doesn't know what it is you're
    supposed to create anyway.,

    1. Re:W.A.G. by characterZer0 · · Score: 1

      And hey want an estimate before writing a specification, and change the specification without allowing changes to the estimate.

      --
      Go green: turn off your refrigerator.
    2. Re:W.A.G. by Anonymous Coward · · Score: 1, Insightful

      Pretty much. Even when you're coding to a completely laid out specification, the time it takes to understand the specification and determine how many lines of code you'll need to write to meet each point of that specification is basically equal to the time it takes to code the specification less a factor based on your typing speed.

      You could guess on a (# of bullets x avg. time per bullet) basis, but then you run into specifications like the one I'm dealing with where I've got

      I.3.ii.A) Alerts indicating that data was not saved due to user error shall be red text on a white background.

      and

      IV.4.i.B) All data entered into any field in the software shall be retained, even if "superseded" with new data or "removed" by the user, until such time that an administrative user reviews the retained data and decides to "purge" the data from the system.

      One of those is one line of code and will take about 30 seconds. The other... well, it's a good thing we read the entire spec before we began.

    3. Re:W.A.G. by dkleinsc · · Score: 2, Interesting

      In all seriousness, a friend of mine who's been in the business for a while goes with a refinement of W.A.G.:
      1. Get a WAG from the developer.
      2. Apply this formula: Real estimate = WAG * (actual time for previous features / WAG for previous features)
      3. Tell the developer that his original WAG is what we're using, so he actually hits something pretty close to the real estimate.

      As a result, management has a pretty good (although not completely perfect) idea of how long something is going to take, based on developer's WAGs.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    4. Re:W.A.G. by sznupi · · Score: 1

      Damn, they've found a way to see past "miracle worker".

      --
      One that hath name thou can not otter
    5. Re:W.A.G. by Anonymous Coward · · Score: 0

      This has a chance of actually working as long as these factors stay constant:

      1. Team members are the same.

      2. Project's technical hurdles are the same exact hurdles as the ones encountered in all the previous projects.

      3. The project has no creative (unrepetitive/unique) hurdles.

      4. The company has not been doing something lately that affects the morale, such as decimating the workforce (laying off every tenth member).

      And so on. In other words, this strategy is probably not very accurate for most real world environments.

    6. Re:W.A.G. by Darinbob · · Score: 1

      Yep, the estimate is basically to take the date of delivery and subtract today's date, then add a week. If you're done early, then that's great as you have more time to fix the bugs that crop up in the meantime or whatever other maintenance is needed. If you're late then you trim down your own deliverables, fix fewer bugs, spend some later nights, or if desperate work on the weekend.

      Often I find that the marketing aspect is what's important here. Ie, the company wants to say "version 3.0 now cures cancer". They'd love to say it cures all cancer but will be happy if it only cures one type of cancer. Even if it cures one type of cancer while increasing the risk of a different cancer, at least marketing will be able to use the "cures cancer" bullet point. If you can't implement it all in version 3.0, well you will just be given the job to finish more of it in version 3.1. Which means that as long as you get some significant part of it completed, you can trim down on your deliverables quite a lot.

      I implemented one feature that was not as fast as I wanted so some people seemed concerned that it wasn't as fast as Windows. I knew how to make it much faster and said I'd work on it in a later release and that it wouldn't be that much work. But no one ever assigned me the task to finish it up. The slow feature was enough to get the bullet point, and some customers were happy that it existed, but there were more important things to work on in the future rather than go back and polish things.

    7. Re:W.A.G. by Dumnezeu · · Score: 1

      The value of that fraction for me is 8 (found by experience). So if I think it takes one hour, it will take the whole day. That's actually normal, because half of the time I'll be reading Slashdot, half of the time left I'll be debugging, half of the time left I'll be thinking about the implementation and the hour I have left will be used for writing and tweaking the code. Seriously. So I come up with a WAG in a few seconds, I multiply it by 8 and management knows they can always count on my estimates, because they very rarely fail. Luckily, they know a lot about software development, so one day for adding a minor feature is no surprise to them (TDD, mercurial patches, merges, builds that take 10 minutes, installing virtual machines, etc).

      --
      Yes, it's sarcasm. Deal with it!
    8. Re:W.A.G. by julesh · · Score: 1

      In all seriousness, a friend of mine who's been in the business for a while goes with a refinement of W.A.G.:
      1. Get a WAG from the developer.
      2. Apply this formula: Real estimate = WAG * (actual time for previous features / WAG for previous features)
      3. Tell the developer that his original WAG is what we're using, so he actually hits something pretty close to the real estimate.

      Note that taking steps 1 & 2 of this process gives you the estimating technique used by scrum, i.e. the process the guy in the article is advocating...

    9. Re:W.A.G. by TrackBike2 · · Score: 1

      Minor correction, Scientific WAG. Sounds better. I do remember one programmer who was accurate. He was called ARP (for Anal Retentive Programmer). He was fired because he could did not change his estimates when asked to compromise. Let us review. He was accurate, when done his code required no fixes, therefore he was fired for not playing the game. Better game players promised on reduced time, but when all the fixes and reworks were added in, the project took way longer than the correct estimate of ARP. Conclusion, when accurate estimates and good code are devalued, let the games begin and good luck to the poor slob forced to use the bad code.

    10. Re:W.A.G. by Anonymous Coward · · Score: 0

      Wow.

      The specs we get are usually:
      * Calculation Validation Engige
      as a screenshot, or possibly copy/paste, of a row in a spreadsheet.

      And then it's up to us to find out that it was supposed to read 'Engine', and figure out what the hell it is (which turns out to be a very abstract interface between three very disparate systems).

    11. Re:W.A.G. by KlaymenDK · · Score: 1

      half of the time I'll be reading Slashdot, half of the time left I'll be debugging, half of the time left I'll be thinking about the implementation and the hour I have left will be used for writing and tweaking the code. Seriously.

      +1 honest

      +1 truthful

      +1 me too

    12. Re:W.A.G. by Anonymous Coward · · Score: 0

      One of the biggest reasons for estimating (and trying to do it accurately) is so that if marketing's desires and reality are too far out of line, you know to get your resume' updated.

      (Depending on your circumstances, that may be the _main_ reason for attempting to estimate accurately.)

    13. Re:W.A.G. by agentultra · · Score: 1

      Pretty much. Even when you're coding to a completely laid out specification, the time it takes to understand the specification and determine how many lines of code you'll need to write to meet each point of that specification is basically equal to the time it takes to code the specification less a factor based on your typing speed.

      If you have a specification, you're done -- as long as you consider the software the specification as I do.

      Anything I receive from a client or non-technical stakeholder is just documentation of wishful thinking. It's the equivalent of a sketch on a napkin. Even if it's twenty pages and "really thorough." Unless it compiles, it doesn't specify anything.

      The exception of course are specifications written by -- programmers! Unless they're n00bs with a lot of wishful thinking, these will tend to be more like blue-prints and less like napkin sketches. Unless they already compile. Even better.

      If a client insists for an estimate and they aren't satisfied with the reasons for my reticence, I just let them know that it's a WAG and will be readjusted once the project moves ahead and I get a better understanding of the system and its specification.

      How do I guess my WAG? I look back at past projects I've worked on that resembles what their project is going to be and pad it out from there based on numerous qualitative feelings. I ask myself, "Does this feel more or less complex? Has this client worked on software projects before? Do I trust these people? What's the worst thing that could go wrong?" That sort of thing.

    14. Re:W.A.G. by Hognoxious · · Score: 1

      Better game players promised on reduced time, but when all the fixes and reworks were added in, the project took way longer than the correct estimate of ARP.

      Beware of that especially when you have separate development and support teams. The attitude of "chuck it over the wall and then it's someone else's problem" can become institutionalized and acceptable in the eyes of the PHBs.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  17. Stop estimating a single number by Anonymous Coward · · Score: 0

    Nobody can ever give you a usable number. No matter how often you ask them. Instead, ask them for 5%, 50% and 95% numbers. These numbers indicate both the expected completion date, the amount of work they estimate and their feeling of worst-case, or uncertainty. When the three are far apart, that's a hint to you that it's not sufficiently clear & they need more data. When they're very close together or the developer refuses to give them, there's probably some pressure on him that would disadvantage him if he did - for example, knowing your response to his actual 95% number.

    1. Re:Stop estimating a single number by SQLGuru · · Score: 1

      You are missing two important numbers.....80 and 20.

      How long will it take to be 80% complete? That's 20% of your total estimate.

    2. Re:Stop estimating a single number by Anonymous Coward · · Score: 0

      Hmmm, 80/20 -- you must work on easy problems!
      I tend to use the same rule but with 90/10 for the multipliers.

    3. Re:Stop estimating a single number by SQLGuru · · Score: 1

      I just break my problem into smaller steps. More steps results in more padding. More padding results in more accurate estimates.

  18. The George Carlin Principle... by TheDarkMinstrel · · Score: 2, Informative

    Show me a staff that consistently delivers products on time and one of the following will always be true:

    1) One or more of your highest performers works extensive amounts of overtime (and is likely to burnout)
    2) Project times are consistently overestimated.

    It's a variation of the George Carlin Principle... People will adapt to fill the space, one way or the other.

    1. Re:The George Carlin Principle... by Kattspya · · Score: 1

      That would be Parkinson's Law not the George Carlin Principle.

  19. .NET by cosm · · Score: 1

    ( [Average copypasta time] x [Desired Lines of Code] / [Averages Lines Per Chunk] ) x K K = Constant of Desired Inneficiency

    --
    'We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.' RPF
  20. It's Easy by BabyDuckHat · · Score: 5, Funny

    I just ask my manager how long he's already told the client it's going to take.

    1. Re:It's Easy by VoxMagis · · Score: 5, Insightful

      I wish I had mod points for this - it's the most realistic answer yet!

      --
      -- I really need to bleed off some of this /. karma.
    2. Re:It's Easy by GNUALMAFUERTE · · Score: 1

      And then just don't sleep for as many days as necessary to deliver, work on weekends, and deliver ontime, without testing, knowing that the binaries you are delivering where compiled the night before the delivery date at 5 A.M.

      Yes, it's my way ...

      --
      WTF am I doing replying to an AC at 5 A.M on a Friday night?
    3. Re:It's Easy by Skapare · · Score: 1

      ... and double it.

      There, finished it for ya.

      --
      now we need to go OSS in diesel cars
    4. Re:It's Easy by Chrutil · · Score: 2, Insightful

      This is very true as far as the delivery date for the application/component. However, estimation is not used for determining the ship date of your software, dates and such comes from marketing.
      Estimation is used to determine how many subtasks/features that can be done within the given time so that you can scope out features that won't make from the very beginning.

      ^C

    5. Re:It's Easy by Anonymous Coward · · Score: 0

      I just ask my manager how long he's already told the client it's going to take.

      You forgot the part where you then laugh all the way out of his office.

    6. Re:It's Easy by Anonymous Coward · · Score: 0

      I just ask my manager how long he's already told the client it's going to take.

      And they said "It's simple! All you have to do is..."

      At which point, it's time to start sending out resume's.

    7. Re:It's Easy by FlyingGuy · · Score: 1

      This should have been moded insightful + 10*10^6 and then some.

      The people who actually do the work are almost always the last ones to know what the damn code is supposed to do.

      Back in the days when I had a boss ( that was not the client ) I would get called into the last meeting before the sales asshat told the client, oh yeah we are ready to go and I always asked, "What have you promised?" and take it from there.

      --
      Hey KID! Yeah you, get the fuck off my lawn!
    8. Re:It's Easy by Realistic_Dragon · · Score: 1

      I have actually written some software to plan projects this way (working backwards from deadlines), as it's basically how things work in reality.

      If anyone's interested I'd be happy to hand out a few beta invites.

      --
      Beep beep.
  21. Hofstadter's Law by Anonymous Coward · · Score: 1, Informative

    http://en.wikipedia.org/wiki/Hofstadter%27s_law

    Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.

    1. Re:Hofstadter's Law by Liquid+Len · · Score: 2, Funny

      Stack overflow detected...

  22. Why bother? by lwriemen · · Score: 1

    ... if management is just going to come back and say, "Well, I told the customer it would be done by "

    Seriously though, you might want to read, Software Engineering Economics by Barry Boehm. Some of the examples of work products might be outdated, but the concepts are still valid and useful.

  23. Does it matter? by Opportunist · · Score: 1

    Why should I bother to figure out how long it will take to implement it? Marketing has certainly already set a delivery date, so that burden is taken off your shoulders.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  24. Well, I *used* to use the entrails of goats... by gestalt_n_pepper · · Score: 4, Funny

    But the folks who used the table in the lunchroom complained, so we now use the far more sophisticated system of tea leaf reading. This upsets nobody but the tea drinkers as we frequently need to user their cups before they're done, but then tea drinkers are wussies anyway.

    --
    Please do not read this sig. Thank you.
    1. Re:Well, I *used* to use the entrails of goats... by GNUALMAFUERTE · · Score: 1

      >>but then tea drinkers are wussies anyway.

      Agreed. Never trust a programmer that doesn't drink coffee.

      --
      WTF am I doing replying to an AC at 5 A.M on a Friday night?
    2. Re:Well, I *used* to use the entrails of goats... by haruharaharu · · Score: 1

      One of the tea drinkers from my last job was ex-navy. I don't think I'll be taking his cup any time soon.

      --
      Reboot macht Frei.
    3. Re:Well, I *used* to use the entrails of goats... by Ma8thew · · Score: 1

      Tea drinkers wussies? Tea drinkers conquered half the world forming the largest empire in history in pursuit of more tea.

    4. Re:Well, I *used* to use the entrails of goats... by gestalt_n_pepper · · Score: 1

      And *then* what happened to them? They were thrown out of India by a skinny guy who wandered around in his underwear. Of course, I understand they were big hydrogen monoxide users too. Hard to separate the causality when two such deadly substances are involved.

      --
      Please do not read this sig. Thank you.
    5. Re:Well, I *used* to use the entrails of goats... by quanticle · · Score: 2, Informative

      Hydrogen monoxide would be pretty reactive. Dihydrogen monoxide, on the other hand...

      --
      We all know what to do, but we don't know how to get re-elected once we have done it
    6. Re:Well, I *used* to use the entrails of goats... by Anonymous Coward · · Score: 0

      You won't say that when we throw boiling hot tea at you.
      Make mine Yerba Mate.

    7. Re:Well, I *used* to use the entrails of goats... by Anonymous Coward · · Score: 0

      I'm a tea drinker, you insensitive clod!

  25. Quid pro quo by HangingChad · · Score: 5, Insightful

    The programmers' experience, domain knowledge, and speed vs. quality all come into play, and it is highly dependent upon the culture of the team/organization.

    My time estimates will be as accurate as your specs. You stick to the specs, I'll stick to the estimate.

    --
    That's our life, the big wheel of shit. - The Fat Man, Blue Tango Salvage
    1. Re:Quid pro quo by samkass · · Score: 1

      That only works if you have historical data to back it up.

      My favorite estimating story... A friend of mine asked how you estimate software, since writing software is a potentially unbounded task. He said, "It's like trying to estimate how long it will take to find my keys. I have no idea until I find them!" I actually found that to be a great analogy. The first time you lose your keys, you could imagine estimating based on how big the search area is, how cluttered the search area is, etc. But you're going to miss something, and the estimate will likely not be very accurate. But if you keep careful track then the TWENTIETH time you lose your keys, you will have a very good idea of how long it's likely to take and what the probability will be that you'll find them faster or slower than your estimate.

      Your estimates are only as good as your statement of work AND your historical data.

      --
      E pluribus unum
    2. Re:Quid pro quo by computational+super · · Score: 1

      Them: "How long is it going to take?"

      Me: "Well, I can't estimate it until the specs are finished."

      Them: "Well, then how long will it take until the specs are finished?"

      Me: "Ah-ha..."

      --
      Proud neuron in the Slashdot hivemind since 2002.
    3. Re:Quid pro quo by Bruiser80 · · Score: 1

      Bravo!

      I'm a mechanical design engineer who has to quote my work. The initial quote is most likely blown away when the customer comes back with more changes than budgeted in concept phase, and brings changes again when we're past "the point of no return".

      Oh how I miss the days of desparate customers willing to pay Time and Materials... sigh

      --
      Arguing with an engineer is like wrestling a pig in the mud. After a while, you realize the engineer enjoys it.
    4. Re:Quid pro quo by mhajicek · · Score: 1

      I've compared it to picking a combination lock, when explaining it to my boss. You can make a rough guess based on the number of digits in the lock, but for any given lock you could be off by orders of magnitude.

    5. Re:Quid pro quo by lothiel · · Score: 1

      I don't think the search for your car keys is an accurate analogy for software development time estimation. The executable steps for the search for your keys is the same each time: you already know all of the steps you need to do in order to look in the freezer, in the couch, etc. You might not know all of the places you need to look, but you at least know where you will most likely look and roughly how long it will take you. In software, when I start out on something completely new, I don't necessarily have an idea where I'm going to "look", nor how long it's going to take me to "look" once I've decided where to start. For the parts of the project where "we've already done something just like this for that last project", then historical data makes sense.

    6. Re:Quid pro quo by Anonymous Coward · · Score: 0

      Brilliant! And dead on.

  26. Cart before horse. by PeanutButterBreath · · Score: 1

    Typically, the solution is much more malleable than time or budget. Determine the baseline requirements. Then determine the resources available (time and money). The project will likely fill the latter two. Success should be measured against adherence to the requirements, not time or money saved.

  27. Fixed Price or Cost +? by Anonymous Coward · · Score: 0

    For fixed price, WAG*3
    For Cost+, WAG*2

  28. Beers as a temporal unit by mlts · · Score: 1

    I do know what not to do. When someone estimates a programming job in number of beers, I get worried. If someone says that a security patch to an existing application is a one beer job, then I hope for the best, and that regression testing and QA catch anything new that cropped in.

  29. Change the units and multiply by 2 by Anonymous Coward · · Score: 0

    If you think something will take an hour, change the unit to a day and multiply by 2
    So
    1hr=2days
    1 week=2 months
    and so on

  30. Easy by Joucifer · · Score: 1

    Take my initial guess and either multiply by 2 and add a 0.

    1. Re:Easy by Joucifer · · Score: 1

      Take my initial guess and either multiply by 2 and add a 0.

      or. not and.

    2. Re:Easy by mgblst · · Score: 1

      So multiply by 20 then?

  31. Estimate, Get Feedback, Repeat... by fortapocalypse · · Score: 1

    It is just like anything else. You practice, you get feedback, and you keep trying. That method should apply to getting better at both high-level and task-level estimation for any task (not just development). The methods that help you produce better estimates will develop based on experience and feedback. Historical reporting and adequate (but quick) data collection are key. While there are tools out there to help you determine where people are spending time, nothing substitutes for people estimating their work or the work of their team. Unfortunately, estimation is not valued in all environments, and can turn some developers off.

  32. Method changes based on scope by Anonymous Coward · · Score: 3, Insightful

    Are we estimating a tweak to an existing feature? Or the creation of an architecture for a high-volume real time production system?

    That matters. Methods that are cost-effective for one are worthless for the other.

    And there are other concerns...like....how much are we allowed to spend on the estimate itself? That will put limits on the accuracy and precision (the difference between which is critical to understand in any methodology), as well as further determine what kind of estimation methodology can be used.

    In order to answer the question put forth in the summary, I will first need more relevant details.

    My experience working both with huge and tiny projects has taught me this:

    One size does not fit all.

    1. Re:Method changes based on scope by tjstork · · Score: 1

      One size does not fit all.

      Very true. And, for a business oriented website, it may seem foolish to blow 40 - 80 hours on getting the look of a page right. But, if you are making a more media oriented site, its probably nowhere near enough.

      --
      This is my sig.
    2. Re:Method changes based on scope by Futurepower(R) · · Score: 1

      "One size does not fit all."

      I agree with that, but I think there is a fundamental problem. It seems to me that a lot of project estimation is done to serve a hidden purpose. The manager wants to get a commitment from programmers without actually knowing what they are doing or understanding the day-to-day challenges.

      Usually the manager is hoping to intimidate the programmers into working more than a 40-hour week. Long weeks create the appearance of diligence, but tired programmers make mistakes that cost time; time isn't saved.

      Usually the manager is technically challenged, but doesn't want to admit it.

      Estimating programming time is often estimating how long it will take to do something that has never been done before. There may be political pressure to pretend that an accurate estimate can be given, but with many projects that's just a socially acceptable lie.

      Here is an example. Someone was 100 million dollars in error: Waste Management sues SAP over ERP implementation.

      A small error may be just an error in estimation. A huge error indicates a social problem.

    3. Re:Method changes based on scope by epine · · Score: 2, Interesting

      Estimating programming time is often estimating how long it will take to do something that has never been done before.

      And if it has been done before, it's out the door to India already, which I'm sure someone else will also point out.

      It seems to me that a lot of project estimation is done to serve a hidden purpose.

      Yes, and the hidden agendas are formal inputs to the schedule estimation problem. Been there, done that. One of the major terms in the non-linear politics is who gets the blame when a product shipped with working functionality proves impossible to extend in the next coding iteration because the wrong foundation was chosen. Do you want the estimate consistent with my professionalism, or with grenades baked in for the next guy to work on this? How many accountants say "the audit will take six weeks, but I could have it done in three if I cut a few corners"? The engineers are often the easiest departed to prey upon to extract the necessary lies to feed management fiction in the face of disgruntled investors. Our work process is among the least subjective, but our quality standards are among the most subjective. Works or doesn't work is hard science. Maintainable or not maintainable is pure sociology (under most boardroom conditions).

      Some day I would love to seal my estimate into a cryptographic vault on the basis that my estimate is only correct if I don't tell anyone. As soon as you tell someone, that person immediately goes around changing the assumed conditions.

      I'd also love to try a pair programming exercise where the project manager sits down beside me while I work and then I go into a stream of conscious mode:

      Well, without knowing more about this tool, my estimate is one to eight weeks". If we spend anywhere from two to eight hours, my estimate will likely improve to an interval of (t,2*t) + investigation overhead. Which path would you like me to take?

      Generally I can lucidly explain every decision point, usually three or four levels deep off the top of my head. Every time my companion antiparticle shies away from taking the abrupt path to clarity, the estimation error expression spouts more terms, in some cases combinatorially depending on sub-problem interrelationships.

      With a certain level of development maturity, the shortest distance between two points is to drive clarity at every step of the process coupled with an intense feedback-loop concerning local discoveries. It wouldn't be a mathematical contradiction is the decision strategy with the lowest expected time has a particularly ragged expected variance. In fact, I believe this is true.

      Another thing to throw at my companion antiparticle is that you can't just take the statistical average of the anticipated decision chain. If the variance of a distribution is poorly behaved (e.g. real life, according to Nassim Taleb) higher order moments of your distribution are undefined. Put that in your pipe and compute the average.

      Of course, there are exceptions to the recalcitrance of black swans, such as when your business is in a lucrative application domain with slow moving market conditions with only gentlemen competitors if any competitors at all, and your company is funded by private money who politely and happily declare "looks like we're still on target to reach profitability in year ten, good work chaps".

  33. Multiply by 3 or 8 by khendron · · Score: 1

    I really don't know why this is as accurate as it always turns out to be, but it really works.

    I look at the specs of what needs to get done, and I do a quick back of the envelope estimates as to how long each feature will take (e.g., feature A: 5 days, feature B: 2 weeks, etc). Then I multiply each estimate by 3 and add it all up. If some sort of hardware interfacing is required, I multiply the estimate by 8.

    My supervisor for my Masters degree taught me this trick, when I was programming a sensor control system for a wind tunnel. I didn't believe him at first, but he turned out to be right.

    --
    Life is like a web application. Sometime you need cookies just to get by.
    1. Re:Multiply by 3 or 8 by kamochan · · Score: 1

      Back in the day when our company was young, the CEO used the formula (my analysis x pi). That was also eerily accurate - but the thing was, I eventually learned that my estimate was how long will it take to _make the software_. Add considerations for spec reviews, testing, and general fuzz - stuff you need to build a deliverable product - and the times-pi gives a really good calendar time estimate.

    2. Re:Multiply by 3 or 8 by Glonoinha · · Score: 1

      That's funny - see my post above that breaks down estimates by developer skill level. I'm seeing a lot of guys that say 8x their estimate and a lot of guys (including you) that say 3x my estimate.
      Personally I'm hoping my estimates are all correct when a 2x factor is used...

      --
      Glonoinha the MebiByte Slayer
  34. Miracle Worker! by mackil · · Score: 1

    Times every quote by 10! How else will they think you're a miracle worker laddie?

  35. Multiply by Three by 4pins · · Score: 1

    1. Break the program into it's component parts.
    2. For each component ask, "How long should this take?"
    3. Multiply that number by three and record it.
    4. Add up all the numbers.

    I have used this method successfully for projects lasting only a few hours up to six months.

    --
    I will not mourn that which I never had to lose. - Unknown
    1. Re:Multiply by Three by NCG_Mike · · Score: 1

      I use similar... 2.5 times my initial guess. Sprints are handy though as you can see slipage pretty quickly.

    2. Re:Multiply by Three by computational+super · · Score: 1
      Break the program into it's component parts.

      a) You spent more time "breaking the program into it's component parts" than you would have spent just writing the damned thing.

      b) The component parts you came up with aren't the component parts you actually end up needing.

      --
      Proud neuron in the Slashdot hivemind since 2002.
  36. Uhh, Scrum is not an estimation method by pclminion · · Score: 5, Interesting

    Scrum is a way of chunking development into well-defined portions. The idea of using Scrum to estimate time just doesn't make sense. Everything in Scrum takes the same amount of time. Two weeks. (Or one week, or whatever your sprint length is.) The difference is that long projects are implemented over multiple sprints, since obviously, not everything can be done in two weeks. So the estimate is not of how long it will take, but how many backlog items will be required in order to reach some known endpoint. Once the backlogs have been created and agreed upon by the team, estimating the necessary time becomes a matter of multiplication: 12 backlogs * 2 weeks = 24 weeks to finish this product.

    This makes you shift your thinking from "how long will it take to do all these things" to "how can I break this product development into chunks which each fit into a two-week period?" That's much easier than making wild-ass guesses about the time it takes to do something.

    1. Re:Uhh, Scrum is not an estimation method by eulernet · · Score: 1

      Also, evaluating a single chunk is more accurate than evaluating a whole project.

      We use cards for keeping track of all the tasks and assign them a number of points, given the complexity of the card.
      This does not mean that a complex card will take more time than an easier card, but it gives a good average value.

      Oh, and our velocity is always very low, except when we have very small tasks...

      So, splitting a task in very small chunks helps motivate the coders, since they think they are very fast ;-)

    2. Re:Uhh, Scrum is not an estimation method by MobyDisk · · Score: 2, Insightful

      Do you realize that you just explained why scrum is a great estimation method? I'm gonna have to try that!

    3. Re:Uhh, Scrum is not an estimation method by JohnFluxx · · Score: 3, Insightful

      In reality, by the end of the project you are creating new backlogs as fast/faster than fulfilling them. There's always code that needs to be redone, newly found bugs to fix, performance testing that needs to be done, etc. You can't "create and agree" on performance, debugging etc backlogs ahead of time.

    4. Re:Uhh, Scrum is not an estimation method by haruharaharu · · Score: 1

      Wait, you said it doesn't make sense, then demonstrated that it did - are you confused or just overly clever?

      --
      Reboot macht Frei.
    5. Re:Uhh, Scrum is not an estimation method by Anonymous Coward · · Score: 0

      This isn't entirely accurate. While Scrum doesn't mandate any one type of estimation process, a fairly common methodology used by Scrum (and other Agile processes) is to use Story Points to estimate how long it takes to complete a feature/story (as described in the tiny blurb by Suvro Upadhyaya that started this thread). Once you add up all of the Story Points that make up your project, and know how many average Story Points are completed per Scrum iteration, you come up with a surprisingly accurate estimate for time to complete a project. After a few iterations, you can also factor in the rate of scope creep to get even more on target (i.e., if I notice the product owner adding an average of 10 more story points of feature per iteration, and I can complete and average of 40 story points per Scrum iteration, I know that my project will take 25% longer than currently specified by total feature story points). Scrum is a framework that is fairly well suited for adding on other Agile methods to get estimates that often correlate well with actual time to delivery. Arguably more accurate than most BDUF Waterfall projects.

    6. Re:Uhh, Scrum is not an estimation method by azgard · · Score: 1

      I see - so you write it first, and then use the amount it took as an estimate! How clever!

    7. Re:Uhh, Scrum is not an estimation method by pclminion · · Score: 1

      No -- the point is that the estimates fall out of the process as a side-effect. You do not approach it by forming estimates. You approach it by dividing work into proportionally-sized pieces. Then you count how many pieces you have to determine your estimate. So yes, I misspoke by saying that Scrum doesn't generate estimates, but it does so in an indirect way.

    8. Re:Uhh, Scrum is not an estimation method by pclminion · · Score: 1

      In reality, by the end of the project you are creating new backlogs as fast/faster than fulfilling them. There's always code that needs to be redone, newly found bugs to fix, performance testing that needs to be done, etc. You can't "create and agree" on performance, debugging etc backlogs ahead of time.

      That depends how you want to manage interior goals. Some people use Scrum only to manage externally committed product development work. Internal stuff might be relegated to a more chaotic system. But you particular example of performance testing isn't a good one. There is nothing inherently unpredictable about doing testing -- in fact, it's core to the entire Scrum model. If performance testing is creeping in at the last second and ruining your best-laid plans, then something is wrong.

      Scrum's not perfect, and I'm the last one to try to champion it -- I'm just trying to describe it.

    9. Re:Uhh, Scrum is not an estimation method by DougWebb · · Score: 1

      How do you estimate how much work each piece is going to be, in order to divide the work into proportionally-sized pieces?

      What's the difference between that and estimating?

    10. Re:Uhh, Scrum is not an estimation method by Snyper1000 · · Score: 0

      wait, I thought part of the sprint creation was team estimates of "points", 1, 2, 4, 8, 64, and 128. After developing for a while you get a velocity. Then you can take that velocity, see how many points per sprint get done, and accuratly estimate time. Trouble is, sometimes velocity changes, specs change, 64 and 128 time estimates need to be broken down b/c they are unmanageable and not really estimatable. I likes the scrum projects we worked, so did our customers, and managers (well, the ones who could get over the waterfall method that is)

    11. Re:Uhh, Scrum is not an estimation method by quanticle · · Score: 1

      The other nice thing about scrum is that you get feedback about your estimates relatively quickly and have an opportunity to revise your estimating methods if you notice a pattern. I know that I was much better at estimating by the end of the fourth sprint than I was at the end of the first sprint.

      --
      We all know what to do, but we don't know how to get re-elected once we have done it
    12. Re:Uhh, Scrum is not an estimation method by Anonymous Coward · · Score: 0

      You forgot the part where you split functionality up in user stories and estimate the stories in story points. After that you fill the sprint with as many stories as your velocity indicates you can achieve in one sprint.

    13. Re:Uhh, Scrum is not an estimation method by pclminion · · Score: 1

      How do you estimate how much work each piece is going to be, in order to divide the work into proportionally-sized pieces?

      The methods for doing that vary, and Scrum does not dictate any particular method. Typically, backlog difficulty is measured in terms of "points," which are dimensionless numbers that do not map directly to lengths of time. The point scale is arbitrary, but is supposed to be fixed. Team members generate individual estimates for each backlog (including those they won't be directly involved with) and these estimates are then collected by a vote. It sounds chaotic, but it really isn't that bad, because you can often draw a comparison between a new backlog and something you did, say, last year -- if that thing turned out to be a "5", then you might start out with an estimate of "5". Team members will debate, and some may revise their estimates up and down. Once the backlogs have been assigned these point values, enough of them are brought in to meet the velocity the team has demonstrated in the past.

      There's always slop in the system -- a prescribed set of rules is incapable of dealing with that. That's where wise management comes in.

      What's the difference between that and estimating?

      The estimates are estimates of difficulty, not the amount of time it takes to complete something. The amount of time it takes to complete is defined as the sprint length. I admit I was very confusing in my initial post.

    14. Re:Uhh, Scrum is not an estimation method by pclminion · · Score: 1

      wait, I thought part of the sprint creation was team estimates of "points", 1, 2, 4, 8, 64, and 128.

      I'd like to note that the point scale isn't fixed. That particular point scale (powers of two) seems a little too granular for my tastes, but whatever works, works. Around here, we use a Fibonacci sequence -- 1, 2, 3, 5, 8, 13... Numbers other than these are not allowed. This represents the reality of software development -- as complexity increases, the ability to accurately estimate decreases. It's more of an ordinal scale than a linear one, but some kind of numeric value is required, if you want to gauge your velocity.

    15. Re:Uhh, Scrum is not an estimation method by JohnFluxx · · Score: 1

      Huh?

      Nobody can know, before hand, how long it is going to take to do the testing+fixing and performance increases.

      If you have to acheive, say, 30fps, then how can you tell how long it is going to take to reach that? How much effort will it be?

    16. Re:Uhh, Scrum is not an estimation method by Anonymous Coward · · Score: 0

      You can within a 2 week window (dumbass)

  37. Make Estimate, Track Overrun by Kostya · · Score: 2, Insightful

    I make the initial best-guess estimates based on past projects and past developer performance. I track the initial estimate, and then I track all effort spent as it is logged. I.e. each checkin gets an "effort spent" number. I then track "actual vs. estimate" and come up with a total amount of overrun so far. I take that overrun, get a percentage (e.g. "over by 15%") and then add that back to the total estimate.

    So, if the total estimate is 100 man hours, and we are currently over by 15%, I then say it will actually take us 115 hours total to finish the project.

    This is based on the sage wisdom of Mythical Man Month: if you first estimate is off, so are all your estimates, usually by the same amount. As depressing as that might initially sound, it's actually accurate and it gives you a great tool for getting a real estimate once the project is underway.

    So I mark my first estimates as "estimates" and then I consider the adjusted estimate once we are 2-4 weeks in to be more accurate. It has usually put us one to two weeks within the actual delivery date--which based on my experience with software development over the past 15 years is really good estimating :-) The norm on the projects I was a developer on was that overrun was closer to 90-100%. My last project I managed was 25% with new developers--I considered that a victory :-)

    --
    "Doubt your doubts and believe your beliefs." -- Switchfoot, Ode to Chin
    1. Re:Make Estimate, Track Overrun by neonsignal · · Score: 1

      I just keep a couple of RPG dice in my top drawer...

  38. My usual approach by jockeys · · Score: 1

    is to sit down and figure out how long it should take under ideal circumstances (no scope creep, no major fuckups, no outside holdups) and triple it.

    That sounds awful, but it's almost always pretty close. Something always goes wrong, there is always some amount of re-work and there is always some scope creep.

    --

    In Soviet Russia jokes are formulaic and decidedly non-humorous.
    1. Re:My usual approach by AthleteMusicianNerd · · Score: 1

      Well said. It's amazing to me how many people still don't understand Murphy's Law.

  39. Depends by DoofusOfDeath · · Score: 1

    Are we talking before or after the contract is signed?

    1. Re:Depends by computational+super · · Score: 1

      Good for you - if your boss: a) doesn't hold you to that estimate (e.g. requires you to kill yourself in overtime to meet it, even after the project's requirements have changed completely) and b) lets you come up with the estimate in the first place, rather than rejecting every estimate you supply until you come up with the "right" one.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    2. Re:Depends by 93+Escort+Wagon · · Score: 1

      Yeah, I used to be pretty bad about just rolling over when he'd suggest an unrealistic estimate - but getting one not-so-good annual review (several years ago) that was almost entirely due to not meeting one of his unrealistic deadlines has taught me to be more forceful.

      And the funny thing is, it's not like he's penalized me (so far anyway) for being more vocal about realistic deadlines... so really, I share a good chunk of the blame (for lack of a better word) with regard to those earlier issues.

      --
      #DeleteChrome
  40. The Mythical Man Month may provide some insight by ma11achy · · Score: 1

    I would advise reading "The Mythical Man Month" by Frederick P. Brooks. It is considered "The Bible" of the human elements of Software Engineering by many. By "human elements" I mean to include your request for information on estimating project time.

    Here is a quote from page 20 of the book based on one portion of a software engineering project:

    "In examining conventionally scheduled projects, I have found that few allowed one-half of the projected schedule for testing, but that most did indeed spend half of the actual schedule for that purpose. Many of these were on schedule until and except in system testing." (Brooks, 1995)

    Citation:

    Brooks, Frederick P. (1995) The Mythical Man-Month: Essays on Software Engineering: Addison-Wesley Professional, p. 20

    --
    Eagles may soar, but weasels don't get sucked into jet engines
    1. Re:The Mythical Man Month may provide some insight by Chapter80 · · Score: 1

      So a better estimation process might be:

      Estimate how long the project will take.
      Double it, to account for testing.
      Add one month at the beginning, so that all team members can read and understand "The Mythical Man Month".

  41. Dilbert by Anonymous Coward · · Score: 0

    Collect the relevant cartoons together and you'll have a fairly thorough treatise on the subject.

  42. Theory is nice, but.... by Anonymous Coward · · Score: 0

    Here's the problem with the above, it assumes the functionality has no unknowns. Meaning, once you spec it out, it just a matter of design and code and everything goes relatively smoothly. I just spent a few days trying to get an image module to work in C# and Silverlight. The code worked fine, but no image. Finally giving up with beating my head against the wall and reading MS documentation, I posted a question on the SL forums. Silverlight doesn't support GIF - that was the image format I was using. Apparently, MS thinks that GIF is old fashioned and going away. Translation? All the examples and techniques were written for SL2, they wouldn't even compile in SL3 let alone work.

    Anyway, how do you plan for that? You choose a technology, say Java Beans or JBOSS and the problem you get isn't easily solved with the platform or may not even be supported. You're on your own - gotta roll your own. And even then, can you do it in Java?

    How do you plan for that? And it seams as though, every project is like that - there's always something that pops up that's a big question mark and the solution could happen in a morning or never.

    Sure, a typical database application: data in, data update, data delete, etc.. could work very well with that planning technique, but some new product? Something that hasn't been done before or has been done very infrequently?

    1. Re:Theory is nice, but.... by fedos · · Score: 1

      In another post I mention parametric tools. These usually allow you to provide risk inputs (e.g. "High, Nominal, and Low" values) which are then used to calculate the schedule/cost. The models driving these tools account for how novel the application is, how much of the code is new, and what language it'll be written in.

      The results you get will be time and dollar values at different percentile levels. So you can look at the 50th percentile and see 8 months and $1.8 x 10^6.

    2. Re:Theory is nice, but.... by quanticle · · Score: 1

      The point the parent was trying to make is that it is difficult in many cases to estimate the risk of a particular feature. Getting Silverlight to display an image? How hard can that be, right? Yet, because of an unforeseen circumstance, the feature became much more difficult to implement. I'm willing to bet that parent poster would have classified the image display feature as low risk before he or she started coding.

      As I heard somewhere, "Its not what you don't know that gets you, its what you know that just ain't so." Parametric tools allow you to estimate what you don't know. In my experience, that hasn't been a problem - teams usually know when a feature is new or out of the ordinary and allocate extra time to implement it. They don't cause the project trouble. Its the things that should have been "easy" but ended up taking twice as long as they were supposed to that kill projects.

      --
      We all know what to do, but we don't know how to get re-elected once we have done it
    3. Re:Theory is nice, but.... by Knuckles · · Score: 1

      Good points. Add to that buildchain bugs or library bugs, which can take ages to figure out. Or, as in our case, hacking third-party binaries (which we need to interact with - don't ask) in hex to remove bugs that you just cannot live with. I'm not sure whether to be happy or sad that I'm not intelligent enough to be the guy who does that.

      --
      "When I first heard Daydream Nation it quite frankly scared the living shit out of me." -- Matthew Stearns
  43. Thumbrule by N8F8 · · Score: 1

    Look at past performance, adjust for scope of the job, triple it and add 30%. We programmers are always too optimistic. It's always the unpredictable 20% that takes 80% of the time.

    --
    "God fights on the side with the best artillery." - Napoleon, Marshal of France - speaking truth to power
  44. Schedules are complex by plost · · Score: 1

    Software schedules are complex. There's a real part and there's an imaginary part.

  45. Use the "double-up" method: by bittmann · · Score: 1
    Do a best-case estimate of the time required, assuming everything goes perfectly and that there are no surprises. Next, double your estimate. And finally, switch to the next highest unit of time measure.

    A quarter-hour change will take half of a day. 2 hours becomes 4 days. 3 days becomes 6 weeks. A 6-month project will take 12 quarters, or 4 years.

    It's eerie how often that rule of thumb seems to accurately depict the actual calendar time required -- eerily enough that when a so-called "realistic" estimate DOESN'T approach this metric, I find it's usually worth a second look.

    Thankfully, at least at my place of work, this rule of thumb seems to break down once the unit of measure hits a year...

    1. Re:Use the "double-up" method: by selven · · Score: 1

      15 minutes -> 30 hours. Don't think Murphy's law will be kind and allow you the gentler interpretation.

  46. It's all about uncertainty by AardvarkCelery · · Score: 1

    Agreed. The main complicating factor is the level of uncertainty:

    • Ambiguity in the specification
    • Unfamiliar technology
    • Code design with non-obvious solutions
    • Interface constraints that must be reconciled

    I list the uncertainties, make a wild guess on each one, and finally triple the result. Historically I only successfully predict about 1/3 of the problems that are going to come up.

    The hard part is justifying the inflated estimate when asked, since it's based on difficulties that I haven't actually identified yet.

  47. Exact approximation. by Nicolas+MONNET · · Score: 2, Insightful

    Precise guess.

    Accurate estimate.

    In just one word: oxymoron.

    1. Re:Exact approximation. by Anonymous Coward · · Score: 0

      Estimation is independent from accuracy.

      I can estimate with a very good accuracy at what time the sun will rise tomorrow. Some would even call my estimation "exact" here (if I hit the right minute, which I'm likely to do).
      I can estimate with a very good accuracy how long it'll take for a bowling ball to reach the pavement from the 14th floor where I work.

      It's all about the "confidence interval" and how you define it.

      No oxymoron here.

    2. Re:Exact approximation. by tool462 · · Score: 1

      The difference between an estimate and a guess is the difference between a climatological model and a groundhog in determining the end of winter.

    3. Re:Exact approximation. by Hognoxious · · Score: 1

      I can estimate with a very good accuracy at what time the sun will rise tomorrow.

      My planet has a relatively stable orbit, at least over such a short time scale. We'd call that a calculation.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  48. estimation by God+of+Lemmings · · Score: 1

    I've found its only realistic to base a time estimate on how long it took to make a component (or something similar) the first time around.

    --
    Non sequitur: Your facts are uncoordinated.
    1. Re:estimation by Locke2005 · · Score: 1

      Which is exactly why software schedules cannot be accurately estimated... if you've done the same thing before, why are you doing it AGAIN instead of just reusing parts of the old code???

      --
      I've abandoned my search for truth; now I'm just looking for some useful delusions.
  49. Depends by 93+Escort+Wagon · · Score: 1

    For simple projects I can usually draw upon past experience. With complex projects, if the "client" was good about thinking through what they really are asking for, estimating the time needed is normally still pretty straightforward. But most of the time the client hasn't truly thought about any specifics regarding what they think they want, and will almost certainly bring up very involved new features mid-project - so in those cases I make a wild guess and then round up.

    In all instances, though, there's another significant factor. If my boss is going to be materially involved in the project, I take my initial estimate and multiply by 3.

    --
    #DeleteChrome
  50. virgin territory by hey · · Score: 1

    By its nature software is always virgin territory. If it had been before then why are they asking you to do it? So its hard to estimate how long it will take because its never been done before.

  51. Back-fill after you are finished by xzvf · · Score: 1

    Complete the programming job, then fill in the calendar when you are done.

  52. Easy... by ArcadeNut · · Score: 1

    I do the project first, then give them the estimate of how long it will take. For some reason, projects still take longer then estimated...

    --
    Visit the Arcade Restoration Workshop @ http://www.arcaderestoration.com
  53. It's very easy by BenSchuarmer · · Score: 1

    Just say "It will take between ${minimum_estimate} and 40 years". Chances are pretty good that this estimate will be accurate (and if it's not accurate you'll be retired by then).

    Making an estimate both accurate and precise is harder.

  54. How Do You Accurately Estimate Programming Time? by weicco · · Score: 1

    I don't.

    There are situations where I can take a wild guess but questioner must understand that a) it's a wild guess b) it only works in perfect world and if something goes wrong, and especially if that something is something I have no power over with, then you can safely double my bet. These situations are like if I'm asked to write some web based app for people who really don't know what they want. (Web based apps are for some reason really hard for me)

    Then there are situations where I can take an educated guess. These are typically situations where I've written same kind of application before. These situations are starting to come more and more common now when I have ten years of professional programming experience behind me.

    But if you keep gun to my head and demand exact estimate (can estimate even be exact?) then you could just go ahead and shoot me.

    --
    You don't know what you don't know.
  55. My Method... by gers0667 · · Score: 1

    Think of the time it will take in an optimal environment.

    Multiple by 3.

  56. The usual way... by garg0yle · · Score: 1

    Double it, and add thirty!

    --
    Modding "-1, Troll" is not a proper response if you disagree with me. Try reason.
  57. You don't... by karcirate · · Score: 1

    Accuracy in estimating programming time? Last I heard, J.K Rowling hasn't written that book yet.

  58. How long can we stretch it out? by Anonymous Coward · · Score: 0

    Ask any consultant and they'll say that it takes as long as we think we can get away with.

  59. Bill per hour by aclarke · · Score: 2, Interesting

    I almost always bill per hour. Most of the time my clients give me an email or verbal idea of what they want over the phone. I try to get as many questions answered as I can without wasting time.

    I then take the task and break it down into as many bite-sized subtasks as I can. This does a couple things:

    1. It shows where I have unanswered questions
    2. It's easier to estimate "add 3 new roles to management interface" and "add cart admin role to admin interface" than it is to estimate "make admin area more secure".

    Once that's complete (for this round), I put all those line items into a spreadsheet. I then estimate the number of hours it takes in a reasonable best, and worst, case scenario. So "add cart admin rold to admin interface" might be 3-4.5 hours.

    I then add all those up, and add about 33% for planning, and 33% for testing/deployment. Sometimes it can be more or less depending on my experience with the client. I then give that spreadsheet to the client and say, I'm pretty confident your price will be within this range. The areas that have high variability are the areas we need to work on nailing down further. I will bill you actual time taken, but I'll let you know if the range is nearing the top number so we can re-evaluate. That almost never happens, or I should say that when it does, it's almost always because the client has asked for more work, and they understand this.

    Customers almost always appreciate this approach and find it helpful. Most of the time I only do this for the first project for a client, and then they just ask me to give them a verbal idea of how hard the project will be since they trust me.

    For the very occasional fixed bid work I do, I just take the high number, pad it a bit, and double my hourly rate. I tell customers ahead of time though that they are better off hiring me hourly in almost every circumstance. I usually don't spend a lot of time on fixed bid work because, frankly, I usually don't want it.

    1. Re:Bill per hour by Anonymous Coward · · Score: 0

      You have essentially described the Scrum software project management framework.

    2. Re:Bill per hour by Anonymous Coward · · Score: 0

      All that to write "I don't do a good job of estimating, so I won't do it." Well, you wouldn't get hired by me... we don't hire contractors by the hour. You get paid to do a job. Just like a plumber.

    3. Re:Bill per hour by Canberra+Bob · · Score: 1

      Provide a solid spec and I would be happy to do a fixed cost project - however I will hold you to the spec just as much as you will hold me to the cost. Provide me a vague wishlist and I will not do a job for you fixed cost. Keep in mind any fixed cost quote will come with the risk priced in at some point. Some people are unhappy with that, wanting a fixed cost to be based upon best case estimates - I simply won't do business with them. Just because someone contracts does not mean they will do any job under any conditions presented to them.

    4. Re:Bill per hour by aclarke · · Score: 1

      You're absolutely right about that. There are a few factors at play as well, for me at least.

      How do you accurately estimate jobs that are out of your control? For example, if a job entails writing to a third party API, how do you know that that API is properly documented? Is the documentation correct? Will the people respond if/when you find problems with it? Things like this are completely out of your control as the contractor, unless of course you do all that work up front.

      If I'm doing to do all that work up front when bidding for a job against other people, WHY should I do that? So that I can get undercut by someone who DIDN'T do their homework? No thanks. I'll save myself the time, and explain to the customer why I am not going to provide a fixed bid. I don't think I've ever gotten the contract when I've explained this to a potential customer, but hopefully it at least made them screen applications a little more carefully.

      I already have way too much work with clients who are happy with me and are willing to pay me my hourly rates. I wouldn't want to jeopardize my existing client relationships to take on a high-risk, fixed-bid contract with a new customer.

      When (some) customers are on a fixed bid, it makes them think that they can be as inefficient as they want, because I'm the one absorbing that inefficiency. Because I'm busy enough as it is, why should I take this on? With hourly contracts, I'm in charge of my own efficiency, and since I have enough customers who are fine with this, I'd rather be in control than have a new client, with whom I haven't yet built a trust relationship, in control.

      I do have one client with whom I do fixed bid work. However, they aren't a client I had to pick up through a competitive open bidding process. In that case it works out very well for both of us.

      I'm just one person. If I got and took every potential client that rang me up, I'd be completely swamped and then I'd lose all my clients. I'd much rather be able to cherry pick just those clients where it's a really good match for both of us.

  60. A better formula by CorporateSuit · · Score: 3, Funny

    Find out how much time you can spend on the project before you'd get fired for laziness, then subtract a day.

    --
    I am the richest astronaut ever to win the superbowl.
    1. Re:A better formula by Anonymous Coward · · Score: 0

      my method

    2. Re:A better formula by Anonymous Coward · · Score: 0

      Or, if you'd rather not get fired, add a day instead.

  61. we use scrum/invest stories by Surt · · Score: 2, Interesting

    And probably more importantly than estimating accurately, we aim to estimate consistently. Then we compare actual rate of feature completion against the estimated size of remaining features. We've landed within a single sprint of estimates over a year long release with 20+ developers.

    --
    "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  62. We agile the crap out of it... by PmanAce · · Score: 1, Interesting

    What we do is try and break down tasks as much as we can so they each take 1 day or less to accomplish. Then it is easier to estimate a bunch of small task that most of the time have already been estimated in previous projects. Rinse and repeat.

    --
    Tired of my customary (Score:1)
  63. Double by borgasm · · Score: 1

    Write up a one page document about the project, then go look at the code you are modifying. Make your best guess estimate, then double it.

  64. Software Estimation: Demystifying the Black Art by strimpster · · Score: 3, Informative

    I would recommend reading "Software Estimation: Demystifying the Black Art" [http://www.stevemcconnell.com/est.htm]. When estimates are created, there are many tasks besides "programming" that need to be done that are totally forgot about in the estimates and thus throws things off from the very beginning. We have to admit from the beginning that it is an estimate and is hinged with certain unknowns. If the unknowns are cleared up, we can be more accurate with our quoting (this is why requirements gathering should be done with careful attention). Also, since the estimates are just that, they need to not just be a number, but more of a range (if you have to give a number, choose the far end and be sure that you are confident that it can be accomplished by then - with a minimum of 90% certainty - and give the confidence with the estimate). One thing that I have learned is that I never negotiate on estimates/price, I only negotiate on functionality. If a manager/client wants it quicker/cheaper/less hours, fine, but I'm not going to change the number unless the functionality changes or more unknowns are cleared up (helping me to quote more accurately).

  65. Controlling Software Projects by Oloryn · · Score: 1

    Take a look at Tom DeMarco's Controlling Software Projects. He deals with the issues behind estimating (including that one of the reasons we're so bad at estimating is that we get so little practice - much of what we call "estimating" is actually deadline negotiating). He ends up suggesting a separate measuring and estimating team - probably out of bounds except for fairly large companies, but the book has some good insights.

  66. It depends on why you are estimating by ThinkTiM · · Score: 1

    If you're trying to estimate the size of project for budgeting purposes, then function-point counting is a useful method. Over time you can learn how an organization performs and your estimates will become more accurate. If you're trying to estimate for the purposes of visibility then don't—you're better of using one of the agile development methodologies.

  67. And the answer is ... by Skapare · · Score: 1

    42

    The units depends on what combination you want of:

    1. works reliably
    2. performs efficiently
    3. easy to use
    4. comes in on budget
    --
    now we need to go OSS in diesel cars
  68. Use a team-based estimation technique by __roo · · Score: 1

    I've spent a lot of time working with many different teams and trying lots of different estimation techniques, and I've had the best success with the ones that let the team work together to come up with an estimate they all believe in. My best results came with Wideband Delphi, which I've been able to use in both Agile and non-Agile projects. I've actually got a chapter on estimation in one of my books -- you can download the PDF of it.

    Also, Mike Cohn has a lot to say about planning Agile projects on his blog -- definitely highly recommended reading if you're trying to plan projects.

    Whenever I help teams improve the way they estimate their projects, one of the things I've really concentrated on is that planning is about more than estimation. I've got a blog post about it (The Perils of a Schedule) -- a big part of planning is making commitments, and estimation is the way to make those commitments easier to stick to (or less likely to break).

  69. Oxymoron by fredrated · · Score: 1

    'Accurate' and 'estimate' do not go together well, an estimate is not accurate.

    1. Re:Oxymoron by Hognoxious · · Score: 1

      'Accurate' and 'estimate' do not go together well, an estimate is not accurate.

      Odd. Because for over a hundred years it's been possible to accurately estimate - given angle, shot weight and yadda yadda - where an artillery shell would land. Of course it depends what you mean by accurate. In this case - close enough to ruin the target's day.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  70. Done when it's done by Anonymous Coward · · Score: 0

    I can pretty much estimate, dead-on, how many days it will take me to write a script. The devil is in the details, though.

    If the requestor doesn't fully comprehend what's needed, he will send back change request after change request after change request. Each request pushes out the estimate. For example, I once had a request to write a script that copies a log file from one machine to another. After the initial discussion, it was understood that the log file would be completed by 12:15AM every day. My estimate was 2 hours to write the script. And I did. It was a simple SCP wrapped in my standard shell template that took care of logging, reporting, and script miscellany.

    The requestor tried it.. then informed that the 12:15AM deadline was not really true. The file may be written at any point, but each day the file gets rotated at 12:15AM. It wasn't the main file that was needed, but the one from the day before. OK, no problem. I took it as a change request and adjusted the estimate. Sent back a script that grabbed the previous day's file. Tried it in the test environment and it worked great.

    We move it to beta test. This time there's more data. Now we learn that the application initiates the rotation at 12:15AM, but it doesn't necessarily complete by the 1AM when we run our copy because some applications still may be writing to it. I suggest creating a sentinel that the script can watch to only run when the copy is complete. Another long-standing issue comes up, however. The log can't run past 5AM otherwise something requiring human intervention happens. This has *never* occurred, but with anticipated increase in activity, it could shrink our window from 4 hours to just 1 for the copy. No one is comfortable with that.

    In the end, the application is modified so that it writes to a shared filesystem.

    I know... In a sane IT shop the lowly script writer would know the requirements before that first #!/usr/bin/perl line was written. In reality it's almost never the case. We get requirements and a deadline. We churn out code that matches those requirements. The project managers and the architects are supposed to give good requirements and conditions, but that rarely happens. Certainly we must anticipate certain events so we trap for the standard issues, but often scripts are just stopgap solutions to keep something going long enough until that component is redesigned or replaced.

    1. Re:Done when it's done by Hognoxious · · Score: 1

      If the requestor doesn't fully comprehend what's needed, he will send back change request after change request after change request. Each request pushes out the estimate.

      The crucial thing is that it pushes out the estimate by more than it would have done if it had been included from the start.

      A lot of PHBs don't get this. Tell them to imagine you were building a house (or rather, you'd just built one) and you suddenly want to change the location of a door. It would involve unmounting the existing door, frame & fittings, then knocking a new hole, refitting everything and finally filling in the hole where the old one was. Work to do it again and work to undo "antiwork" that needn't have been done in the first place. They'll understand. They'll agree.

      But software is just words with too many semicolons in between. And words, well, you can just copy & paste ... it's not like they weigh anything.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  71. FogBugz by Anonymous Coward · · Score: 0

    Anyone used FogBugz' "Evidence Based Scheduling"?

  72. The Formula by thecabinet · · Score: 0

    A coworker provided me this formula, and it's the only thing that works. Take your normal estimate, let's say one week. Double the number, that gives you two weeks. Then, increase the timescale to the next unit, that gives you two months. That's your estimate.

    1 hour -> 2 weeks
    2 weeks -> 4 months
    4 months -> 8 years

    Done!

  73. Evidence-based scheduling by Krishnoid · · Score: 1

    Joel Spolsky has a method which ostensibly accommodates for consistent over- or under-estimating by any individual developer. It takes a couple release cycles to collect the necessary information, then tries to use that data to provide a likelihood that a product will ship by a given date.

    1. Re:Evidence-based scheduling by KlaymenDK · · Score: 1

      Mod parent up.

      Also, mod my employer down, for refusing to spend dollar one on anything remotely resembling this -- but giving us free leash to spend as much as we want on our 'spare work time' on reimplementing the same thing in our in-house platform.

      I've already asked Joel to open up a branch office on this side of the pond. He said, "maybe later".

    2. Re:Evidence-based scheduling by KlaymenDK · · Score: 1

      BTW, what I usually do is give a rough estimate on how long it takes to come up with a slightly less rough estimate. Then I start fighting to get every little detail of the RQs sorted out. Only then do I pick apart the problem, which often includes writing the actual code, so my sizing ends up being "well, that took x time units" rather than "well, I guess it'll take x time units"...

    3. Re:Evidence-based scheduling by russotto · · Score: 1

      Joel Spolsky has a method which ostensibly accommodates for consistent over- or under-estimating by any individual developer. It takes a couple release cycles to collect the necessary information, then tries to use that data to provide a likelihood that a product will ship by a given date.

      Doesn't work. It turns out if you collect the necessary information properly, the product is invariably canceled as soon as you have enough information to make a schedule.

      Seriously, his method fails at Step 1 -- "You have to break your schedule into very small tasks that can be measured in hours. Nothing longer than 16 hours. " I've never been on a project which had a detailed design to that level by the time a schedule was demanded.

    4. Re:Evidence-based scheduling by pnewhook · · Score: 1

      16 hours is way too short (at least I'm not into 50k and 100k line schedules) but tasks on the 1 day to two week timeframe is good. You can estimate any project on that scale pretty accurately.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
  74. Experience! by sjames · · Score: 1

    At some level, it will always be a WAG tempered with experience. It is always best to assume there will be delays and try to add them in.

    The real catch though depends on what you're estimating. Just the coding or the design? When management says we want a program that does X, how long will it take, they're asking the impossible. They want you to estimate the time to get the actual requirements documented, the time to design software meeting those requirements (which you can't know until step 1 is complete) and then the time to build that design (that you can't know until step 2 is complete). You can guess, of course, and perhaps even be in the ballpark, but that's about it. TFA doesn't address this either (perhaps because it's not addressable beyond GUESS!).

    Inevitably they'll complain that buildings get built on schedule all the time. They conveniently forget (or just don't know) that that schedule doesn't appear until the design process is completed (step 2 above) and before that, it's a guess.

  75. This has already been worked out in by Dunbal · · Score: 1

    The same as the construction industry. It will be done in "two weeks".

    --
    Seven puppies were harmed during the making of this post.
  76. Average + fudge % by pacoder · · Score: 1

    I take the average of my 'best case' and 'worst case' estimates then add 30%. Work out very well typically, what I'm really shooting for is to come in at a bit under the final estimate. Making sure that business understands that scope changes affect the estimate and documenting / communicating scope changes when they come up is critical.

  77. Accurately according to who? by TehBrando · · Score: 1

    Most of the time I'll guess until the business I am developing the software for agrees with my estimate. Seems if they don't like my estimate the first week, they ask for a new estimate the week after or even a day later to try and get a lower number.

  78. 18d20 by Anonymous Coward · · Score: 0

    Eighteen twenty sided dice. 5d6 for smaller projects.

    1. Re:18d20 by osu-neko · · Score: 1

      Eighteen twenty sided dice. 5d6 for smaller projects.

      I was going to suggest astrologers and tarot cards. It's not that I think these are terribly accurate, it's just that I think you're delusional if you think something else is. Tell me you put any faith in estimates by (insert your favorite method here) and I'll think you no more rational than someone who tells me their astrological chart makes an April deadline look favorable. :p

      --
      "Convictions are more dangerous enemies of truth than lies."
  79. All projects.. by Anonymous Coward · · Score: 0

    All projects take 2 weeks to 6 months. Anything beyond 6 months is Duke Nukem Forever.

  80. Selling horse that doesn't look too good by micromuncher · · Score: 1

    Some would recognize this as farmer speak for selling a blind horse, and after RTFM, where refactoring and work and revising guesses, the article called "Unskilled and Unaware" comes to mind. This article's basic premise is that people who are clueless tend to overestimate their ability.

    In the old days, and with most engineering disciplines, costing is a quantified, factored skill. It is not an art. People with a great deal of experience, or whom have access to metrics, can cost building billion dollar chemical plants with reasonable error rates. It all comes down to experience, or metrics in another form.

    First, you record how long it takes you to do something, and how complex it was, and how much risk there was. This knowledge can be used and applied to even unrelated projects. The biggest excuse I hear in software development is that we can't cost this because we haven't done it before. Bullshit. Remember design patterns? Someone has done it before. And it doesn't take much to figure out that something you are doing is either highly complex (and arguably requiring decomposition), or highly risky, and then cost it appropriately.

    Then for those high risk items, apply a strategy like rapid prototyping, or spiral software (risk based) development practices.

    Bullshit to the quality vs functionality argument too. The triangle of cost vs quality vs time or function does not take into account any of the elements for succesful project delivery, like experienced management, experienced leads, a positive working environment (read no asshole driven development), and people that actually think management is mo betta than leadership.

    Rant off.

    --
    /\/\icro/\/\uncher
    1. Re:Selling horse that doesn't look too good by reovirus1 · · Score: 1

      This has worked well for the last three years at two different companies across a number of projects.

      1) Break the project into features/stories/usecases (whatever you want to call them). Features should be as small as possible but large enough to still offer business value. The customer would say with this deployed, I can now solve a problem or acheive a goal with the system that I that I couldn't before.

      2) Only give estimates in terms of complexity points: 1 point - I've done this before, its a fairly simple thing. I'm confident it won't grow in scope 3 points - Not too much unknown, a bit of new thinking involved, more than a trivial feature but not something you'd lose sleep over 5 points - pretty big chunk of work, fairly complex, fair amount of unknowns 8 points - too big to estimate or even make an educated guess about, try to break these into separate features

      3) Do a couple of months of work and see how many points you get Done. Done means the users have tried it out and would sign off on the features being ready for production. In production is an even better point to measure done at.

      4) Calculate how many points you can now commit to for the next given period based on read data. At this point, you are probably ready to provide fairly decent estimates. You will find that your notion of what is complex or not won't change much over time. That's why this this method works.

      5) Get your customers to define what it will take to sign off on the feature up front. Don't talk in terms of solutions, but in terms of solved business problems or achievable business goals. The how and the details are to be worked out durring development and with the end users and especially the developers creativitity.

    2. Re:Selling horse that doesn't look too good by micromuncher · · Score: 1

      I'm very happy to hear it. Once upon a time I worked for a company that kept metrics on all its projects, and we (developers) used these metrics to validate our time estimates. We didn't measure current projects in % done; we measured by function point achieved. Sounds similar to what you mention. It was one of the most stress free times in my life, as they also had effective change management. These things are counter to the manifesto.

      --
      /\/\icro/\/\uncher
  81. We need good cost estimation books in software by dacut · · Score: 1

    The differences in the quality and content of cost estimation handbooks for software and civil engineering disciplines are astounding. It's possible to take a detailed description of a building and come up with an accurate cost estimate; the books describe how much the material costs and the labor and equipment required to install it. Software engineering cost estimation books, on the other hand, can be distilled down to: "Using a process for cost estimation is good!" and "Use the result from the last time you built it".

    For instance, compare the descriptions between these books. Look at the specifics given in the construction estimator vs. the fluff in the software estimator -- and keep in mind the latter was written by Steve McConnell, a well respected author in this field:

    • Cost Estimation of Structures in Commercial Buildings : "A broad range of commercial building types is considered, from five to 50 storeys in height, and the effects on quantities of the varying design parameters, such as column grid size, number of storeys, location of structural components, arrangement of beams, grades of concrete, and so on, are described and illustrated by charts."
    • Software Estimation: Demystifying the Black Art : "Software Estimation focuses on the art of software estimation and provides a proven set of procedures and heuristics that software developers, technical leads, and project managers can apply to their projects. Instead of arcane treatises and rigid modeling techniques, award-winning author Steve McConnell gives practical guidance to help organizations achieve basic estimation proficiency and lay the groundwork to continue improving project cost estimates."

    Granted, a handful of software is sufficiently bleeding edge that it's not possible to find and document past experience. But surely we've deployed database schemas, created servlets, written session handling code, etc., often enough to start documenting the typical tasks involved and how long they took.

  82. My estimation model by thePowerOfGrayskull · · Score: 1
    1. Come up with how long I think it would take a group of skilled developers to do it, then 2x because we employ precious few skilled developers.
    2. Is it onshore work? 1.5x
    3. Is it a mix of offshore and onshore work? 2x
    4. Is it offshore work? 3x

    Surprisingly accurate most of the time.

    Edit: Hm, I hope that "<ol>" only looks that bad in the preview... guess I'm about to find out.

    1. Re:My estimation model by thePowerOfGrayskull · · Score: 1

      Edit: Hm, I hope that "<ol>" only looks that bad in the preview... guess I'm about to find out.

      Nope. Apparently when designing the slashdot css, somebody misunderstood and thought "o" in "ol" stood for "orderless"

  83. A simple estimation approach by jays8088 · · Score: 1

    The best approach I've found is to build a domain object model consisting of only the objects that come straight from the problem domain and then multiply the number of objects by a person days to implement an object for the particular implementation technology. There are some adjustments you can make based on complexity of the UI and developer experience but the basic premise works. It's sounds like a simplistic approach but it's not because the process of building a good object model and that's a key point, the object model must be well done, this process is really a process of organizing the information you need to build an estimate in a very sophisticated way. An object model is a way to organize and account for all of the data and behavior of the system and furthermore, to organize the information into reasonable units. The rules around building a good object model will cause the objects to be of a fairly uniform size in terms of complexity. What you end up with is a list of discrete groupings of data and behavior with well defined interfaces between them allowing for the fairly simple calculation of an average number of person days per object.

  84. How hard is the task by Anonymous Coward · · Score: 0

    Take each task and ask or determine at a team meeting the difficulty of the task...

    Start with a base line for level if task difficultly (For example)...
    easy task - one day
    Medium Task - two to three days
    hard task - 5 days
    never done task - 1 to 2 weeks.

    No task should ever been more complicated than a week and if it is then I try to break it down in to smaller parts. The only exception is the new task. I typically hand that to the guru and a week typically covers his research and implementation plan. But due to surprises I schedule an extra week. Some easy tasks turn into hard tasks and some hard tasks turn into easy tasks. The work week task is a nice policy as at the end of the week the individual task is typically done and if they get sick or something happens their work is caught up and someone else can pick their next task.

    Then factor in the skill level of the developer - triple the times for a green guy, keep the same for a veteran, and cut 25% off for the mind blowing guru, etc.

    Depending on the business culture add on a percentage for Testing. Then add on the typical roll out time. Good tester and fixing take about as long as the development.

    In total I have about 5 levels of difficult and 4 levels of skills. Add on a bit of time for sickness, family issues, etc.

    Most times we have time lines given to us. After the planning is done and if we can not achieve it I ask for more members or a reduction in scope or functionality. If they push and say it all has to be done then I ask for more money due to over time. If they still push I say it is impossible given the money, time and scope and demand they formally tell which corner should be cut.

    I get it bang on or done slightly earlier at least 90% of the time. The remaining 10% of the time an easy task turned into a hard task or there was a dramatic scope change approved via a Change request with insufficient time to implement or unforeseen repercussions.

    The big thing is to work with your team. In a group meeting lasting a few hours to a day you can determine what each task needs to be and determine the level of difficulty associated with it. Then you just need give ownership of each task to developer - this is good when some guy brags that he can accomplish a hard task in a day and the rest of the team disagrees (he may have insight or he is making a mistake). One of best examples I saw of this in action was the own project broken up in to major phases and under each phase it was broken up to more general tasks and under each task was a open box of the individual tasks required to accomplish it. The team then used sticky notes to put all the task in and a related difficulty level. The PM just facilitated the team and then recorded it all as the official plan. Every member felt included and felt like they had some ownership in the project.

  85. Usually involves numbers from a sphinter... by Fallen+Kell · · Score: 1

    no text

    --
    We were all warned a long time ago that MS products sucked, remember the Magic 8 Ball said, "Outlook not so good"
  86. The expression test by Anonymous Coward · · Score: 0

    At my previous job I used the expression test. I would give the project manager a number, and if he scowled, I would give him another number. When his response was bored indifference, I knew I finally hit the right answer.

  87. Proportional to the programmer's ego by Anonymous Coward · · Score: 0

    I rank the ego of the programmer from 1-10, then multiply their time estimate by that number.

  88. We don't. by sproketboy · · Score: 1

    mea culpa

  89. Here At A Land Grant University by Anonymous Coward · · Score: 0

    I take the boss' estimate and multiply it by 5.

    If it's my estimate, I'll multiply by 3 because I'm more in touch with the world.

    Yours In New Orleans,
    Kilgore Trout

  90. Use Historical Data by mcshicks · · Score: 1

    If you just keep track of how long features take and who's working on them (like a bug/feature tracking system), a seat of the pants estimate based on complexity (i.e. this feature is 1/2 as complex, twice as complex) times the previous baseline data is surprisingly accurate and in general much better than if people actually try and figure out based on first principles. Basically people just ignore the base rate historical data for how long sw development tasks take, or don't know it. The other thing to avoid is telling someone a deadline because you will immediately induce an error based on the anchoring effect. Once you have a historical performance based estimate, then use that baseline (or anchor) to figure out what is practical for the project in question. Note: You have to keep track of things for 2-3 years to start before this works, which is why I suspect most people don't do it.

  91. how to estimate by Nadaka · · Score: 1

    If you have a solid plan and experience in the area of the problem, double your estimate.

    If you have a basic idea of what to do, but have to do some research, triple your estimate.

    If you have seen it all, and know exactly how to do it, quadruple your estimate.

  92. Planning Poker by curunir · · Score: 1

    We're an agile shop and we do Planning Poker meetings and it's worked out really well. In addition to the cards (purchased here), there's apps for the various smart phones that some of us use.

    The basic idea is that the features are discussed and each developer independently comes up with an estimate of the number of days that a feature will take. It's not really important if those days match up exactly with what can actually be accomplished in one day, only that developers keep that concept consistent across estimates. The estimates are revealed and we reach a consensus on the right number. Sometimes there's a large difference between estimates and the developers at the extremes talk through their thought process until a compromise has been reached. But most of the time, we're pretty close.

    At first, you try to match those day estimates up with actual developer days. But, over time, you figure out how many estimated days you can fit into an actual time period (velocity). After a few iterations, the velocity becomes pretty reliable and you get to the point where you can easily figure out how much work you can fit into the time allotted. We do these estimating sessions and they usually take up about a day of the time of the entire engineering team (so 4 days per year.) For larger teams, it's probably possible to get accurate estimates with a small group of engineers, but since we're small, everyone is involved.

    In the past year, we've only estimated 2 2-week iterations poorly. One we had unclear specs and were told late in the iteration that what we built wasn't really what was desired and the other was the result of a developer discovering a third-party library that saved us the majority of the work we had planned. Other than those two, we've been very close all year. If we're under, we pick up minor unscheduled bugs to fill the time. If we're over, we either subtract a day or two from the next iteration or a developer picks it up on the weekend before QA gets it's hands on it. But more often than not, we're dead on. I realize we're not perfect and there's probably a lot we could be doing to accomplish more in the time we're given, but the reliability of our estimates has been very helpful to management who values predictable development. They see us as highly competent not because we're able to accomplish impressive things, but because if we say we can do something, it gets done.

    --
    "Don't blame me, I voted for Kodos!"
    1. Re:Planning Poker by turgid · · Score: 1

      We do planning poker too, but we made the cards ourselves :-)

      My PHB is not a software developer and she doesn't really understand software development despite having managed a software team for several years. Bringing in Lean and Agile was her idea, though, and I quite like it.

      She has a big problem with accepting time estimates, though, and we have very disparate ability levels in our team. I'm roughly in the middle, but we have two guys in their 50s with decades of experience who can do large amounts of very complex work accurately and quickly, and one newbie who used to be a mechanical engineer until a year ago.

      The first problem our PHB has is in understanding that software is hard to write and that someone with 20+ extra years of experience will do more more quickly than someone with only 5 years, or even 6 months. When we estimate times, they usually come out heavily biased towards what the most experienced people guess. This is a natural consequence of the feedback inherent in the planning poker process.

      The second problem is that the numbers in planning poker are supposed to be relative estimates, not absolute times. Our PHB makes 1 == 1 day == 7.5 hours (8 hours sometimes, even although we only do 7.5 hour days).

      The third mistake she makes is having the estimates as hard deadlines. Despite the fact that she knows estimates have to change as investigations progress, and despite the fact that she publically claims to accept that estimates can go up, she gets very angry if a task takes longer than the estimate, even if there were barriers such as test systems not being available.

      The fourth mistake she makes is not having tasks accurately specified. So when we go to estimate times we get a problem statement such as "the foo widget on the bar product didn't work one Tuesday afternoon." Often it turns out to be a can of worms to investigate, first of all, which can be a week's work in itself. Then there is the design and then the coding and testing.

      The fifth mistake that she makes is not breaking down tasks into their components, i.e. investigate, design, implement, regression test.

      You're only supposed to work on stuff "on the backlog" and I have been balled at and accused of being a feckless, ignorant time/money-wasting useless item for helping stuck colleagues (i.e. being part of a team) and doing code reviews (a very important part of the process which the senior developers are very hot on). "Is that what the customer's paying for?"

      She's got it into her tiny little pointy-haired head that every task I do keeps getting longer and longer. This is patently nonsense. The last task I did was estimated at 23 hours and I did it in 10.5. Her little head all but exploded.

      I have to give her daily status reports detailing where I spent my time to the nearest 15 minutes per task. I explain exactly what I'm doing and why the customer is paying for it. My senior colleagues (who are constantly at war with her about these things) support me, so I am lucky.

      The other day she has asked me for more information. She wants a spreadsheet (in addition to daily status reports) with estimated times vs. actual times for my tasks.

      She seems to think that we are taking the Mickey with the estimates, especially since I finished the last task so quickly compared with the others. She is utterly obsessed with these time estimates.

      The reason that my last task was so quick was because it was a modification to a system that I'd designed and written. The estimate was a kind of average for other team members (who would have a learning curve)...

      So I'm being micromanaged and watched like a hawk. It's very tiresome and patronising. I'm a busy, diligent person, trying to do my best. I know I'm doing the right thing, unfortunately she's mad and there's a huge RIF coming up. I know she's pretty hard on some of my other colleagues too, but she's being even more patronising and condescending to them...

      We had Scrum trainers come to site and she argued and argued with them. She seems to be paranoid that letting engineers set their own deadlines is a skiver's charter.

    2. Re:Planning Poker by curunir · · Score: 1

      She seems to be paranoid that letting engineers set their own deadlines is a skiver's charter.

      I don't think the point of planning poker is to let engineers set their own deadlines. Our deadlines are the end of each 2-week iteration, but the process should still work with other artificial deadlines imposed by someone outside of engineering. The point of planning poker is to figure out how much development can be accomplished by the deadline. If the result of the process yields an incomplete product, it's up to management to adjust the deadlines to accommodate more development.

      From the sound of it, among other things, the big thing your manager missed is determining the team's velocity. Ideal days is just real-world hook for engineers to keep their estimates consistent. Any resemblance to any real-world concept in any other context is purely coincidental. What the manager should be doing is determining a velocity metric based off the team's historical performance. This is most easily accomplished when the time period when work is completed remains fairly constant (one reason why short iterations are nice), but it need not be the case. The key point to remember is that it's a process put in place to translate an engineer's, "I think that will take 3 days" into something reliable enough that business decisions can be made that rely on the work getting done.

      The good news for you is that you might be able to help your PHB grok this while making her feel empowered rather than feeling like she's losing control. You just have to remind her that the process allows her or her superiors to set the deadlines and allows her to accurately figure out how much development can be done in that time period so that scheduling can be accurate and the expectations of her superiors can be set and met. Nowhere in the process is she losing control. It's just important for her to understand that asking engineers, even those with decades of experience, for time estimates will yield incorrect results. It's just too difficult for us to factor in meetings and the other daily interruptions and such. But since those interruptions are fairly consistent, you can adjust the estimates from engineers to account for the lost development time and end up with a reliable real-world estimate to use for scheduling development. Trust the process, figure out the team's velocity and then enjoy the bonuses and raises that come from being able to follow through on things you commit to.

      --
      "Don't blame me, I voted for Kodos!"
    3. Re:Planning Poker by turgid · · Score: 1

      I don't think the point of planning poker is to let engineers set their own deadlines. Our deadlines are the end of each 2-week iteration, but the process should still work with other artificial deadlines imposed by someone outside of engineering. The point of planning poker is to figure out how much development can be accomplished by the deadline. If the result of the process yields an incomplete product, it's up to management to adjust the deadlines to accommodate more development.

      That's what I thought too, but she sees it as engineers setting their own deadlines and thus giving themselves too long to do something. She seems to think that unless there's constant pressure on her engineers, that they'll skive.

      One particular example is her perception of enjoyment of work. She thinks that if an engineer is enjoying what they're doing, they'll spend too long on it. One of the senior guys (who used to be a manager himself) is constantly getting hassled about this. He really enjoys doing low-level multi-threaded real-time stuff and can churn out thousands of lines of working code in a few days, but she thinks he could do it faster if only he weren't "enjoying" it.

      Deadlines appear out of nowhere. She doesn't set them up front. If she thinks something's taking too long (maybe because more investigation was required or the existing code was very badly written and needs refactoring just to understand) an artificial deadline of "tomorrow afternoon" is often pulled out of her hat.

      The good news for you is that you might be able to help your PHB grok this while making her feel empowered rather than feeling like she's losing control. You just have to remind her that the process allows her or her superiors to set the deadlines and allows her to accurately figure out how much development can be done in that time period so that scheduling can be accurate and the expectations of her superiors can be set and met. Nowhere in the process is she losing control. It's just important for her to understand that asking engineers, even those with decades of experience, for time estimates will yield incorrect results.

      She won't accept this. She can't understand that time estimates are approximate. She thinks that after a few scrum iterations, time estimates should become consistently perfect. She want to be able to predict down to the quarter hour how long every task will take every time.

      Thanks for replying to my rant, anyway. It made me feel better.

      Luckily, one of our senior developers holds her hand a lot of the time now, so things are improving. She does listen to him. He's started having design review meetings for us and has managed to get her to split some task up into smaller chunks. We'll see how it goes.

  93. I use "Commitment Velocity" by under_score · · Score: 1

    Basically this is the slope of the line of estimated remaining work over a fixed timebox (such as an iteration or sprint). It's based on an application of the Central Limit Theorem and therefore it requires a few things to be in place in order to be accurate. I'm hoping to do a presentation on Commitment Velocity at the Agile 2010 conference in Nashville (link is to my session proposal).

  94. Estimation is about emotions, not math. by engineerErrant · · Score: 1

    This is one of those problems, such as "the O/R problem," that cannot be solved because it asks an invalid question. I might suggest using it as a koan for Zen meditation.

    The actual length of time a project will take arises from the complexities of the existing codebase as well as the rabbit hole of requirements. We can talk about the idea of a "spec" all day, but I've never seen requirements really, truly, set-in-stone finalized before release. Too many decision points always come up that were impossible to foresee without looking at a partially-complete version of the product. Requirements, like code constructs, are an adaptive process that continues all the way through the lifecycle, which is why the industry is flailing around for alternatives to the unrealistic waterfall model.

    Thus, the set of actions that lead a team from beginning to end of a project are always, at least partially (and usually mostly) defined only as a function of the current state, and thus can't be fully predicted without actually playing out those actions. They can theoretically be partially predicted, but it's impossible to determine how large a fraction of the whole the resulting prediction is. It's almost never large enough to be considered remotely reliable.

    Engineers themselves usually have a gut feeling that time estimates are a waste of time because of the need for this adaptive process. When was the last time you attempted a true end-to-end time estimate on a project where none was asked for by management? More than likely, you instead made a judgment about which path was probably the more efficient use of time, and started down that path with only a rough, order-of-magnitude guess at its length. At each step, your decision to continue was based on (1) how long it had taken so far, and (2) whether you continued to see a fruitful-looking path ahead.

    I would argue that the common notion of time estimation in the industry arises mostly from the desire of outside parties (management) to create the illusion that the leaders are in control. I say "illusion" because ultimately, the main power here lies in the structure of the problem, not in any one person's hands. But the reality of being at the total mercy of a complex logic puzzle that can't be reasoned with would make most people very uncomfortable, especially those who are not in engineering. But the illusion of a "classic" hierarchical department with management and labor calms everyone's nerves and allows the workday to roll on, so we engage in activities that support it, including this charade of guessing the future.

    Thus, searching for a good method of time estimation in mathematical models may help a bit, but ultimately won't get us there because it is fundamentally an emotional process. Look to the "soft" elements of team dynamics and department culture to do the rest: do people need to feel involved? Use a method where everyone contributes a number. Is the manager very controlling? Let him/her make up a number. Either way, there will then need to be a process of reconciliation between the illusion and reality, which again, is a process that depends on the emotions of the business. Perhaps a leader apologizes. Perhaps a "tiger team" is formed to improve estimation, or there is a department offsite to talk about it. It may feel unsatisfying that none of these actually brings the estimate and reality together, but like I said at first, trying to do that is asking the wrong question.

  95. Rational Unified Process (RUP) by Maxo-Texas · · Score: 2, Interesting

    I like this methodology.

    We break the project into use cases.
    Estimate each use case.
    Identify the risk of each use case (High = New stuff that may not work or is hard to predict, Low = Straight forward coding to implement).

    Divide the work into time blocks (3 to 5 weeks, I liked 1 month increments).
    Each month, measure actual progress against plan.

    Another thing I do for my resources is to maintain an ongoing metric of whether they over or underestimate and apply it to their estimates. So eager girl who says she can do it it 50 hours but took 75, gets a +50% to her ongoing average. Meanwhile, cautious lad who estimates 80 and took 60, gets a -25% put in with his average.

    I usually have a meeting with the stakeholders AND the developers to firmly establish scope and when scope changes, we renegotiate the deadline.

    By putting the high risk items early (just do a proof of concept that Xserve 3.85 really does work under Unix 3.71 over a VPN connection before you commit 180 million dollars of dead end work to the project).

    While I do not normally overwork my resources, if one of them bids 30 days from now to deliver, then if they have to work extra to make that date, then so be it.

    --
    She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    1. Re:Rational Unified Process (RUP) by Maxo-Texas · · Score: 1

      Oh and you also produce a workable output every time block. So UI goes early- gets in front of users early- so the things they didn't think about get flushed out early.

      And you can always ship with 93% of your function points done on deadline and then follow up with the other 7%.
      What you don't want is an unworkable mess with unknown integration time all being delivered with 30 days until shipping date.

      You also get to ITQA, develop and execute tests every interation.

      Since Big(O) time for debugging is exponential, testing monthly makes it exponentially easier to locate bugs. (we changed these 7 modules and now this bug is here... which of the 7 did it?) vs (We changed these 137 modules. Which one is the source of this bug?)

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
  96. one word by lophophore · · Score: 1

    Dice!

    --
    there are 3 kinds of people:
    * those who can count
    * those who can't
  97. Two Words by Anonymous Coward · · Score: 0

    Two words: past data.

    Estimation is something you will get better at with time, but you will get there much sooner if you have data to help you. Your first estimate can be a WAG (Wild-ass guess), but as long as you measure actuals and learn something from it the next time you estimate, you'll get more accurate.

    Two methods which use this technique: Joel Spolsky's Evidence Based Scheduling (http://www.joelonsoftware.com/items/2007/10/26.html), and the SEI's Personal Software Process (http://en.wikipedia.org/wiki/Personal_Software_Process).

  98. Spot on by unfortunateson · · Score: 1

    Oh, I'm _very_ good at it.
    I usually meet or beat my estimates to accomiplish the specifications listed.
    It's two things that can screw up a schedule:
    1) The specifications are just not enough, and more really needs to be done to make it usable, and I want to do the right thing
    2) The specifications are exactly what the customer asked for, but not what they want *now*
    3) Documentation
    4) Bad math

    --
    Design for Use, not Construction!
  99. Do it the way the weatherman does. by Hairy1 · · Score: 1

    Software Development is a chaotic system. Essentially that means that small changes to the requirements can have impacts out of all proportion to the change. The traditional thinking was that because it cost so much more to fix issues at the implementation phase than the requirements phase that you should put far more effort into getting the requirements and design right.

    The problem is that like a weather system it will be the small requirements change that is often most difficult. Not all small changes will have this impact of course, but there are some on a chaotic boundary. So how should we estimate projects?

    I would start with performing a similar analysis as the old way; a function point count if you like. It does not need to be in depth however; counting the number of screens or tables or reports, or whatever else is fine. Its what we do with this data which matters. Rather than simply multiple the function points by some number of hours you should plot this metric against actual historic times to complete other projects.

    This way you can see that based on a certain level of complexity you can expect a certain project effort. This system ignores some important variables. It assumes the same people are involved, and thus the same skills and productivity. Also it assumes the same number of developers.

  100. Stupid fucking question by Gogogoch · · Score: 0, Flamebait

    What a stupid fucking question. Go do some research you ignorant twat.

  101. Quantitative (Not Qualitiative) Analysis by dotslashlycos · · Score: 1

    The key to estimating software development time is to use historical metrics along with quantitative analysis. You don't want to be in a situation where you're just pulling numbers out of nowhere.

    Define your problem and break it up into enough high level and low level requirements such that the entire software solution could be written by somone with no knowledge of the program using only the softare requirements. (This will vary depending on the size and scope of the software solution)

    Using this data, you should be able to derive the size of the application in terms of SLOC (software lines of code), number of bugs that you'll likely found, and how long it will take to develop in terms of man hours/labor months/whatever using a multiplyer derived from past metrics. (ex: each Requirement = 25 SLOC, 1 SLOC = 1man hour, for every 100 SLOC there will be 1 bug, and it takes 8 man hours to fix a bug. You can also make allowances for particularly difficult learning curves, drop in productivity due to OT, etc, but this should give you a ball park figure.

    If this is your first time and no historical data, there are plenty of software metrics available online (or if you work at a company, they are likely available there) for predicing SLOC, bugs, labor months, etc.

    The more you use this process, the better your historical data will get and the more likely you are to have better predictions. They key however, is writing good requirements up front and keeping track of all time spent along the way.

  102. I don't. by fredjh · · Score: 1

    That is, I don't accurately estimate programming time. The people here get pissed, but too bad... they give me a project, I say it'll take me x number of days, then they keep changing what they want and get mad at me when x comes and goes and I'm not done.

    Oh well.

    --
    Stupid, sexy Flanders.
  103. "how?" implies that you can by bzipitidoo · · Score: 1

    How long will it take for a computer program to halt?

    Why this constant striving and pushing to predict the possibly unpredictable? And the demand to have those predictions be 100% accurate?

    One of the things that bugged me about school programming assignments was how well behaved they were. If you were given 2 weeks to do an assignment, you could be pretty sure that's about how long it would take the slower programmers. The assignment was unlikely to be changed halfway through. Does school give the false impression that all such work is as predictable? Management is wont to suspect incompetence or laziness rather than understand that a problem is very hard.

    Even if you have a well defined problem and well known tools, and you know the problem is not impossible, and that it isn't research into the unknown, you can still have a great deal of uncertainty. How long will it take to discover the next Mersenne Prime? Look at how long it took to discover the next ones in the past, starting from the first 2, known around 400 BC when prime numbers were first seen to be interesting. Maybe 200 years to find 2 more, about 1650 years, to Renaissance times, to find the next one, then 132 years for 2 more, and 184 more years for the next one. During this time, mathematicians saw that these numbers were interesting, although there was no direct practical use. The next batch of finds is out of order, illustrating yet another aspect of the unpredictability. The next discovery was 104 years later, but the next one in order took an additional 13 years. Then 28 years, and 3 more years for the next two. After that, it was 38 years, to when a computer was first used on this problem and found 5 more within a year! In the 58 years since that seminal event, computers have grown vastly more powerful. Our techniques have also improved in this time. And we've found uses for prime numbers, namely RSA cryptography. The result is that we've found 30 more, nearly twice the number that had been found in the previous 2400 years. Given that rate, we can estimate that the next one will likely be found within the next 2 years. But maybe not-- maybe there's a huge gap between the largest one currently known and the next one. In the past it has taken between less than 1 day to over 1600 years. Immense variation there. Or maybe we'll discover some magic closed form equation and we can compute as many Mersenne Primes as we want, so there is no longer any need to search at all.

    Or, why this constant pushing for predictions with information that is much more uncertain than it need be? When no one even knows what is wanted, predictions are laughable. Garbage in, garbage out.

    If I have good specs that have been carefully checked to make sure everything is defined, possible, and practical (sure, it's possible to factor any 1000 digit number, and it might even be very easy, but it might also take a very, very long time, and so not be practical), and I have tools that I know and which do not have any major bugs that must be worked around or fixed, or huge gaps in functionality that must be filled, then I can make a reasonable estimate of how long it will all take. But you know what? In the time all that takes, I could be off to a good start. Even when accurate predictions are possible, they may take a significant percentage of the time it would take to just do it, and so may not be worth doing.

    Naturally, the closer a project is to done, the better the estimates can be.

    --
    Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
  104. Mythical by Anonymous Coward · · Score: 0

    I am sure somebody already said this: Read "The Mythical Man-Month".

  105. use statistical analysis by anomalous+cohort · · Score: 1

    Estimating requirements is very important and software engineers should attempt to improve their estimating skills. Overly optimistic estimates is the second highest cause for runaway projects. Consider a statistical approach such as FPA whose accuracy improves over time. Having to double your estimate is just a symptom of poor change management and other process immaturities. If you get push back on FPA because of its complexity, then consider rolling your own more simplified approach.

  106. It's simple by zmooc · · Score: 1

    I use scrum too. But that's not a way of estimating programming time, it is merely a way to manage a software project. And it works. Use it. It's good for your heart and blood pressure:P

    Anyway. Estimating programming time is actually really simple. You take your time to plan, up to 10% of the duration of the project, and discuss the result with your peers. Make a work breakdown and make sure there's nothing in there that you estimate takes more than about a day. Preferably much shorter. Also, use fixed ranges. I use less than 1 hour, 1-4 hours, 4-8 hours, 1-3 days and more than 3 days. The latter two are to be avoided. The result of all this is obviously a range you expect your project to take, not a fixed number of hours. Note that according to pretty ancient research, engineers often need 2.18 times their estimate to complete a task; this is sort-of built-in in the fixed ranges I mentioned.

    Also, it is very important to keep a log of what you've done, how long it took and why. That's part of the reason it takes some time to get it right. Find entries in your log that look a bit like the entries on your work breakdown and compare them; that way you can learn from mistakes you made in previous plans.

    So far for estimating. But that's only a third of the job. It is very important to acknowledge that what you've just calculated is just an estimate and to be open about it. So you need safeguards. I use the following:
    1. Plan for overhead. 20% is usually fine.
    2. Talk to your stakeholders and prioritize your project from a functional POV. Scrum uses http://en.wikipedia.org/wiki/MoSCoW_Method for that. Commit only to the requirements with the highest priority (and if that's all of them, just make up optional requirements:P).
    3. Make sure your maximum estimate plus the overhead is enough time to fix those requirements.

    The last thing you need to make your estimates turn out to be correct, is some form of project management. Make sure you discuss the state of the project (as compared to the original plan!) daily. Let all team members have their say and if something does not go according to plan, act on it early, don't safe the problems for release day. Make sure everybody has the right focus and works on the requirements with the highest priorities. Nobody should work on prio 1 requirements when prio 2 requirements are still not finished. Ever.

    Obviously you're guaranteed to fail if you don't commit, integrate, test, build and package early and often. Use a continuous integration build-server, use version control, write unit-tests (yes, they safe time), use a proper issue-tracker (with workflow and support for estimates, actual time, priority etc) and make sure you have a quality assurance person on board that tests EVERYTHING (yes, that'll safe time too). Just the usual common sense stuff.

    Of course some of us work on projects at companies that are run by douchebags; they won't give you enough time to plan, they do not want to prioritize, they don't understand why they need to pay for servers, issue-trackers, meetings, continuous integration servers, quality assurance ppl and all that "bullshit". Always share your concerns with them; never ever give them the chance to blame you. Blame them instead. And look for a better job that does not remind you of Dilbert; such jobs do exist;-)

    Now if you stick to all that and evaluate early and often, you'll probably get it completely wrong the first few times, but you'll quite often get it spot on eventually. 99% of correctly estimating programming time is to get to know yourself and to stick to your plan. And those two things are incredibly hard;-P

    --
    0x or or snor perron?!
  107. This is a solved problem ;) by Anonymous Coward · · Score: 0

    Just follow the government's guide book and you will hit the right number every time:

    http://www.stsc.hill.af.mil/consulting/sw_estimation/SoftwareGuidebook.pdf

    I am only half joking. I have witnessed several 12 to 25 Million Dollar software projects finish within five figures of the original estimates. The key is accurate historical data on which to base estimates.

    1) Keep Task Descriptions (TDs) and Actual hours consumed working the tasks on past (historical) projects
    2) Compare new project's task descriptions to historical task descriptions.
    3) Sum the hours from the relevant historical tasks and make minor adjustments due to slight differences in tasks (Historical Basis of Estimate)
    4) Multiply sum of hours times current labor rates to compute Cost for TD/BoEs and add a small reserve for the unforeseen
    5) Multiply Cost of TD/BoEs times desired Fee to compute Price
    6) Profit

    I was skeptic too, but I have seen it work many times.

  108. I am often subjected to mockery by it, but COCOMO by pestilence669 · · Score: 1

    COCOMO II models are based upon SLOC (source lines of code) estimates. You plug in a bunch of other metrics, like the language, type of application, quality of coders, calendar, etc. What you get out is a reasonable estimate, built from the analysis of 1,000's of real-world projects.

    "How many lines of code?" is often easier to answer than "how long will this take?" Is SLOC accurate? No. But, it's only a small part of the process. You can always factor out waste from guys you know are gaming the system. With a decent tool, you can even plug in actuals from previous projects for fine tuning.

    It's very similar to other methods, but tends to be a bit more accurate... despite asking for lines instead of hours.

  109. easy by kdemetter · · Score: 1

    Make your estimation , than do that time x2 .

    No matter how good you estimate things, there is always a chance things can go wrong , and the less room you leave for that , the higher the chance something will actually go wrong ( Murphy's law ? )

  110. Apply this formula by kimvette · · Score: 1

    Hold scrum meetings, and then ask each developer and tester individually how long each step will take. Take their wild assed guess, compare it to what estimates you come up with in scrum meetings, and average those. Multiply that estimate by 2.25 to take into account vacations, side projects, meetings (which for some positions can consume 60% of your time, and you NEVER take those things into account when giving the project manager your estimate). Allow for some buffer time for bug fixes, fighting with Microsoft about hotfixes for libraries in which you find critical bugs when you're at the final beta stages, and also allow for some buffer time for having to issue emergency bug fixes on your released branch.

    Estimates you come up with in scrum meetings and individuals' wild-assed guesses never take any of the unknowns into account. The engineers with no management experience invariably think "well, I work 40 hours a week, and I think this module will take me 120 hours, then another 120 to integrate into the project - so yeah. I can be done with my first phase in six weeks." That does not take into account sick days, dependencies (waiting on other developers for the components you need from them), time for getting sucked into meetings, time to rearchitect your piece when you find Microsoft's library doesn't actually worked as documented (or Microsoft's memory manager incurs eighteen gadzillion context switches per minute, slowing your process to a screeching halt under a moderate load) requiring you to invent your own or evaluate third-party libraries.

    Always provide buffers to allow for bureaucracy/politics (read: meetings you are required to attend but you think are a complete waste of your time), unknowns (You don't know what you don't know so be generous here), and so forth. If you provide generous padding for these inevitable realities of corporate life, you can create a schedule which will allow you to come in on time and under-budget. If your project manager does not allow you to pad your estimate with unknowns, meetings, etc. but requires you to give an estimate based on 40 actual coding hours per week, you're getting set up for failure. That means no bonuses, poor performance review, and generally bad morale because your team will be "late" on a project based on a half-assed schedule based on fiction.

    Even worse is when management says "Here is your next project: feature set is X, you have Y resources, and by the way, the due date is Z." Those are the absolute worst conditions to work under in development because management a) doesn't even know what out of X is possible, whether Y resources can actually accomplish it, and if even 1/3 of it can be accomplished within Z time based even on an ideal 40 hour workweek dedicated to writing code and doing nothing else.

    By the way: do not base it on 40 hours of coding at ALL to begin with. You will spend 1-2 hours on emails, and a lot of time just engineering (actually just thinking the problem through) not to mention reviewing API calls you use and that time will easily match the time you spent coding. Plan on maybe 20-25 measurable "productive"[sic]* hours per week.

    * "productive" meaning what a PHB considers productive, i.e., lines of code written, dialogs flashing on the screen, etc.

    --
    The Christian Right is Neither (Christian nor right). See: Matthew 23, Matthew 25, Ezekiel 16:48-50
  111. The Halting Problem by EllisDees · · Score: 1

    Isn't estimating the amount of time it will take to complete any non-trivial programming task just another version of the halting problem?

    --
    -- Give me ambiguity or give me something else!
  112. Suvro Upadhyaya is a confidence man by syousef · · Score: 1

    Suvro Upadhyaya, a Senior Software Engineer at Oracle is a liar and a con man. Quite simple really.

    Scrum is the latest in a long line of religions I'm sorry I mean methodologies that claims to achieve the unachievable. I propose a new advanced version of Scrum called Scrotum. It's the same as scrum but Ridiculously Overtly Titsup.

    --
    These posts express my own personal views, not those of my employer
  113. Murphy's SWAG by Anonymous Coward · · Score: 0

    What amount of time would cause the greatest harm to the largest number of involved participants?

  114. Effective Productivity by James-NSC · · Score: 1

    I start by rating each coders “effective productivity” where for an hour worked, how much time/code actually gets generated. Some will be .5:1 if they have to stop frequently to answer questions, some will be at .75:1 if they code well, know what they need to do and are stationed in a broom closet so they aren’t interrupted, some will be .25:1 or even .1:1 because they are an intern or a new recruit. Then I consider how long it will take to produce each section of the product (just broken down into logical groups) in a “perfect world” where everyone is coding at 1:1. I then apply each members effective productivity to that time for each logical group. I then add 20%-40% to each individual module I broke it down into, depending on how complete the requirements, specifications, etc are going into that module where 20 is better, 40 is worse (usually). So if I had five modules, time of each would expand by at minimum 20%+ the expansion of the effective productivity of those working on it. Then add all the time up, add 30% for testing then 20% buffer and you’ll find, surprisingly, you’re stabbing at a number that is as realistic as you can make it this early in the game. You also have a number that can be presented to those outside of IT and, dressed up with the math, presents an estimate that is based on real numbers and is quite hard to argue with. Ultimately, it’s a more formalized SWAG, all programming estimates have Some Wild Ass Guess in them though, as quantifying the time involved in being creative is quite hard to do.

    1. Re:Effective Productivity by Hognoxious · · Score: 0, Flamebait

      I start by rating each coders "effective productivity" where for an hour worked, how much time/code actually gets generated.

      I can't really put a number on the former, but I can consistently produce 60 minutes of time per hour.

      But if you want me to put a number on the amount of code, I can do copy-paste really fast.

      Given such a cretinously ignorant start, the lack of paragraphs didn't really encourage me to read further.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  115. How ironic... by Pawnn · · Score: 1

    I just had to give an estimate the other day. Not for programming, but for designing a program for others to write. As asinine as it is to estimate programming time, I think estimating a design might be worse. What I did was looked at the requirements and tried to figure out what the different pieces of the system were, then gave each one 3 weeks. That came out to about 10 months...which seemed kinda big to me, but how many people are guilty of over-estimating? As expected, the project manager thought that sounded high, so she found someone who she thought had more experience and asked him to help me make a more detailed estimate. Over the course of a week, we spent probably 5 to 10 hours pouring over the details of the project, breaking it down further and giving an estimate to each little detail. I let the "expert" give estimates to each piece. It came out to two years! (If I gave each of the new tasks 1 day a piece, it'd come out to 7 months) Needless to say, the project manager didn't like that either and wants me to revise it to make it smaller. I should just say "write down what you're going to say anyway and I'll make a plan around that", but I haven't.

  116. SEI's PSP/TSP by Intellectual+Elitist · · Score: 1

    Estimate the parts required using historical proxies based around size and content. Use historical development time data based on the part estimates. Consolidate the group of smaller estimates for yourself, or ideally across an entire team, to allow estimation error to cancel itself out as much as possible across the group. Now you have a solid estimate of the total effort required, and you just have to map that to the available development hours in each developer's schedule, rebalance as necessary, and see what your end date looks like. Team Software Process

  117. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  118. Just... by Anonymous Coward · · Score: 0

    have a guess!

  119. COCOMO II by lonelytrail · · Score: 1

    NASA recommends (almost requires) the COCOMO model. http://en.wikipedia.org/wiki/COCOMO I think the COCOMO model is used by the Software Engineering Institute (SEI) at Carnegie Mellon University as part of the Capability Maturity Model (CMM). As said in MANY of these posts, proper specifications/requirements are needed to estimate anything. My company uses it exclusively and we have been proven quite accurate over the course of many projects. http://sunset.usc.edu/csse/research/COCOMOII/cocomo_main.html

  120. Estimates aren't half as annoying... by Kjella · · Score: 1

    ...as the way people think they can manipulate the estimates. It's like I give an estimate to bake a cake, then halfway into baking it they decide we only need a cake 80% the size, so that can be done in 80% of the time for 80% of the cost right? Everybody except project managers and clients would laugh at that, but it's happened in far too many planning meetings to count - particularly in response to overruns. If there had been complicated or expensive toppings that were easy to remove, they would usually already have been stripped in negotiations already so the estimates just don't work that way.

    --
    Live today, because you never know what tomorrow brings
  121. Meh... by Snarkalicious · · Score: 1

    Find out the liscencing cost for somebody else's implementation, get your budget written for 30% over that, buy the damn thing and get your ass to Maui. Quote two weeks on your way out the door and tell them you'll be coding it at home.

  122. "Just guess" by NYMeatball · · Score: 1

    That's what my non-technical manager/boss tells me, so why should I bother doing anything different?

  123. And puts a two week horizon on your creativity by tlambert · · Score: 1

    And puts a two week horizon on your creativity

    Which is great if all you need to do is crank out grunt work, but a bit hairy if you are trying to do anything innovative that won't fit into a two week period. In creative organizations or fields of endeavor, nothing kills your chance of coming up with a great product as cutting things into two week deadlines.

    -- Terry

    1. Re:And puts a two week horizon on your creativity by DougWebb · · Score: 1

      I'm not sure that's true, but my company has only just committed to doing Scrum properly this year so I haven't had the experience yet. But what I'm expecting for larger tasks is to have non-code deliverables, like having some specific portion of a new infrastructure analyzed and designed. Then that portion will be built in a future sprint, while other parts are being designed.

      I also expect that my manager will define some deliverables vaguely at the beginning of a sprint, then at the end of the sprint he'll redefine them to be whatever got done and bump the vague deliverable to the next sprint. This is how we'll make continuous progress on open-ended R&D type work, refactoring existing code, doing unpredictable-but-urgent maintenance, etc.

    2. Re:And puts a two week horizon on your creativity by pclminion · · Score: 1

      And puts a two week horizon on your creativity

      It puts no horizon on anything. I'm having a hard time imagining a task that simply cannot be broken into manageable pieces, but suppose there was such a thing. At the end of two weeks, the item will not have been completed. Ok, fine -- unless you're working somewhere really weird, where failing to complete a backlog results in you getting fired or something, I don't see what the problem is. You don't just throw it all away and start over, you push onward. If you're tracking velocity like you should, this will ripple down and affect the number of story points you allocate in the next sprint, which should allow you to pull in additional team members to help get the tasks completed.

      The time-boxed sprints are a critical component of Scrum, because they force development and QA work to be interleaved. A backlog will include development work AND whatever testing work is required to fulfill the item's acceptance criteria. Once you start to try to work outside the sprints, you run the huge risk of doing a large chunk of development without any testing until the very end. If your backlogs are repeatedly unfulfilled/unfulfillable, then there is a problem with the construction of the backlogs themselves, your measurement of velocity, or your team size and responsibilities -- this is a management error, not a fault of the process.

    3. Re:And puts a two week horizon on your creativity by lewiscr · · Score: 1

      I don't think that an hour of planning dampens my creativity. I find it helps. The 2 week deadlines aren't deadlines, they're a scheduling convience. I don't have complete the whole task, or even develop a whole vision of the task, in a single 2 week chunk. But you should be able to point to some progress that you have made in that time.

      I like to start out big vague projects with a sprint just to write a proof on concept. That gives me an idea where to start, then I take it 2 weeks at a time, making ideas concrete.

      The reason Scrum works is that it makes you break down big (and hard to estimate) tasks into small tasks that can be reliably estimated. Scrum does not say you must use a 2 week sprint, they just recommend it as a place to start. If you need a longer sprint, use a longer sprint. Just make sure you don't make the sprint so long that you're tempted to write big stories that cannot be reliably estimated.

  124. It's easy by ucblockhead · · Score: 1

    You make a wild at guess at the time it will take. Then you double that. Then you add a week for bugfixing.

    Then, during the schedule, if you start to get ahead, spend more time browsing the web. If you start to get behind, work extra and/or cut things like "unit testing" or "error checking". Do this as needed to deliver one day ahead of schedule. Then bask your reputation as an awesome scheduler.

    --
    The cake is a pie
  125. Design time vs Programming time by bug1 · · Score: 1

    The time it takes to designing software is way more unpredictable than the time i spend programming it.

    If the design is all done then programming should be very predictable, but the problem is that design is never done well.

    Imagine if you asked a builder how long it will take for him to build you a new house, but you dont provide a design, you just give him a list of features (fireplace, stairs, 2 bedrooms etc etc), the builder has as much chance of estimating time to build as a programer has of estimating time to write.

    Now i want you all to repeat aloud;

    DESIGN IS MORE VALUABLE THAN CODE,
    DESIGN IS MORE VALUABLE THAN CODE,
    DESIGN IS MORE VALUABLE THAN CODE ;p

  126. I Quit Trying... by Anonymous Coward · · Score: 0

    My boss loves to change the freakin' spec midstream and near the end. I had my sanity before I started working here. It's a crying shame. My boss is the owner, the other coder, and the one pushing my buttons

  127. Break it down by dsmoses · · Score: 1

    When estimating an application, I break it down into much smaller pieces. Then I estimate each manageable piece, which usually can be compared to some previous known effort. I will also estimate complexity of each piece and if there is something that is not well defined, understood, or done before, then I overestimate that portion. You'll run under on some and over on others, balancing out.

    I also use a multiplier on the total effort based on how well defined the application and/or requirements are. This accounts for time spend not actually writing code.

    I've been told before that I am the only developer that people have worked with that has a less than 1 coefficient on developer estimates. Meaning, I get it done in less than my estimate. Whereas other developers typically need 1.4 (or more) times the estimate. This is usually due to the fact that with the above stated multiplier, I've already factored in the 1.4 times the estimate.

    My estimates are typically higher than the next developer, but I have a positive reputation of consistently come in under estimate and delivering on time.

  128. Estimates by RAMMS+EIN · · Score: 1

    I think the important thing to remember here is that estimates are _estimates_.

    Based on limited information about what the customer wants, the availability/productivity of the team (people get sick, have good days and bad days, ...), the bugs in the libraries you're working with, and the occurrence of disasters, you come up with an honest estimate.

    It may be wildly wrong.

    But that's your estimate.

    Now, if the organization is going to raise that estimate to a sort of divine decree that The Project Shall Take That Long, and you'll only get resources for that many hours, and there will be a deadline which has already been agreed on with the customer, and you will get flamed if you miss the deadline (all these things are very likely), then perhaps you'd best not tell anyone your honest estimate.

    Don't tell anyone how long you think it will take. Tell them how long you will need to be sure you get everything implemented, even if your team is sick half of the time, the scope keeps changing, and the libraries are so buggy that you'll end up spending more time than if you had written them yourself. Cause that's what will happen. And if, by some miracle, you still manage to finish early, that will be a happy surprise for management and a good mark for you.

    I apply this technique, and while my colleagues always think my "estimates" are ridiculously high and what we end up reporting is usually adjusted downward a bit, it's spooky how often the ridiculously high numbers turn out to be right.

    --
    Please correct me if I got my facts wrong.
  129. You are a bad programmer then .. by roguegramma · · Score: 1

    Clearly multiplying all estimates by 3 and then adding them is less efficient than adding them and then multiplying by 3 once.

    --
    Hey don't blame me, IANAB
    1. Re:You are a bad programmer then .. by khendron · · Score: 1

      Some of the estimates have to be multiplied by 8. That's why they are calculated separately. If there are no hardware interfacing features, then your outstanding optimization algorithm can be used.

      --
      Life is like a web application. Sometime you need cookies just to get by.
  130. Depends on who is doing the estimating. by Hylandr · · Score: 1

    Company president or management:: 15 minutes.

    Engineering or Marketing: 2 Weeks.

    Programmer or SysAdmin: When it's done.

    Customer or end user: When it works.

    Here's the advert to give to your HR department to hire the person for your 'estimating':

    Looking for a BS or AS in the latest trendy programming languages developed by college students in their second year. Must have experience in legacy hardware as the most recent vapor-ware that everyone is buzz-wording about. Non-Discriminatory Affirmative action candidates preferred with background clearances and able to board an airline with a weapon. - Equal Opportunity Employer

    - Dan.

    --
    ~ People that think they are better than anyone else for any reason are the cause of all the strife in the world.
  131. Anonymous Hero by Anonymous Coward · · Score: 0

    I have the pefect formula:

    1. Estimate how much time it would take you non stop
    2. Double that number to compensate for your ego
    3. Divide it by the number of coffees you drink per day
    4. Multiply it by the number of managers that talk to you per day
    5. Multiply it by the number of meetings you have to attend per day
    6. Double it if you have to use Microsoft software for any part of the project
    7. Multiply it by the average number of loud conversations around you throughout the day
    8. Add the size of your inbox in megabytes (1 meg = 1 day)
    9. ...
    10. Profit!

  132. Dr. Zen replies by hey! · · Score: 1

    How do you accurately estimate programming time?

    Answer this question, and you will know The Way: How do you accurately measure programming accomplishment?

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  133. Here's what you do... by Anonymous Coward · · Score: 0

    Step one: Set up dartboard
    Step two: Throw dart
    Step three: You now have an estimate

  134. Mind reading. by Richard+Steiner · · Score: 1

    Anticipate your customers' needs. Write the code first and have it working, and when they come to you with an idea and a request for an estimate, give them the time it took you times 3 plus 20%, and then spend the "estimated" time in a hot tub at a resort with your girlfriend while your customers are happily awaiting the results of your "development".

    See? Programming *can* be fun! :-)

    --
    Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
    The Theorem Theorem: If If, Then Then.
  135. Pick Two by gv250 · · Score: 1

    Accurate. Time. Estimate. Pick Two.

    Seriously, I can't do it. I can give you any of these:

    • Accurate Task Estimate.
    • Wildly inaccurate Time Estimate.
    • Accurate Time Post-mortem.

    But, I have never, in 25 years of programming and project management, found a way to tell you accurately, in advance, how long a non-trivial task would take.

    Writing computer programs (at least in my experience) is not like building a house. Every new project is a voyage of discovery in which we invent a brand new thing. You may as well ask Edison how long it will take to invent the light bulb.

  136. too many variables by Anonymous Coward · · Score: 0

    Is that including or excluding the time they spend on /. ?

  137. Formula by Anonymous Coward · · Score: 0

    I have always used a Markov process such that development time will end up being within several days of : The summation from 1 to the total number of development tasks of the gamma of the summation from 1 to the number of developers of the zeta of the probability of the risk of ruin of a,b times the base-two log of the probability of the risk of ruin of a,b + one month. Kindof like this give or take a few bits.

  138. Can you? by Anonymous Coward · · Score: 0

    You don't. That's why they are called estimates.

  139. From at least 30 years ago - I have the coffee mug by rawkstar · · Score: 1

    "GOLUB'S LAW OF COMPUTERDOM: A carelessly planned project takes three times longer to complete than expected; a carefully planned project takes only twice as long." Seriously, I was once told a project absolutely had to be done on time, within 8 months, and to do what ever I needed to get it done. the previous project had been three times the scheduled completion time. When it was done on time I was slagged for being 10% over a "budget" I had never seen. Fzck the suits! No wonder 80% of "business" is nose to butt.

  140. Bucky Fuller design comment by geek2k5 · · Score: 1

    I seem to recall a Buckminster Fuller making a comment about "a good definition being ninety percent of the solution to a problem." It would support the "Design is more valuable than code" viewpoint.

    Getting that good definition front end can be a pain though.

    1. Re:Bucky Fuller design comment by bug1 · · Score: 1

      Oh, i had not heard of Buckminster Fuller, time to do some reading...

      Thanks

    2. Re:Bucky Fuller design comment by geek2k5 · · Score: 1

      Think geodesic domes. He's the person that the form of carbon called 'bucky balls' is named after.

  141. The 80% rule by NicknamesAreStupid · · Score: 1

    I have a rule that has served me well -- whatever I seriously estimate for a project's duration, the first half will take 80% of that time. Then half of the remaining project will take another 80%. After that, half of the remaining project will take another 80%. This regression continues into perpetuity. Eventually, it is decided to declare the project complete and live with what got done. Therefore, I have always planned a product to only encompass that which could be done in the "first half" of the project. If that was not enough for the product, then it was not feasible.

    Another rule of thumb for tech products, if the project slips more than 50% beyond its targeted release date, then break up the team. The team that slips this much will never keep up with the market.

  142. For whom ... by PPH · · Score: 1

    ... are you generating these estimates?

    If you know your customer and you know how they state problems, provide requirements, understand the process they've asked you to work, then estimating can be done with some confidence.

    If you've got a new customer, or a clueless one, then you've got to get involved in an iterative discovery process. You have to boil requirements down to something you can estimate, design and build to. But the problem here is that the effort for initial requirements distillation process can be rather indeterminate. And in a well managed project, its important not to skimp on this initial project stage.

    So I guess my answer is: We can give you a very precise estimate. But we don't know how much time or money it will take to generate the estimate.

    --
    Have gnu, will travel.
  143. MBAs, bean counters, and other suits by geek2k5 · · Score: 1

    Sometimes I think that the 'suits' will end up destroying the American economy in their pursuit of short term profits at the expense of things like ethics, employee loyalty, the environment, customer loyalty and the middle class.

    1. Re:MBAs, bean counters, and other suits by elnyka · · Score: 1

      Sometimes I think that the 'suits' will end up destroying the American economy in their pursuit of short term profits at the expense of things like ethics, employee loyalty, the environment, customer loyalty and the middle class.

      As interesting as your take on things might be, how do they relate to the engineering task of estimating completion time?

    2. Re:MBAs, bean counters, and other suits by rawkstar · · Score: 1

      Sometimes I think that the 'suits' will end up destroying the American economy in their pursuit of short term profits at the expense of things like ethics, employee loyalty, the environment, customer loyalty and the middle class.

      As interesting as your take on things might be, how do they relate to the engineering task of estimating completion time?

      For me, the 'suits' turned the "tractable" problem space I thought I was working in into a slippery quagmire of political decisions and trade offs. That was not what I signed up for and eventually I left. Given the number of basket case projects I have seen, I think that having competent people doing good work in an environment they can count on goes a very long way towards getting reasonable estimates on completion time and resource requirements.

    3. Re:MBAs, bean counters, and other suits by elnyka · · Score: 1

      Sometimes I think that the 'suits' will end up destroying the American economy in their pursuit of short term profits at the expense of things like ethics, employee loyalty, the environment, customer loyalty and the middle class.

      As interesting as your take on things might be, how do they relate to the engineering task of estimating completion time?

      For me, the 'suits' turned the "tractable" problem space I thought I was working in into a slippery quagmire of political decisions and trade offs.

      But you thought it was tractable. How do you know it really was? I know where you are coming from (been there as well), but more often than not, all engineering projects are bound by external, non-engineering forces. After all, unless we are paid to do research exclusively, "they" don't pay us just to do engineering, but to produce a deliverable that has a tangible, market/financial value. And that value (and its urgency) are directly dependent on dynamic factors outside the realm of engineering.

      It's nice to think we could go Dijkstra all the way and assume for a fact that non-engineering factors are irrelevant to engineering in general, and software development in particular. But projects exist in a human/business context, and as "erratic" as the "suits"'s decisions, more often than not, they are driven by those external factors (factors we sometimes cannot/don't want to even try to understand and manage.)

      That was not what I signed up for and eventually I left.

      That's too bad.

      Given the number of basket case projects I have seen, I think that having competent people doing good work in an environment they can count on goes a very long way towards getting reasonable estimates on completion time and resource requirements.

      But again, many times, environments exist according to a context, a business reason. That's what we get paid for.

      I agree with you that there are some environments that are truly WTF, but many times it is "us" who choose not to understand to understand otherwise legitimate constrains at best, or choose to dismiss them as irrelevant and beneath the tasks of software development at worst.

    4. Re:MBAs, bean counters, and other suits by geek2k5 · · Score: 1

      Ethics and estimating completion time: Sales 'suits' make promises that can't be met. The product goes out the door 'on time' but buggy. You then have to spend a lot of support time fixing things that shouldn't have been sent out broken. This takes time from future projects.

      Employee loyalty and estimating completion time: The 'suits' want something done by a given date. Your development team is able to do it with a lot of unpaid overtime. They get the bonuses for having the product available. You get dinged for being ten percent over the budget that was never mentioned. Odds are your team won't do that again, so you have to add to the future estimates. Unfortunately, having done it once the 'suits' want you to do it again.

      The environment and estimating completion time: (This is more applicable to physical construction.) You are doing construction on a hill next to a lake. If you do it right, you will spend a couple of days doing site prep to keep runoff from getting into the lake. You factor this into your construction cost/time estimate. The 'suits' want to save money or get the job done faster so they cut back on the site prep since it 'never' rains during the months that the site is vulnerable. They have you reduce the estimate by taking shortcuts. Material delays, change notices and a slightly early rain result in erosion and the silting of the lake. This silting could have been avoided if the proper site prep was done.

      Customer loyalty and estimating completion time: This would be the customer side of the ethics example. The 'suits' promised you, the customer, the world and it wasn't delivered. You, the customer, complain to the development staff and point out the problems that need corrected. The development staff has to take time from their current projects to satisfy you. The development staff has to factor in this 'fixit' time in future estimates, reducing the amount of staff time available.

      The middle class and estimating completion time: The 'suits', having created a number of problems within the organization, look for solutions via outsourcing to other countries. Your development team is cut, putting people on unemployment because of a glut in the IT employment market. (They are at risk of falling out of the middle class if they don't find work.) You have to factor in the efficiency and effectiveness of the outsourcing group, not knowing their true abilities. Your 'database' of in-house abilities and how long it takes to do things is no longer applicable. You may also need to factor in more time to define the project so that the outsourcing group can learn things that your development team already knew.

  144. My Way by Island+Admin · · Score: 2, Informative

    my $quality = 100;
    my $initial_project_time = length($piece_of_string) / ($count_programmers);
    my $real_project_time = ($initial_project_time + ($scope_creep_time * $count_non_it_business_staff)) * $3.14;

    if ($slave_driving_boss eq "yes") {
    $real_project_time = $real_project_time / 2.5;
    $quality = 60;
    $bugs = random;
    }

  145. With a stopwatch!

  146. Works only if you have all ingredients upfront by Mask · · Score: 1

    You can estimate time only if you know all required components upfront. You should know all the related technology, which probably been used by you in prior projects. Once you try that no one managed to complete before you can't estimate what can be done in a single sprint.

    Let's you have an NP-hard problem which is, e.g., a variant of set-cover or bin-packing. You write a prototype that maps the problem into SAT and invokes a state-of-the-art SAT solver, all is well. Next week you try to solve a set-cover instance, after running for a couple of hours you terminate the run. After tweaking the set-cover to SAT converter for the rest of the week you manage to get a trivial use-case pass. Now, how the hell can you estimate the number of weeks and experiments it will take you to get a realistic problem to run reasonably well? NP-hard problem solving sometimes behaves exponentially but sometimes linearly, you don't always know in advance as it depends on the micro structure of the inputs.

    The process of writing software that solves real-world NP-hard problems looks completely stochastic. You can read dozens of papers, try hundreds of different algorithms, approximations, heuristics, technologies and new ideas before you find how to solve the problem at hand, assuming you do. How can you estimate this time - upfront?

    On the bright side, NP-hard, decidability and other tough algorithmic problems are only a niche in the world of programming. Most of the time software development is "only" a matter of engineering, planning and experience -- where Scrum could well be the right answer.

  147. Good Estimates Lead to Layoffs by Moof123 · · Score: 2, Interesting

    I am not a software guy, but an analog microwave design guy. All too often management expectations can in no way jive with reality. Instead it is often necessary to intentionally underestimate times, and later find specific items to pin the "delays" on. Along the way so much money and resources get involved, that effectively you've gotten the project through the second trimester without management realizing they are pregnant. Beatings ensue, but at that point those of us with scarce skills can't be laid off, so we shield our faces and live on to design another day.

    Yay, another successful project out the door despite management...

  148. Detailed project definitions by geek2k5 · · Score: 1

    With a building you usually have VERY detailed plans that describe all of the parts that need to be constructed. These parts have physical components that are well defined and involve construction processes that have been around for decades if not centuries. This makes it possible to take advantage of 'construction cost' manuals and programs to come up with accurate estimates.

    The process does fall apart when dealing with situations where materials or labor costs soar due to inflation or demand. It may also have problems when dealing with new technologies. And then you may run into the unexpected, like finding that your site survey is wrong and you need deeper foundations to counter the fact that most of your building is on mud and not bedrock.

    When you think about it, the civil engineering estimates with detailed costing are done AFTER the design is complete.

    When it comes to software, you frequently have to come up with the detailed project definition as part of your estimate. Then you have to guess at how long it will take to design and implement the project definition in an environment that changes quickly. Unlike building construction, many software 'construction' processes have only been around for a handful of years and they may only have a couple of more years of life in them.

    To make things worse, the detailed project definition may change as your client gets a look at the prototypes you create. Since redoing software isn't as dramatic as tearing down and redoing part of a building, the end user may think that the new feature is easy to install.

    It gets interesting.

    Still, there is a section of the McConnell book that is intriguing. It discusses the difference between an estimate and a target. The following is a quote from the book:

    "Tip # 2: When you are asked to provide an estimate, determine whether you're supposed to be estimating or figuring out how to hit a target."

  149. Performance testing is unpredictable by Mask · · Score: 1

    Performance testing is unpredictable. Sometimes it is not enough to run a profiler and then just naively tweak the code to get the performance that meets the spec. Sometimes you need to change data structures because you figured out, after integration, that your complex data structure behaves slightly different than during unit testing.

    Sometimes you find out that some of your algorithms need to be rewritten. On other occasions, unlike with simulations, your architecture will never work fast enough with the real data your are getting because an inevitable and unpredictable interaction between components. You can't always know these things early enough, you almost never do.

  150. Make sure the programmers are invested... by Kazoo+the+Clown · · Score: 1

    1. Ask the programmers involved how long it will take them to complete their parts. Don't argue with them about the rationale, unless it's clear they're being overly optimistic (in which case, argue for them to increase their estimate).

    2. Double or triple their answers (depending on the complexity of the project), because they're undoubtedly still too optimistic about their abilities, lady luck, and the inevitable unforseen.

    What you definately DON'T want to do, is to ignore what they say and tell them when you need it. Otherwise, you'll get something like this: Programmers say it'll take 6 months, you want it in three and come up with "rational" arguments about how "it won't take as long as you think" or how it might be done "smarter." If you're lucky, you'll still get it in 6 months and the programmers will feel vindicated instead of guilty.

  151. Try replacing critical sectioning with data locks by tlambert · · Score: 1

    Try replacing critical sectioning with data locks

    In 13 million lines of Mac OS X kernel code. It's mostly an all-or-nothing proposition.

    -- Terry

  152. smallest known unit by roman_mir · · Score: 1

    I have to do many estimates, and mine are within 10% error of actual time, then I add 30% on top of that, done.

    Today a funny thing happened, I had to switch one implementation of web service call for a totally different one. At 1:16 I said I would be done in half an hour, after changing the build script, build properties, creating the client and switching the implementation in business logic, I sent the message that it was done. Then I looked at the clock, it was 1:46. So I told the other side, that instead of half an hour it took me 30 minutes.

    Seriously though, take the task and divide it into smallest chunks that you know can be estimated, this would be close to reality, so add 30%. I can't add more than that, our competitors would get the project then. This method only works for projects that are similar to each other though.

  153. Double original estimate and add 30 by presidenteloco · · Score: 1

    (Or more precisely multiply by 9/5 and add 32).

    This is often enough contingency to handle the curve ball requirements changes that
    management and customers will inevitably throw at you throughout the development period.

    It may not be enough to cover the gratuitous mid-stream demos that need a week of
    diverted-from-productive effort to prepare each time.

    And if you have the kind of management that wants to interrupt you for a crisis meeting
    or a re-installation of software/OS on their virus infested laptop, or the latest
    FAD scrummish trendy management thing at least 3 times per day,
    fuggedaboutit. You're completely screwed with any estimate you come up with.

    --

    Where are we going and why are we in a handbasket?
  154. The Canadian way... by Anonymous Coward · · Score: 0

    Double it and add thirty.

  155. whoa there re: If project slips more than 50% by presidenteloco · · Score: 1

    Kind of depends how the targeted release date was arrived at, doesn't it?

    If it was arrived at with, say, a dartboard, a roulette wheel, or an arbitrary
    time when the runway runs out, and the requirements/feature points/complexity
    was not trimmed to suit at the get go, then I don't think it's the team that needs
    to be let go. It's whoever set up the untenable situation in the first place.

    --

    Where are we going and why are we in a handbasket?
  156. Agile and punting by drew_eckhardt · · Score: 1

    Break everything down into approximately 3 ideal day pieces including unit + system test and adjust to real days using the velocity observed doing similar things in the same environment and you're likely to get close (within a factor of two).

    You might get within an order of magnitude (days, weeks, months, years) without the low level design.

    A lesser multiplier than order of magnitude generally applies when you haven't done similar things before.

    And an even smaller multiplier (2-4) is likely where the environment changed (more customer support overhead, move from offices to cubicles etc.)

    Having all the necessary conditions satisfied for accurate estimates can be unlikely in early stage startups.

  157. Write the program, measure the time it takes. by DamnStupidElf · · Score: 1

    The only accurate way to estimate it, I'd say.

  158. Kind of like predicting the stock market by presidenteloco · · Score: 1

    You can try using historical trends, but you always face the possibility that
    the next bug you discover will be akin to an invasion by aliens, madmen, or
    unscrupulous bankers i.e. a discontinuity in complexity requiring a 75% refactor
    of your whole project. Most times you'll be lucky and won't see this, but
    I'm just saying: You can't prove to me it won't happen. It comes from
    Rumsfeld's unknown unknowns (the really dangerous unknowns) department.

    --

    Where are we going and why are we in a handbasket?
  159. Shipping date is Just Another Feature... by refactored · · Score: 1

    ...same as any other feature, with a priority higher than some lower than other features.

    Now that's really insightful.

    Although I would also add that it is one of the buggier and more unstable features, since it is highly coupled to a large number of other features and bug fixes.

    1. Re:Shipping date is Just Another Feature... by 2short · · Score: 1

      "Although I would also add that it is one of the buggier and more unstable features, since it is highly coupled to a large number of other features and bug fixes."

      Only if it's lower priority. Mind you, these days I'm doing product (as opposed to custom) development, so the new features to add to the next version are things somebody wants, but not things they have been promised. Since we do the biggest, highest priority things first, by the time we get near the end of a cycle, the things that are left are easier to push to the next version if they aren't going to make it. Meanwhile, marketing and such mean the priority of the ship date is going up.
        So it's only really coupled to bug fixes; which we leave some time in the schedule for.
          So, the last 3 releases I've been part of happened within two weeks of the date we picked 6-8 months earlier. Well, OK, every one pushed two weeks back sometime in the last month. For our purposes, that's good enough; I guess we could put an extra two weeks in every schedule, but we'd have to keep it secret. Getting proper testing seems to depend on an imminent threat to ship.

    2. Re: Shipping date is Just Another Feature... by NickGnome · · Score: 1

      Yes, shipping date is just another feature. And so is experimentation that requires n iterations (where n is unknown). The trouble with most project estimates is that the pointy haired bosses think everything is settled technology, that you don't have to experiment to figure out anything new at all, but only plug together well-known, well-tested components in well-known ways. That may be true of the many privacy violation projects any Oracle gig party would be doing, but it's true of hardly any software product development. Most of the software developers I've known would find plodding old ground in those ways extremely dull and go into some other field or seek some other employer where they could find some real work to do.

  160. Accurate is easy... by Anonymous Coward · · Score: 0

    Accurate is easy. Precise is hard. Accurate AND precise is very hard. Accurate, precise and completely within expectations is nigh on unheard of...

    1. Re:Accurate is easy... by Hognoxious · · Score: 1

      Accurate AND precise is very hard

      It's easy.

      But accurate, precise and in advance is devilishly tricky.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  161. Evidence based estimating by sashang · · Score: 1

    Evidence based estimating is what I'd like to see more of and less of the abracadabra 'story points' rubbish that SCRUM practitioners advocated. At a previous organization we went down the SCRUM road and were told to use story points where a story point is a unit of effort (not time) required to do the task. Naturally all the devs were confused and eventually resorted to equating a story point with a unit of time (like an hour) and not a unit of effort as we were supposed to. There's also the problem were one dev's estimate of say 4 story points is not the same as another dev's estimate of 4 story points. There was never a consensus as to what a 'unit of effort' meant unless it was taken to be equivalent to a unit of time. Evidence based estimating seems to provide a better solution since it tracks the history of an individual dev's estimates, recognising the fact that an individuals estimate will differ from another. So for example if someone has a habit of underestimating a task, because of the feedback that goes into the system after the task is done, the system caters for this when that person makes another estimate.

  162. This is the Wrong Question ! by presidenteloco · · Score: 1

    What you should do is ask questions like:

    Do I have really intelligent people who are also able and likely to work hard
    when they are motivated well to build something new and interesting.

    Do my team members take pride in producing excellent and elegant
    code? (which includes really good, coherent, useful doc & comments).

    Do my team members know how to model domains?

    Are my team members fully versed in patterns and re-use and 3rd party
    software selection factors.

    Do my team members understand that it is essential to look out for red-flag technical
    risks, draw immediate attention to them, and actively manage the course of the project
    based on the principle of addressing them first.

    Are they also all good and smart social interactors? Do they know what
    others need to know. Are they friendly, co-operative, good-humoured, and
    willing to help each other.

    Have I done what it takes to positively motivate this great team?

    Is the project new and worthwhile and interesting, and do the developers think
    so?

    Have I created an environment where it is safe to spend your time helping
    others on the team?

    Have I given the people private environments where they can think and design
    or code for long periods of time uninterrupted?

    If you've done all these things, then let them go, and occasionally check in.

    You will get software produced as well, and as fast, as you could possibly
    hope for. So don't micro manage their work or schedule. Just continually
    reassess the questions above, and how well you are continuing to do at
    creating an environment for software development success.

    You cannot hope to do better than that. If setting up those conditions won't
    do it for you, nothing will and you had very unrealistic expectations.

    --

    Where are we going and why are we in a handbasket?
  163. Four Levels, Train Customers, Change Control by Guido69 · · Score: 1

    Most important step is to train your "customer" about the 4 levels and gain acceptance.

    L1 is pre-initiation with virtually no project details. Estimating is done solely by managers using experience, actuals from prior similar work, and their gut feel. We call it the SWAG level, and customer is trained to expect +/- 100%. We also occasionally have to give ROM estimates for our customers to gain funding prior to a project being accepted as real. In this case we use three high-level estimates (worst case, most likely, and best case) and then show three levels of std. deviation to the customer.

    L2 is during initiation, when a few more details are known but usually no hard specs. SDLC area leads do the estimates, but still at a high level. Customer is trained to expect +/- 50%

    L3 is after business requirements are documented and accepted. SDLC area leads and key staff do the estimates, and chunk work into no more than 80 hour tasks. Customer is trained to expect +/- 25%.

    L4 is after technical design is documented and accepted. SDLC area leads and key staff do the estimates, again chunked into >=80 hour tasks. Customer is trained to expect +/- 10%.

    Managing requirements changes after L3 is crucial. You have to ensure the customer understands the impact of any changes to scope. Works for us on $15M of project work every year for a happy customer. Side note: after about a year, it's scary how close L1 estimates can be. Managers aren't all bad. :)

    --
    - If we aren't supposed to eat animals, then why are they made out of meat? - Steven Wright
  164. Reminder: CLT requires finite variance. by refactored · · Score: 1

    Sums of random variables from distributions with infinite variance may look normally distributed to the naked eye, but nevertheless still have infinite variance.

    The trouble is project time length definitely does _not_ come from a well behaved finite variance distribution!

    1. Re:Reminder: CLT requires finite variance. by under_score · · Score: 1

      That's why time boxes are so important. By doing a breakdown into tasks that are _estimated_ to be one day of work or less, inside of a 10 day iteration, then you have effectively created finite variance in your estimates. This is an important part of the method. As well, you have to keep some other variables constant, all of which are under the control of the team/management.

  165. There is an easy cheat by dilvish_the_damned · · Score: 1

    Take 1/3 of your component completion estimates and multiply them by infinity, its a quick way to improve overall accuracy.

    --
    I think you underestimate just how much I just dont care.
  166. Dice and lots of them by Anonymous Coward · · Score: 0

    When ever I am asked for an estimate I pick up some dice and roll them, it does not matter what they say ... add up the numbers and appends weeks ... I will have something working by then. It may or may not be what they wanted.

  167. Quotes from the parent comment: by Futurepower(R) · · Score: 1, Redundant

    Funny and true quotes from the parent comment:

    "One of the major terms in the non-linear politics is who gets the blame when a product shipped with working functionality proves impossible to extend in the next coding iteration because the wrong foundation was chosen. Do you want the estimate consistent with my professionalism, or with grenades baked in for the next guy to work on this?"

    And: "Some day I would love to seal my estimate into a cryptographic vault on the basis that my estimate is only correct if I don't tell anyone. As soon as you tell someone, that person immediately goes around changing the assumed conditions."

  168. Never done it with my programming. . . by MagusSlurpy · · Score: 1

    . . . which is jolted and horrible and not done professionally so I've never worried about time, but whenever I build anything, or undertake any project whatsoever, what I do is estimate the time to the best of my ability, and then triple it. That usually gets me right on target. ;-)

    --
    My sister opened a computer store in Hawaii. She sells C shells by the seashore.
  169. Old Traditionalist by nicholdraper · · Score: 1

    I never found accurate estimates to be all that difficult. I don't subscribe to the extreme/agile/scrum/what ever is the latest process is in the news. Create a design, mock up each page/dialog box whatever. Code one up, write your unit tests. Count up how many database tables you have, code up persistence to one and run your automated tests. Determine how many blocks of logic you will have and code up one and test it. You should have coded up the most difficult part in each category. Then simple math add up each part as though it will take as long as the longest part in each category.. Then as you complete each project, only count completely done parts, don't give partial credit. Recognize that if you estimate four days on a part and two days into it, you are pulled off, you still have four days that have to be made up. Thrashing eliminates all part work not fully completed. Now, if marketing, or your boss or whoever says, you missed this page, your estimate stands only for original design work. New features get new estimates. If you follow this and track your work through two or three projects, you will get better at determining the most difficult parts and learn to code those before you complete your estimate. After doing this for a few years, you will get projects for which you can see the end and you can give better estimates from the hip. But, never promise estimates to be more that +200% -50% accurate. I've had many bonuses tied to finishing on time and I always get my bonuses. Realize that I've architected over five projects with over a million dollar budgets and each took over a year to complete all phases, some multiple years. I also have managed teams from myself to a dozen programmers and support personal (testers, graphic artists, tech writers, etc..). My first project didn't go that well, but after multiple projects I learned how to do it correctly. Don't buy into the comments here that say since so many people do estimating badly, that it is impossible. Also, realize that you will have to read code from the programmers on your team and fire the non-performers. And last of all, ask the programmers on your team for their estimates, but don't use them, use your senior architect's estimates. If a programmer estimates long, there needs to be more training to show them how to code up whatever it is you are writing in the time the architect estimates. If they estimate short they also need training. You must also make sure that sub-tasks are broken down into ½ day to 2 days chunks. If a programmer doesn't finish the first sub-task in time, retrain or re-estimate. You may have a boss that comes in and says, how long will this take, I want the estimate now and I don't want you to do any design or prototyping first. Estimate how long it will take you to find a new boss and add two weeks for notice.

  170. Double it by BlackHawk-666 · · Score: 1

    I take however long I think it will take based on previous similar work, and then I double it. If there's free time in the estimate I get to use it to sleep or walk to a coke machine, or do some of the other projects I am getting pushed onto me at the same time.

    --
    All those moments will be lost in time, like tears in rain.
  171. TEA by BlackHawk-666 · · Score: 1

    For which they traded OPIUM! Tea drinkers are willing to deals thousands of kilos of opium to China in order to get that morning cup. Can coffee drinkers say the same?

    --
    All those moments will be lost in time, like tears in rain.
  172. That depends by tompaulco · · Score: 1

    How long it will take depends on whether I am allowed to work on it. I used to be in operations, which meant I fought fires 12 hours a day. Now I am a full time developer, which means I fight fires 12 hours a day, and then spend the rest of my day writing programs. Unfortunately, I am usually too tired from fighting fires to actually do any programming. So if they ask me how long it would take to do something, I tell them "It would take if I am allowed to work on it, however, since I will not be allowed to work on it, it will never get done."
    My company also uses a new development approach that I have seen at the last two or three companies that I have worked at, but never seen before in my professional career. That is, instead of having multiple people work on a single project, they have a single person work on multiple projects. We have 7 developers and about 10 times that many active projects. On any given day, the Project Manager for two to three of those projects will be demanding that his project get top priority.

    --
    If you are not allowed to question your government then the government has answered your question.
  173. You want an estimate? Pony up an accurate spec. by buzzn · · Score: 2, Interesting

    It is to laugh. Developers are never given enough information about what it is they are supposed to deliver. You want a fast sort algorithm? I can do that in, say, less than a week. You want an award winning social networking web site that brings in millions of hits? Might take me, hmmm, a month or two? Maybe more. Oh, please remember to factor in testing and documentation time, people.

    --
    Join the window installer's union, where prosperity is a brick throw away!
  174. Every project of significance takes a year by crispytwo · · Score: 1

    It can take more, but if it is a full system with design, implementation and delivery, a year is a good rule of thumb.

    Projects that include external clients always go slower than internal clients, but not by much. Meetings are delayed, features are dreamed up/changed, and requirements drift ("I meant X not Y -- didn't I say X? [no]"). Sales people want to talk about change management and well defined specs, but those are much more rare than you might think. Of the many many dozens of projects I've worked on, I can safely say only 2 were well spec'd.

    I agree with the "estimate and multiply by pi" for the sub components of a full project, but the unspecified, "we want to do something like X" is going to be a long process... never forget the acceptance testing and debugging near the end, and maintenance after it's delivered. Oh ya, holidays. That can get you too.

    However, small, well understood projects are easier to estimate and plan. If you've done something before, and it took 2 weeks to implement, it will take 2 weeks to implement -- 1 week to remember WTF you did last time and 1 week to do it again... If you remember WTF you did last time, you probably didn't do enough the first time.

  175. *applause* by Anonymous Coward · · Score: 0

    Awesome.

  176. At least it's official. by cavebison · · Score: 1
  177. You don't estimate -- you guess by lpq · · Score: 1

    Anyone who thinks they can predict that which has not been done before, is full of it. If it can be predicted with any accuracy its because it has been done before -- in which case, why are you doing it AGAIN!?

    People who can give schedules are people who are pulling the wool over management's eye. But software isn't like manufacturing, where you take known parts, and known formula and combine them in a known way to get a the same result as you got last week. It's doing something that hasn't been done before. How people think they can accurately predict that is beyond me. You have to do the project to know how long it's really going to take.

    The closer you get to the end, the more accurate your estimates may get. OR not, if you succumb to some 90/10
    rule.

  178. Re:I am often subjected to mockery by it, but COCO by Hognoxious · · Score: 0, Flamebait

    "How many lines of code?" is often easier to answer than "how long will this take?"

    But it's not what was asked for.

    SLOC is a useless metric of productivity - and measuring productivity isn't even the objective here. It's to budget and plan a project. Since the cost of most things involved depends on time (staff are paid by the day) and time is a what's used to coordinate activites (we'll have the system up on 1 March - make sure the users are available), producing an answer in units of SLOC is about as useful as one in feet or ounces.

    You say they subject you to mockery. Really?

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  179. Use evidence-based scheduling! by jonaskoelker · · Score: 1

    Joel Spolsky has written about making useful estimates at http://www.joelonsoftware.com/items/2007/10/26.html

    The short version: for each developer, gather their estimated times and actual times for each of their projects.

    If the ratio between the two is always 1, that person is the perfect estimator. If it's systematically close to some x != 1, you just divide all their estimates by x to compensate for their optimism (or pessimism, as the case may be). If the estimate factors are all over the board, you teach them how to estimate times better.

  180. Sounds like Evidence-Based Scheduling by jonaskoelker · · Score: 1

    That sounds almost exactly like what Joel Spolsky talked about ("Evidence Based Scheduling") in his article at http://www.joelonsoftware.com/items/2007/10/26.html

  181. I estimate it in... by Anonymous Coward · · Score: 0

    Cups of Coffee. I mean Pitchers of coffee

  182. Gummy Bears by PMBjornerud · · Score: 1

    I though the idea was to estimate in units after complexity. Units can be gummy bears or whatnot, but not bound to time in any way.

    The reason being that it is much easier to relate to complexity than factor in everything to get a correct time estimate. Complexity can also be agreed upon by different people, even though the time required for them to complete an equally complex task can be very different for different developers, depending on skill or amount of disturbances from programming time.

    Estimate a task in complexity. Multiply with a factor to get the time estimate. The factor depends on the developer, complexity depends on the task. Keep them separate.

    --
    I lost my sig.
  183. A few pointers by CHJacobsen · · Score: 1

    It's always an inaccurate science, but since the consulting business seems to be hopelessly dependent on it, here are my best suggestions:

    1. Try to break down tasks into the smallest measurable subtask. It's easier to estimate "form for adding new users" than it is to estimate "create the admin site"
    2. It's going to take longer than you think, so plan more time than you think you need.
    3. If possible, try to add generic "risk hours" to each project, for unexpected issues. This isn't always possible, but it's a great help.

    And, finally, the most important one:
    4. Beware of timecreeps. This is related to the first tip. If your planning is detailed enough, you can usually say "Oh, you want the create-user form to be submitted by using ajax? Sure, no problem. That would take around 2 more hours. Any problem there?". With a less detailed specification, the customer is more likely to assume it's a part of the original estimation.

  184. Beware black swans by psysjal · · Score: 1

    For any large project read this Black swan theory. Something completely unexpected will probably ruin your plan, as others have said it's more about knowing what to chop to hit a date. Also for any large project the cumulative effect of errors in estimating soon add up to make the plan almost irrelevant.

  185. I use Woorky by BooBooGotU · · Score: 1
  186. Using Data From Previous Similar Projects by Cardhu · · Score: 1

    The typical practice I've seen and used is cost modeling based on similar projects in the past.

    One company I worked for used parametric modeling with SEER-SEM. That was the most reliable, accurate, and precise method I've ever seen.

    --
    - Cardhu
  187. Easy formula for great success! by soccerisgod · · Score: 1

    My formula:

    Te * 2 + n

    Where Te is the time I think it takes after reading the specifications, and n is the "nose factor". Usually works pretty well.

    --
    If a train station is a place where a train stops, what's a workstation?
  188. Like they listen to YOU? by Anonymous Coward · · Score: 0

    It doesn't matter what you say. They will increase the feature set and move up the deadline anyway. Usually its best to find out what they want to hear and just tell them something close to that, because that is all they will hear anyway.

  189. Re:Try replacing critical sectioning with data loc by pclminion · · Score: 1

    I know nothing about the Mac OS X kernel, but I don't understand why such a transition couldn't be done in pieces -- the code is modular, isn't it?

  190. Re:Try replacing critical sectioning with data loc by byteherder · · Score: 1

    I know nothing about the Mac OS X kernel, but I don't understand why such a transition couldn't be done in pieces -- the code is modular, isn't it?

    I do not think you know the meaning of the word monolithic.
    :-)

  191. Re:Try replacing critical sectioning with data loc by pclminion · · Score: 1

    I do not think you know the meaning of the word monolithic.

    Being monolithic is one thing, being composed of logically distinct modules is another.

  192. 90% accuracy: by Anonymous Coward · · Score: 0

    1. Ask all the programmers and customers SEPARATELY how long they estimate.
    2. Take the HIGHEST estimate
    3. Multiply by 2.2

    Over 50 projects I was never out by more than 8%...

    Dunno why it works.

  193. Re:Try replacing critical sectioning with data loc by cerberusss · · Score: 1

    Try replacing critical sectioning with data locks

    In 13 million lines of Mac OS X kernel code. It's mostly an all-or-nothing proposition.

    -- Terry

    No, it's not. A major chunk of the code is in drivers. Thus, you could first push a version out of the door that only supports XServe (rack mounted servers) or Apple TV. That's dividing and thus lowering risks.

    --
    8 of 13 people found this answer helpful. Did you?
  194. Estimate based on historic data. by xplinuxmac · · Score: 1

    A good (experienced) programmer should eventually have a good 'feel' for how much time certain tasks take (but having domain knowledge does help too), and the scrum planning poker is a way to get to such an estimate, but it is of course not perfect. Very important is a proper brake down of the tasks (not forgetting any tasks). Many developers under estimate the time it takes to write some code and provide proper unit tests for the test team, this results sometimes in going to the other extreme and estimating too much time. Another approach is to look at historical data of your developers. This guy wrote a case study that uses historical data of his developers to estimate future tasks : http://vanlingen.name/web/cv/unpublished/article/2010/02metrics/metrics.pdf It is an interesting approach, but I would not only rely on that. A combination of techniques: historical data, estimation by developers, good task breakdown (not forgetting tasks), I think is needed for estimating the time it takes to complete a project.

  195. Want to write an article? by Futurepower(R) · · Score: 1

    Maybe we could write an article together about this subject.

  196. Re:I am often subjected to mockery by it, but COCO by Anonymous Coward · · Score: 0

    Why is this modded down? GP talks crap and deserved to be shot down.