The Importance of People in Software: A Tribute to Jerry Weinberg
The software community lost one of its greats earlier this month. Gerald Weinberg was a consultant and author whose work inspired many to be better engineers and better leaders. Although he’s no longer with us, his message about the role of people in building quality software lives on in his books and with those who have learned from him. I’d like to share some of his writings that inspired me.
I learned of Jerry Weinberg when a mentor at my first programming job suggested that I read The Psychology of Computer Programming, a book that helped me realize that programming was as much about people as technology—a realization that has shaped my career. While some of the anecdotes in the book may today seem dated, the observations about the impact of teams on software delivery are still relevant.
For example, he observes that the rise of time-sharing systems eliminated a built-in opportunity for collaboration that waiting for console debugging time provided. Teams still face the challenge of how to integrate teamwork and collaboration into their process. Similarly, he mentions how systems programming teams often became detached from actual delivery goals, a theme one often sees with agile projects that decompose into feature, component, and infrastructure teams. And “egoless programming”—a central theme of the book—is at the heart of successful agile teamwork.
Of his many other writings, a couple of others also stand out for me. At one point I purchased extra copies of Becoming a Technical Leader to lend to friends and colleagues. It contains an excellent explanation of how leadership and authority are orthogonal, and how anyone can demonstrate leadership, regardless of their position in the organization.
Are Your Lights On? is another book I like to share, because it explains, in a very entertaining way, how to step beyond stated requirements to find a solution that solves underlying problems efficiently and effectively. It encapsulates the core idea of agile requirements: Have a conversation about what the customer needs, and try simple things that just might be enough to solve the problem.
I finally got a chance to meet Jerry at the Agile2003 conference. We discussed how his Quality Software Management series, which addressed team and interpersonal dynamics, was especially helpful not only in navigating some dysfunctional work situations, but also during a challenging time in my personal life. Weinberg drew heavily on work of the family therapist Virginia Satir, a connection that, while initially unexpected, makes a lot of sense. You spend a lot of time with your colleagues, you share triumphs and failures with them, and you need to navigate different perspectives to build something. And good communication is essential to success.
When I attended the Problem Solving Leadership workshop in 2012, led by Jerry, Johanna Rothman, and Esther Derby, I got to see his insights in action as he helped lead our group through a challenging experience that, as advertised, helped make me a better leader.
Jerry taught and inspired many of us who will keep alive his message of the importance of people in building quality software. His contribution to our community of software practitioners will live on.