Free Republic
Browse · Search
General/Chat
Topics · Post Article

Skip to comments.

Software Estimation: How Misperceptions Mean We Almost Always Get It Wrong
Dr. Dobbs Journal ^ | April 08, 2014 | Carol Dekkers

Posted on 04/09/2014 5:11:04 PM PDT by ImJustAnotherOkie

Software developers are among the smartest people on the planet and often boast advanced degrees in mathematics, engineering, or computer science. In some ways, they are like superheroes — capable of programming complex functions, juggling myriad technologies, morphing customer ideas into working software, all the while not breaking a sweat. So how is it that despite such technical savvy and programming prowess, they are so woefully poor at project estimation? Study upon study cites that less than one-third of projects are delivered on time or on budget. Couple this with the fact that close to half of the effort spent doing software projects ends up being "rework" and the whole situation seems to defy logic. How can smart people produce dumb estimates?

(Excerpt) Read more at drdobbs.com ...


TOPICS:
KEYWORDS:
Navigation: use the links below to view more comments.
first previous 1-2021-4041-6061-66 next last
To: ImJustAnotherOkie

I think that our profession requires a fairly rare combination of the (sometimes) wildly creative part of the brain (the part that conceives of the solution(s)) and the disciplined part of the brain that ensures that the implemented solution is robust, efficient, resistent to errors, and maintainable. Quite rare, and quite valuable.


41 posted on 04/09/2014 7:04:57 PM PDT by Thom Pain (If you like your country you can keep it. Period.)
[ Post Reply | Private Reply | To 40 | View Replies]

To: ImJustAnotherOkie

Because at every step in the process - Requirements Development, Coding, Testing, there’s never time to do it right, but always time to do it over.


42 posted on 04/09/2014 7:07:46 PM PDT by DuncanWaring (The Lord uses the good ones; the bad ones use the Lord.)
[ Post Reply | Private Reply | To 1 | View Replies]

To: C. Edmund Wright
...and in some cases, obsoletion…..(is that a word?)

COBOL Rules!

(I would write "Hello World", but it would take 5 pages of code and my carpal tunnel is acting up again)

43 posted on 04/09/2014 7:47:59 PM PDT by BwanaNdege
[ Post Reply | Private Reply | To 4 | View Replies]

To: BwanaNdege

L,u. A0, $cas(’COBOL rules’)
LXI,u A0, 0103
ER aprint$

(No, it doesn’t)


