TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Software Estimation Is a Losing Game (2014)

58 pointsby tustlemover 9 years ago

12 comments

kzhahouover 9 years ago
I can estimate some tasks very accurately. I know that adding this new flag to my system will take a day.<p>Other tasks I can accurately say I don&#x27;t know how long they&#x27;ll take. This new feature is... a couple of weeks? This new application is... a few months? I can roughly guess (estimate!) but there&#x27;s a wide certainty margin.<p>That uncertainty is never built into the mathematical model used by project managers, which is invariably a simple addition of scalar estimates. The only common way of dealing with uncertainty is to <i>pad</i> the estimates (multiply by two, etc), but that&#x27;s still not a statistical boundary -- it&#x27;s just a scalar.<p>Furthermore, when adding uncertain values, they wind up not being independent, for a number of reasons -- the lessons from one feature are carried on to the next, or the next task is easier because of new existing code, or because as you approach the original deadline you invariably throw out feature requirements. So you can&#x27;t necessarily just add all the uncertainty values.<p>So a better approach to estimation would be to formulate a (<i>simple</i>) model which encodes each estimate as {guess, uncertainty, independence} and then provides a function for compounding the guesses and uncertainty and independence factors in a realistic way.
评论 #10377603 未加载
评论 #10377819 未加载
thoman23over 9 years ago
One of the comments on the original article nails it. The real problem is conflating &quot;estimates&quot; with &quot;deadlines&quot; or &quot;commitments&quot;. You see it with the casual replacement of &quot;story estimating&quot; with &quot;story sizing&quot; in our language. &quot;Sizing&quot; implies a degree of certainty that may not be there.<p>Estimating is most definitely useful. But you have to fight every step of the way to keep an estimate from becoming a &quot;promise&quot;. Promises that can&#x27;t be kept are not good for any of the parties involved and lead to things like developer burnout, poor quality, technical debt, surreptitiously reduced scope, lack of trust...it goes on and on.
roel_vover 9 years ago
Pardon my French, but it&#x27;s a load of bollocks. Sure, I hate estimating and I&#x27;m bad at it, but I&#x27;ve worked with many others who were better than me at it and <i>did</i> consistently deliver what promised, when they promised it. And yes I&#x27;d much rather just sit and contemplate and re-re-rework &#x27;the design&#x27; and be all-important about &#x27;it&#x27;s done when it&#x27;s done&#x27; - but I fully well understand that any customer will just fire me and take someone who just does what he says he will.<p>Building construction is also fraught with unexpected events and project management issues etc., but I&#x27;d laugh any building who would propose that I just keep paying them until it&#x27;s done, or who will start building and go home when whatever budget I give him is used, out of the room. Why would my customers be any different?<p>(articles like this poison the minds of young impressionable developers who think it&#x27;s actually reasonable to have ideas like this, btw, which is why we shouldn&#x27;t just shrug them off)
评论 #10378342 未加载
评论 #10377636 未加载
评论 #10378054 未加载
sbuttgereitover 9 years ago
Software time&#x2F;cost estimates are essential. If I run a business, I need to have some understanding if an investment will have a return. If I have no way to gauge that at all, then there are many more predictable endeavours where I can spend the money and realize a return. When you invest, do you simply say the future is unknowable and bet on raw emotion? I should hope not. That&#x27;s not to say you may err in your judgment of available facts, you may still lose, but at least you understand some of the parameters about what constitutes success.<p>Software time&#x2F;cost estimates are exactly that: estimates not guarantees. We tend to think of such things in terms of project management and contract enforcement. If anything, that is where we go wrong. What we should do is not try to understand the whole project in terms of an unalterable roadmap, but rather as a guideline for managing expectation and for informing decisions that are made during the course of a project. I use my estimates to sell the project, yes, but I also tell the client that as we go along we will be making many decisions that will move us away from our initial plan as we better understand both the issues and opportunities a project affords. Sometimes spending more time than planned will make sense, sometimes it won&#x27;t and we cut the feature. Sometimes we find that we have failed to identify important features and sometimes we identified a feature early on that isn&#x27;t as important as we thought. The overall project plan and estimate does set a benchmark to ensure the economics are still correct, after all if we lose that we lose the point of the project entirely, but we don&#x27;t turn that plan into dogma. We don&#x27;t lose sight of the reason that caused the project to exist.<p>So, yes, we need estimates no matter how hard they are to get accurate. What we need to stop doing is equating that estimate as an oath to be upheld regardless of what new knowledge comes along.
jcadamover 9 years ago
If I&#x27;m ever asked for an estimate, it&#x27;s after the project schedule has already been set in stone.<p>On my current project, I am the sole full-time developer. The requirements were gathered from the client without my involvement. The schedule was laid out without my input. Then the whole thing was dropped on me.
评论 #10378243 未加载
评论 #10378376 未加载
lifeisstillgoodover 9 years ago
A more appropriate question is not, does software estimation help improve project management, but is project management a suitable model for software?<p>I am a proponent of the idea software is a new form of literacy. We generally do not project manage the next paragrpH or the next chapter. writers are often faced with deadlines, but rarely have to justify themselves on a daily basis.<p>Improving estimation will just result in slightly better inputs to a process that at best hinders us and sucks creativity and joy.
评论 #10377502 未加载
wai1234over 9 years ago
I have to laugh when I see these posts. So, software development is a special activity that should not be constrained by budgets or deadlines (or estimates)? Where do I sign up? There are so many strawmen here I can&#x27;t possibly address them all. If you can&#x27;t provide a credible estimate for a piece of work, you either a) aren&#x27;t very good, b) don&#x27;t properly understand the work to be done, or c) perceive some aspect of the job that is unknowable to you (through lack of experience or other novelty). Fixing each of these is up to you. &#x27;a&#x27; is obvious (you either work hard to get better or find something else to do). &#x27;b&#x27; means you need to ask more questions that allow you to sufficiently complete your understanding of the problem so an estimate is possible. &#x27;c&#x27; means you need to isolate the novelty and explain that this part of the problem is new to you and you are not qualified to provide an estimate. Perhaps someone else can provide that insight or you can define an initial activity designed to help you better understand the novel problem until you can estimate the remaining work. NO area of engineering is so cut and dried that estimation is easy.<p>What IS common is a combination of poorly defined projects and a profound lack of self-awareness. By all means, push back against poorly defined projects (&quot;I can&#x27;t estimate the work until you tell me what it is.&quot;). Lack of self-awareness is squarely in YOUR lap (&quot;I don&#x27;t understand why it always takes longer than I thought it would...&quot; Well, duh, maybe you should consider that reality for what it is and account for it next time).<p>Estimating work and committing to those estimates is what a professional does. Deal with it. If estimates are imposed on you that you do not agree with, that has nothing to do with the virtue of estimation. That&#x27;s a social problem, not a technical one.
评论 #10378016 未加载
评论 #10378101 未加载
评论 #10378206 未加载
评论 #10378372 未加载
DonaldFiskover 9 years ago
There are Mathematical Limits to Software Estimation: <a href="http:&#x2F;&#x2F;scribblethink.org&#x2F;Work&#x2F;kcsest.pdf" rel="nofollow">http:&#x2F;&#x2F;scribblethink.org&#x2F;Work&#x2F;kcsest.pdf</a>, <a href="http:&#x2F;&#x2F;scribblethink.org&#x2F;Work&#x2F;Softestim&#x2F;softestim.html" rel="nofollow">http:&#x2F;&#x2F;scribblethink.org&#x2F;Work&#x2F;Softestim&#x2F;softestim.html</a><p>In general, unless you&#x27;ve done something very similar before, estimation can&#x27;t be done accurately. Your manager should know and accept this.<p>The best you can do is probably this: Repeatedly split the project into tasks, estimate the time it will take for each, until the next task takes several hours, and then do the next task. Keep track of estimates and actual times spent. Your manager should ask you to do this and keep it updated. Joel Spolsky wrote something similar here: <a href="http:&#x2F;&#x2F;www.joelonsoftware.com&#x2F;articles&#x2F;fog0000000245.html" rel="nofollow">http:&#x2F;&#x2F;www.joelonsoftware.com&#x2F;articles&#x2F;fog0000000245.html</a> (I&#x27;m sure I read similar advice elsewhere, but can no longer find it.)<p>It should go without saying that you should include unit testing, code review, debugging, etc. in your estimates. And, of course, making and updating the time estimates.<p>The project, when &quot;complete&quot;, will still usually require maintenance, so work on the project only stops when the software is no longer used.<p>You should never be given deadlines, as you won&#x27;t know in advance what problems you might encounter, and the quality of your work (and probably your health) will suffer. This will result in a build up of technical debt, increasing maintenance costs.<p>It&#x27;s well worth reading The Mythical Man-Month, especially if you&#x27;re managing a project, or working with others on the same project.
评论 #10378115 未加载
j2baxover 9 years ago
I&#x27;ve found that using past data is very helpful. Look at your past projects, compare your initial estimates to the actual outcome when the project was finished. After a dozen or so projects, you should be able to formulate a percentage buffer to help you get closer on future estimates. Continually make this assessment and eventually you will find that you are getting much closer to accurate budgets&#x2F;timelines.
评论 #10378401 未加载
triggercutover 9 years ago
<i>Open article</i> <i>Ctrl+f &quot;Risk Management&quot;</i> &quot;Zero results&quot; <i>Ctrl+f &quot;Risk&quot;</i> &quot;Zero results&quot;<p>Now, I don&#x27;t work in software engineering, I work in traditional engineering, but I find the lack of any formal Risk Assessment, Management or Lessons Learned in any Project Management methodology&#x2F;framework a little scary.
Nadyaover 9 years ago
I use my best judgement to estimate the time the task will take. I then double that number and report that as my estimate. For times great than one month - multiple by a time and a half instead.<p>One month? No, six weeks. Two hours? No, four hours.<p>The reality is typically somewhere between the two numbers. So the estimate remains fairly accurate and most things are finished ahead of schedule.<p>There are too many variables that cannot be accounted for when giving an estimate. How often am I going to get interrupted? Is there going to be legacy code that causes a bug to surface and has to be refactored? Etc.
jacques_chesterover 9 years ago
Aside from starting with some nirvana fallacy at the beginning, the conclusion is basically an accidental advertisement for XP.