[1] If you're going to try to say that what is "unforeseen" is relative it's not that relative, you can get an independent committee of doctors and provide a percentage based on their experience how much often that event is expected in that situation
Software development is inherently nonrepetitive and therefore unpredictable.
Healthcare is much closer to auto repair than software development.
Sure, on a car that's running that you can't turn off, with parts you can't replace, a maintenance history you can't see, and an ECU that actively misrepresents what's going on.
That is a dangerously naive view of software. Even apps that look like simple CRUD end up riddled with specialized business logic. Apps which truly are a few screens of simple CRUD end up as spreadsheets or Microsoft Access. We've gotten pretty good at not reinventing wheels.
Say what you will about the challenge of it, doctoring is fundamentally procedural and repetitive. Patients don't really show up with whole new undiscovered diseases anymore.
O'boy. What doctor do you go to?
Rolled ankle
100% [of patients get charged]: Office visit: $50
58%: X-rays: $55 - $95
22%: boot/cast: $240
3%: surgery: ??
<1%: other: ??
This would't work for all symptoms, but it would work for a lot. But no treatment center does this.""" When you are estimating tasks that are done over and over, you can look to your historical execution time for insights. We average chopping X logs per hour.
If I hand you a Rubik's Cube and ask you to tell me how long it will take you to solve it...what is your answer going to be? If you've done it before you might have an idea. Maybe you just kept plugging away until you finally solved it? Maybe you've watched one of those videos about how to solve a Rubik's Cube, have practiced it and are confident that you could do it in 3 minutes flat? Maybe you have no idea?
Complexity and experience will dictate your answers, but then those estimates still only reflect your perception of the task...not everyone else on your team.
At best those numbers are a guess.
Every step in a software project is solving problems. You don't know how long it will take to solve the problem. You don't know how many new problems you might run into along the way. Can the new problems be solved by you or do they need to be solved by other people? """
[1]: https://www.brightball.com/articles/reality-driven-developme...