Recently there have been heated complaints that the culture of programming unfairly excludes some groups. They want to join the programming elite and get a spot at the startup trough. More power to them. I really have nothing to say about this issue because I think it is a distraction from a bigger issue with far greater importance to society. The bigger injustice is that programming has become an elite: a vocation requiring rare talents, grueling training, and total dedication. The way things are today if you want to be a programmer you had best be someone like me on the autism spectrum who has spent their entire life mastering vast realms of arcane knowledge — and enjoys it. Normal humans are effectively excluded from developing software. The real injustice of developer inequality is that it doesn’t have to be this way.



In the old days there was a respected profession of application programming. There was a minority of elite system programmers who built infrastructure and tools that empowered the majority of application programmers. Our goal was to allow regular people without extensive training to easily and quickly build useful software. This was the spirit of languages like COBOL, Visual Basic, and HyperCard. Elegant tools for a more civilized age. Before the dark times… before the web.

The civilized platforms controlled by large companies who invested in developer tools are all gone, strangled by the Darwinian jungle of the web. It is hard for programmers who have only known the web to realize how incredibly awful it is compared to past platforms. The web is just an enormous stack of kluges upon hacks upon misbegotten designs. This Archaeology of Errors is no place for the application programmers of old: it takes a skilled programmer with years of experience just to build simple applications on today’s web. What a waste. Twenty years of expediency has led the web into a technical debt crisis. To my shame, we are OK with that.

These are indeed dark times. The dominant programming platform is in technical debt bankruptcy. Programmer culture has been seduced by the dark side of startup success into a paroxysm of self-aggrandizement. I see only one glimmer of hope: the status quo is a complacent fragile system ripe for disruption.

Imagine an Internet HyperCard that allowed regular people to easily build web apps, as easily as using a spreadsheet. [Clarification: combining the programming simplicity of HyperCard with the ability to build networked systems for communication, collaboration, and commerce.] It would have to pave over and completely hide the Tower of Babel of HTML-CSS-JavaScript-HTTP-SQL-bash-etc. There are many app-in-a-can tools that generate highly stereotypical apps but to be truly disruptive we need to match the broad generality of frameworks like Rails. We really don’t know how to do this yet, which is why it hasn’t been done, and so it will involve research and technical risk. I believe it should abstain from the baroque complexity of OO and FP languages. Sadly, modern programmer culture fetishizes complexity as a status marker or tribal initiation ritual. Attempting to simplify and democratize programming will attract only scorn and derision (as did COBOL and Visual Basic). Programmer culture is broken so we have to route around it and appeal to the 99%.

The web triumphalists love to talk about changing the world. Well if you really want to change the world, empower regular people to build web apps. Disrupt web programming! Who’s with me?