End user programming

June 18, 2013

An interesting comment in http://www.technologyreview.com/featuredstory/515926/how-technology-is-destroying-jobs/ about how industrial robots are getting cheap enough for small manufacturers. I suppose it’s only a matter of time before they are cheap enough for small enterprises—both because industrial robots penetrate down market and because domestic/hacker robots percolate up market. Backroom stocking and inventory? JIT one-off manufacturing much as we now have JIT photo processing completely automated at drug stores? Think if we have not just custom tailored suits but shirts, pants, shoes. 

How to apply this to IT system development? How do we automate software development? Computer systems depend on large scale subsystems like DBMS and network protocols and smaller language dependent libraries. We have had programming guidelines, like Apple’s UI guidelines for decades now. You can wire up decent applications using user oriented development tools embedded in applications like Excel and Access. 

If programming were a language, knowing what library members exist is like having a vocabulary, differentiating similar functions is like having a thesaurus, having a need for a function and finding a library member that handles it is like a word finder, or reverse dictionary. Readers do not need a lot writing tools, books, about English: a simple dictionary suffices. Writers need lots of reference books: thesauruses, grammar and usage books, synonym books, and word finders. Word finders are the most problematic. How do you find that word or phrase ‘on the tip of your tongue’? How would you find the word that describes a window set high on a factory wall or ceiling to let in light? [Daylighting, or clerestory]. Word finder books, reverse dictionaries, are a start. 

And here, I think, is the nub of programming: learning a programming language, while non-trivial, isn’t that hard. (Yeah, I know, the practice of programming is something else again.) Learning all the libraries and their members needed to wire together a system is time consuming and a study unto itself. A user who just wants to create one system for himself doesn’t have the time or the inclination to study libraries anymore than a reader wants to learn the words for every concept that comes along. So a library finder like a reverse dictionary would go a long way to democratizing programming. I know i’ve gotten used to fishing for synonyms using google search. 

Now, end-user programming still has a lot of problems. Like that Excel range checking bug (Reinhart-Rogoff. See for example http://baselinescenario.com/2013/04/18/more-bad-excel/). End users would need automation tools for testing and all those other best practices that envelop a production system, as opposed to a program.

Or perhaps what users will need in the near future are not full on programmers but coaches and consultants. Then, too, they’ll see how hard it is translate requirements into a design and specifications. Or worrisome thought, maybe they’ll do a better job of it.