Live data from Hacker News

Software Estimation Is a Losing Game (2014)

rclayton.silvrback.com

41–50 of 50 posts

Re: Software Estimation Is a Losing Game (2014)

#41
post #21
post #8

I can estimate some tasks very accurately. I know that adding this new flag to my system will take a day. Other tasks I can accurately say I don't know how long they'll take. This new feature is... a couple of weeks? This new application is... a few months? I can roughly guess (estimate!) but there's a wide certainty margin. That uncertainty is never built into the mathematical model used by project managers, which i…

So, small tasks you CAN estimate, large ones not so much. Perhaps the technique to use is right in front of you: decomposition.

On a small task, everything is small. The percent error can be totally gross (not precise at all) and not have a meaningful impact overall. A large error on small is just a multiplier of small. It's all small.

When you decompose a larger task into smaller ones, that's all still true for each of the smaller ones, right?

But you must remember to add the errors! And that is precisely why overall confidence may not likely improve with decomposition vs. an aggregate, or coarse, high level estimate of the whole thing.

And this is true for more than software. Why?

New tasks can be broken down into two coarse buckets: done before and novel.

Novel things really are novel! It's important to recognize this case and qualify it. Progress might look like:

week 1 - 10 percent done, week 2 - 10 percent done, week 3 - 15 percent done, week 4 - 50 percent done! Yes!, week 5 - 5 percent done... everybody take a drink, week 6 - 40 percent done,

etc...

Because it's novel, there are new dynamics in play, and even the best planning may not account for, and actually usually does not account for, things that just come up and that must be dealt with.

For the done before case, it's better as a lot is known, but there are still many factors out of the team control. Updates, changes, regressions, unfound bugs, all contribute to variance. The more the organization completely owns, the less this may be true, but it's always somewhat true.

The pragmatic person might classify everything as having some percentage of novel, and break it down into known novel and unknown, "it just hit us!" type novel and go from there and likely be better off when having to manage expectations.

Another way to think of this, depending on it being software or something else, is production vs "R&D" and the research and development part just isn't cog / production like. Time and materials estimates, if they are even given, must be considered accordingly.

If they are not, expectations do not match realities, and now there is a management and potentially a funding problem in addition to the primary problem needing a solution.

Re: Software Estimation Is a Losing Game (2014)

#42
post #38

I'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/timelines.

If I have any past projects that are good indications of my current work, it means I'm stuck doing the same things over and over again.

I don't think building on your past successes and mistakes and using the raw data to improve your future endeavors should be considered stuck doing the same thing over and over again. Surely there will be some overlap of knowledge with each project you take on... Or do you only go for projects with completely foreign problems to anything you've ever worked on before?

Re: Software Estimation Is a Losing Game (2014)

#43
post #29

If I'm ever asked for an estimate, it's after the project schedule has already been set in stone. 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.

I really wish more articles on software engineering practices would at least acknowledge that this is the reality for a huge number of developers in the real world. I just can't take them seriously without it. If your new-fangled-to-you development ideology starts by assuming a fundamental level of congenial cooperation between different departments of your organization, then you've designed your system for a fairy-t…

I think the problem is that software process engineering does not really include the skills necessary for transforming organizations. To be honest, I don't know of any really good software process person who thinks that a process will do anything on its own. The processes and practices are only half of the battle.

It gets even more complicated because, at least in my experience, software processes are really subtle and it is extremely easy to appear to be "doing the right thing", while at the same time failing miserably at it. Throw in the power politics, the bad actors who don't really care if something is successful or not (as long as they can extract money from it), and naive developers who are absolutely sure they know what to do but really don't, and it makes it very difficult.

It is difficult to be the one instigating process change. Such a role is fraught with danger. You will be attacked by the power politics people. You will be attacked by the money extracting people. You will be attacked by the naive developers who think they know better than you. You almost certainly will not be thanked by anyone (except very far down the road if you somehow manage to succeed... and even then probably nobody will remember it was you who started the ball rolling). And finally, because it is incredibly hard and the necessary skills are very difficult to acquire, you will almost certainly fail many, many times before you ever succeed.

