4 ms·
I'm sympathetic to your point of view, but Big Design Up Front never works, in my experience. It's impossible to anticipate future uses for tech that we current
by monodeldiablo 10y ago
I'm sympathetic to your point of view, but Big Design Up Front never works, in my experience. It's impossible to anticipate future uses for tech that we currently consider vestigial, unnecessary, or inefficient.
Mainframes and terminals were the future until PC displaced them, until the web came along, until mobile and cloud computing smashed it all and brought us full circle (sorta). Designing to optimize the full stack for one of these iterations would have made the transition to the next phase much harder. Fewer people than you'd think foresaw the IoT, FPGA, Arduino, processors-in-everything revolution currently underway back in the early 2000s, when Moore's Law was still gospel.
In the end, I take a sort of Buddhist view toward the fuckedupedness of software: It sucks, but it's all we've got and must be accepted on its own terms. Find a strategy that works for you and that minimizes global pain. Do no harm. Attempting to force your way into Nirvana and out of Samsara only wedges you deeper inside it.
- collyw 10y ago"Big Design Up Front never works" Seems to work for NASA and others doing way more complex projects than I am .
- monodeldiablo 10y agoThey have much larger budgets and tighter tolerances than all but a few domains. Nevertheless, their approach is more modular than you think. They do a lot of designing to interfaces, especially where the necessary tech doesn't currently exist. EDIT: Forgot to mention how little engineering (relatively speaking) NASA does these days. They farm a lot of projects and sub-projects out to contractors, devoting most of their engineering expertise to the requirements phase. Now imagine if your clients spent that kind of time communicating upfront! Software would be a lot better across the board.
- pjc50 10y agoAnd yet people praise SpaceX for doing much better and cheaper with their iterative refinement. BDUF can work if you have a single organisation with a single stable set of requirements that's reasonably compact. The Kennedy "man on the moon" speech was such an example. Where it falls down is trying to meet the needs to the 7 billion distinct human individuals, which are inevitably vague and shifting and change in response to publication of software.
- braveo 10y agoSpaceX also doesn't have the track record NASA does, and cannot be compared. In 50 years when they've been working alongside each other, maybe, but not right now.
- greglindahl 10y agoNASA has also used iterative refinement in the past.
- gozur88 10y agoBut the cost is enormous and flexibility nonexistent.
- pif 10y agoIn general, it works if you decide what you want before starting the development. I'm not talking about knowing what you want: I'm talking about deciding what you want. Much like buying a car: no way you can think to all the possible detailed preferences of yours before choosing a new car, but when you sign the check you are voluntarily giving up any further discussion.
- TeMPOraL 10y agoAnd then we end up with industry that continuously rediscovers and rebrands shittier versions of solutions that were already created in the 70s. The problem with BDUF is not that you can't predict things well in advance. Indeed, you can, as it has been done countless times in the past in our industry. The problem is, doing the Right Thing doesn't make you the first to market, doesn't make your solution the cheapest and the most virally spreading. Hence we end up building towers of shit instead.
- monodeldiablo 10y ago> The problem is, doing the Right Thing doesn't make you the first to market, doesn't make your solution the cheapest and the most virally spreading. There's definitely that, yes. But I'd still contend that we're also crappy at predicting trends and future uses of technology. Yes, some people have predicted things well in advance. Some have done so accurately. Some have done so consistently. But none have been both accurate and consistent. It's maddeningly difficult, even at short time scales, and second-order effects quickly take over. The same applies to even tiny projects. BDUF just has too much in common with communism: They're both forms of well-intentioned central planning, and they're both symptoms of the hubris that makes each of us think (s)he is more of an expert than we really are. And they both break down when unforeseen forces slam into their base assumptions. I hear you. I really do. I've BDUF'ed my fair share of systems, and witnessed countless other people do the same. It just never works out. There's a damn good reason that "Worse is Better" keeps winning: It's got serious evolutionary advantages over BDUF.