Live data from Hacker News

Why Development Teams Struggle to Deliver on Time, on Budget, or at All

7pace.com

81–90 of 239 posts

Re: Why Development Teams Struggle to Deliver on Time, on Budget, or at All

#81

The reason that planning software development is bullshit is that you simply cannot know all the little details because in software development you're always doing something you've never done before (because if you did you could just copy-paste your previous work). To use the 'going to the supermarket for milk' example. I could make a fairly accurate estimate for that because I've gone to the supermarket hundreds of…

> Development time estimation, and every methodology that attempts it (I'm looking at you, Scrum), are little more than desperate attempts by managers to feel in control and relevant.

More charitably, they're an opportunity to introduce system 2 slow thinking on the team.

There are certainly novel engineering problems that simply won't yield to estimation, but there are also lots of well-solved problems that will. Managing the latter isn't desperate, its just sound practice toward reproducible results (ideally deployed only where reproducible results create value).

Re: Why Development Teams Struggle to Deliver on Time, on Budget, or at All

#82

The reason that planning software development is bullshit is that you simply cannot know all the little details because in software development you're always doing something you've never done before (because if you did you could just copy-paste your previous work). To use the 'going to the supermarket for milk' example. I could make a fairly accurate estimate for that because I've gone to the supermarket hundreds of…

I completely agree. I'm lucky to work in an environment where management aren't too fussy about sticking to deadlines, as long as progress is pretty decent. It's a nice way of working, I use system 1 for estimates which generally works pretty well and saves time needlessly trying to pin down an exact eta. On the whole our team delivers a lot of features on time and generally doesn't go over 2 weeks late for anything, even though it often wouldn't matter if we did go over.

I appreciate that sometimes hard deadlines are necessary but if I can I'll always avoid them.

Re: Why Development Teams Struggle to Deliver on Time, on Budget, or at All

#83
post #7

In my experience talking to hundreds of software engineering managers, running a software project management business, and being involved on software dev teams for 20+ years, there are two reasons why teams don’t ship or ship poor software. 1. Poor engineering planning. The way to do this well is to break down a feature until they’re at about half-day sizes tasks. Identify any obvious risks or ambiguities with the te…

> The way to do this well is to break down a feature until they’re at about half-day sizes tasks.

You're identifying what the outcome of good planning looks like, not how it's done. What prevents this is that teams read "agile" as "make it up as you go along," when in reality if you're spending more than 10 minutes discussing a feature, make planning that feature a sprint task.

> In my experience most deadlines are movable and a strong PM/Eng team can convince management to push a deadline back.

It's not generally the team in that room discussing those deadlines, though, it's software development manager and product manager. The worst managers are software engineers who get promoted to management, and when they get into those meetings they look at their shoes and are railroaded by upper management.

You really do need a manager who has the intestinal fortitude to go to bat for you.

Re: Why Development Teams Struggle to Deliver on Time, on Budget, or at All

#84

The reason that planning software development is bullshit is that you simply cannot know all the little details because in software development you're always doing something you've never done before (because if you did you could just copy-paste your previous work). To use the 'going to the supermarket for milk' example. I could make a fairly accurate estimate for that because I've gone to the supermarket hundreds of…

A lot of people have been praising this "estimates based on data and rigorous planning" for decades. Steve McConnell wrote a whole book about it (Software Estimation: Demystifying the Black Art).

It works only very special circumstances: when the task can be very well defined because it has been done a lot of times before and the people doing the task are very experienced on it.

But the caveat is that if you are doing such a task you're not really doing any innovation at all. Actually, if it is so well defined and trivial it should probably already have been automated.

True innovation must have a lot of unknowns, it isn't innovation without it.

Re: Why Development Teams Struggle to Deliver on Time, on Budget, or at All

#85
Another reason I'd like to add regarding why so many software projects fail is a really basic one, but is ultimately the reason why most software projects fail.

The budget isn't there.

For many, building software is a race to the bottom. I've worked at countless places, from "Wagile" places that run spiral methodologies mixed with agile, to fully agile agencies that deliver well but crumble the second a client gets pissy about something taking longer/costing more than it should.

In my view, the most basic problem in software is that we're committing to too much for too little, which is why I see development to be similar to working in a skilled trade. If you pay good money for a renderer, you'll get the outside of your house rendered nicely with good advice on what to use, what looks good. They'll also tell you how long it'll take, and if you say you want it sooner they'll tell you it'll either cost a lot more to get more manpower, or they'll decline the job. If you are cheap about it, you'll probably get someone that'll take longer than expected, will make a mess of the job, and you'll be left with something you're not entirely happy with.

A solid methodology will probably help with delivering software on time and on budget, but if you are unrealistic with either metric then it doesn't matter what methodology you use. You'll take liberties with it, decide that it's bullshit, and continue to cowboy your way towards a duct-taped mess of a solution.

It's something few want to talk about, probably because there isn't really a solution to it outside of:

* Paying a premium for a development team with a track record of recent success

* Having people that know the full software lifecycle be involved in all parts of the process

* Actually embracing the fact that when requirements change, to the point where budgets and timescales are flexible.

* Not joining the race to the bottom.

Re: Why Development Teams Struggle to Deliver on Time, on Budget, or at All

#86

So the author of this has a vested interest in their "solution" being the correct one, but I fundamentally disagree with it. I agree with their hypothesis that we are bad at planning/estimating, but the solution is not spending more time on it, but rather less. Firstly I really like this humorous look at the problem: https://www.quora.com/Why-are-software-development-task-esti... You cannot estimate what you don't kn…

great read. thanks for sharing

Re: Why Development Teams Struggle to Deliver on Time, on Budget, or at All

#88

The reason that planning software development is bullshit is that you simply cannot know all the little details because in software development you're always doing something you've never done before (because if you did you could just copy-paste your previous work). To use the 'going to the supermarket for milk' example. I could make a fairly accurate estimate for that because I've gone to the supermarket hundreds of…

This is being a little extremist, no? I'm consistently asked to give estimates, and I mostly give estimates that are accurate within sane expectations.

I think what's missing here is that I can predict how long something is going to take when I talk with the managers/feature-planners about what the feature is. If I feel I have a solid understanding of the requirements, which pieces of code it'll touch, etc - then I can give a reasonable estimate.

Now, the bigger the project the more difficult this becomes. Details I've missed is always a possibility, and that just stacks up the bigger the project is.

So I think being specific in this type of discussion is really important. A feature that's going to take 6 months to implement is insanely tough to estimate, and very likely to have a wrong estimate. A feature that takes a week can pretty reliably be accurate within a day or two, in my experience.

I'm not defending management in these sorts of things.. I think it's our job to not only give estimates, but include understanding about the expected validity of that estimate.

All estimates are worth while though, your post makes it sound like they're not. You tell me you need a feature that's going to take 12+ months? It's so hard to predict that it's laughably wrong.. but that's still insanely useful. Why? Because now the management knows it's highly unlikely to be a 1 week, 1 month, w/e feature. It's big.

Re: Why Development Teams Struggle to Deliver on Time, on Budget, or at All

#89
post #7

In my experience talking to hundreds of software engineering managers, running a software project management business, and being involved on software dev teams for 20+ years, there are two reasons why teams don’t ship or ship poor software. 1. Poor engineering planning. The way to do this well is to break down a feature until they’re at about half-day sizes tasks. Identify any obvious risks or ambiguities with the te…

I have to respectfully disagree with #1. Software is hard because we 'don't know the unknowns'. It's not like building a building - if it were, we could just schedule it down to each detail. We would be still all be using 'waterfall'. If we knew how to write the module, we'd just do it, test it, and voila. But most of our time is spent 'figuring stuff out'. Oh, product has asked for a tiny change (support a specific…

It's not like building a building - if it were, we could just schedule it down to each detail. We would be still all be using 'waterfall'.

I hear that it doesn't work that well for buildings either, as you end up with people in the field detecting bugs in the plans and having to improvise fixes without input from the designers.

Re: Why Development Teams Struggle to Deliver on Time, on Budget, or at All

#90
I really wish people would put more effort into making sure people don't waste time instead of endlessly trying to make development more predictable. In my company there are a ton of inefficient processes and other things limiting productivity (noise, teams spread out over entire building, developers having to do work that would better be done by qualified tech writers, lack of adequate onboarding, lack of decision making constant changes). Instead of addressing theae management keeps on doing status meetings and planning.

I think they would be much better off if they made sure that their people have optimal productivity and then see how quickly things can be done. I guess that is exactly what scrum originally tried to address...

Post reply on HN