[ed. note – this post might seem a bit out of our normal oeuvre at B.J., but since a number of threads have fallen to the code wars I figured that we should offer some topical fare to tech-savvy readers]
Several months back a genial biologist in his late 70’s used the occasion of a visit to my department to deliver a riveting seminar on new ways to bring sophisticated modeling approaches into the hands of code-phobic bench workers like him and me. To be fair Dr. Oliver Smithies, who invented gel electrophoresis, homologous recombination of transgenes and the genetic knockout mouse, is not your ordinary genial biologist in his late 70’s. But despite going into some detail about a project based on recursively building a numerical model, testing with experiment and then refining the model (by far my favorite kind of project, BTW) it’s fair to say that the talk didn’t go over the head of anybody in the room, even the tech-phobes like myself.
The key to his work and the key to me following it was a nifty software package called STELLA. Figuring that time being a finite quantity, most who need numerical models don’t and probably shouldn’t know much about programming STELLA offers a dead-simple drag-and-drop interface for building sophisticated interaction pathways. The idea is to abstract model building so that anybody who can make a PowerPoint presentation can be a potential modeler. Rather than posing any threat to information biologists, whose sophisticated problems don’t lend themselves to abstraction, democratizing the basic modeling tasks frees the specialists from jobs which are often beneath their skill level.
Moving on, I thought my biology experience might help explain why I think a new idea in the programming world is overdue and why the controversy is largely misplaced. Briefly, Charles Simonyi, inventor of MS Office, longtime project manager at Microsoft and would-be astronaut wants to do for programming what STELLA did for tech-phobe biologists.
Simonyi is arguably the most successful coder in the world, measured in terms of financial reward and the number of people who use his creations. […] He is obsessed with a project that he has pursued for a decade and a half, and that four years ago carried him right out of Microsoft’s doors. He is proud of his profession. But he is also haunted by the thought of what programmers must contend with each time they sit down to code. He asks, Why is it so hard to create good software?
[…] Simonyi’s ambition is to unstop that software bottleneck–characteristically, by going meta. He’s developed an approach he calls intentional programming (or, more recently, intentional software), which he hopes will overturn programming. If Simonyi has his way, programmers will stop trying to manage their clients’ needs. Instead, for every problem they’re asked to tackle–whether inventory tracking or missile guidance–they will create generic tools that the computer users themselves can modify to guide the software’s future evolution.
[…] Intentional programming would add an entirely new layer of abstraction to the practice of writing software. It would enable programmers to express their intentions without sinking in the mire of so-called implementation details that always threatened to swallow them.
Not being a programmer, I will let more experienced hands explain the difference between Simonyi’s project and existing forms of abstraction like Visual Basic. Nonetheless I take it from the enthusiasm of the staff at MIT Technology Review that he is on to something new. Critics have a few concerns:
Some theoretically minded skeptics say Simonyi’s goal of capturing computer users’ intentions is implausible. “How do you represent intent?” asks computer scientist Jaron Lanier. “As soon as we know how the brain stores information, maybe we can represent intent. To me it just seems like a fantasy.” Another argument, common among programmers, is more practical. Many programmers love their text-based editors and distrust tools that distance them from raw code. As for graphical programming languages like Visual Basic and the integrated development environments (IDEs) that automate routine programming tasks, they regard them with condescension: such tools, they say, impose their own ways of doing things, constrain creativity, and keep programmers from the code that, sooner or later, they must confront.
To be honest the first strikes me as bluffing through overtechnicalizing a relatively simple idea. Intentional software doesn’t need to mimic the biology of human intentions. In fact it shouldn’t, since our brain operates nothing like a silicon chip. Code that is meant to run on silicon ought to reflect the logical, linearized way that silicon chips operate, and it seems fair to say that we understand that fairly well. If Intentional code doesn’t give us tools which exactly mimic the way that we think, well, when has code ever done that?
As for the second point, I think that critics are misunderstanding the likely impact of Simonyi’s work. Thinking again about STELLA, the most likely users will be people who might need code but don’t have the experience or time to pick it up. Even more than I think Simonyi realizes intentional design will democratize the process of making software without shutting out dedicated coders from software’s gnarly roots. Some problems are too new, complicated or unique to abstract, but many are not. It seems like a waste for a programmer who could be working on the former kind of problem to spend his/her time on the latter.