Slashdot Mirror


The #NoEstimates Debate: An Unbiased Look At Origins, Arguments, and Leaders

New submitter MikeTechDude writes: Estimates have always been an integral part of the software development process. In recent years, however, developers, including Woody Zuill and Vasco Duarte, have begun to question the efficacy, and even the purpose, of using estimates to predict a project's cost and time line. A fierce debate has sprung up on Twitter, between those calling for an end to estimates and those who continue to champion their use in a professional setting. On the surface, it would appear that the debate is black and white. Proponents of the #NoEstimates Twitter hashtag are promoting a hard stop to all estimates industry-wide, and critics of the movement are insisting on a conservative approach that leaves little room for innovation. However, the reality of the debate has unfolded in far more complex, nuanced shades of gray. HP's Malcolm Isaacs digs deep and pinpoints where the debate started, where it now stands, and what its implications are for the future of software development. Meanwhile, Martin Heller offers his less unbiased approach with his post, #NoEstimates? Not so fast.

12 of 299 comments (clear)

  1. Estimates by Anonymous Coward · · Score: 3, Insightful

    Correct:

    How long will it take you to do this list of things?

    Incorrect:

    How long will it take you to do this thing that nobody has ever done before and which may or may not have these features, and we may need to add new requirements when we're halfway through but we won't know until we get there.

    One of these is merely difficult. The other is doomed to failure from the time The Boss opened his mouth.

    1. Re:Estimates by PopeRatzo · · Score: 3, Insightful

      Not so. The second one has a correct and professional answer: "I do not know. This will require a pre-study. But adding new requirements during the process is right out, then the pre-study has to be repeated and the project reset." and on the pre-study you _can_ deliver a reasonable estimate.

      You are assuming the corporation you work for is a rational actor. They are not. They are products of paperwork and exist as golems to extract maximum profits at any cost.

      The management you work for isn't to blame, because they're just trying to feed Moloch too. They are also consumables.

      Looking for rational expectations and behavior in the 2015 workplace is like Captain Yossarian looking for rational expectations and behavior in the military. If you're not crazy, you're not paying attention.

      --
      You are welcome on my lawn.
    2. Re:Estimates by Spazmania · · Score: 4, Insightful

      If you can't produce a reasonably accurate estimate you may not have asked the right question.

      How long will it take you to do this thing that nobody has ever done before

      This is not the right question. The right question is: how long will it take you to assess this thing that nobody has ever done before, and devise strategies for doing it, and develop them to a point that you can estimate how long executing these strategies will take.

      Nothing wrong with saying, "I need four weeks to research this before I'll be able to give a reliable estimate on implementation."

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
  2. Just stop by Anonymous Coward · · Score: 5, Insightful

    No, hashtags are not movements. If you think so, you either have no clue what a movement is or no clue what a hashtag is, and I'm guessing it's the former. Talking about things on Twitter is talking and that's it. It's not some kind of political action.

  3. Re:Well, it's about time... by tnk1 · · Score: 3, Insightful

    I agree that having enough time taken to make a good product is a good thing.

    However, there does need to be some accountability to business goals and the ability to actually get features to customers in a reasonable time frame.

    Prioritization is important. There are times where something has to get done by a certain date, or you'd have been better off working on something else because you lost the customer who wanted the feature to the company who did produce it.

    In some ways, I blame customer expectations. If they're always hunting to get the most features they can, for the cheapest possible price, they're pretty much accepting the bugs and design flaws that come from software houses that are fulfilling their criteria. And that's basically what happens. If customers did something like insist that bugs in the software would require significant financial penalties or credits as part of their contract, they'd get a better product, but they'd also pay through the nose for it, and probably also have to wait a substantial amount of time for it.

    So, I think we're at an equilibrium. Customers hate shitty software, but as long as they pay for it, that's what they're going to get because they don't choose the quality software over the quick and cheap.

    And until that changes, businesses need to be able to predict when their software is going to be more or less complete.

  4. We have this already; it's called agile by Anonymous Coward · · Score: 2, Insightful

    We have this already; it's called agile. Forget about the scrum and the planning meetings, they're get emphasized by shitty teams and PHBs because they're something people are used to, namely meetings, and they're easy to do. They're not required and arguably the least important aspects of agile.

    The point of agile has always been:
    1) Figure out what the most important feature you need to do next.
    2) Build it and make sure it's rock solid.
    3) Keep repeating #1 and #2 until the client is satisfied.

    You add on top of that the minimum number of things (which can include standups and planning meetings and even, (gasp) documentation, if it's helpful to the implementation team, not the PHBs) to make the process work. A key point is there are no hard ship dates; you keep building until you're done.

  5. The real problem by wonderboss · · Score: 5, Insightful

    is giving estimates without a detailed design.

    Imagine this interaction:
    Customer: I want you to build me a house.
    Contractor: Ok, How many square feet?
    Customer: I don't know. When can you start?
    Contractor: We can't start until we have plans drawn up.
    Customer: I don't have time for that. How much will it cost?
    Contractor: I can give you a rough idea once we've nailed down the square footage, number of stories, type of foundation, and some other details.
    Customer: You are wasting my time with all these questions.
    Contractor: Go Away.

    Yet software developers agree to this situation, or are forced to agree to it, all the time.

    --
    more cowbell
  6. Not a developer, but... by nine-times · · Score: 4, Insightful

    I'll admit that I'm not a developer, so I may not have a firm grasp on the relevance of everything being talked about. However, I've managed my share of projects, and I definitely think there's reason to doubt the value of estimates for all kinds of projects. Software development projects are not unique in that regard.

    Now, I want to start by pointing out the obvious that you often have to make some kind of estimate. Even if the estimate isn't very precise, you have to make some kind of guess-- is this going to take 1 day, 6 months, or 5 years? Being practical, people have to have some idea of what they're getting into, or they can't make decisions.

    On the other hand, estimate can only be accurate insofar as the scope of the project is well defined and well understood. For tasks that you do frequently and know exactly what needs to happen, accurate estimates are not very difficult. Even if you are bad at estimating, you can measure how much time and money is spent on those repetitive tasks, and then use that data to figure out how much time and money it typically takes. However, as the scope of work is less well defined, or the nature of the work is less well known, the accuracy of the estimate will be worse.

    Imagine building a house. If you're building 100 houses in a development, and you do that work often, and you've already build 30 houses and know how much the labor and materials cost, then you can probably make a good guess of how much time and money it will take to build the remaining 70. However, if someone asks you to "fix all the problems with their house," and you don't know what shape their house is in, what it means to "fix" it, what the laws are regarding construction in the area, or what the local materials/labor cost, then your estimate won't be worth much.

    And this brings me back to the issue of "precision" rather than "accuracy". I think part of the issue is to provide an appropriate expectation of precision when providing estimates. I frequently have to provide estimates, and some of them are wildly wrong, but when I'm not confident in the estimate I'm providing, I'll also provide some kind of disclaimer. I admit that I don't know all the details about the situation I'm getting into, and that my estimate could be off. The thing that I'm saying will take 6 weeks might take 2 months. Maybe 2.5 months. Maybe more. Not 6 months-- at least not unless there's something really unexpected or some kind of mission-creep.

    But this is really part of a larger problem: the ineffectual nature of "plans". There's a famous quote, something along the lines of, "no battle plan survives the first contact with the enemy". Again, there are projects where the scope is defined and the work to be done is well understood, and in those cases, you can do conventional project planning. You can set milestone dates and make gantt charts, and develop a whole timeline and budget. But on the other hand, Donald Rumsfeld was on to something when he talked about "unknown unknowns". Often when you are embarking on a project, you're not even aware of the obstacles you're going to face, and so you can't account for them. This doesn't mean there's no point in developing a plan or a schedule. It means that your schedule has to be flexible in proportion to the likelihood of "unknown unknowns" and other contingencies outside of your control.

    I think if you want to improve the situation, the answer isn't to stop making estimates or project plans, but to develop better methods for quickly estimating the precision of your estimates, providing a margin of error, or the level of flexibility needed in a project. However, I think the #NoEstimates people are correct to point out that there is often diminishing returns on trying to set deadlines and budgets. It doesn't make sense to spend a week refining your plans for a two-week project.

  7. Re: Be honest by Anonymous Coward · · Score: 2, Insightful

    > Agile is a literal suicide pact.

    To be fair, any process can be when the process is considered more important than actually getting things done, but with Agile it seems to happen more often than not.

  8. Re:Not time consuming by phantomfive · · Score: 3, Insightful

    If someone makes an estimate for you, or forces you to make a lower estimate, then you have no obligation to meet that estimate.

    Yes, you do. It's called keeping your job.

    If your job depends on you meeting impossible estimates, then you're not going to be in it very long, no matter how hard you try.

    --
    "First they came for the slanderers and i said nothing."
  9. Re:Well, it's about time... by msobkow · · Score: 3, Insightful

    There are many products which have a very limited life span as well. Products who serve a purpose six months from now, are retired in two years time, and never touched again. Products where failing to deliver on time is as bad as failing to deliver at all.

    Then there are the projects and products which are only part of a greater whole, where delivering late means holding up that entire larger project, and which has a financial impact which may well exceed the total budget of your entire project.

    Despite that, I've never encountered an estimate that was any more than the gut feel of someone giving their best guess based on their experience and what they know so far about the requirements. Customers really need to wake up to the fact that changing requirements and vague/unfinished requirements mean that the actual delivery could be +/- 50% of the estimate, or even more.

    The worst overruns I've ever seen were always on projects where the tools to be used were selected before the developers were ever consulted about what made sense to use for developing the project. The inane buzzword projects where someone decides they're going to use NoSQL, or SQL, or flat files, or whatever storage system because that's "company policy" or because some "architect" was in love with that particular technology or product.

    Woe betide anyone who lets the buzzword mafia decide the course of their project, for they are doomed to expensive failure in the vast majority of cases.

    --
    I do not fail; I succeed at finding out what does not work.
  10. choices by Tom · · Score: 3, Insightful

    As they saying goes: Fast, cheap, good - pick any two.

    You can usually solve one problem by another. If you see you can't hold the deadline, you can throw more manpower at it (not cheap anymore) or compromise on quality. If you see the budget runs out, you can put the project into idle times (not fast anymore) or compromise on quality.

    Sadly, quality is the part that management, customers, clients and developers understand the least. Everyone understands deadlines - either you are done on that day or you are not. Everyone understands money and to convert developer man-hours into money is not so difficult. But quality is tricky. If it runs, ship - because management, customers, etc. they see if it is running, but not what's going on under the hood. And developers too often don't understand that quality is subject to combinatorial explosion - shortcuts don't add up, they multiply.

    But because it's the least-understood part of the equation, and compromises matter so much but are not easily visible as long as the core operation functions, software in generally is so absolutely shoddy.

    --
    Assorted stuff I do sometimes: Lemuria.org