Another masterpiece from Bret Victor: The Future of Programming.
What you probably don’t know is that his talk was actually an hour long. The second half was censored from the internet by an as yet unexplained mechanism. Luckily his talk was written on sheets of cellulose which survived the digital attack. I have seen these slides and can exclusively reveal their contents.
He seemed to end with the observation that “the most dangerous thought you can have as a creative person is to think you know what you are doing.” But actually he continued:
On the other hand, the most dangerous thought you can have as a hacker is to doubt that you know what you are doing. Expertise, especially wizard-level expertise, comes only from unquestioningly accepting all the technical decisions that are out of your control (i.e. 99.99% of them) and happily cluging around them. In so doing you can demonstrate how smart you are, which is the most important thing for a hacker. Artists know that self-aggrandizing technique is a lie, and they strive valiantly for the simple truth. But true hackers instinctively avoid simplicity, for it masks their brilliance. This explains why programming has not progressed since 1973: the culture of programming itself.
Let me tell you some more about the Golden Age of programming. I didn’t mention COBOL before, because we all want to forget it. It was designed to let stupid business people write stupid business programs that produced stupid reports and updated stupid files on stupid tapes. It tried to use normal English so normal people could use it! It had sophisticated file I/O and report-formatting features unrivalled for decades. It had multiple-character variable names! Luckily we quickly suppressed that pernicious idea in Fortran. Everyone knows that mathematicians use single-character variables. This was one of the first examples of a time-tested principle that has served us well: a great way to make programming as hard as possible is to make it more like mathematics. Even to this day we are still at it, infiltrating Category Theory into programming.
I also talked about parsing with SNOBOL and regular expressions. Another big win for hackers. SNOBOL had a wonderfully easy to use language for parsing strings. Luckily Ken Thompson, one of our hacker gods, stepped in to kill it with regular expressions. Again math was the key: it was based on a solid mathematical theory. Who needs fripperies like symbolic variables or subroutines when you have math! You can count patterns in the code and use numbers instead of variables. And you can just copy and paste and edit instead of using subroutines. The language was designed to minimize keystrokes, so you can use it as a super-obscure command-line language! Regular expressions have been one of the most successful ways we have stopped normal people from infiltrating the elite corps of hackers. And it was so close to not happening! SNOBOL was already there at Bell Labs with Ken and so obviously superior in every way that only a god like Ken could have stepped in and killed it.
I could tell you more stories from the Golden Age: Spreadsheets, HyperCard, Delphi, Visual Basic. These were all enormous successes, allowing normal people to get shit done. They are despised by all true hackers. Because normal people can use them to get shit done. That is our greatest fear.
Future progress is our greatest enemy. You say you want progress? You want orders of magnitude improvements? Well to get that you are going to have to throw stuff away. Lots of stuff. Like all of it. Billions of dollars in technology investment written off. Entire careers of accumulated expertise made obsolete. Normal humans could build simple internet applications without 5 years programming experience. Brilliant hackers would only be needed for systems-level programming and supersizing apps, and there is a lot less of that. Instead of getting rich by seducing humans into clicking and swiping we might have to do things that actually delivered lasting value to peoples’ lives or the economy. Progress would ruin the startup gravy train, so it isn’t going to happen if anyone in the industry has anything to say about it.
Beware complacency! It may look easy for our entrenched hackocracy to sabotage all progress. But the future has a habit of sneaking up on you when you least expect it. As always, disruption will come from our blindspot. From amateurs and children playing with toys, untainted by the sin of knowledge. Perhaps aided and abetted by a few turncoat hackers rejecting the dark side of super-intelligence. We must be ever vigilant to uncover and suppress such traitors. Good hunting!
So there it is. Wow. Pretty heavy stuff, and not at all like Bret. In his defense, I can personally attest that thinking too much about the last 40 years of programming can lead one to depression and anger. So let’s all cut him some slack.
Nice ๐
I love the discussion the video is kicking off. I posted it on my Facebook page and a couple of programmers that sort of fit the category Bret talked about in his censored second half actually responded very positively to it. It’s very preaching to the choir for the folks that subscribe to his RSS, but it’s extremely accessible to those who still need to be convinced which is really exciting!
Now we just need to build some stuff they can actually use to back up our rhetoric! [opens IDE]
This doesn’t seem like Bret. And this:
“The second half was censored from the internet by an as yet unexplained mechanism. Luckily his talk was written on sheets of cellulose which survived the digital attack. I have seen these slides and can exclusively reveal their contents.”
This just seems like the prologue to a gossip column. Can you give us any proof that these are his thoughts/words?
It’s a parody. Satire. Or are you the straight man and I just ruined it? Am I in the middle of a performance piece? If so, carry on. ๐
OK that might as well be a fake. But then, does it change the power of the words on that page? Does it unvalidate any single word?
I don’t know man, I spend a significant part of my time maintaining an ERP built in VBScript built by “normal people” and I can tell you it’s a brittle house of card.
There’s a reason why people haven’t stopped trying improving software development practices.
1. Clone HyperCard
2. Sell it to 1M normal people for $10/copy
3. Enjoy the $10M
Among at least a billion or so computer users, surely a million (0.1%) would pay $10 to get shit done if HyperCard would let them do particularly coveted kinds of shit. I’d expect to see more HyperCard clones around then, unless there’s a secret hackers cabal killing off HyperCard cloners.
Wow, what a great idea. I wonder why no one has tried this yet. BTW, the non-efforts look pretty good, but I’m not sure they are going to be IPO anytime soon.
Great stuff. If Bret would say some of it, we’d be moving ahead for sure.
I agree with what you say about the entrenched hackocracy, industry hostility to change, etc., but I think there are a number of contradictions that aren’t worked out here.
1. unquestioningly accepting all the technical decisions that are out of your control (i.e. 99.99% of them) and happily cluging around them… is a fine description of what normal people do with software, not just hackers, in the course of getting shit done, for better or worse.
2. …amateurs and children playing with toys, untainted by the sin of knowledge… is likewise a fine description of hackers, for better or worse (usually worse).
The main problem, to me, and maybe this is your point too, is that programmers are encouraged to distinguish themselves from normal users, don’t see themselves _as_ users. Don’t see other users’ Excel hacks etc. as belonging to the same species as their clever programs. The industry is built around this ideology.
In my view, we will not be able to change anything fundamental like you are talking about, and bring “lasting value to peoplesโ lives or the economy” until we recognize this division, and destroy it. And it’s not a matter of Promethean programmers coming down with solutions for the masses any more, if it ever was.
Respectfully,
Eric
Indeed that is the crux. What is the difference between a user and a programmer? Progress will come only by tearing down that wall.
Making programmers more aware of their personality types (and its constraints) is a great message. Programmer culture is a giant bubble. ๐
There was a great Gamasutra article from 1999 about personality types and programming, as well as the difference in personality types between implementors and great designers:
And, as with most computer science topics, Alan Kay has some good thoughts on this:
Thanks for those great links Chris.
I think you missed most of the main point of the talk completely and then went ahead and restated one of his points (resistance to change) in an intentionally inflammatory way to make it sound like your own, so that was a great example of trolling, but not super insightful.
His main point, as I understood it, was that a great number of “new” things aren’t. Procedural languages like COBOL are literally primordial in origin but are still the major front of advancement in the field while interesting styles like logical have been languishing in obscurity. Those things don’t gain traction in practice because of the aforementioned resistance to change, which is why we’re still largely writing procedural code against static APIs in monolithic files: they were the first building blocks so nobody want to give them up and we end up iterating on them for half a century instead.
Yeah, COBOL is a hell of a lot less painful than pure binary, but then Perl is even less so and Python less than Perl, and I’m sure that will continue. The point is that it’s the same procedural approach with fewer pointy bits to cut yourself on, not something really different that, for all we know, could make getting stuff done an order of magnitude easier still, but we don’t know because of rigid dogmatism, which is another way to say resistance to change.