Via Orange Site, we have “Questions“. Specifically, this one:
Will end-user applications ever be truly programmable? If so, how?
Emacs, Smalltalk, Genera, and VBA embody a vision of malleable end-user computing: if the application doesn’t do what you want, it’s easy to tweak or augment it to suit your purposes. Today, however, end-user software increasingly operates behind bulletproof glass. This is especially true in the growth areas: mobile and web apps. Furthermore, not only is it getting harder to manipulate the application logic itself, but it’s also becoming harder to directly manipulate your data. With Visual Basic, you can readily write a quick script to calculate some calendar analytics with Outlook. To do the same with Google Calendar is a very laborious chore.
End-user computing is becoming less a bicycle and more a monorail for the mind.
As a consequence, we need ever more domain-specific software. Rather than use universal tools for handling charts and for manipulating data, we tend to use separate analytics packages for every conceivable application. This is not all bad. Domain-specific tools can maximize ease-of-use and help amortize the cost of complex, specialized functionality. Sublime’s built-in ⌘-T works better than every third-party Emacs package. Still, despite these benefits, the popularity of macros and browser plugins strongly suggest that users are smart and want more control.
Should we just give up on our earlier visions of empowered users or is a better equilibrium possible?
And I think I have at least one possible answer, so here goes.
OK, so, first, let’s go ahead and agree the point of a software program is to perform some work for business value. Maybe that work is just “display 60FPS polygons on a screen to make mass murder a fun pastime”, but still, it’s business value: you sell hardware, you sell downloadable content. “Business value” usually means, like, “calculate the necessary marginal discount to achieve blahblahblah” stuff – Excel stuff – but any program that does something to make money is what we’re in this whole game for.
(I’m ignoring hobbies, art, and other things, specifically because he talks about things like Google Calendar, which in part drives my employer’s business operations.)
If you’ve done computering long enough, you have probably noticed that the bulk of “empowering” is done to achieve boring business outcomes: perform useful work unit X for business value $Y, but on the same hardware we bought N years ago, and with D – 10 IT staff instead of D, because we decided to stop backfilling at some point.
So our first big problem is that any empowering of users is going to need to solve for that pseudo-equation. That exists today, in the so-called “low code” and “digital transformation” spaces, but in a particularly cruel joke, those platforms are insanely expensive and full-fledged ecosystems. In order to make it so a team of 8 people including manager, QA, etc – can ship big-ass enterprise apps in a quarter, you have to ship a giant mess of complexity. Engineering is always a tradeoff.
The second problem is, the author mostly speaks not about users but developers. To the question of “where is the modern version of Genera”, I must counter with “if you built it, it as to run Excel”.
The purpose of a computer program is to do work for business value, and friends, Excel does some motherfucking work for businesses. So if you wanted to build a version of Genera – all web-enabled, modern, and cool – it must first be able to run Excel. You can’t create a hypothetical perfect truck and expect everyone to just drive on new roads.
Anyway, the problem with these “malleable” systems is they benefit the nerds who the biz guys see as a cost and not a benefit, and that’s before they’ve asked the nerds how long this amazing magic software program will take to build, and I can still run Excel, right?
Because, speaking of time: if I got a time machine, in the way to shooting Hitler in the face, I’d make a quick stop and ensure whomever it was that coined the term “Internet Time” gets punched in the dick.
These computer programs that produce business value need to be produced quickly, or a competitor will beat you to market. That’s common sense and basic market capitalism. Somehow, around the time it became apparent that teenagers without CS degrees can produce workable programs, everyone decided that you need to ship your enterprise widget-packing app in no more than 3 weeks, and it needs to support 10k simultaneous users, and also support the last 3 generations of widget-packing file formats, and, and, and, and.
So even if we set out to produce a modern version of Genera, and we pinky-swear it’ll run Excel (hypervisors are “easy”, we’ll just virtualize everything), the biz guys are going to need it before next quarter. Oh, and it’s got to target both iPhone XS Max Extra or whatever they’re calling it, and the Android feature-phone they’re giving out on Halloween with the Snickers bars.
And JFC, does anyone remember the problems with VBA and security? Excel macros? One of the biggest attempts to bring “malleable” software to the masses, that did real work for business value, and you had to go to great lengths to ensure no one ever uses it.
I think we need to really let go of this malleable, empowered idea and instead focus on fixing problems like “it takes longer than 8 weeks to write a serious enterprise app, you knobs”, and “I picked the wrong video card, now my game doesn’t work”, and “I don’t now how the DingusCorp connector works, it lives on Dave’s laptop and he hasn’t done a push in weeks and he’s on vacation right now”.
Fix the culture and the ideas – how we think about software programs that do work to produce business value – and then maybe we can make amazing new ways to do computering.
As long as it runs Excel.