44 posted on 04/09/2014 8:11:10 PM PDT by ImaGraftedBranch (...By reading this, you've collapsed my wave function. Thanks.)
[ Post Reply | Private Reply | To 43 | View Replies]

To: KarlInOhio

Ding ding ding. We have a winner.
Lots of non-programmers do this. In my experience, it’s been primarily managers and visual designers.
I had a manager who thought it would be a good idea to refactor my requirement satisfying enhancement after deadline (which I did meet by the way), because he thought it would easy and it would be cleaner that way. He disregarded my advice and turned a 2 day assignment turned into a 5 day one.
I also had a visual designer decide to not use Android’s UI element designed for what we wanted, because he didn’t like the way it looked. I explained to him that it is not in our best interests to create customized UI components for trivial reasons. Future versions of the OS could come out and easily break it (That happened to our iOS team A LOT)..
He just said do it and delayed the project for days.


45 posted on 04/09/2014 9:00:16 PM PDT by NullPointerException
[ Post Reply | Private Reply | To 27 | View Replies]

To: Thom Pain

In a more agile discipline, the number of features is subject to change, while the deadline and quality stay constant. So, there is always a quality product to deliver to a customer at the end of an release; it just may not have everything you want. However, I am not aware of any company that works this way and it’s because of the people who don’t program.
It usually goes like:
“I don’t know.”
“Why not?”
“Because I can’t see the future. If I could, I wouldn’t be working here.”
“Just guess.”
(A high number)
“Why do you think it is going to take a long time?”
“Things usually go wrong.”


46 posted on 04/09/2014 9:13:15 PM PDT by NullPointerException
[ Post Reply | Private Reply | To 39 | View Replies]

To: ImJustAnotherOkie

I appreciate the tremendous insight I am reading on this post. Apparently we have quite a few Freepers with firsthand knowledge of the programming business.

“So how is it that despite such technical savvy and programming prowess, they are so woefully poor at project estimation?”

I will add this to the other comments. It is possible to come in under budget and in less time than estimated. It is also possible to come in over budget and finish in more time than estimated. However, it is impossible to come in at less than zero cost or to be finished before you start. And it is possible to take infinite time and incur infinite costs. Thus, on average, estimates tend to be less than the actual results. The more specific we can be when planning and closer to existing, real-world projects in scope, the closer the estimates will be also.


47 posted on 04/09/2014 9:34:50 PM PDT by unlearner (You will never come to know that which you do not know until you first know that you do not know it.)
[ Post Reply | Private Reply | To 1 | View Replies]

To: ImJustAnotherOkie

show me one major software project that managers didn’t pull resources away from, one project that didn’t have fundamental requirements change along the way, demands to add in or do something major that wasn’t in the original scope (scope creep), show me one major project that doesn’t have enough resources allocated to do proper testing and integration, between teams, and between user testing.

it aint b/c of software engineers not estimating properly.


48 posted on 04/09/2014 10:49:05 PM PDT by Secret Agent Man (Gone Galt; Not averse to Going Bronson.)
[ Post Reply | Private Reply | To 1 | View Replies]

To: ImJustAnotherOkie
What is a software analyst?

I think this title may vary from company to company; in my experience, this role may also be called a business analyst, a business integrator, an information analyst, and so forth. This role is the person who sits with the client to elicit and capture requirements which will be used to develop the software.

49 posted on 04/10/2014 5:28:16 AM PDT by Lou L (Health "insurance" is NOT the same as health "care")
[ Post Reply | Private Reply | To 30 | View Replies]

To: unlearner
The more specific we can be when planning and closer to existing, real-world projects in scope, the closer the estimates will be also.

Just remember, there's a cost associated with being specific. Software development--much like carpentry--is a field where "measuring twice and cutting once" often applies. In software development however, the "measuring" is the requirements-gathering, design, and probably testing. These aren't the "sexy" parts of software development, but accuracy pays off here.

Unfortunately, these up-front activities are often areas where timelines and budgets get cut the most. Customers don't want to hear that it'll take six months of planning and user meetings before any code is written. Obviously, that depends on your development methodology, but I hope you get my point.

50 posted on 04/10/2014 5:39:33 AM PDT by Lou L (Health "insurance" is NOT the same as health "care")
[ Post Reply | Private Reply | To 47 | View Replies]

To: ImJustAnotherOkie

To me, the problem is almost always the requirements. The customer fails to spell out clearly what they need. Management fails to spell out clearly what is desired. Coders do what seems to be stated in the requirements.

It’s the blind men inspecting the elephant syndrome - each only understands a small piece, none understanding the entirety.

Oh - and the managers that make the schedules (often with no input from the developers) are too eager to sign up for whatever will get them noticed - agreeing to nonsense deadlines because they don’t have the fortitude to say “can’t be done”.


51 posted on 04/10/2014 5:47:25 AM PDT by MortMan (Fired the Fox - Anyone who denies religious liberty in favor of "fairness" is a fascist.)
[ Post Reply | Private Reply | To 1 | View Replies]

To: who_would_fardels_bear
Until the users could actually interact with the application they really didn't grasp what they wanted it to do or how they wanted it to work. I really think it comes down to the fact that very few people are capable of thinking abstractly.

Most of the time, I find it is because the users are thinking in terms of design, and not in terms of function. They concentrate on what the program will look like, and not what it will produce to make their lives better.

I am on a personal mission to "fix" the requirements in the aerospace software industry, one classroom of practitioners at a time...

52 posted on 04/10/2014 5:51:20 AM PDT by MortMan (Fired the Fox - Anyone who denies religious liberty in favor of "fairness" is a fascist.)
[ Post Reply | Private Reply | To 15 | View Replies]

To: ImJustAnotherOkie

In my experience, the most common reasons a software develop under-estimates are:

1) They over-estimate their own capacity. Primarily, they assume 100% of their time goes into the problem at hand. In truth, you’re lucky to get 75% because of general overhead, distractions, meetings, and so on.

