When I got out of college, I didn't have a CS degree. Although I had done a little hacking in C, Emacs-lisp, and perl, I didn't think I had the skill required for an entry-level programming job. (Now that I have a closer view of the software industry, I think maybe I was too hard on myself, but I digress. :-) So ... a few years after graduating, I started working for a hospital as a tape transcriptionist.
I did my transcription on a DOS machine running WordPerfect 4.1. My predecessor had defined some WordPerfect macros for commonly-used medical terms. After a while on the job, I wondered: "With so many common medical terms being used here, what is the optimum set of macros to use for my job?"
And then I thought: "I have a computer. There must be a way to solve this problem with a computer program."
So I copied a week's worth of typing into one file, brought it down to BU (where I was going to graduate school), and tweaked a concordance-building C program I had used for a class (which was itself based on a word-sorting program in Practical C Programming). My new program printed out an alphabetized list of all the words in my source file, along with the number of keystrokes I would save if that word were a macro. I loaded the output into emacs, sorted the lines, and voila!
Then, in WordPerfect, I twisted the macro language into giving me four-keystroke macros for a few hundred commonly-used words, both with and without capitals. For example, typing H E alt-J would print out hepatosplenomegaly, and H E alt-Z would print out Hepatosplenomegaly. I printed out my macro list, put it up next to my monitor, and went on happily cranking out letters for another eighteen months or so.
Now, I think that a lot of other people in low-level clerical positions have been in similar situations, i.e., some aspect of their job has a problem with the following characteristics:
So why isn't this happening already? I can think of a few potential culprits (all of which, of course, interact):
Most programming languages expect too much abstraction for most people, and less than most programmers would like.
See the discussion in LanguageUsability and FromCraftToEngineering
See also: ComputerProgrammingForEverybody