Even worse, it's not something you can write down and say "Do X,Y, and Z and everyone will be a happy family working hard to ensure success". It is something that requires dedication to understanding every single individual who is involved in the development. You have to sit and listen to them, understand their goals and help them meet those goals (even if they aren't "Make a successful software product" and even if you personally think the person is unbearably awful). You have to devote yourself to finding common ground and bringing everyone together.

Don't get me wrong. The processes and practices are crucial to a successful organizational change. These practices, if well chosen, will support you as you influence, cajole, flatter, criticize and motivate the people around you. It is next to an impossible job and without these tools, you will almost certainly fail.

It is unfortunate that people dramatically underestimate the difficulty of cultural change in an organization. They write about the easy bits (the processes that support the change) and sweep the hard bits under the carpet. To be fair, I'm not sure what you would say that wouldn't sound like "business BS" to most engineers, though.

Anyway, most organizations do not have many people conscientious (possibly read "stupid") enough to attempt real, lasting cultural change. The vast majority that do try are often incredibly naive and lack all of the basic skills necessary to be successful. The end result is unfortunately all too predictable.

To anyone who is really serious about building an amazing team, I encourage you to suffer the slings and arrows of outrageous management and to work on the people skills that will eventually bring you what you want. It sucks for a very long time, but as you get a better understanding, it can get better.

Re: Software Estimation Is a Losing Game (2014)

#44
post #19

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't possibly address them all. If you can't provide a credible estimate for a piece of work, you either a) aren't very good, b) don't properly understand the work to be done, or c) perceive some aspect of t…

The problem is that we still don't have the tools or language to specify software projects with the same degree of precision that other engineering disciplines do. Give me a spec as complete as precise and as a blueprint for a building or a bridge and I can give you a pretty good estimate. What I get instead is a stack of vaguely worded "user stories" and, if I'm lucky, some wireframes that will invariable wind up lo…

> Give me a spec as complete as precise and as a blueprint for a building or a bridge and I can give you a pretty good estimate.

I would argue that that would in fact be the source code for the program!

I know that sounds flippant, but - civil engineers and architects will correct me I'm sure - a blueprint to me is a set of pretty clear and hopefully unambiguous instructions, just not necessarily in a chronologically ordered list format. To torture the metaphor even further: the act of building the building from the blueprints is the same as running the program.

The key difference is that in the case of building a computer program the hard part is writing the instructions and in the case of building a building the hard part is execution of the instructions. Building designers have the advantage of centuries (millennia, even) of knowledge and some pretty hard limitations set by physics. Money and time aside, computer program designers are more or less limited by hardware and imagination.

I really do hope someday programmers will look back at conversations like this and think not that their counterparts of the past just needed to deal with it and be more professional but that we just didn't know any better way, yet.

Re: Software Estimation Is a Losing Game (2014)

#45

Earlier quoted context omitted.

Creativity and joy are fantastic qualities that are difficult to quantify on an accountant's spreadsheet. Clients have to be able to budget sufficiently for project work, and the only way they can do that is with an estimate. This is how business is done. "Uh..we'll send you a bill when we're done for...like...whatever it costs. I guess?" Isn't going to go over well when responding to a potential clients RFP.

Of course, given the historical fact that traditional project management doesn't work and the estimates are a farce, why should we happily continue doing this cargo cult uselessness?

Because "Uh..we'll send you a bill when we're done for...like...whatever it costs. I guess?" Isn't going to go over well when responding to a potential clients RFP. It's that or give them an estimate, unless you have a 3rd way?

Also, how did you come to the conclusion that "project management doesn't work" is a historical fact?

Also also, if your teams' estimates are a farce you might consider starting to track time spent on projects and build up a base of real world numbers you can use as guidelines for future estimates. It worked wonders for us.

Re: Software Estimation Is a Losing Game (2014)

#46

Earlier quoted context omitted.

