3 ms·
Say I give you a box with 1,000 puzzles written on sheets of paper, and I ask you to estimate how long it will take to solve all the puzzles. You take out a sma
by feoren 4y ago
Say I give you a box with 1,000 puzzles written on sheets of paper, and I ask you to estimate how long it will take to solve all the puzzles. You take out a small random sample and time how long it takes you to solve each, and then you develop a cost distribution from that, scale it up to 1000, add a healthy 2-sigma buffer on top, and tell me you're 95% certain you can solve all the puzzles within that time. You've accomplished your step D. Oops, on one of the papers was the Collatz Conjecture, so you're fucked, I'm fucked, everyone's fucked, everyone's unhappy, and you get fired.
Your steps work great in an idealized perfect world where everything is simple, and they are absolutely awful, bloated, and ineffective in the real world. The perception that this is what engineers should be contributes to why a huge percentage of real-world projects go over-budget by triple-digit percentages, get cancelled entirely, or completely fail to live up to their expectations.
It's quite the other way around. If you're doing something new, you just don't know everything yet, so you simply cannot do this monotonous waterfall method. You can only do this with well-known problems that have well-established solutions. If you define an engineer as someone who is producing a practical solution to a problem that has never been solved before, at least in this exact way (on this site, in this heat, at that speed, at this scale, within that organization, etc.) then you have it exactly backwards -- anyone who follows this process is a technician, solving a problem by following an SOP or a textbook or a WikiHow article. Engineers realize this is all just dumb bullshit they have to do that takes their time away from actually exploring, understanding, and ultimately solving the (probably different, by this point) problem.