←back to thread

225 points todsacerdoti | 2 comments | | HN request time: 0s | source
Show context
yen223 ◴[] No.46184611[source]
The unique thing about estimates in software engineering is that if you do it right, projects should be impossible to estimate!

Tasks that are easiest to estimate are tasks that are predictable, and repetitive. If I ask you how long it'll take to add a new database field, and you've added a new database field 100s of times in the past and each time they take 1 day, your estimate for it is going to be very spot-on.

But in the software world, predictable and repetitive tasks are also the kinds of tasks that are most easily automated, which means the time it takes to perform those tasks should asymptotically approach 0.

But if the predictable tasks take 0 time, how long a project takes will be dominated by the novel, unpredictable parts.

That's why software estimates are very hard to do.

replies(19): >>46184700 #>>46184806 #>>46184873 #>>46184947 #>>46185145 #>>46185627 #>>46185768 #>>46185915 #>>46185952 #>>46186292 #>>46186318 #>>46186774 #>>46187054 #>>46187512 #>>46188101 #>>46189271 #>>46189483 #>>46196595 #>>46201725 #
bpt3 ◴[] No.46185145[source]
If software developers want to be then seriously as a profession, they need to be able to provide and justify estimates for their work.

Everything you said could apply to a new bridge, building, pharmaceutical compound, or anything else that is the result of a process with some known and some unknown steps.

replies(3): >>46185320 #>>46185578 #>>46189911 #
wild_egg ◴[] No.46185578[source]
> Everything you said could apply to a new bridge, building, pharmaceutical compound

"Everything"? So

> predictable and repetitive tasks are also the kinds of tasks that are most easily automated, which means the time it takes to perform those tasks should asymptotically approach 0.

Also applies to bridges? Bridges require a ton of manual human input at every stage of construction, regardless of how predictable and repetitive the work is. With software, we can write software to make those tasks disappear. I've yet to see the bridge that can build itself.

replies(1): >>46185711 #
bpt3 ◴[] No.46185711[source]
1. When you have meaningful software that can build itself (and I'm not talking about the compilation process), let me know.

2. You can estimate the duration of each step of a process, regardless of how much human involvement is required.

replies(1): >>46189927 #
1. kragen ◴[] No.46189927{3}[source]
You should be talking about the compilation process, because that's the thing that puts the cost of non-novel software at near zero, and you can't recompile a bridge for free.

Estimating the duration of each step of a process only works when you know what the steps are.

replies(1): >>46191506 #
2. bpt3 ◴[] No.46191506[source]
Effectively free distribution is what makes the cost of non-novel software so low. Compilation isn't even needed for executables that can be used as is.

That said, implementation is one part of developing software. Design and test are also necessary and can take a non trivial amount of time.

And yes, you need to know what the steps are to build something. If you don't, you don't know what you're doing, which is a bad thing.