100 ms·
Here's the problem, though. Brooks made a certain observation about accidental vs. essential complexity; the author of this post makes another. Brooks made a ce
by pron 7y ago
Here's the problem, though. Brooks made a certain observation about accidental vs. essential complexity; the author of this post makes another. Brooks made a certain prediction based on his observation (diminishing returns in impact to productivity), and many believers in the power of programming languages found his prediction to be too pessimistic at the time (he lists their objections in "No Silver Bullet, Refired"). Only it turned out that his prediction was correct, except it was too optimistic. So if anyone wants to claim that his observation was wrong, they would need to explain why his prediction turned out to be true, while that of those who believed it was wrong turned out false.
In addition, I agree with the author that the biggest contributions to productivity we have seen were, in this order, the availability of open-source libraries and online forums, automated testing, and garbage collection -- all of which have been adopted at rates we'd expect from adaptive traits in an environment with selective pressure. What is conspicuously missing is linguistic features, also in line with Brooks's observation. And yet the author still claims that linguistic features are the silver bullet. At this point this qualifies as an extraordinary claim that requires extraordinary evidence, but I would settle for ordinary evidence, which is also lacking -- strange, considering that a silver bullet, i.e. something with an extreme bottom-line impact, should be easily observable.
- lostmsu 7y agoI am sorry, but the first para of your comment does not make sense. You say "believers" found prediction "too pessimistic". And then you say "except" as if they were wrong, but follow it with "it was too pessimistic, not too optimistic".
- pron 7y agoYou're right. Fixed that. Thanks!
- Certhas 7y agoIn your first paragraph you say that Brooks was right in his prediction. In your second you say you agree with the author that "open-source libraries and online forums, automated testing, and garbage collection" were the biggest gains. But those first two were the counter-examples to Brooks according to the author. So where do you actually disagree with the author? You don't think the gains from these were substantial enough? Also the author makes a clear argument for why functional programming is, from a complexity perspective, something entirely different from mere "linguistic features". And a "silver bullet" according to Brooks is something that might take a decade to show full impact.
- marcosdumay 7y agoA silver bullet can not be something that is itself on the same order of complexity and labor demand that the code it is helping. Those are just a ton of lead bullets, and Brooks does have different predictions for those ones.
- pron 7y ago> But those first two were the counter-examples to Brooks according to the author. They are not. > So where do you actually disagree with the author? You don't think the gains from these were substantial enough? I think that 1. the collective gains might have been substantial but not 10x, and 2. the very ideas proposed by the author as being a silver bullet are not even among those in the first group. > Also the author makes a clear argument for why functional programming is, from a complexity perspective, something entirely different from mere "linguistic features". And a "silver bullet" according to Brooks is something that might take a decade to show full impact. When I was in university, Haskell was all the rage. People were saying how in some years we'll all be programming in it or in a similar language. That was in 1998 or 1999. Functional programming in general has been well known, and taught for many decades. I'm not saying it's particularly bad, and maybe it could even have a small positive effect, but saying it's a 10x silver bullet at this point sounds delusional. If Brooks was wrong and there is a silver bullet, I very much doubt it's something we've known about, and tried again and again, in various forms, for decades.
- alasdair_ 7y agoBrooks defines a silver bullet as having a more than 10X productivity gain. None of "open-source libraries and online forums, automated testing, and garbage collection" have led to a documented 10X improvement in productivity by themselves, so they are not silver bullets.
- noelwelsh 7y agoI would like to see the evidence for any of your claims. As far as I'm aware there is very little evidence for any productivity improvements related to programming practice, mostly due to lack of high quality studies. It's my understanding that CS doesn't really do that kind of study, for a variety of reasons (primarily, I believe, coming from a mathematics not social science culture).
- pron 7y agoFirst of all, empirical verification is not only done through studies. Software is not particle physics, but one of the world's large industries, practiced by millions of practitioners every day. Some techniques/methodologies/practices have spread through the industry like wildfire -- the three I mentioned -- which is at least consistent with the hypothesis that they deliver value; so, to the extent that anything has had a positive effect I believe these three are pretty much the only contenders. It is possible that even I am too optimistic, but there is very unlikely at this point that I'm too pessimistic. Also, the claim that X has not had a large positive effect requires no evidence. It must be assumed true until proven otherwise; that's just the scientific method. The larger the claimed effect and the longer until it is detected -- especially in a selective environment -- the less likely it is real. However, the claim that something has had a big positive bottom-line effect and yet that effect is not detected in a selective environment that is known to have selected beneficial techniques all the time is false with a very high likelihood to the point of being self-contradictory.
- coldtea 7y ago>So if anyone wants to claim that his observation was wrong, they would need to explain why his prediction turned out to be true Well, who said his prediction turned out to be true? Who actually measured the "impact to productivity" in any quantifiable terms? And who re-did that measurement after "No Silver Bullet, Refired" (which was 25+ years ago)?
- pron 7y agoYou don't need to carefully measure to know that no single development has led to a 10x boost. As someone who was working on large software since the late 90s, we're building things today at a similar pace, with the exception that there are many more pre-built components we just grab. Can you point to a technique/tool that has led to a 10x boost?
- hinkley 7y agoPrecision is less valuable when the measurement is larger. The very first piece of software I optimized, I started with “One Mississippi”, moved to a stopwatch app on my PDA, before I ever bothered with instrumentation. Because any idiot can tell 2 seconds from 3, that a boat won’t fit in the garage, or that more than double is way less than ten. Ironically, if Brooks had said 3x instead of 10x, he might still be right and we’d have invested more in measuring things.
- Cladode 7y agoWe've discussed this before [1], but what I've called the ML-ification of programming languages (static types, type inference, higher order functions, exceptions, ...) has been pervasive. Your own Java has been doing quite a bit of this recently. All major software companies (FB, GOOG, MS) have by now retrofitted types to their dynamically typed legacy languages. Even smaller outfits that are based on dynamically typed legacy languages (e.g. Strip, Dropbox) are retro-fitting typing. [1] https://news.ycombinator.com/item?id=22068223 https://news.ycombinator.com/item?id=22068223
- pron 7y ago> what I've called the ML-ification of programming languages (static types, type inference, higher order functions, exceptions, ...) has been pervasive It has been popular in some class of languages that directly influence one another, and less popular in others. If you look at the software world in, say, 1995, I think a larger precentage of programming was done in typed languages than today. The question of "to type or not to type" wasn't on anyone's mind because virtually all languages used for serious stuff were typed. In any event, even if there is an MLification in important corners of the industry, it's still nowhere near a silver-bullet level of adoption. There is, I agree, a return to the popularity of typed languages, but it hasn't yet reached the level it was before 2000.
- iainmerrick 7y agoHmm, I’m not sure you’re right about the historical trends. As I see it, the static typing battle has been going on forever. Each style has been popular in certain areas but neither has ever been completely dominant. Javascript, Python and Ruby are the big dynamic languages today. But you can go back as far as you like, to when languages like Perl, TCL, Lisp and BASIC were big. There have always been dynamic languages. Static languages have gotten more robustly type-safe over time (even today’s C is much safer than K&R C). But apart from that shift, it seems to me that the static vs dynamic landscape has been much the same for decades.
- rsclient 7y ago
- bobm_kite9 7y agoI wrote something similar several years ago: https://riskfirst.org/Silver-Bullets https://riskfirst.org/Silver-Bullets Even if you aren’t on-board with the ones this article mentions, there are a bunch more in this list.. and it could probably do with a refresh soon