On October 28, Watts Humphrey finally lost his battle against illness. Although I had been familiar with his work for a long time, I only got to know him personally in recent years, starting with the first SEAFOOD conference on software engineering for outsourcing where he gave an outstanding keynote.
Watts Humphrey will be remembered for his crucial role in putting engineering at the center of software engineering. His main contributions all pursue that goal: the Capability Maturity Model (CMM, later extended beyond software to Capability Maturity Model Integration, CMMI) and its consequences on the work of software teams (TSP, Team Software Process) and individual programmers (PSP, Personal Software Process).
The general lessons are the same throughout: individuals, teams, projects, companies, and the software industry as a whole should apply solid engineering principles. The principles include:
- Recording everything that we do, the way traditional engineers keep logs.
- Learning and applying quantitative and statistical quality assurance techniques.
- Continuously measuring effort, cost, product attributes, and other project attributes.
- Recording all measurements and outcomes into a personal, project, or company history database to develop and continuously enrich a reference for future developments.
- Using proxy measures (measurements of what can be measured) to obtain advance estimates of important attributes (measurements of what should be measured, but cannot be measured yet or is not directly measurable). For example, we obviously do not know the number of Source Lines Of Code (SLOC) before we have written them, but we can use various proxies —such as an estimate of function points deduced from a requirements document, or a combination of parameters as used by Boehm's COCOMO model—informed by history data.
- Continuously assessing the state of developments, qualitatively and quantitatively; learning from this assessment to improve the performance of the individual, team, project, or company.
- Using the collected data to challenge and improve software practices and processes.
By an accident of history, these ideas have had their most visible applications in two specific worlds : the U.S. Department of Defense contractor community and the Indian outsourcing industry. It did not help that—unlike Humphrey's own books, always concrete, homely, and stimulating—the basic CMMI documents are written in a caricature of government bureaucratese, inevitably turning off many programmers and managers who could most benefit from the concepts.
Another accident of history is that a number of people promoting agile methods found it useful to position themselves against this disciplined approach to software engineering, an opposition that, when we look back in a few years, will seem absurd. There is no contradiction between practicing agile practices, at least the non-outlandish ones such as iterative development, and applying the principles of professional software development promoted, for example, by Humphrey's PSP.
Such artificially construed oppositions notwithstanding, I am convinced that PSP and other seminal principles developed by Humphrey will be increasingly taught and practiced as part of the inevitable professionalization of software engineering.
Watts Humphrey was a delightful man to know. His persona was very much in line with his work; people would joke that he was so focused and well organized that he must have passed CMMI qualification at level 5. In the evening when I took the picture above (for my Gallery of Computer Scientists), he was enjoying himself like everyone else but keeping track of time, and knew exactly when to head home. He had a keen sense of humor, rarely neglecting the opportunity for a good pun. At the SEAFOOD conference, the other keynoter, Andrey Terekhov from Saint Petersburg, used in his talk a metaphor based on a story from Soviet times: you are accused of being a camel; how do you prove that you are not? Not so easy. Watts dryly commented that he could prove that he is not a camel: "I am Humphrey."
The state of his health prevented him from accepting invitations in the last year. In particular he could not come to the 2010 International Conference on Software Engineering. I hope someone told him that the entire audience gave him and his work, in absentia, a standing ovation (see the final part, starting at 9:33, of my short speech there).
Next week in Zurich we are holding the Future Of Software Engineering symposium (FOSE, see the program here, all consisting of invited speakers who are among the most prestigious in the entire field of software engineering: Barry Boehm, Manfred Broy, Patrick Cousot, Erich Gamma, Yuri Gurevich, Michael Jackson, Rustan Leino, David Parnas, Dieter Rombach, Joseph Sifakis, Niklaus Wirth, Pamela Zave, Andreas Zeller). Watts had been invited and wanted to participate, but illness won. FOSE will provide an opportunity to honor the memory of Watts Humphrey, a pioneer of software engineering.