Of course, given the historical fact that traditional project management doesn't work and the estimates are a farce, why should we happily continue doing this cargo cult uselessness?

They're not useless. Except sometimes they are. I have to give estimates all the time. They're estimates, but they're in the ballpark. But recently, I had to give an estimate for porting some software to a new environment. I knew it was going to present me with a bunch of obstacles, and I didn't know what the obstacles were, or how long each one would take. I didn't even know how many obstacles there would be. I didn…

When we run into stuff like that at work we budget a set number of hours to breaking the problem up into chunks, researching and prototyping the sticky parts, and then using that information to put together a realistic estimate. We call it a "planning project".

Re: Software Estimation Is a Losing Game (2014)

#47

Earlier quoted context omitted.

They're not useless. Except sometimes they are. I have to give estimates all the time. They're estimates, but they're in the ballpark. But recently, I had to give an estimate for porting some software to a new environment. I knew it was going to present me with a bunch of obstacles, and I didn't know what the obstacles were, or how long each one would take. I didn't even know how many obstacles there would be. I didn…

When we run into stuff like that at work we budget a set number of hours to breaking the problem up into chunks, researching and prototyping the sticky parts, and then using that information to put together a realistic estimate. We call it a "planning project".

That's sensible - and is a way to lose bad clients (not itself a problem).

I am not saying project mgmt does not work, I am saying the plan the task, do the task approach is not appropriate for software development, at a given level of granularity.

If you ever watch Grand Designs, they start with a design, a plan, a schedule, and it all goes out the window ten minutes later. This is not that being on top of the process will not give you control, but that relying on estimates and plans as a means of control is worthless - and that's for something people have been doing for hundreds of years

Re: Software Estimation Is a Losing Game (2014)

#48
post #7

Pardon my French, but it's a load of bollocks. Sure, I hate estimating and I'm bad at it, but I've worked with many others who were better than me at it and did consistently deliver what promised, when they promised it. And yes I'd much rather just sit and contemplate and re-re-rework 'the design' and be all-important about 'it's done when it's done' - but I fully well understand that any customer will just fire me a…

>Building construction is also fraught with unexpected events and project management issues etc., but I'd laugh any building who would propose that I just keep paying them until it's done, In practice, though, this is exactly how building construction and civil engineering works. After all, if the bridge is half-built, what's the customer going to do? Walk away? When was the last time you heard about any large civil…

>After all, if the bridge is half-built, what's the customer going to do?

Maybe sue you for liquidated damages whilst pursuing all other possible avenues in the contract for claiming against a breach. Maybe file an insurance claim, and weather the mobilization costs for another contractor to take over your scope.

But before any of that you first have to estimate the potential legal costs and determine what's going to work more in your favor. :)

Re: Software Estimation Is a Losing Game (2014)

#49
Open article Ctrl+f "Risk Management" "Zero results" Ctrl+f "Risk" "Zero results"

Now, I don'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/framework a little scary.

Re: Software Estimation Is a Losing Game (2014)

#50
post #42

Earlier quoted context omitted.

If I have any past projects that are good indications of my current work, it means I'm stuck doing the same things over and over again.

I don't think building on your past successes and mistakes and using the raw data to improve your future endeavors should be considered stuck doing the same thing over and over again. Surely there will be some overlap of knowledge with each project you take on... Or do you only go for projects with completely foreign problems to anything you've ever worked on before?

I've never worked on two projects that did the same things other than "let people login", which I usually have settled in the project before anyone even starts talking about estimates. I've never worked on two projects with even the same reporting frameworks. Hell, only a few of them have even been in the same application framework.

I've never worked on two projects with the same team. There's as much learning about how to work with new, particular individuals as there is to learn about what the client needs.

Insomuch that anything has remained constant, it was pretty much just the underlying programming language, but even that has changed dramatically over the years, as well as opinions on the best way in which one should write it. Certainly my understanding of it has drastically improved.

And I'm not exactly sure what you're suggesting by "raw data". What sort of data? Collected and stored how? Reported on in what ways?

Post reply on HN