There was a discussion of the SR-71 a few months ago that I found excellent. One of the comments took the opposition approach - The SR-71 was an engineering failure, because it leaked fuel, it required tight tolerances and most of the parts were thrown out because of it, etc [1].
I think it's a correct view. I think they're absolutely right about the SR-71. I posted a comment arguing they're wrong, because I think my comment is also a correct view. The SR-71 is the wrong plane for many, many applications. For the few that needed it, it was an absolutely vital tradeoff. Engineering isn't just about optimizing a metric. It's about optimizing many metrics, and finding a set of tradeoffs that fits. It's about finding the point on the line where people are satisfied.
Perhaps - Engineering is about finding the proper fitness functions, and then finding the optimal solution from there. Both are hard problems. Having the right fitness function/requirements gathering is the most screwed up stage of any development, and software developers are no exception, but I feel our industry has gotten away with a lot. Optimizing globally is often an unbounded problem, so finding efficient approximations (like evolutionary algorithms or hill climbing functions) is often the right approach - But that doesn't mean you shouldn't try for the correct one.
What does correct mean? Engineering is about solving problems.
Ultimately it was the right solution for a very specific scope and time. The knowledge gained helped avoid nuclear conflict — an extreme benefit worth a lot of cost.
Once satellites matured, it’s utility was reduced. Once drones were a thing, it’s utility went to zero. Top-secret state of the art stuff in 1990 is on the deck of a mueseum today.
I think it's a correct view. I think they're absolutely right about the SR-71. I posted a comment arguing they're wrong, because I think my comment is also a correct view. The SR-71 is the wrong plane for many, many applications. For the few that needed it, it was an absolutely vital tradeoff. Engineering isn't just about optimizing a metric. It's about optimizing many metrics, and finding a set of tradeoffs that fits. It's about finding the point on the line where people are satisfied.
Perhaps - Engineering is about finding the proper fitness functions, and then finding the optimal solution from there. Both are hard problems. Having the right fitness function/requirements gathering is the most screwed up stage of any development, and software developers are no exception, but I feel our industry has gotten away with a lot. Optimizing globally is often an unbounded problem, so finding efficient approximations (like evolutionary algorithms or hill climbing functions) is often the right approach - But that doesn't mean you shouldn't try for the correct one.
[1]https://news.ycombinator.com/item?id=17675996