The graph below shows that users, given the right tools to program with, would be by far the largest group of program developers. As well as users there are two intermediate groups, and a small group of professional programmers.
Source - Scaffidi et al. [2005] based on data from US bureau of Labour Statistics.
These statistics were also explained and referred to in Myers et al. [2006].
A presentation of this is available at http://www.cs.cmu.edu/~bam/papers/EUPchi2006overviewColor.pdf.
Software development is time consuming and error prone because of the need to learn computer languages. If people could instruct a computer without this requirement they could concentrate all their effort on the problem to be solved. I call this User Driven Programming (UDP), I use the term User Driven Modelling (UDM) to explain the application of User Driven Programming to model development. My research and those of others in the field aims to create software that enables people to program using visual metaphors. Users enter information in a diagram, which for these examples is tree based. Tree based visualisation is often a good way of representing information structures and/or program code structures. The software developed as part of this research translates this human readable representation into computer languages. The tree also shows the flow of information. This technique is a kind of End User Programming, research in this area is undertaken by the EUSES (End Users Shaping Effective Software) research collaboration in the USA http://eusesconsortium.org/ and Network of Excellence on End User Development in Europe http://giove.cnuce.cnr.it/eud-net.htm. Fabio PaternĂ² has investigated this subject as part of the End User Development in Europe network - PaternĂ² [2005] http://giove.cnuce.cnr.it/cameleon/pdf/last-model-based%20approaches-IwC.pdf..
The diagram below illustrates the problem to be solved, this is the need to translate between human and computer. It also demonstrates the complexity of the problem that needs solving. This is the complexity that is present in most software systems. Complexity varies according to the needs of the application. The complexity of calculation increases as we move from the domains of knowledge management through to decision support and simulation. The increase in complexity is of calculation in this direction from knowledge management to decision support to simulation, and of information in the other direction from simulation to decision support to knowledge management. Kurt Cagle explains this complexity problem well on his blog at http://www.understandingxml.com/.
User involvement is important in the development of software but a domain expert does not necessarily possess expertise in software development, and a software developer cannot have expertise in every domain to which software might apply. So it is important to make it possible for software to be created, using methods that are as close as possible to that which the domain expert normally uses. The proportion of domain experts in a particular domain (aerospace engineering) for example who can develop their own programs is fairly low, but the proportion that are computer literate in the everyday use of computers is much higher. If this computer literacy is harnessed to allow the domain experts to develop and share models, the productivity for software development will be increased and the proportion of misunderstandings between domain experts and developers reduced. The domain experts can then explore a problem they are trying to solve and produce code to solve it. The role of developers would then become more that of a mentor and enabler rather than someone who has to translate all the ideas of experts into code themselves. Other developers may work at providing better translation software for the experts.
The research I have undertaken in this is available on My Home Page. There are many examples, papers and explanations on my site. I will write a summary of the research in my next posts.
There is a conference in Brighton - UK this year that is relevant to this research -
IEEE Symposium on Visual Languages and Human-Centric Computing - http://www.cmis.brighton.ac.uk/vlhcc/ - 2006 - Brighton, UK.
Kevin Morrill's Blog outlines ideas for functionality users might want, if they were enabled to create a program to provide it -
References
Myers, B., Ko, A., Burnett M. (2006). Invited Research Overview: End-User Programming Extended Abstracts, CHI'2006: pp. 75-80, Montreal, Canada.
PaternĂ², F. (2005) Model-based tools for pervasive usability. Interacting with Computers 17 (3), 291-315.
Scaffidi, C., Shaw, M., Myers, B. (2005). Estimating the Numbers of End Users and End User Programmers, IEEE Symposium on Visual Languages and Human-Centric Computing, (VL/HCC'05): 207-214 Dallas, Texas.
2 comments:
Peter, great write up on end-user programming. I am starting a sort of notebook of ideas for this on my blog, and have building some very simple prototypes with some very primitive stabs at end-user programming.
Kevin
Thank You, I'll keep track of what you are doing, and add a link to your blog.
Post a Comment