@civikminded
Re: not 'elegant' or 'cerebral' enough
This attitude in a nutshell illustrates why the simple/elegant languages haven't succeeded. It's because 'elegant' is considered irrelevant, for one thing. And I understand why it is. Nobody who pays us understands a wit of it, and so doesn't care whether it's spaghetti code or not. However, in my experience elegance = clarity = less mental load. This leads to greater maintainability and fewer bugs.
As to 'cerebral', the point of it all is not to make things harder, but to add clarity to complexity. But if you insist, I think this quote from Dijkstra serves as a good rebuke:
The ongoing process of becoming more and more an amathematical society is more an American specialty than anything else. (It is also a tragic accident of history.)
The idea of a formal design discipline is often rejected on account of vague cultural/philosophical condemnations such as ?stifling creativity?; this is more pronounced in the Anglo-Saxon world where a romantic vision of ?the humanities? in fact idealizes technical incompetence. Another aspect of that same trait is the cult of iterative design.
Industry suffers from the managerial dogma that for the sake of stability and continuity, the company should be independent of the competence of individual employees. Hence industry rejects any methodological proposal that can be viewed as making intellectual demands on its work force. -- from "Computing Science: Achievements and Challenges" at
http://userweb.cs.utexas.edu/~EWD/transcriptions/EWD12xx/EWD1284.html@scotth_z
The basic story I've heard over and over again from people in the field is that it used to be the case that a few brilliant software engineers could create an elegant solution, and it would work from a business perspective, at least for a time. The problem came when those people left, because people find it difficult to find programmers who are equally capable--quality varies. So what often ended up happening is the people who replace those who leave just don't get what the former engineers were driving at, and so they end up rewriting it in a lower quality architecture that's messy and kludgy, but the architecture is easier for them to understand. So eventually what companies realized is that there are more low-quality engineers than there are high-quality ones, and if you're going to commoditize the field, just go with the lowest-common-denominator. Don't bother catering to the high-quality engineers ("And if you do hire them, stick them with the low-quality stuff, because they can deal with it."), because their ideas are practically non-transferrable for all practical purposes. Now, I don't think it has to be this way. It's just that skill level is so dramatically uneven.
What I find frustrating is no one's asking, "How come there aren't more high-quality engineers?" or "How do we create more high-quality engineers?" The preference is for shlub, because the assumption from hiring experience has been "That's just the way it is," and all most do is make excuses for it. You don't find this in mature engineering disciplines. There is a high expectation of quality not least because if that isn't the goal there's a high probability people will be maimed and killed. I suppose there's some allowance for it in software because in most worst cases what happens is the program crashes, the user's data gets corrupted or lost, or some money gets misallocated. It's upsetting or annoying, but not life-threatening, and so people go on with the expectation, "Oh, that new-fangled technology. It's a little unreliable," but people put up with it. The exceptions of course being if you're talking about medical applications, or controls for aircraft or something like that, in which case liability comes into play.
It's odd to me that expectations are not higher.