4 ms·
As usual, read this as "what's popular in Computer Science" more than "what's worked". Lots of things listed in the Maybe and No category (both the original tab
by tikhonj 11y ago
As usual, read this as "what's popular in Computer Science" more than "what's worked". Lots of things listed in the Maybe and No category (both the original table and in the article) do work but aren't super-popular and some things listed as "Yes" like bitmaps and subtypes are bad but ubiquitous.
Apart from my usual spiel on how popularity is not particularly meaningful[1], this is also an example of a fascinating idea from poker: "results oriented thinking"[2]. It's a terrible name, but a crucial concept: you can do everything right and still fail or you can do things wrong and still succeed. In Poker it means you can bet correctly and still lose to the luck of the draw and vice-versa; you can't generalize from a single example or even a handful of examples. Of course, this is exactly what so many people in industry do. Results oriented thinking is endemic in practical software engineering.
We even have our own name for it, or at least part of it: the IBM effect. "Nobody ever got fired for buying IBM."[3] If you do the same old thing and fail, well, things happen. If you try something new and fail, well that thing you tried has to be terrible! Never do it again! Of course, in reality, those "things that happen" still dominate, but that's not how people make decisions. Then it's all magnified through institutional memory and "common wisdom".
It's also magnified because there's a certain kind of personality that values pragmatism above all else and categorically opposes anything new, idealistic or academic. (To be fair, pretty much the opposite of me :P.) The tricky thing is that they have a point... some of the time. But they'll use any sort of failure to rationalize their view, and because decision makers tend to be so results-oriented this sort of rationalization has an outsized influence.
Putting this all together both this article and Butler Lampson's original argument tell us a lot more about the social dynamics of software engineering than they do about computer science. There are still interesting insights to be had, but certainly not the ones the article is arguing for.
[1]: https://news.ycombinator.com/item?id=10567962 https://news.ycombinator.com/item?id=10567962
[2]: Unfortunately, I haven't found a single good description of "results oriented thinking" as the phrase is used here. This blog post is okay, but the first part plays dubious semantic games with words that you may as well ignore: http://randomdirections.com/why-being-results-oriented-is-actually-bad/ http://randomdirections.com/why-being-results-oriented-is-ac...
[3]: Hilariously, this was the first Google result for the phrase: https://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt https://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt
- pron 11y ago> As usual, read this as "what's popular in Computer Science" more than "what's worked" I don't think so. By "worked" he means that the benefits have been very, very clearly demonstrated to be very significant and widely applicable. And "clearly demonstrated" means their impact has been shown in numerous production settings. > Lots of things listed in the Maybe and No category (both the original table and in the article) do work but aren't super-popular Not in the sense he means, which doesn't mean popular, but rather "clearly demonstrated to provide great benefits in the field with wide applicability". > and some things listed as "Yes" like bitmaps and subtypes are bad but ubiquitous. I don't know what you mean by "bad". If by bad you mean "have some serious drawbacks" or "can be possibly replaced by something better", then sure, but that doesn't mean they haven't worked. If by "bad" you mean that their benefits haven't been clearly demonstrated, then I'd disagree about your conclusion on bitmaps and subtypes. > It's also magnified because there's a certain kind of personality that values pragmatism above all else and categorically opposes anything new, idealistic or academic. Or is simply wary of incorporating ideas that haven't been sufficiently proven into products with billions of dollars on the line. OTOH, there is another kind of personality that confuses pure research with battle-tested ideas, and think that something that is shown to have benefits in research settings will surely have those benefits in the field without worse side-effects. > decision makers tend to be so results-oriented Shouldn't they be? Would you rather the people making the decisions on the software used to run your power stations, airports, banks and government be embrace "new" and be "idealistic or academic"? Research is research, and the industry is the industry, and ideas have a very, very long maturation process of going from the research stage to the "demonstrably works at a large scale in the industry" phase. That's a good thing, and that's what it's like in all disciplines. Software is rather unique in that it has people who think this shouldn't be the case. Thank God they're not the decision makers. > We even have our own name for it, or at least part of it: the IBM effect And now, ironically, you're "spreading FUD" against an approach that is simply skeptical of things touted to be "the next big thing". Some of us have been in this industry long enough to know that most great ideas turn out not to be. That's not "nobody ever got fired for buying IBM", but "let's not bet billions of dollars and possibly people's lives on the flavor of the week just yet until we gather more evidence".
- 11y ago