The Pragmatic Engineer
The Pragmatic Engineer
Software architecture with Grady Booch
0:00
Current time: 0:00 / Total time: -1:30:42
-1:30:42

Software architecture with Grady Booch

A conversation with a living legend in software engineering: Grady Booch. We dive into the evolution of software architecture, how and why UML was created, thoughts on LLMs, and more.

Listen now on Apple, Spotify, and YouTube. See the episode transcript at the top of this page.

Brought to you by:

WorkOS — The modern identity platform for B2B SaaS.
Sevalla — Deploy anything from preview environments to Docker images.
Chronosphere — The observability platform built for control.

Before we start: the new book Coding Interview Patterns, by Alex Xu, is out now. The book helps understand coding problems that are commonly used during tech interviews. Alex is the author of the best-selling book Systems Design Interview. We previously covered a whole chapter from the book: Designing a Payment System. Alex spent 1.5 years writing this book, which comes with more than 1,000 illustrative diagrams.

Welcome to The Pragmatic Engineer! Today, I’m thrilled to be joined by Grady Booch, a true legend in software development. Grady is the Chief Scientist for Software Engineering at IBM, where he leads groundbreaking research in embodied cognition.

He’s the mind behind several object-oriented design concepts, a co-author of the Unified Modeling Language, and a founding member of the Agile Alliance and the Hillside Group.

Grady has authored six books, hundreds of articles, and holds prestigious titles as an IBM, ACM, and IEEE Fellow, as well as a recipient of the Lovelace Medal (an award for those with outstanding contributions to the advancement of computing). In this episode, we discuss:

  • What it means to be an IBM Fellow

  • The evolution of the field of software development

  • How UML was created, what its goals were, and why Grady disagrees with the direction of later versions of UML

  • Pivotal moments in software development history

  • How the software architect role changed over the last 50 years

  • Why Grady declined to be the Chief Architect of Microsoft – saying no to Bill Gates!

  • Grady’s take on large language models (LLMs)

  • Advice to less experienced software engineers

  • … and much more!

Takeaways

My biggest takeaways from this fascinating conversation:

1. Surprising: The US Department of Defense and the military built some of the most complicated software systems in the 70s and 80s. In the 70s, these organizations probably had the most code to deal with - globally! - and things like distributed computing were pioneered thanks to these use cases.

2. The three axes of software architecture. Grady argues that when talking about software architecture, we should look at these three dimensions:

  • Ceremony: what processes and formalities should we follow when building software?

  • Risk: what is the impact of this system? What happens if things go wrong?

  • Complexity: how complex is this system? How much of it is built from scratch?

3. The economics of software and software architecture are always connected. Machine time was very expensive in the 1960s and 1970s, and software had to be written from scratch. Good architecture meant writing highly performant code to utilize these rather limited machines.

However, these days, machine time has gotten very cheap, and there are also plenty of “building blocks” at our disposal: from frameworks to cloud services. Software architecture is frequently still connected with cost: to decide on what services and technologies to use, taking the cost aspect into account!

4. There have been similarly large changes in software engineering to what we are seeing with LLMs now. Grady brought two examples that he felt was even more disruptive than LLMs, today:

  • From monoliths to distributed systems, starting in the 80s. This was a major shift where software engineers used to the “old way” of doing things (by squeezing out more from the hardware, using low-level approaches) found it challenging to adapt. He shares examples like in the 60s and 70s it being controversial to create subroutines (basically, functions) because of their performance overhead.

  • The rise of GPUs within gaming. GPUs brought a new commuting paradigm to the wider industry: that of parallel computing. GPUs also happen to be critical to LLM applications.

5. The first two “golden ages of software engineering” happened before the 1990s. Grady refers to the late 1970s and early 1980s as the “first golden age of software engineering” where the focus was on solving problems with algorithms, and systems were mostly monoliths.

He refers to the “second golden age” as the late 1980s when systems engineering took a focus – readability becoming somewhat more important than performance – and this was the time when object-oriented programming took off.

Timestamps

(00:00) Intro

(01:56) What it means to be a Fellow at IBM

(03:27) Grady’s work with legacy systems

(09:25) Some examples of domains Grady has contributed to

(11:27) The evolution of the field of software development

(16:23) An overview of the Booch method

(20:00) Software development prior to the Booch method

(22:40) Forming Rational Machines with Paul and Mike

(25:35) Grady’s work with Bjarne Stroustrup

(26:41) ROSE and working with the commercial sector

(30:19) How Grady built UML with Ibar Jacobson and James Rumbaugh

(36:08) An explanation of UML and why it was a mistake to turn it into a programming language

(40:25) The IBM acquisition and why Grady declined Bill Gates’s job offer

(43:38) Why UML is no longer used in industry

(52:04) Grady’s thoughts on formal methods

(53:33) How the software architect role changed over time

(1:01:46) Disruptive changes and major leaps in software development

(1:07:26) Grady’s early work in AI

(1:12:47) Grady’s work with Johnson Space Center

(1:16:41) Grady’s thoughts on LLMs

(1:19:47) Why Grady thinks we are a long way off from sentient AI

(1:25:18) Grady’s advice to less experienced software engineers

(1:27:20) What’s next for Grady

(1:29:39) Rapid fire round

References

The Pragmatic Engineer deepdives relevant for this episode:

The Past and Future of Modern Backend Practices

What Changed in 50 Years of Computing

AI Tooling for Software Engineers: Reality Check

Where to find Grady Booch:

• X: https://x.com/grady_booch

• LinkedIn: https://www.linkedin.com/in/gradybooch

