This is a response to Paul Graham’s recent blog post entitled “Early Work”, which can be read by clicking here. His article is a lengthy detail about the concern for social perception in Silicon Valley, and a call to optimism for an unspecified audience. This article here breaks down how those vain concerns are a self-feeding fire that is destroying the very culture it birthed many years ago, and asks some more difficult questions than “What do others think of me?”
Graham opens with saying, “One of the biggest things holding people back from doing great work is the fear of making something lame.” He then goes on to explain how important it is for the act of making new ideas to have a sense of cultural respect, citing Silicon Valley as a positive example of such culture.
Unfortunately, Silicon Valley is the only place where ideation is given such radical deference, and it will likely stay that way for the near future. Why? Well, it does not work as well as it used to. Even setting aside the churn of impotents with nothing original or novel to contribute, the kinds of new ideas that do come out of SV do not resemble products at all anymore. To be extremely generous, treating SV not as a market force but as a research institution, it is still that many of the best things they make will not be relevant or useful to anyone at current trend speeds for 50 or 100 years. Of course, it could be argued that is fine, but they are not making the necessary work that must exist in between to properly contextualise what they made. Until those other unknown things get made, their work will be forever useless. This is obviously a waste of everyone’s time and energy.
Programming and their languages serve as a wonderful example of how this is all going wrong, and it also shows how the concern for new ideas is mistakenly borne from vanity and social acceptance, a different problem entirely.
The new trend in programming language design is genericism. Genericism is, in essence, meta-programming, as it gives a programmer the tools to write code that generates their final code. This has been a disaster for systems since its advent, and it has steadily been getting worse. Modern C++ and Rust serve as two popular examples where genericism is touted as the “one feature to make all features”, because it lets developers solve their own problems with the language. Of course, it is forgotten that developers are not hired to solve problems with the language; they are hired to use the language to develop a product. As a result, generic programming has wasted untold amounts of man-hours in tech.
The motivation for generic programming is two-fold. The original driver is, as mentioned earlier, sheer vanity. Programmers like to be able to write in increasingly incomprehensible scripts. It makes them feel smart. It is hard to imagine feeling any smarter than when a programming language provides a toolset dedicated to deconstructing the language to such ends. Naturally, this vanity carries over into the social sphere. Programmers look and feel very smart compared to their peers. At the same time, programmers collectively enforce an ethos that prevents any one of them from stepping outside this degenerative paradigm. It is not cool to write some block of data into source manually just because it only gets written once. Everyone else is going to judge the person who does that as incompetent. Really, the incompetent people are the one’s wasting their bosses’ and the public’s time. That is not the person writing out data and getting on with their lives.
Genericism is a very conservative example of something pioneered by Silicon Valley that is inappropriate for the current time. It is also notable in that, since its premature arrival, it has proven destructive instead of constructive. Genericism’s main effect is that it facilitates reuse of code. What good is that with code that cannot be easily verified to behave correctly in the first place? Where is the real need for code reuse in the world today? Is there some great need to reuse veritable garbage? This is not some pithy municipal recycling initiative. It is a solution looking for a problem, and it found one in the social dynamics of ambitious nerds who write code.
The concern for whether or not ideas appear lame is not only what drove SV into the stratosphere in the first place, it is also what is bringing it down in just as big of a hurry today. The vain concern for lame vs. cool ideas is rampant in SV, perpetuated in a left-handed irony through radical open-mindedness. The goals of a language like Rust were clearly related to well-behaved systems. Did it meet those goals? Not really, but in the mean time its developers increasingly obfuscated that into a pseudo-theology about safety. The radical open-mindedness put people in a place where not only were they open to hear all of this insanity at length, but they were even willing to accept that the people with the ideas are not even good at explaining what they mean. It should be no surprise that this has turned out so badly then, for the efficacy of software engineering.
There is no shortage of imagination at hand, whether here or in SV. What is in short supply however is purpose. What is the point? Sure, an idea can have all kinds of implementations and affect the world in untold ways. Is this idea the Higg’s boson, or something more realistic? Honesty with one’s self is paramount here. “What is there to be done with an idea” is the last question for any inventor or innovator to answer, and it needs to be answered. Otherwise, no one will ever have cause to care. How great of an idea was it then, really?
The trouble with these questions is that there are already massive disincentives in place to even ask them. “What, are you doubting the efficacy of this runic spaghetti I just wrote? Are you some kind of idiot? This is obviously incredible.” Nobody will ever give out kudos to ask these questions, if they are not actively shunning the notion already. But nonetheless, they are the questions that need to be asked. The person with more friends than tribal associations will have the easiest time accomplishing this and making something actually great.
Until next time,