I read your 10 Commandments of egoless programming with much personal interest.
In 1978 I encountered “improved programming technologies” and heard the term “egoless programming” as an ideological movement by corporate computer programming managers and their consultants to try to make mediocre computer programmers produce bug-free code that met specificatons. I called them: The mongoloid hoard.
I was working in IBM Poughkeepsie MVS development on the Real Storage manager. I was a junior grade employee: I had a gray plastic top desk (There were three grades of computer programmers: gray tops, fake wood tops and real wood desks). Sitting at my gray top one day, I overheard the people in my group with fake woodtop desks, in a walkthrough, humiliate – repeat: h-U-M-I-L-I-A-T-E a poor helpless programmer at the same low rank as I was, in a “walkthru” of his code. I had come to IBM with as a 6 year veteran of “systems programming” in the coroprate world; this unfortunate young man kept a Snoopy dog figurine on his desk and could not defend himself.
Everything had been converted from assembly language to a higher level language, PL/S (which is something like PL/1). My third line manager told me: We know you can do the job your way, but what do we do with all the other programmers who can’t tell an L from a LA? (“L” and “LA” are IBM S/360 assembly language operation codes and if you pick the wrong one it results in a nasty, hard to find bug in your program.)
I owned the only piece of assembly language code in my component; it was too performance critical to convert. Obviously, risky stuff. My first line manager, who wore socks with machine stitched Mickey Mouse images on them, told me they had scheduled a walkthru of my rewrite of it. I told him that I would discuss particular criticisms of my code but that I “would not be ground up”. They backed off and cancelled the walkthru; my [obviously both risky and product critical] code shipped unreviewed and I never heard any APARs (“buge”) from it. I was dead right, i.e., right and dead.
By the words “egoless programming”, back then (1978) I understood an attempt to make computer programmers have no egos, i.e., no souls, no sense of self or self-respect. I considered myself to be a zek (that’s what inmates of Joseph Stalin’s Gulag were called) in Cyberia.
So you can imagine what I was expecting when I Googled “egoless programming” and your 10 commandments came up. But what I found looks entirely reasonable and respectful even of low level computer programmers, not something to destroy their minds and souls. Criticize the code; educate the coder.
I don’t know if you know about “The great GOTO war” from that time (1978). They wanted to get rid of GOTOs because GOTOs could enable incompetent programmers to easily write unmaintainable code by branching into anywhere from anywhere at any time. I was on the losing side, like the Confederates in the Civil War. (As a COBOL trainee, I rewrote one such program; I replaced infuriating spaghetti code where you could not follow what it was doing, with clean table-driven code.)
Today I see more clearly than I did then: They were objectively correct that GOTOs were not good, but they were doing it in a Stalinist way and I balked at having my soul destroyed. Had they approached me respectfully and engaged with me as a peer… I hope I would have acceded to what the philosopher Jurgen Habermas calls “the unforced force of the better argument”. I was fighting against being a goose for foie gras. I was not really fighting for GOTOs: I was fighting for human dignity for people who had only gray plastic top, not fake wood top desks, i.e., for myself. (Had they made me an offer to become a warder, I might well have joined the enemy as staff officer, but they didn’t.)
There is a relevant book here: Philip Kraft, “Programmers and Managers: The Routinization of computer programming in The United States” (1977).
I would call what your 10 commandmants seem to me to say something not so easily interpreted by wounded veterans as soul murder. Something like “reflectively distanced programming”, i.e., where “we all – from the people with fake wood top desks to those with only gray plastic top desks – are all peers striving together to make the computer have as good a product as we can, with all of us supporting each other as equals. The computer and the program are both objects we use to achieve our cooperative goal, but all of us are the subjects, not some of us treating others of us as objects along with the computer.” Criticize the code, educate the coder, respect everyone.
Computer science is one thing. the labor of wage-slaves in a capitalist economy is another thing. I paid the bills writing code but only because I could not find a way to do that by being a humanist scholar, a failed philosopher and later an excommunicated psychoanalyst. I started programming keypunching my own drum cards; for fun, I once turned a big insurance company’s production IBM S370/158 into a simple adding machine from machine code I punched into cards which I IPLed from the card reader; as a systems programmer I did all sorts of stuff in key zero supervisor mode on big bank corporate computers; I loved both 360 assembly language and APL; I finally got PTSD from trying to make Angular 2 jump thru undocumanted hoops and failing to succeed at it. I could never find any employer who valued my wisdom, only use my manpower. Everybody wanted new hires who lusted to work in a fast-paced environment; I had seen haste make waste.
I hope you have learned something from one person’s experience in Cyberia back in 1978 with the term “egoless programming”. (Many years later I came to resent: “scrum”, ideological purification “criticism and self-criticism” meetings like in North Korea; “scrum” derives from the brutal British sport rugby)
Let me close with two things: (1) In IBM, in 1978, I once met a person who programmed APL for chip production applications in Purgatory (IBM’s Fishkill New York computer chip facility); he rewrote programs that ran for days and reduced run times to a few hours; he had been a delivery truck driver but they gave him a programmer aptitude test and he proved to be a programming genius or close to it – he came to work sometimes, wore jeans, and grew house plants in his basement. (2) There is a famous IBM poster: “How to Stuff a Wild Duck” (It’s on the internet). It shows a duck whose feathers are all the cliches about corporation conformity; Thomas Watson Jr says that every company needs its wild ducks and IBM knew how to take good care of its wild ducks. I, alas, became just a dead duck after "Quack!"ing for 19 years.
Thank you for reading. Your thoughts welcome: bradmcc@bmccedd.org (https://www.bmccedd.org)