In 1987, I took a job at Apple Computer as a Software Quality Assurance engineer. I was part of a 250-person QA organization. We worked on a different floor, and reported to a different VP, from development. Our jobs were mechanical and somewhat boring. Developers didn’t have a lot of respect for us. We didn’t have that much more respect for ourselves. I remember a fair number of QA engineers getting caught playing games on their computers all day and being fired as a result. I got out of QA and into development as fast as I could.
Not long after I switched departments, Apple dissolved the QA organization and embedded individual QA engineers into their respective development teams. The testers sat next to the developers, went out to lunch with them, and worked cheek-by-jowl with them. Mutual respect, job satisfaction, and quality all skyrocketed.
Since then I’ve held a variety of jobs across the Development-QA-Operations spectrum. I’ve been a consultant, a CTO, and an enterprise architect. I’ve worked for Software-as-a-Service startups, and managed hosting providers and Fortune 500 companies. I’ve led Agile, ITIL, and DevOps initiatives. Throughout all this time, my experience at Apple has always stuck with me. It taught me that, as much as anything, quality comes from dissolving boundaries, fostering cross-functional collaboration, and treating testing as an integral part of a process rather than something external to it.
Anything we write is at least partly a reflection of ourselves. This book certainly reflects my personal history. My path through IT has been quite nontraditional and nonlinear. As an undergrad, I studied liberal arts, not computer science. I attended an alternative school that stressed interdisciplinary inquiry. Rather than traditional majors, the college organized subjects into four major schools. Most students designed their majors within one of the four schools. Mine crossed three of them!
During my senior year, my advisor encouraged me to take a class that was completely unrelated to anything else I was doing. I took a Lisp programming class, and quickly fell in love with the language. Twenty-five years later, my programming resume includes compilers, websites, and distributed operating systems.
That experience taught me another important lesson. We don’t discover solutions to problems purely through analysis. Design is also about adaptation to serendipity. As we move through life and think about the problems we face, we encounter unexpected opportunities. The quality of our solutions depends on our ability to respond to them.
In my case, over the past several years I’ve stumbled upon three key ideas: design thinking, cybernetics, and promise theory. Together with the lessons I learned from college and from working at Apple, these ideas underpin my approach to software and service quality, and form the conceptual backbone of this book.
The first idea is design thinking. As a liberal arts major, I always felt a bit like a stranger in a strange land working in IT. Then I read Tim Brown’s book, Change By Design. It introduced basic design-thinking principles of empathy, ethnography, divergent thinking, and abduction. Suddenly I had a name for the way I’d always approached technology.
Design thinking introduced me to service design. Service design applies product-design techniques and sensibilities to the design of services. In the era of cloud computing, everything we do with software manifests in the form of services. Service design teaches us that we need to think about Software-as-a-Service in terms of our entire interaction with our customers.
Second, serendipity placed a biography of Norbert Wiener in my path. Wiener coined the term cybernetics to refer to feedback-based, adaptive control systems, and was a pioneering member of the field. I’d vaguely heard of the science of control before, but knew little about it. Wiener’s biography immediately captured my imagination. Since then, cybernetics has come to define my approach to design, development, quality assurance, and operations alike.
Finally, my work with IT operations automation led me to Mark Burgess. Mark is the godfather of system administration theory, and the creator of an infrastructure automation tool called CFEngine. He also conceived a model for describing complex socio-technical systems called promise theory. Promise theory gave me a language to put it all together.
Complex systems such as cloud-based software services are inherently uncertain. Failure is inevitable and unavoidable. Customers, though, expect certainty: in other words, continuous rather than discontinuous quality. How do we reconcile expectations with reality? If we can’t avoid failure, can we instead attain resilience?
Promise theory offers a simple yet powerful model for thinking about the relationship between certainty and uncertainty. This model is especially powerful because it lets us address those questions across domains and levels. We can use it to model and manage resilient services as the complex wholes that they are.
Promise theory operates from a cybernetic perspective. Its language gives us a lever to dissolve dualities between acting and listening, designing and operating, and operating and repairing. We can use it to guide our pursuit of what is in my opinion the ultimate goal of twenty-first-century business: dissolving the duality between service provider and consumer.
Systems thinking and transdisciplinary problem solving have always been central to the way I think. I believe they are more than just useful to me personally. They’re also crucial to quality in the 21st-century service economy. As digital services become unavoidable components of our daily lives, their quality more and more deeply influences our own quality of life. Unlike products, which engage customers through momentary transactions, service defines ongoing relationships. To create human value through service experiences, we need to create holistic, responsive, and adaptive relationships between companies and customers.
My experience at Apple introduced me to the idea that integrating tools, practices, and perspectives across disciplines leads to improved quality. This book starts from that belief. It follows a path that reflects my naturally integrative way of thinking. The result is an attempt at a profoundly holistic reimagining of the role and purpose of twenty-first-century IT.
In my view, IT’s purpose must transform from delivering stable systems and reliable information to enabling responsiveness. Promise theory teaches us that certainty comes from continually repairing uncertainty. Design thinking and cybernetics teach us that the way to repair uncertainty is through user-centered feedback loops. IT quality becomes a measure of how well systems and organizations deliver the capability to respond to customers and markets through continual design.
This definition of quality sees design and operations as inseparable. That view reflects my personal journey, which has crossed liberal arts and engineering. It has led me to a perspective on IT and business that spans technical and nontechnical boundaries. My goal for this book is to create a shared understanding and language that marketers, designers, developers, testers, and operators can use to deepen their collaboration with one another. It is my hope that by helping organizations improve cross-functional collaboration, I can make a small contribution to improving the quality of the services upon which we increasingly depend to conduct business and live our lives.
Technology professionals, software developers, web designers, and business and creative professionals use Safari Books Online as their primary resource for research, problem solving, learning, and certification training.
Members have access to thousands of books, training videos, and prepublication manuscripts in one fully searchable database from publishers like O’Reilly Media, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett, Course Technology, and hundreds more. For more information about Safari Books Online, please visit us online.
Please address comments and questions concerning this book to the publisher:
We have a web page for this book, where we list errata, examples, and any additional information. You can access this page at http://bit.ly/designing-delivery.
To comment or ask technical questions about this book, send email to firstname.lastname@example.org.
For more information about our books, courses, conferences, and news, see our website at http://www.oreilly.com.
Find us on Facebook: http://facebook.com/oreilly
Follow us on Twitter: http://twitter.com/oreillymedia
Watch us on YouTube: http://www.youtube.com/oreillymedia
The ideas that form the basis for this book started as a series of talks I gave at various technical conferences in 2013 and 2014. During one of those conferences, a conversation with Courtney Nash from O’Reilly Media sparked the notion that it might be possible to weave my thoughts into a coherent narrative. That narrative would never have happened without her intuition that there might be something of interest from which to draw.
Now that I’ve made it through my first book, I understand why thanking one’s family appears prominently in the acknowledgments of every book ever written. Writing is lonely, challenging, and obsessive. At times I wandered the halls of the house like a ghost. Other times I disappeared to coffee shops for entire weekends. I can’t thank my wife, Brenda, and my son, Ian enough for their patience, support, and encouragement throughout the process.
I am a compulsive synthesist. This book reflects that fact by bringing together DevOps and associated IT practices with design thinking, a completely “non-technical” methodology. It wasn’t until I discovered promise theory, though, that I found a language with which I could fully express this synthesis. I owe a deep debt of gratitude to Mark Burgess for conceiving of promise theory and giving it freely to the world. I also owe him thanks for his kindness, decency, and patience while I grappled with the profundity of his ideas.
Mark generously gave his time to review my manuscript, as did Wim Rampen and James Urquhart. It was James who first introduced me to complexity theory. He was also the first person to be kind to me on Twitter, thus encouraging me to venture further into that world, where I’ve met so many other helpful, encouraging people.
Chief among them during this project have been Dan Turkenkopf, Graham Hill, Justin Arbuckle, Thomas Wendt, Paul Pangaro, Seung Chan Lim, and Gene Kim, who encouraged me to “fight for the heart of QA”. Fredrik Matheson has been an inexhaustible fount of enthusiasm. I also want to thank Patrick Debois and the international DevOps community: first, for giving me repeated opportunities to work through my personal process of synthesis; and second, for being willing to listen to me prattle on about cybernetics and design thinking and promise theory and whatever else came into my mind.
I’ve always found listening to music helpful during the writing process. Picking the right music for the struggle that accompanies any particular paragraph is a minor art form. Throughout this book, whenever I found myself stuck in a particularly deep rut, the improvisational cello music of Zoe Keating never failed to dissolve my writer’s block and pull me out again.
Finally, working with O’Reilly Media has made me a strong believer in the value of a good publisher. Brian Anderson, my editor, deserves credit for helping me turn raw ideas into readable paragraphs and chapters. The rest of the O’Reilly staff, who helped with production, marketing, and speaking, also were tremendously helpful.