Newsletter Title: Software architecture with Grady Booch
Software architecture with Grady BoochA 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. Brought to you by: • WorkOS — The modern identity platform for B2B SaaS. — 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:
TakeawaysMy 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:
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:
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 ReferencesThe 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. You’re on the free list for The Pragmatic Engineer. For the full experience, become a paying subscriber. Many readers expense this newsletter within their company’s training/learning/development budget. This post is public, so feel free to share and forward it. If you enjoyed this post, you might enjoy my book, The Software Engineer's Guidebook. Here is what Tanya Reilly, senior principal engineer and author of The Staff Engineer's Path said about it:
© 2024 Gergely Orosz |