2) They look at only the code design/writing/testing time and forget to include additional process steps that aren’t “writing software” but nevertheless have to get done. Documentation, configuration management, QA, and so on.

3) Rampant optimism. Typically, a developer will give an estimate how how long something SHOULD take, assuming everything goes well. In reality, very few things go well, so estimates tend to be under more often than they’re over.

Because of these three, I only half joke when I say the way to get the true estimate is to take the developer’s estimate, multiply by 2, add one, and then change to the next higher-order unit. For example: a 1-hour developer task might take a full 3 days to get through the entire process.


53 posted on 04/10/2014 5:53:56 AM PDT by kevkrom (I'm not an unreasonable man... well, actually, I am. But hear me out anyway.)
[ Post Reply | Private Reply | To 1 | View Replies]

To: WillVoteForFood

100% accurate.

Plus, actual Programmers, as opposed to coders are fairly scarce as a percentage of the population in question.

Programming is part art, part science.


54 posted on 04/10/2014 6:08:58 AM PDT by hobbes1 (Hobbes1TheOmniscient® "St.Sarah, the1Tru Conservative that REFUSES to unite us and Save America"yo)
[ Post Reply | Private Reply | To 17 | View Replies]

To: DuncanWaring

And testers usually take it in the back end, on the back end.

“Who tested this” gets asked far more than “who coded this”


55 posted on 04/10/2014 6:10:49 AM PDT by hobbes1 (Hobbes1TheOmniscient® "St.Sarah, the1Tru Conservative that REFUSES to unite us and Save America"yo)
[ Post Reply | Private Reply | To 42 | View Replies]

To: ImJustAnotherOkie

Rebuilding existing functionality, or at least cleaning it out, from the detritus, is something good programers should do on the sly when the opportunity presents itself.....

It’s thankless, and goes unnoticed. But the sublime satisfaction, and making your life easier going forward is ample reward enough.


56 posted on 04/10/2014 6:17:15 AM PDT by hobbes1 (Hobbes1TheOmniscient® "St.Sarah, the1Tru Conservative that REFUSES to unite us and Save America"yo)
[ Post Reply | Private Reply | To 24 | View Replies]

To: ImJustAnotherOkie

bump for later.


57 posted on 04/10/2014 7:44:45 AM PDT by PieterCasparzen (We have to fix things ourselves)
[ Post Reply | Private Reply | To 40 | View Replies]

To: unlearner

Of course if you accept the article’s facts that software engineer’s do the estimating. In my experience they don’t.

Engineer’s estimates are sort of like the first level of a rumor that morphs. Usually they are told an end date dictated by some executive’s(Type A) promise.


58 posted on 04/10/2014 7:54:45 AM PDT by ImJustAnotherOkie (zerogottago)
[ Post Reply | Private Reply | To 47 | View Replies]

To: MortMan

What’s the only thing dumber than an end user?

Two End Users....


59 posted on 04/10/2014 7:56:48 AM PDT by ImJustAnotherOkie (zerogottago)
[ Post Reply | Private Reply | To 51 | View Replies]

To: ImJustAnotherOkie

Programmers give bad estimates because they’re optimists. They’re paid problem solvers and they problems as solvable and with confidence in their abilities they under estimate. I’m QA, we’re pessimists, we over estimate.


60 posted on 04/10/2014 8:03:09 AM PDT by discostu (Call it collect, call it direct, call it TODAY!)
[ Post Reply | Private Reply | To 1 | View Replies]


Navigation: use the links below to view more comments.
first previous 1-2021-4041-6061-66 next last

Disclaimer: Opinions posted on Free Republic are those of the individual posters and do not necessarily represent the opinion of Free Republic or its management. All materials posted herein are protected by copyright law and the exemption for fair use of copyrighted works.

Free Republic
Browse · Search
General/Chat
Topics · Post Article

FreeRepublic, LLC, PO BOX 9771, FRESNO, CA 93794
FreeRepublic.com is powered by software copyright 2000-2008 John Robinson