|
|
Computers should not be used to enable us to cope with
complexity of daily life, but to simplify daily life and enhance it | |
|
In his 1976 book Computer Power and Human Reason: From judgment to
calculation, Joseph Weizenbaum argued that the computer, far from "revolutionizing"
our life, was one of the most powerful forces for social reaction in the 20th century.
The computer came along just in the nick of time to enable massive established bureaucracies
to continue to function when the volume of data to be processed exceeded what could be
handled by human clerks. Had the computer not intervened, the inability of the existing
social organization to process the data would have led to either a breakdown or a breakthru
to some new form of social organization. The computer as "Superclerk" enabled business as usual:
the status quo, to continue.... |
|
Thus, at best, the computer automated bureaucratic
processes which had previously ben done by persons: the processes, as it were, went underground (or at
least into mysterious boxes filled with electronic circuitry -- "black boxes" as far as
everyone except for a few technical specialists was concerned (albeit, since this was the
era of IBM's hegemony, most of the boxes were "blue"...). The clerical processes were
easy to understand and to see how they worked (even if what one saw was often "Kafkaesque"...).
When the processing went into the computer, only the inputs and the outputs remained visible,
and the processing in between was opaque both literally and symbolically. |
|
Already in 1976, Weizenbaum spoke of
"incomprehensible programs" which were so complex that nobody fully understood them,
and which, when they worked incorrectly, people often dared not try to fix for fear of
creating even worse problems.... In the intervening almost 30 years, the situation has not
improved. What has changed is that the inscrutable boxes have come out of the closet ("the computer room")
and proliferated on everyone's desk and lap. As the computer has become part of the system,
new bureaucratic structures have accreted upon it like
kudzu, and we find ourselves
in a seemingly endless race to increase the processing power of the computers fast enough
to keep up with the increase in complexity of our form of life. Crescit eundo ("the process grows by the
mere process of maintaining itself in existence at all").... |
|
I am not against technology. I believe that,
without antibiotics, I would not have reached adulthood. I find the computer as word processor
a powerful aid to reflective thinking.... But I do think we need to revisit those
forms of social organization which the computer saved from collapsing under their own weight,
and, at last, have the social revolution -- hopefully: renovation, re-new-al... which the
computer enabled "us" to avoid having half a century or so ago. Just like the engineering
infrastructure of America is aging and in need of massive repair, so too is our
social infrastructure in need of massive repair. We need a better imaginative horizon than an incomprehensible,
anomic megalopolis, in which computers can play a human[e]ly empowering role and foster
"meaning" instead of "reducing everything to ones and zeros" or
worse. |
|
|
Computer programmers should not just design computer
systems, but design the form of daily life in which they, the computer systems, the systems' users and
everyone else participate | |
|
The way up and out of our present
largely dystrophic situation, it seems to me, is a reintegration of technology and
society, a reintegration of life and work, of systems analysts and systems users (see Terry Winograd quote,
above), etc. |
|
Every worker in fact
produces the conditions of his or her work, which, since work is a part of
life, are the conditions of his or her life, along with the product of their work.
What I urge is for computer programmers (and others, of course!) to become focally aware
of this and make it part of their (which are in each case "our") deliberations and
decision making. (Of course the worker will in some circumstances conclude
they have little or no power to influence their conditions of work, but even that is a diferent
form of life from working without thinking about what one is doing, so that, even when the
worker has no power to improve their lot, they can still in a way change it, i.e., change their
perspective on it -- not to mention that being alert sometimes enables one to recognize
opportunities....) |
|
I see re-emergence today of some of the criticisms of
computer programmers that fueled the "improved programming technologies" movement of the early
1970s (structured programming; top-down design; hipos; walkthrus...). Programmers are interested
in writing code irresponsibly the way they want not the way that meets user needs: "software makers need to
inject more discipline into software writing" (Robert A Guth, "Welter of Viruses Is a Wake-Up Call
for Software Industry", The Wall Street Journal, 26Aug03, p.B1,B8). |
|
If programmers' only area of creativity
is in coding, then this is where programmers will seek creative gratification -- which may
indeed be at the expense of satisfying user needs. Why not expand the programmer's
area of creativity to include his or her entire social world of life, both political and
political (aka "economic" -- for economics is really just a part of politics, i.e.,
social decision making, that is not
subject to formal electoral process...)? Then the programmer will have every reason to make
his or her code as serviceable for the user as possible, because he or she will be
one of the users, and the programmer will seek to make the code contribute to the form of life he or she is
shaping for him or her self (as well as for others). |
|
Such a computer revolution, such a
substantive change in social relations mediated by computers and other advanced technology, surely
would not come easy. Not only would it entail replacing capitalism (or bureaucratic socialism) with
a kind of syndicalism. It would also entail enriching the programmers' imaginative horizons
beyond the techie world to embrace a richer humanism in their work (and not just
listening to Bach in addition to their work, in a kind of psychic "splitting"!). Rabelais and Erasmus instead of StarTrek:
Thélème instead of what I disparagingly describe as techno-feudalism in flying fortresses.
A computer science PhD needs to attest to love of wisdom and commitment to teach and/or to heal,
not just certify journeyman's competence in coding and in disciplining coders. |
|
These ideas are, of course,
not original. I once excitedly told my manager about Pelle Ehn's book
Work-oriented design of computer artefacts, and my manager just
dismissively replied: "Oh, that's just the Scandanavian model." Well, why can't it be our
model? (A U.S. Department of Health, Education and Welfare taskforce chaired by
Eliot Richardson, during the Nixon administration, made recommendations moving modestly in the direction I
have suggested here.) If meaningful work, and meaningful life, are luxuries we cannot
afford today, what does that say about the value of computers and the nature of any
"computer revolution(s)" which may have occurred or are currently happening? |
|
Me [as computer programmer] |
|
When I first became a
computer programmer, in June 1972, I wanted to be a systems programmer (IBM OS/370 VS1 and MVS). I wanted to
understand the pure innards of the system software that ran the applications
programmers'(sic) applications. I didn't want anything to do with "applications".
I definitely did not want to do "maintenance programming" on applications. |
|
I never mastered the
operating system; e.g., I never "learned how to read a stand alone dump". I eventually
learned that the computer was bigger than I was. [The closest I came was that I wrote
part of the MVS Real Storage Supervisor for MVS, as an IBM employee, in 1978-79.] |
|
Now, however, I have come
to feel differently. Insofar as I have the requisite skills to have a fair chance
to succeed, I now probably prefer fixing bugs to any other aspect of programming.
Fixing bugs is often more dificult and challenging than writing new code. It's
also a lot less "verbose". I've written more lines of code than I care to add more to.
So this means that, again, presuming I have the skills to do the job, I'd rather
do maintenance programming today than write new code, since in doing maintenance,
all the "boilerplate" is already written, etc. Please don't make me start from scratch.... |
|
Often the most difficult
programming tasks are (A) upgrading code to work with a new version of the compiler or
operating system software, and (B) extending existing code to do new functions.
As long as I have the skills and am given enough time to do the work, I say: "Bring
the bugs and the maintenance programming on; let the young kids write new
programs; and may I have the skills to fix what they did when it has ceased to be new."
|
|
A thing is new only for
a moment, but it may need to be maintained long after everyone who ever worked on
it has not just retired but died, so that there is no way they can help even
if they would want to (which they well might not, since often a programmer's
best day on a project is when someone else becomes responsible for their part of it).... |
|
|
Computer Power and Human Reason: From
calculation to judgment | |
|
The title of this section reverses the title of
Joseph Weizenbaum's fine book: Computer Power and Human Reason: From judgment to calculation. |
|
My thesis is simple: When one has "something" <whatever
human activity> one wants to computerize, find the balance of automation and human participation that is
most reasonable in terms of both accomplishing what needs to be done and also being congenial for all the
persons involved and affected. The classical Greeks distinguished such wholistic reasonableness, which they called:
"Phronesis" (practical reason -- what Weizenbaum referes to as: "judgment"), from
narrowly focussed optimization of functions isolated from their context (what Weizenbaum refers to as:
"calculation"). |
|
If doing something manually is a big hassle, and
writing a computer program to do it all automatically is a lot of trouble, but writing (or modifying) a
computer program just a little takes away almost all the hassle, then unless there are overriding
considerations, choose the "middle way", i.e., the small change. Cases where this does not apply
would include a program to keep track of surgical instruments in an operating theater, where
leaving one instrument in one patient is one too many. Cases where it does apply include
where a salesman tries to wow a potential customer with some flashy feature which does little
for the user but does a lot to the programmers who have to produce
it.
|
|