Ruby and Caro enjoy my books. How about you?
For more than half a century, Jerry Weinberg has worked on transforming software organizations, particularly emphasizing the interaction of technical and human issues. After spending between 1956 and 1969 as software developer, researcher, teacher, and designer of software curricula at IBM, he and his anthropologist wife, Dani Weinberg (see her bio for more about Dani), formed the consulting firm of Weinberg & Weinberg to help software engineering organizations manage the change process in a more fully human way.
Jerry is author or co-author of several hundred articles and more than 30 books. His earliest published work was on operating systems and programming languages, but the 1971 publication of The Psychology of Computer Programming is considered by many the beginning of the study of software engineering as human behavior. His subsequent works have been an elaboration of many of the software engineering topics raised in that book, through all phases of the software life-cycle, including defining problems and requirements, analysis and design, testing and measurement, as well as management.
He has written on the role of consultants, of programmers, technical leaders, and managers. To many, he is best known for his leadership workshops, such as “System Effectiveness Management (SEM),” “Problem Solving Leadership,” and the “Congruent Leadership Change-Shop”. (See Workshops for more information.)
I suspect Jerry Weinberg has always loved to create computer systems and programs. He’s a programmer through and through. And he has never stopped programming; he’s still at it. When one domain has been exhausted of interesting (i.e. hard) problems, he’s moved on to another until he reached domains where the problems are very hard, very compelling. There he continues to do requirements, analysis, design, code, and test to this day. Those still very interesting problem domains are himself, others, and organizations.
We, as software engineers and managers, are all too well aware of the many “bugs” in organizations. How does one approach the necessary bug fixes and system re-writes? Consider the following approach: Model organizations as software systems composed of many processors (people), functions (what people do), and data (what people know). But organizations are huge systems. To push the analogy, the number of lines of code in a detailed model of an organization would be greater that the total lines of code ever written (think of modeling each of the human beings in the organization and all the interactions between them).
So how would a single individual, Jerry in this case, go about making a meaningful attempt at bug fixing in this enormous system and doing re-writes of bad modules? What sort of training and experience would be especially useful to a “programmer or organizations”? Here’s a few steps that come to mind:
(1) Acquire the academic computing knowledge available, perhaps by specializing in an area particularly important to massive, multiprocessor systems. A Ph.D. in communication sciences [computing, math, linguistics, neurophysiology, psychology, electrical engineering, social psychology, ]would be a good start.
(2) Get a lot of experience doing real computing, write lots of programs, work with lots of computing systems. Maybe get a job in one of the largest and most important companies in the computing business of the day, like IBM.
(3) Supplement this with relevant academic knowledge and experience in associated fields, those dealing with other kinds of large complex systems. Sociology, psychology, and organization behavior might be candidates. If possible you might team up with a really good cultural anthropologist. (That’s Dani.)
(4) Work with a lot of different types of organizations and perhaps create a few of your own.
(5) Build relationships with a lot of good people in different organizations. To facilitate this, offer to “help” organizations become more effective (i.e. make more money) by training their people to be more effective
(6)Train those people in observation and modeling skills. Help them to become more aware of themselves and build models of themselves as “complete” human beings. For example if they are great thinkers, expose them to their emotional side. If they are great feelers, help them build conceptual models and show them how to work with those models.
7) Programming large organizations is a really big problem. You need effective teams of people, not just individuals, to get the work done. So emphasize team building skills in the training you provide. (You’re well prepared to do this from steps 1 through 4.)
(8) You don’t want to have to direct all the details of what bugs to fix first in each organization or what modules need complete re-writes. So plant the idea of becoming a “change artist” in the mind of each person you train.
(9) You might want to focus your “organizational programming” on those organizations which are at the forefront of technology that most effects society, like software. You could create a special training program for software engineering types to encourage healthy feedback loops and support for your growing covert army of programmers.
Their are lots of other steps of course. For example, publishing a lot of positions you know well as a consultant so you can recruit your helpers as well as providing them with reference material. I trust the reader at this point gets the basic idea.
Now you (Jerry) are well positioned to keep doing you’ve always done, writing programs to solve very interesting problems. And you’ve got lots of helpers, experts in many fields, most of them good friends with whom you’ve shared important, emotional, learning experiences. Some (most?) aren’t even aware that they are supporting your programming habit. They are even hosting some of the programs you’ve written, and improving them!
You’re a sly one.
(and thanks, Jerry, it’s a tough job but somebody’s got to do it) – Andy
I was very small when I was born–only 9 pounds or so–and I’ve never gotten over it. Inside me, there’s a little boy who can’t make sense out of the world, but keeps trying. I read about computers when I was about 11, and thought that these “giant brains” might help, so I determined to work with computers when I grew up. This led me to study math and physics, because my guidance counselor told me that computers “had something to do with electronics.” There were no computer classes, or even computers, any place where I found myself. Indeed, I never took a computer course in my life. Yet.
After more than 50 years working with computers, I’ve learned a couple of things, but I still can’t make sense out of most of it. Most of all, I’ve discovered that people are at the bottom of just about every problem–but I think I knew that when I was little, then got talked out of it somewhere along the way. I’ve worked hard at relearning this lesson, and learning how to do something about it. While educating myself, I learned a second principle: I’m the “people” at the bottom of most of my problems.
Anyway, using these insights, I’ve been able to help a lot of people solve problems. I’ve written a lot of books, too, which many people have told me are helpful; but I get much more satisfaction from helping people directly, so I get to know them. For instance, I’ve helped several hundred people write their books, and several thousand find better ways to do their job. I feel very good when I find out that many of these people have learned things from me that they take back with benefit to their family life–possibly because my early family life wasn’t very wholesome.
From my first attempt to create a better family life for myself, I have four children (one, now deceased) and four grandchildren (see picture above, with daughter-in-law, Chantal. Although I thought I had screwed up that family life, too, now that the kids are all near the half-century, things seem to have worked out okay. I did learn a lot from that first attempt, which enabled me to choose Dani for my second – by far the best decision I ever made. We’ve now passed almost five decades of living together, which involved about 7 serious renegotiations of our original, informal marriage contract. We’ve also had a number of children, but they’ve all been German Shepherd Dogs.
I like to start new things that help people. Although I’ve written several hundred articles and more than 40 books, my greatest satisfaction is creating real-life learning experiences – schools, camps, institutes, seminars, or development groups. I guess one of the things I am is a social architect. When I’m not starting a new social system, I’m often repairing an old one; in this role, I’m an organizational therapist. And, I also like to work with one-person organizations; perhaps I am at my best as a restorer of works of art.
Anyway, if you’re a work of art that needs a little restoration, I invite you to explore this site and see if there’s anything we can do for each other.