of Computer Programming
Weinberg's central idea is that programming is a human activity and by understanding it as such we can develop better programs.
"You are so young; you
stand before beginnings. I would like to beg of you,
dear friend, as well as I can, to have patience with
everything that remains unsolved in your heart. Try to
love the questions themselves, like locked rooms and
like books written in foreign languages. Do not now look
for the answers. They cannot now be given to you because
you could not live them. At present you need to live the
I learned programming in high school from a Fortran IV manual, which was like learning how to drive a car from the owner's manual—unexciting. Later, after taking an operating systems course at MIT, I gave up entirely on programming as a profession. I did not want to spend my life doing the same thing over and over again.
What made me change my mind and become a professional programmer? In large part it was Gerald M. Weinberg's The Psychology of Computer Programming, which I first read in 1982. Weinberg not only demonstrated that programming was more than technology, it is a social activity, but he showed how the social element related to the technical. In essence, he identified and addressed the types of fundamental questions that Rilke advised the young poet Franz Kappus to study. Such as:
Weinberg confirmed my own
intuition that software could have an enormous impact on
society, and his discussion of programming as a social
activity helped explain much of the “strange behavior” I
saw around me as I began working on my first programs.
For example, during one of my first projects, I saw that
the inability of certain people to work together had
more impact on the project’s outcome than the
technological issues being debated.
As Weinberg says at the end of his book that if we view programming as a human activity we have some hope that computers will not bring tyranny and the enslavement of humans by other humans.
Weinberg examined what a naïve programmer would consider just technical topics and demonstrated how the elements of human personality and interactions between people had just as much, if not more influence over the outcome of a computer programming project than the technical issues and debates.
By understanding the importance of questions such as these, even if not every question can be answered in every situation, my value as a programmer and designer transcends whatever today’s technology du jour happens to be. I would have to say that Weinberg’s book took years off my apprenticeship, and saved me much aggravation.
To this day, I view programming primarily as a human activity, with the technical merits secondary. This does not mean you can ignore the technical merits. What makes a programmer really great is not technical genius, but an understanding of the human context of what he or she is doing. Any programmer who creates a truly revolutionary and world-changing program understands this. Others did not, or did not care to, and their contributions are hidden behind or overwhelmed by others’ accomplishments.
It is incredible that a twenty-five year old programming text containing examples illustrated with technologies that many programmers today cannot even conceive of—I recently taught a programming class where not one of the students had any idea what a punched card or paper tape was—is still a great book.
The Silver Anniversary addition has some comments by Weinberg examining how his views have held up over the years.
|All Content (c) 2000 - 2014 Reliable Software, Inc. All rights reserved.|