TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Project delays: why good software estimates are impossible

165 点作者 SarasaNews将近 9 年前

28 条评论

cpitman将近 9 年前
If I am running a business that is looking at what projects to fund for the next year, and one of those projects is a software project with an <i>unknowable</i> time to completion vs (for example) opening a new store, with a well known time to complete, why would I <i>ever</i> pick the software project? It has a completely unknown ROI! If you cannot even give me probabilities, the lottery is a more guaranteed investment!<p>Software estimation is required for real business to ever consider software projects. The key is to embrace uncertainty, and instead of estimating that task X will take exactly Y days, estimate a range of possibilities. I like the three point system, estimating a best case, worst case, and most likely case. It explicitly asks you to think about the long tail for when things go wrong. Then use statistical methods to combine estimates and create estimates for multiple confidence levels.<p>This is all covered in a great book, &quot;Software Estimation: Demystifying the Black Art&quot; (<a href="https:&#x2F;&#x2F;read.amazon.com&#x2F;kp&#x2F;embed?asin=B00JDMPOVQ&amp;asin=B00JDMPOVQ&amp;preview=newtab&amp;linkCode=kpe&amp;ref_=cm_sw_r_kb_dp_kE5KxbAPDNJB5" rel="nofollow">https:&#x2F;&#x2F;read.amazon.com&#x2F;kp&#x2F;embed?asin=B00JDMPOVQ&amp;asin=B00JDM...</a>). It&#x27;s not that long a read, and it goes over the problems covered by this blog post but doesn&#x27;t throw it&#x27;s hands up in the air and say estimation is impossible.
评论 #12149971 未加载
评论 #12150139 未加载
评论 #12150001 未加载
评论 #12149962 未加载
评论 #12149994 未加载
评论 #12150109 未加载
评论 #12150170 未加载
评论 #12149922 未加载
评论 #12150708 未加载
评论 #12151156 未加载
maxaf将近 9 年前
I find naive and pretentious the suggestion that the average programmer&#x27;s work is in any way akin to Einstein&#x27;s search for the truth about our universe. My criticism might seem nitpicky until it&#x27;s time to measure this article&#x27;s message against the possible reaction of an engineering or business manager. Launching into a systematic dismantling of the pervasive estimates culture is best done with humble, verifiable assertions and helpful suggestions in tow. Attempting to recruit the long-dead Einstein is unhelpful and hand-wavy.<p>There must be a better way to package the no-estimates message, and it&#x27;s not this.
评论 #12150087 未加载
评论 #12150041 未加载
评论 #12149856 未加载
评论 #12150889 未加载
Klockan将近 9 年前
Software estimates will be optimistic as long as optimism is rewarded.
评论 #12152733 未加载
评论 #12151148 未加载
lucindo将近 9 年前
I like this Quora answer on the subject: <a href="https:&#x2F;&#x2F;www.quora.com&#x2F;Why-are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3&#x2F;answer&#x2F;Michael-Wolfe" rel="nofollow">https:&#x2F;&#x2F;www.quora.com&#x2F;Why-are-software-development-task-esti...</a>
评论 #12150075 未加载
vermooten将近 9 年前
“What? Two days?”, “But our previous developer could do that in a couple of hours! No way it will take you that long.”<p>Answer: Well get the previous developer back to do it then. Otherwise STFU, and let me get started.
评论 #12149666 未加载
评论 #12150042 未加载
wellpast将近 9 年前
&gt; The best you can do is estimate based on historical metrics which ... is not worth very much.<p>I&#x27;ve had significant success in using historical metrics to accurately estimate software projects.<p>It takes diligence and professional experience to learn to do this, but it is possible in my experience.<p>Unfortunately I find this philistine sentiment quite frequently in the software world: &quot;I&#x27;ve had difficulty doing X. I am smart. I am senior. I am a professional. Therefore X must be impossible.&quot; Isn&#x27;t it possible you haven&#x27;t been stubborn&#x2F;hard-working enough in your own personal growth?
评论 #12150124 未加载
评论 #12150125 未加载
评论 #12150126 未加载
doozy将近 9 年前
Not impossible, its akin to having a P vs NP problem.<p>Properly estimating a software project takes just as long as developing the software itself.<p>When people want estimates they somehow assume they can be given on the spot, or at most with a few hours of work. Nothing further from the truth.<p>A good software estimate is a project in its own right. It takes time, a deadline and a budget to break apart a software project, design a solution, identify its subtasks, identify its critical path, research alternatives, evaluate frameworks, tentatively assign tasks to teammates, write down an estimation report, discuss it with the customer, etc.<p>And then you end billing the customer for 120 hours of work to conclude the project can be done in five days, give or take a week.
_Codemonkeyism将近 9 年前
1. People need to look into PST from Simon Wardley.<p>2. Some of my clients do excellent work with estimations delivering on time and on budget and satisfied customer (In the Wardley Six Sigma zone - low uncertainty)<p>3. Estimation does not work in the Genesis or Product zones (high uncertainty)<p>We need to grow up beyond the &quot;software estimation not possible&quot;.
评论 #12149828 未加载
评论 #12149711 未加载
评论 #12150000 未加载
unoti将近 9 年前
This isn&#x27;t a problem unique to software engineering. All kinds of things in business require estimating the unknowable. Investing in any business enterprise requires forecasting what the return on investment is and how long it&#x27;ll take before you see those returns. These issues exist whether you&#x27;re starting a hot dog stand, building an apartment complex, bringing a software product to market, or building an off shore oil rig.<p>Business people have put a great deal of worthwhile thought into how to manage these risks in ways that make sense for the company. For some fresh, eye opening ideas on how to do project management for software and other businesses, check out the book <i>The Critical Chain</i>. The short section at the end on metrics for investment is worth the price of admission alone.
spotman将近 9 年前
The difference between a consultant with lots of real world experience and not.<p>Yes there is slippage, but you learn to plan for it. In the past week I had an employee have a baby and an employee have a parent pass away and another one have a horrible knee injury and be unable to work for a couple days, meanwhile we lost no time on a project by we are up some of our buffer.<p>If you don&#x27;t plan to meet your deadlines even when faced with feature and scope creep ( which managing is another discussion entirely ) or things 100% out of your control there is other people that can and so your not going to be picked for projects that require real time mission critical demands.<p>And yea, if you figure that out, you get to charge more, and sleep less.
ryanmarsh将近 9 年前
Software isn&#x27;t construction it&#x27;s design.<p>If you start treating estimates for software as estimates for design work your life will suck less.<p>The anxiety and stress around making and meeting software estimates is all rooted in a misperception of what software is.<p>&quot;Real businesses&quot; budget for design work too, they just have different expectations for it than, say, a new office building.
FollowSteph3将近 9 年前
How long would it take to walk from San Francisco to Los Angeles. Even that almost impossible to estimate and not be off be several multiples, if you&#x27;re lucky!<p><a href="http:&#x2F;&#x2F;www.michaelrwolfe.com&#x2F;2013&#x2F;10&#x2F;19&#x2F;50&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.michaelrwolfe.com&#x2F;2013&#x2F;10&#x2F;19&#x2F;50&#x2F;</a>
评论 #12149897 未加载
ktRolster将近 9 年前
Think of estimation as an outer bound (with a confidence level). You are saying &quot;I am 98% sure the project will be completed by time X.&quot; The more unknowns you have, the farther out you should push the deadline.<p>Give yourself extra time: no one will complain if you finish early.
paulsutter将近 9 年前
Evolution. 100,000 years ago, there were humans who could accurately estimate the difficulty of, say, catching a deer. And since they knew it was too much trouble, they just stayed home in the cave.<p>Meanwhile some crazy optimist went out and to catch a deer. It was many times more difficult than expected, but they returned to the cave with the deer and eventually reproduced more successfully than the accurate estimator.<p>Thus our ancestors were the crazy optimists.
评论 #12149598 未加载
评论 #12149683 未加载
评论 #12149730 未加载
评论 #12149696 未加载
评论 #12150689 未加载
评论 #12150565 未加载
kyled将近 9 年前
Meh, i wouldn&#x27;t say impossible. I worked with amazing people. We were able to hit our goals consistently. Key is to have a great team who knows what they are doing and are honest. Measure by complexity, not time.<p>Unless you worked on a few products, your going to be bad at estimating larger pieces. A lot of software is very similar.
tomlu将近 9 年前
I find this a bit defeatist. Estimating software projects is definitely possible, especially for less novel projects, and high-effort estimates will have higher fidelity than low-effort estimates. Few projects are truly novel.<p>You can&#x27;t make business decisions without having <i>some</i> idea of estimates, so I find that arguments like this are used to weasel out of making any sort of commitment. Go ahead, add a big buffer, try to take uncertainty into account, pad, pad, pad - at least after all that we&#x27;ll have <i>some</i> idea.<p>On the other hand a very real problem I&#x27;ve often faced is when the target date is an input into the estimation process. I.e. we want to ship by May 2017, go estimate until the estimation fits this target date. Of course, after estimation the target date can be an input into requirements scoping, after which you can re-estimate.
alex-yo将近 9 年前
Heh, I recall when a funny manager asked my team about an estimation. We agreed on a year (exactly something like 12-14 months). Then he went to his managers, sold the project with 6 months deadline, and was quite happy.<p>The outcome was simple: his estimation was good, the team was lazy.
Nokinside将近 9 年前
Simple equation that is just as good as any:<p>p : number of people<p>c : number of changes into specifications (= learning during implementation)<p>f : number of frameworks, libraries, tools.<p>x : number of new people, frameworks, libraries, tools<p>e : initial time estimate in weeks<p>correct estimate: E = e + e(0.1p + 0.2c + 0.3f + 1.1^x)
评论 #12150298 未加载
评论 #12150020 未加载
bboreham将近 9 年前
The fundamental activity of software development is _learning_.<p>Although it looks to an outsider like the main thing is typing stuff in (or pasting it in :-), the thing that takes all the time is learning what you should type, or learning why the code you already typed in isn&#x27;t doing what you expected.<p>If you&#x27;ve done that exact project before then sure, you can estimate how long it will take to do it again. But that isn&#x27;t often the case - usually we&#x27;re trying to do something new, or better, or on a different platform. Always learning.
evoltix将近 9 年前
Another thing to note here that I have experienced is when management has an incompetent mentality that, for a given project, that all tasks for this project are created equal. For example, they expect that if task X took 1 hour that surely task Y will also take 1 hour despite the fact that task X and task Y vary greatly in complexity.
评论 #12149743 未加载
评论 #12150287 未加载
perspectivep将近 9 年前
Even if you get better at estimating tasks, it&#x27;s extremely hard to account for bugs that aren&#x27;t discovered until later.<p>I usually have a pretty accurate estimate for small tasks but never go back and add the time spent on fixing recessions caused by that task. Or the time spent on extra smoke testing due to missing automation.
评论 #12149830 未加载
评论 #12149816 未加载
slavik81将近 9 年前
The problems he talks about have noticeable effects on task completion time and estimate error. In my experience, estimation error is not normally distributed. For most tasks, estimation error is small, but perhaps one in ten estimates are off by an order of magnitude.<p>It&#x27;s usually a single bug or feature which blows the iteration. Though, by consuming so much time, it may cause other tasks to spill too.<p>If you aim to estimate most tasks accurately, the overall project will probably be underestimated. Outliers consume a significant portion of the overall project time.
segmondy将近 9 年前
I must urge any serious developer who has read that article to immediately forget about it!<p>Let&#x27;s begin with the first phrase, &quot;Software estimate&quot;. An estimate is an approximation. An approximation is an educated guess. So if someone said to you, &quot;Please make an educated guess on when the software you are working on will be completed&quot; To say it would be impossible would be the most absurd thing!<p>To make an educated guess, You would have to break down the tasks into manageable chunks that you can clearly reason about. Once you have your chunks of task, you will have knows, unknowns, some with risks or not, some that are complex or easy, etc. The problem with estimates is the unknown. If you are constructing software for an entity, then you must not approach it as an R&amp;D, but rather, as a possible Research THEN Development. All your unknowns should be figured out at the research phase, then you estimate the development, else you should fight to remove those unknown tasks from the project.<p>Think about it, do you get asked for &quot;Software research estimate&quot; or &quot;Software development estimate&quot;? It&#x27;s the latter, but most developers make the mistake of offering their estimate across both R&amp;D. The really beneficial thing to developers about estimates if they do take it serious, is that it forces you to stop, think, design, and think again before coding.<p>The biggest concerns for developers is that estimates TURN into deadlines. This is a legitimate concern, but nevertheless this doesn&#x27;t invalidate your estimate, which is nothing but an approximation. The other concern is that feature&#x2F;scope creep into the project really puts a wide gap between the estimate and completion date. This again is true, remember your estimate was for the original requirements. So what are you to do as a developer? You must teach your manager if they don&#x27;t know or whomever you are working for the difference between estimates and deadlines. You must also learn to keep feature creeps at bay or estimate those new features anytime they are added and adjust your estimate accordingly.<p>If you are a non manager or business. Please do think about this from their point of view. Projects have costs, which we can quickly approximate via cost of people working on it multiplied by the duration of the project. Part of running a business is managing your cash flow, knowing if you should spend or not. Without having an estimate of a duration of the project. How can businesses make decisions on which projects to fund? If you have a startup and $100,000 in cash. No income yet, 5 programmers that you pay $5,000 a month. Would you let them work on a project with no completion date, 1 yr estimate or 2 months estimate?
jacques_chester将近 9 年前
By definition any perfect knowledge of the future is impossible. Regardless of why.<p>That&#x27;s a trite observation. What <i>matters</i> is than an estimate can be made better than not estimating at all.<p>It&#x27;s funny how all these problems come up in other disciplines, but they don&#x27;t throw their hands in the air and quit.<p>They accept that the Nirvana Fallacy is not an acceptable reason to <i>not</i> estimate and they go ahead and do it anyway.
yason将近 9 年前
Estimating software schedules is easy. Just gauge a ballpark figure of what it might take if everything went nice and smooth, you had no distractions nor surprises, and then multiply by pi.
评论 #12150827 未加载
alexnewman将近 9 年前
I&#x27;ve never had a big problem with it. Even with multi month estmates
graycat将近 9 年前
As has long been accepted, can get good estimates of time and cost for software project A if it is quite similar to and done by the same team as successful projects B, C, D, E, F, ....<p>IMHO, for software project A, break the work down into relatively small pieces and attack those. Make each piece small enough so that if that the work on that piece takes too long or even just fails, then the loss there is not too big.<p>Some of the most important pieces are about the <i>experience</i> of the team -- have they successfully done just such a thing before?<p>So, for such <i>experience</i>, start with the <i>skills</i> and, in particular, the documentation. So, start with the skills and experience with the operating system, the text editor, the e-mail program, the file system, the command lines, and the programming languages. Then move on to other related software, e.g., TCP&#x2F;IP, HTML, CSS, JavaScript, SQL, AJAX, Web site security, collection classes, APIs, etc. So, for each of these, get the documentation, the <i>skills</i>, the <i>experience</i>, etc. E.g., have people write test programs that illustrate and test the tools, and some of the more important limitations on the tools, being learned.<p>Then start in, say, outline form, the <i>waterfall</i> development process by coming up with a <i>requirements document</i>, that is, what the heck the software is to do.<p>On writing this document, e.g., what level of detail to include, get some good consulting help.<p>Then move on to the <i>architecture</i> document. This document is an example of the standard project approach of <i>divide and conquer</i>. So, that division results in <i>pieces</i>, e.g., <i>components</i> of some kind. So, get started on some of the components. And have write some code to test those. Do these pieces one at a time so that a failure is not to expensive.<p>As long as the project is not struggling at some obstacle, is making good progress, each of the small steps looks okay, then continue on.<p>Soon begin to get some data on how fast the work is going, at least for each of the stages.<p>When are well into writing the code for version 1.0, then soon should have some okay estimates of the time to complete version 1.0.<p>Here see part of the truth: Much of the work is getting relevant <i>skills</i> and <i>experience</i>. Next much of the work, especially the risky part, is getting a clean description of what the heck the system is to do. With those parts done well, we should be talking mostly a nice road downhill from there to a good finish line.<p>Gee, in the middle ages in Rome there was a big project to move a huge stone obelisk some yards to one side. Big obelisk. Big project. Lots of timbers, ropes, horses, workers. It was successful.<p>Impressive until ask how the heck the obelisk got there in the first place? Sure, ballpark 1000 years before some of Caligula&#x27;s slaves went to the upper Nile, cut the obelisk from solid stone, floated it down the Nile, across the Mediterranean, and to Rome, and erected it.<p>So, Caligula&#x27;s slaves did some <i>project planning</i>, for a project they were likely mostly doing for the first time. And they got it done.<p>And now we are struggling with some software project for some Web based order entry and inventory system or some such? Ah, come on, guys!
dpweb将近 9 年前
When in doubt, add time