Statistics
13
Views
0
Downloads
0
Donations
Support
Share
Uploader

高宏飞

Shared on 2026-01-13

AuthorJacqui Read,

No description

Tags
No tags
Publish Year: 2023
Language: 英文
File Format: PDF
File Size: 35.1 MB
Support Statistics
¥.00 · 0times
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Jacqui Read Communication Patterns A Guide for Developers and Architects
SOF T WARE ENGINEERING “Communication Patterns is a masterful guide that unlocks the complexity behind the language of human interaction. A must-read!” —Mark Richards Software Architect, Founder of DeveloperToArchitect.com “They might be called soft skills, but they’re not easy to learn since they are so infrequently taught. This book remedies that gap.” —Rebecca Parsons, Chief Technology Officer Emerita, Thoughtworks Communication Patterns Twitter: @oreillymedia linkedin.com/company/oreilly-media youtube.com/oreillymedia Having a great idea or design is not enough to achieve success. You must communicate your vision effectively to gain stakeholder support for your design and secure collaboration and contribution from your teams. In this practical book, author Jacqui Read shows you how to successfully present your architecture and gain the commitment and understanding you need from stakeholders. Discover how to effectively communicate to avoid misunderstandings that can lead to increasing costs, unmet requirements, and an architecture that is not what you intended. Through constructive examples and patterns, this book teaches you soft skills you can use to express your message clearly to the different audiences you’ll face. This book shows you how to: • Design diagrams and documentation suitable for your expected audience, intended message, and project stage • Create artifacts that are accessible to those with varying roles, needs, or disabilities • Master written, verbal, and nonverbal communication to succeed in technical settings • Communicate and collaborate with distributed teams to successfully design and document software and technical projects • Apply the communication patterns presented in this book in real-world projects and software designs Jacqui Read is an internationally recognized solution and enterprise architect with hands-on experience and expertise coding and architecting software systems. She is a specialist in developing architecture practices, constructing evolutionary architectures, and extracting business value from data and knowledge. US $65.99 CAN $82.99 ISBN: 978-1-098-14054-0
Praise for Communication Patterns This book covers one of the most important aspects of software development, the so-called “soft skills,” which ironically present the biggest challenges for many developers. It is chock-full of patterns and advice, some of which are obvious in hindsight, which are often the hardest to see beforehand. Highly useful and recommended for technologists at all levels. —Neal Ford, Director/Software Architect/Meme Wrangler, Thoughtworks, Inc. Jacqui shows that the skill of communication is not black magic for the lucky few: it can be learned, practiced and polished. This complete overview full of practical insights will help anyone improve and be more successful in achieving what they want. —Kim van Wilgen, Customer Director, Schuberg Philis Effectively communicating ideas and solutions is an essential skill for software developers and architects. However, very few resources show you how—until now. Communication Patterns is a masterful guide that unlocks the intricate web of verbal, written, visual, and non-verbal communications. Through patterns and practical techniques, Jacqui untangles the complex world of communication and helps us better understand the language behind human interaction. This book promises to be one of the most important books of the decade, one that should be on every technologist’s bookshelf. —Mark Richards, Software Architect, Founder of DeveloperToArchitect.com Jacqui Read’s unique approach to communication is empowering, insightful, and imbued with practical wisdom. Communication Patterns is the definitive guide to enhancing communication skills in the tech industry. —David R. Oliver, Principal Architect, Actica Consulting
We could all be better at communicating our technical decisions, designs, and architectures. This book covers all the aspects you need to improve your communication, all the way from the high-level concepts down to the practical details. —Alistair Jones, Founder, nifdi.app Communication Patterns is a great book that helps you communicate and illustrate architecture better with anybody in so many ways. The patterns described by Jacqui Read are helpful in improving communicative collaboration in your teams. —Jonah Andersson, DevOps Engineer Lead, Microsoft MVP and MCT, Author of Learning Microsoft Azure What we think and communicate is what we build. Our communication skills define, for better or worse, our software architectures. This book will improve both. —Diana Montalion, Systems Architect, Founder, Mentrix Practice alone does not make perfect. Communication Patterns covers common mistakes and guides you toward more effective visual, verbal, and written communication. —Stefan Hofer, Author of Domain Storytelling, Workplace Solutions (WPS) Communication is a skill all possess, but very few master. Starting with simple concepts and ramping up to advanced skills, Communication Patterns is an invaluable aid for engineers to become master communicators and wow the audience with crisp visuals, engaging storytelling, and clear argumentation. —Sonya Natanzon, Senior Director, Enterprise Software Engineering Jacqui gives us a treasure map in Communication Patterns. Her book addresses the different layers, communication modes, and communication nuances in our craft, no matter the formal position. She describes and gives names to my unspoken challenges, and her experience as an architect and developer is translated to this book, where you can leverage her knowledge to create inclusive and effective communication within your team, department, and organization. —João Rosa, Independent Consultant and Team Topologies Valued Practitioner, Impactfulness
The subtitle might say this book is for developers and architects, but anyone, particularly in a leadership position, should read this book to become more effective. And they might be called soft skills, but they’re not easy to learn since they are so infrequently taught. This book remedies that gap and helps demystify successful communication approaches. —Rebecca Parsons, Chief Technology Officer Emerita, Thoughtworks In this book author Jacqui Read has collected a set of small, surprisingly sense-making patterns, that will often leave the reader with the “Why didn’t I think of this before?” question. Communication Patterns is an excellent read for architects, modelers, and developers. While reading through the extensive set of patterns in this book, I often had a warm, deja vu feeling. Jacqui puts her finger on the right spots and adds useful details for architects, modelers, and developers. —Sander Hoogendoorn, CTO at iBOOD.com, International Keynote Speaker, and Author of Microteams, This Is Agile, and Pragmatic Modeling with UML Finally, a book about communication in the world of developers, bridging the gap between complex code and meaningful conversations. —Cecilia Wirén, Senior Developer, Microsoft MVP In Communication Patterns, Jacqui Read doesn’t just lay out patterns for effective communication with various stakeholders; she provides a compass for every developer and architect. Each chapter reminds me that merely designing software collaboratively with stakeholders isn’t enough; the real power lies in how we present it. Every time I embark on a new software project or collaborate with teams and stakeholders, I turn to this book for guidance on the best approach and how to structure our conversations. —Kenny Baas-Schwegler, Software Consultant and Software Architect, Weave IT b.v. Communicating ideas effectively is not a skill that many developers and architects are formally taught, so we go through our careers doing it badly and learning via trial and error. What Jacqui has put together in this book should be foundational knowledge for any aspiring software developer and will fill in many gaps for seasoned practitioners. —Nick Tune, Principal Consultant, Empathy Software
Jacqui Read Communication Patterns A Guide for Developers and Architects Boston Farnham Sebastopol TokyoBeijing
978-1-098-14054-0 [LSI] Communication Patterns by Jacqui Read Copyright © 2024 Read the Architecture, Ltd. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://oreilly.com). For more information, contact our corporate/institutional sales department: 800-998-9938 or corporate@oreilly.com. Acquisitions Editor: Louise Corrigan Development Editor: Corbin Collins Production Editor: Katherine Tozer Copyeditor: Amnet Systems LLC, Sharon Wilkey Proofreader: Sharon Wilkey Indexer: BIM Creatives, LLC Interior Designer: David Futato Cover Designer: Karen Montgomery Illustrator: Kate Dullea October 2023: First Edition Revision History for the First Edition 2023-10-06: First Release See http://oreilly.com/catalog/errata.csp?isbn=9781098140540 for release details. The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. Communication Patterns, the cover image, and related trade dress are trademarks of O’Reilly Media, Inc. The views expressed in this work are those of the author and do not represent the publisher’s views. While the publisher and the author have used good faith efforts to ensure that the information and instructions contained in this work are accurate, the publisher and the author disclaim all responsibility for errors or omissions, including without limitation responsibility for damages resulting from the use of or reliance on this work. Use of the information and instructions contained in this work is at your own risk. If any code samples or other technology this work contains or describes is subject to open source licenses or the intellectual property rights of others, it is your responsibility to ensure that your use thereof complies with such licenses and/or rights.
Table of Contents Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Part I. Visual Communication 1. Communication Essentials. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Know Your Audience 3 Mixing Levels of Abstraction 7 Representational Consistency 11 Summary 16 2. Clarify the Clutter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Color Overload 17 Boxes in Boxes in Boxes 19 Relationship Spiderweb 22 Balance Text 26 Summary 29 3. Accessibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Relying on Color to Communicate 31 Include a Legend 37 Appropriate Labels 39 Summary 42 4. Narrative. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 The Big Picture Comes First 43 Match Diagram Flow to Expectations 47 Clear Relationships 51 vii
Summary 54 5. Notation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Using Icons to Convey Meaning 55 Using UML for UML’s Sake 57 Mixing Behavior and Structure 61 Going Against Expectations 64 Summary 66 6. Composition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Illegible Diagrams 67 Style Communicates 74 Misleading Composition 75 Create a Visual Balance 81 Summary 84 Part II. Multimodal Communication 7. Written Communication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Simple Language 87 Acronym Hell 90 Structured Writing 92 Syntax of Technical Writing 95 Strong Verbs 95 Short Sentences 96 Precise Paragraphs 96 Consistent Vocabulary 97 Audience Empathy 97 Summary 99 8. Verbal and Nonverbal Communication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Encoding Messages 101 Using the Acceptance Prophecy 101 Giving Your Full Attention 102 Using Body Language and Gestures 103 Decoding Messages 105 Battling Bias 106 Being Present 108 Awareness of Cultural Differences 109 Influence and Persuasion 110 Summary 114 viii | Table of Contents
9. The Rhetoric Triangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Ethos 116 Establish Your Credentials 116 Use Trustworthy Sources 118 Be Transparent 119 Demonstrate Your Knowledge 121 Pathos 122 Tell a Story 122 Speak from the Heart 125 Use Vivid Language and Strong Imagery 126 Logos 128 Use Data and Facts 128 Make Logical Connections 129 Use Reasoning and Argumentation 129 Summary 131 Part III. Communicating Knowledge 10. Knowledge Management Principles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Products over Projects 135 Project Mindset 136 Product Mindset 136 Abstractions over Text 140 Lists 140 Tables 141 Visual Abstractions 142 Word Clouds 143 Charts, Graphs, and Diagrams 145 Other Abstractions 145 Perspective-Driven Documentation 146 DRY Perspectives 147 Fractal Perspectives 148 Implementing Perspectives 149 Summary 152 11. Knowledge and People. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Get Feedback Early and Often 153 Share the Load 157 Nonproprietary Formats 157 Accessibility 159 Collaboration 161 Table of Contents | ix
Roles and Responsibilities 162 Further Techniques 162 Just-in-Time Architecture 163 Summary 167 12. Effective Practices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 ADRs 169 ADR Structure 171 ADR Content 174 ADR Storage 179 ADR Culture 180 Architecture Characteristics 183 All Documentation as Code 187 Technical Documentation 187 Automatically Generated Documentation 190 Other Documentation 192 Summary 194 Part IV. Communicating Remotely 13. Remote Time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Synchronize Time 198 Time Zone 198 Empathy and Compromise 201 Split Shifts 202 Respect Working Patterns 204 Communicate Availability 205 Defend Part-Time Hours 205 Plan for Holidays 206 Account for Geography and Culture 208 Recognize Real Working Capacity 209 Improve Energy and Productivity 210 Control Notifications 210 Automate Tasks 211 Work with Others’ Rhythms 212 Schedule for Energy 212 Summary 214 14. Remote Principles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Meetings to Sync 215 Synchronous Versus Asynchronous 215 x | Table of Contents
Enhance Meetings 218 Async to Think 223 Async Advantages 223 Async Obstacles 223 Direction Matters 224 Async Methods 226 Enhance Async 229 Remote-First Working 230 Remote-First Versus Remote-Friendly 230 Remote-First Benefits 232 Evolving to Remote-First 234 Summary 237 15. Remote Channels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Symmetrical Email 239 Email Reasons 240 Email Expectations 240 Email Clarity 241 Email Tips 242 Online Presentations 244 Audience Engagement 244 Presentation Content 246 Screen Shares 247 Remote Tools and Governance 248 Selection Techniques 248 Remote Tools 250 Data Proliferation 252 Security 254 Tool Efficiency 254 Tool Governance 255 Summary 262 Epilogue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Appendix: ADR Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Table of Contents | xi
(This page has no text content)
Preface Communication underlies pretty much everything you do, from your facial expres‐ sion showing disapproval or enjoyment, to your email about the latest project update, to what you say in a meeting or presentation. But what is communication, and how do you make it successful? The Oxford English Dictionary defines communication as “the activity or process of expressing ideas and feelings or of giving people information.” This encompasses many of the important aspects of communication but doesn’t indicate what would make it successful. The same dictionary defines communicate as “to share or exchange information, news, ideas, feelings, etc.” This definition provides more detail, but we still need to go further to work out how to make communication successful. The Merriam-Webster Dictionary adds that communication is “through a common system of symbols, signs, or behavior,” introducing the idea of commonality and how the ideas or information is conveyed. Here’s what we have so far: • Expresses ideas and feelings • Gives people information • Shares or exchanges information, news, and so on • Uses a common system of symbols, signs, or behavior That gives a good idea of what communication is, but what makes communication successful? The polyglot linguist Michel Thomas put it simply when he said the aim of commu‐ nication is to “get the ball over the net.” None of the definitions we’ve seen so far cover this critical element of understanding. xiii
Let me take a stab, then: Successful communication is the art and science of sharing or exchanging ideas and information, using a common set of symbols, signs, or behaviors, resulting in shared understanding. The cost of miscommunication is high, whether it’s cumulative wasted time or the price of putting things right. So why is there not more emphasis on making commu‐ nication successful, or at least improving it? That is the focus of this book. Software development and architecture have patterns and antipatterns that can be applied (or recognized) in writing code and architecting systems. A pattern is a reusa‐ ble solution that has been shown to be effective when used to solve a problem. The biggest benefit is that someone else has done the hard work for you, and you just need to apply the solution to your particular situation and problem. Antipatterns are not the direct opposite of patterns. They are solutions that look like they solve a problem but have consequences that outweigh any potential benefits. Learning about antipatterns means that you can recognize them in designs or existing systems, or recognize situations where they might occur so that you can avoid or mit‐ igate them. This book applies the concept of patterns and antipatterns to communication. People often quote Brian Foote and Joseph Yoder’s 1997 paper “Big Ball of Mud” (and for good reason): “If you think good architecture is expensive, try bad architecture.” It means that creating good architecture requires an investment, but not investing will result in bad architecture that costs more in the long run. The same thing should be said for communication: If you think good communication is expensive, try bad com‐ munication. Investing in good (successful) communication is less expensive than bearing the costs of bad (unsuccessful) communication. Why I Wrote This Book Throughout my career in software development and software architecture, I have fre‐ quently discovered that the principles and techniques I apply naturally do not come naturally to others. In some cases, I have applied knowledge I learned from some‐ where else to the technology domain, and in others, my approach just seemed to me the right way to do it. I realized that I had built up many patterns and antipatterns in my toolbox, and not all were the type that can be applied to code or architecture. Some were applicable to what many would describe as soft skills, like creating diagrams and documentation. Even some that were designed to be used in code or architecture, I was applying out‐ side of their intended use. xiv | Preface
It turned out that these soft patterns and antipatterns could all be categorized as com‐ munication patterns and, recognizing that my tool kit was not widely accessible to others, I determined to make it available. The result is this book and the training courses that I provide through O’Reilly and privately (along with other architectural courses and consulting). My intention in writing this book is to improve communication of teams and organi‐ zations within the technology sector so that individuals can increase their productiv‐ ity and general happiness, and organizations see an improvement in their return on investment (ROI) and even their bottom line. Investing in your soft skills will enhance your technical skills and make you a stand- out technical star. I consider myself to be a lifelong learner and would love to hear your experiences of applying the patterns and antipatterns in this book, and of any other methods you use to optimize the way you and your colleagues communicate. You can contact me via O’Reilly (“How to Contact Us” on page xix), my website, or social media. Who Should Read This Book This book is intended for developers, engineers, and all types of architects (solution, software, data, enterprise, and so forth) at any point in their careers. Because the skills this book presents are not formally or traditionally taught, even the most seasoned technologist can benefit. Applying this book’s patterns to your communication will set you apart as someone who not only has the technical skills but also the soft skills to get things done and be understood by technical and nontechnical audiences alike. For those aspiring to move from development to architecture, or into a senior or tech-lead role, improving your communication will remove at least some of the hurdles between you and the role you desire. Although principally tailored to developers and architects, the patterns in this book can be applied by, and provide benefits to, anyone in the software and technology industries (and other industries besides). The relevancy of each pattern and antipat‐ tern will depend on your role. For example, Part I will be useful to business analysts (BAs), and Part IV will be use‐ ful to anyone working in a remote or hybrid environment, or with customers in another time zone. Managers and leaders will greatly benefit from Parts II, III, and IV, with the added benefit of being able to disseminate the techniques and principles to their reports and teams. Many patterns and principles in this book come from domains very different from software, and I wouldn’t be surprised if they can be applied in still more domains. Preface | xv
How to Read This Book The book is structured into four parts, each covering one major aspect of communi‐ cation in the software and technology domain. You are free to start wherever you feel would most benefit you, or with whatever piques your interest the most. Otherwise, Part I is the place to start. Part I covers patterns and antipatterns for diagrams and other visuals. Chapter 1 lays the foundations that the other chapters in Part I build upon. Ensure you understand and are applying the patterns in Chapter 1 before you start adding the other patterns from Part I to your tool kit. Part II includes patterns and techniques for written, verbal (spoken), and nonverbal communication, which you can apply to remote and in-person interactions. Part III contains principles, practices, and patterns to improve knowledge management and sharing, including documentation. Part IV offers many strategies and patterns for you to use when communicating with people in other time zones and with different work‐ ing hours, particularly in hybrid and remote environments. Images and Color Some of the figures in this book need to be viewed in color. In the printed version, all images are grayscale, so we’ve included links to color versions of any images that need to be viewed in color. All images are available on the accompanying website. Software Tools You do not need to use any specific software tools to put the patterns and techniques in this book into practice, but I do mention various tools. When citing tools that could be used for a particular purpose, I usually refer to those that are well-known. The recommendations I make are mostly open source options. Remember to check the license required for your situation and ensure that the terms of service meet your needs. To create my original diagrams and illustrations for this book, I used draw.io, for a time known as Diagrams.net. I encourage participants to use draw.io when complet‐ ing exercises in the workshops I run. It is free, open source, requires no login, and can be used as a desktop application or via a web browser. Draw.io has many integra‐ tions for other applications, and the desktop version is available for Windows, macOS, Linux, and ChromeOS. xvi | Preface
Polyglot Media Polyglot Media is a fictitious company used to create examples for this book. The company has around 150 employees, who are spread across several countries, and an international customer base. Polyglot Media provides customers with access to vari‐ ous digital media (ebooks, audiobooks, and videos) on a subscription and pay-as- you-go basis, and it also offers hard copies of books. Some media is stored in-house, and some is provided by partners. The Polyglot Media system is also used by authors to update and create publications and by editors (employed by Polyglot Media) to access and edit the authors’ publications. EXAMPLE Polyglot Media Examples Throughout the book, I used Polyglot Media in examples. You will see that lots of the diagrams are based on Polyglot Media systems, and other examples are presented in a box just like this one. All examples are fictitious but based on my own or others’ expe‐ riences and learning. Conventions Used in This Book The following typographical conventions are used in this book: Italic Indicates new terms, URLs, email addresses, filenames, file extensions, and pat‐ tern or antipattern names. Constant width Used for program listings, as well as within paragraphs to refer to program ele‐ ments such as variable or function names, databases, data types, environment variables, statements, and keywords. This element signifies a tip or suggestion. This element signifies a general note. Preface | xvii
This element indicates a warning or caution. Using Code Examples Supplemental material (code examples, exercises, etc.) is available for download at https://communicationpatternsbook.com. If you have a technical question or a problem using the code examples, please email bookquestions@oreilly.com. This book is here to help you get your job done. In general, if example code is offered with this book, you may use it in your programs and documentation. You do not need to contact us for permission unless you’re reproducing a significant portion of the code. For example, writing a program that uses several chunks of code from this book does not require permission. Selling or distributing examples from O’Reilly books does require permission. Answering a question by citing this book and quoting example code does not require permission. Incorporating a significant amount of example code from this book into your product’s documentation does require permission. We appreciate, but generally do not require, attribution. An attribution usually includes the title, author, publisher, and ISBN. For example: “Communication Patterns by Jacqui Read (O’Reilly). Copyright 2024 Read the Architecture, Ltd., 978-1-098-14054-0.” If you feel your use of code examples falls outside fair use or the permission given above, feel free to contact us at permissions@oreilly.com. O’Reilly Online Learning For more than 40 years, O’Reilly Media has provided technol‐ ogy and business training, knowledge, and insight to help companies succeed. Our unique network of experts and innovators share their knowledge and expertise through books, articles, and our online learning platform. O’Reilly’s online learning platform gives you on-demand access to live training courses, in-depth learning paths, interactive coding environments, and a vast collection of text and video from O’Reilly and 200+ other publishers. For more information, visit https://oreilly.com. xviii | Preface
How to Contact Us Please address comments and questions concerning this book to the publisher: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 800-889-8969 (in the United States or Canada) 707-829-7019 (international or local) 707-829-0104 (fax) support@oreilly.com https://www.oreilly.com/about/contact.html We have a web page for this book, where we list errata, examples, and any additional information. You can access this page at https://oreil.ly/communication-patterns. For news and information about our books and courses, visit https://oreilly.com. Find us on LinkedIn: https://linkedin.com/company/oreilly-media. Follow us on Twitter: https://twitter.com/oreillymedia. Watch us on YouTube: https://youtube.com/oreillymedia. Acknowledgments This book would never have been written without the assistance and enduring stam‐ ina of one person: my husband Steve. His unending support enabled me to tackle the adventure that is writing a technical book. From encouragement to technical proof‐ reading, from making sure I ate real food to taking on most of the jobs of running a house while working a full-time job and parenting two neurodivergent children almost single-handedly, he has allowed me the time and space to write this book. He has also contributed a few good ideas himself. Thank you, Steve, for your belief, back‐ ing, and back-breaking efforts. This book has greatly benefited from my technical reviewers, who put so much effort into reading my drafts and giving valuable feedback. My thanks to Emily Bache, Ali Greene, Alistair Jones, David R. Oliver, and Steve Read (yes, him again). I would also like to thank David J. Oliver for his input into Chapters 10 and 11. Any mistakes you may find in this book are certainly my own. Many people have contributed to this book indirectly, through conversations, blog posts, talks at conferences, books, and other interactions. Thank you to everyone who has shared my journey so far and shared their experiences through events and publi‐ cations. Thank you also to those who have organized the conferences and events that Preface | xix