• Website: https://computingthehumanexperience.com

Mentions during the episode:

• IBM: https://www.ibm.com

• Rational Software: https://en.wikipedia.org/wiki/Rational_Software

• Alan Kay: https://en.wikipedia.org/wiki/Alan_Kay

• IBM Basic assembly language and successors: https://en.wikipedia.org/wiki/IBM_Basic_assembly_language_and_successors

• SAGE: https://en.wikipedia.org/wiki/Semi-Automatic_Ground_Environment

• NATO: https://www.nato.int

• James Webb Space Telescope: https://science.nasa.gov/mission/webb

• UML: https://en.wikipedia.org/wiki/Unified_Modeling_Language

• Fortran: https://en.wikipedia.org/wiki/Fortran

• COBOL: https://en.wikipedia.org/wiki/COBOL

• Lisp: https://en.wikipedia.org/wiki/Lisp_(programming_language)

• ARPANET: https://en.wikipedia.org/wiki/ARPANET

• Simula: https://en.wikipedia.org/wiki/Simula

• Smalltalk: https://en.wikipedia.org/wiki/Smalltalk

• Ada: https://en.wikipedia.org/wiki/Ada_(programming_language)

• David Parnas: https://en.wikipedia.org/wiki/David_Parnas

• The Booch Method: https://en.wikipedia.org/wiki/Booch_method

• Dialogues of Plato: https://www.amazon.com/Dialogues-Plato-Enriched-Classics/dp/1439169489

• Abstract data type theory: https://en.wikipedia.org/wiki/Abstract_data_type

• Barbara Liskov: https://en.wikipedia.org/wiki/Barbara_Liskov

• Edsger W. Dijkstra: https://en.wikipedia.org/wiki/Edsger_W._Dijkstra

• Tony Hoare: https://en.wikipedia.org/wiki/Tony_Hoare

• Mike Devlin: https://en.wikipedia.org/wiki/Mike_Devlin_(entrepreneur)

• Arthur Rock: https://en.wikipedia.org/wiki/Arthur_Rock

• Hambrecht & Quist: https://en.wikipedia.org/wiki/Hambrecht_%26_Quist

• Rational R1000: https://en.wikipedia.org/wiki/Rational_R1000

• Bjarne Stroustrup: https://en.wikipedia.org/wiki/Bjarne_Stroustrup

• Rational ROSE: https://en.wikipedia.org/wiki/IBM_Rational_Rose

• Pure Atria: https://en.wikipedia.org/wiki/Pure_Software

• Reed Hastings: https://en.wikipedia.org/wiki/Reed_Hastings

• James Rumbaugh: https://en.wikipedia.org/wiki/James_Rumbaugh

• Dr. Ivar Jacobson: https://en.wikipedia.org/wiki/Ivar_Jacobson

• Philippe Kruchten: https://en.wikipedia.org/wiki/Philippe_Kruchten

• Winston Royce: https://en.wikipedia.org/wiki/Winston_W._Royce

• Software Project Management by Walker Royce: https://www.amazon.com/Software-Project-Management-Walker-Royce/dp/8177583786

• The Man Behind the Big Tech Comics: https://newsletter.pragmaticengineer.com/p/manu

• Redis: https://redis.io/

• NVIDIA: https://www.nvidia.com/en-us

• Dr. Mary Shaw: https://s3d.cmu.edu/people/core-faculty/shaw-mary.html

• Software Architecture: Perspectives on an Emerging Discipline: https://www.amazon.com/Software-Architecture-Perspectives-Emerging-Discipline/dp/0131829572

• Linux Kernel: https://en.wikipedia.org/wiki/Linux_kernel

• Linus Torvalds: https://en.wikipedia.org/wiki/Linus_Torvalds

• Lincoln library timeline: https://timeline.ll.mit.edu/timeline

• Andrew Ng: https://en.wikipedia.org/wiki/Andrew_Ng

• David Ferucci on LinkedIn: https://www.linkedin.com/in/david-ferrucci

• Building Watson: An overview of the DeepQA project: https://research.ibm.com/publications/building-watson-an-overview-of-the-deepqa-project

• Aldebaran: https://corporate-internal-prod.aldebaran.com/en

• Johnson Space Center: https://www.nasa.gov/johnson

• The Society of Mind: https://www.amazon.com/Society-Mind-Marvin-Minsky/dp/0671657135

• Subsumption architecture: https://en.wikipedia.org/wiki/Subsumption_architecture

• I am a Strange Loop: https://www.amazon.com/Am-Strange-Loop-Douglas-Hofstadter/dp/0465030793

• John Cameron: https://www.imdb.com/name/nm0131625

• Yann LeCun on X: https://x.com/ylecun

• Artificial neuron: https://en.wikipedia.org/wiki/Artificial_neuron

• Grady’s tweet about LLMs: https://x.com/Grady_Booch/status/1697346790679593349

• Alphafold source code: https://github.com/google-deepmind/alphafold

• Cosmos: A Personal Voyage: https://en.wikipedia.org/wiki/Cosmos:_A_Personal_Voyage

• Python: https://www.python.org

Production and marketing by https://penname.co/. For inquiries about sponsoring the podcast, email podcast@pragmaticengineer.com.

Discussion about this podcast

The Pragmatic Engineer
The Pragmatic Engineer
Software engineering at Big Tech and startups, from the inside. Deepdives with experienced engineers and tech professionals who share their hard-earned lessons, interesting stories and advice they have on building software.
Especially relevant for software engineers and engineering leaders: useful for those working in tech.