My most significant achievement at Digital in the years 1982-1989 was to help introduce object orientation into the practices of "support software" teams, those who wrote software that was used internally to support the hardware development (in contrast to those teams who wrote software for the company to license to others).

When I first started programming at Digital, I really didn't have a clue about design, but somebody handed me a book they had been given on structured analysis and design. Nobody I knew was using it and I had some serious questions about how it would respond to significant change, but it had a great deal of buzz in the community, so initially I started using it anyway. After about a year, I found out that all my misgivings were spot-on, so I started looking around for something better. (Lesson #1: Never trust anyone who works for a tool vendor when they tout an approach.) Around 1985, I started reading about Smalltalk and programming with objects. Digital had a research project called Trellis that was a Smalltalk-like environment with some useful innovations. Trellis wasn't really appropriate for production work and C++ was still a preprocessor from AT&T which made debugging awkward. Digital sold a respectable Ada compiler and I found that Ada had most of the structures I needed so I started programming using objects in Ada.

One of the things that I missed from structured analysis and design was its graphical notation. Working on a team supporting a CAD group in an environment awash in blueprints, it seemed that well-engineered software should have a blueprint as well. However, the notation also needed to be something that could be drawn freehand on a whiteboard during the process of design. There were a number of competing candidate notations out there, from names like Berard, Booch, Jacobsen, Rumbaugh, and many others. Some of the SASD crowd were even hesitantly making suggestions. (I studied them all in depth. UML truly does combine the best features of all of them into a single coherent whole.) I attended a number of Ada symposia looking for coherent, methodical design approaches. I tried the Booch approach of underlining nouns and verbs from written specs. I tried several other approaches. Eventually, I arranged for Ed Berard to fly in and give a one-week course to about 20 engineers from across the company.

I wasn't doing this in a vacuum. I had the support and encouragement a number of fellow-travelers. In particular, Roger Goun was doing similar work on the team that developed the major CAD system we used in-house. He had gotten approval to use C++, so he was also working with how to best leverage implementation inheritance. We had lots of good and lively discussions and it is probably no accident that the team I ended up joining in software product development a few years later was closely related to the team that he had joined a year or so earlier.

Through 1989 when I left the group the approach led to a number of successes for the team. For the larger projects we were starting to do, we had a way to discuss program structure and make trade-offs. We had a clean way to parcel out work with interface contracts. Rework and enhancements were less painful. And we were using industry best practices early that many would struggle to catch up with in the following years.