Over the years, I’ve been a software developer, consultant, and educator. I’m a blend of an academic and industry guy. I spend most of my time in industry, but I also use my PhD in software engineering from Carnegie Mellon University to stay involved in education and academics.
In the last five years, my focus has been on understanding how software developers use models at different levels of abstraction over time, which I call Continuous Design.
I lead the software design education team at Google and write the Pragmatic Designer column for IEEE sofware magazine. I’ve been heavily involved in the SATURN sofware design conference for many years and have been on the program committee for academic conferences including the International Conference on Software Architecture (ICSA) and the International Conference on Software Engineering (ICSE).
My primary interest over the years has been software design. My PhD thesis investigated software frameworks and introduced a new way to describe the interactions between client and framework code. I wrote a book on software architecture that is a blend of ideas from the object-oriented programming community and the software architecture community.
I have written production code for telephone switches, plugins for the Eclipse IDE, and everything for my own web dot-com startup (which was pretty similar to Wikipedia and founded in the same month, but you can guess how that panned out). I am somewhat dangerous at many levels of computing starting with building my own Linux boxes up through enterprise architecture and strategy. Full resume
What should you look at on this site?
My most recent and polished work is is the articles for IEEE Software magazine. The recordings of my public talks tend to reveal more of my overall perspective and are a way of me to get feedback on ideas as they are developing.
Here is a recent keynote at the O’Reilly Software Architecture conference in NYC, 26 February 2020.
This talk is a succinct expression of my ideas on software design: Building Theories is Building Value.