Howie,
On the one-hand, I hate to deal in generalizations since there are
always cases that break any rule but on the other, there is a
significant difference between a good amateur programmer and a good
professional programmer. The following needs experimental test,
currently it is anecdotal only:
> For several years I've been asking a subset of this question, "Who are
> end-user programmers?" (I maintain a Web page on the subject at,
> http://www.cs.uml.edu/~hgoodell/EndUser/ ; I have built tools with which
> end users completely automated complex semiconductor process equipment.)
End-user programming as initially envisaged was really an attempt by
certain sections of business to get away from the IT hegemony of the IT
priesthood. It was an attempt to bring personalizable systems generated
by practitioners of the domain into use by practitioners in the domain.
As a form of "requirements capture by prototype construction" it was
excellent, as a mechanism of constructing final usable systems it is
dreadful. End users may understand the problem, may understand the
process, may even understand the database but few know about the details
that make systems reliable and efficient, e.g. fifth normal form
required for efficiency of database applications.
> I found the discussion here of the Eisenstadt-Bonar bet last Spring
> thought-provoking. As with other talents like management or writing,
> some people in every group of workers have a natural inclination towards
> programming. Circumstances including usable programming tools can
> enlarge the fraction of people who successfully program. Whether they
> switch and become professional programmers, or develop into end-user
> programming "gurus" or "gardeners" in their current job depends on many
> factors, like organizational attitudes and relative pay.
My main question here is "Why do we want to enlarge the fraction of
people who can successfully program?". This is partly a political/power
question within the organization (assuming we are talking about
workplace here) but partly it is about expectation and work practice.
It is clear that a large number of people would be able to do their work
better if they actually could construct spreadsheets and databases and
perhaps these people need to program but if they are going to do it
properly they need much of the knowledge normally ascribed to
professional programmers.
More often that not workers need only to tweak a system. Perhaps
surprisingly this is more often than not an even harder task than
constructing a system from scratch since you need significant knowledge
in order to amend a program. The "spaghetti code" phenomenon is exactly
due to people not properly evolving code -- and this is done even by
professional programmers.
People who were domain experts rarely turn out to be good professional
programmers without proper formal training. There are a large number of
people out their claiming to be professional Access programmers who
don't even know what third normal form is let alone fifth normal form.
> One aspect of this discussion of the changes in the programming
> profession since 1971 especially interests me:
> it is my contention that in many areas such as Web and GUI programming,
> business applications, and network administration/programming, the
> attitudes and skill sets of professionals and end-users are becoming
> blended. I've even coined a phrase, "blended-user programmers." They
> do real programming by most of your definitions, but in their
> exploratory learning style and taking things at interface value in
> sophisticated tools, they share many characteristics of end users. They
> may even have a large non-programming element of their job, like graphic
> design or setting up people's computers. I think this combination is a
> new piece of the puzzle: a full understanding of the activity of
> programming has to include all 3 types of professionals.
I can give only anecdotal evidence but the answer to me is no. Systems
development professionals and end users have overlapping concerns but
the bulk of their attitudes and skill sets are massively different.
This is true even in those individuals who are both domain pracitioners
(aka end users) and systems development experts.
The point about graphic design and systems development is a good one but
the multi- and inter-disciplinary nature of systems development and HCI
has been accepted for quite a while now.
Russel.
=======================================================================
Prof Russel Winder Professor of Computing Science
Editor-in-Chief, Object Oriented Systems
Series Editor, Practitioner Series
Head of Department
Department of Computer Science Phone: +44 171 873 2679
King's College London Fax: +44 171 873 5072
Strand Fax: +44 171 873 2851
London WC2R 2LS EMail: [EMAIL PROTECTED]
UK URL: http://www.dcs.kcl.ac.uk/staff/russel/