Engineering Software as a Service
An Agile Approach Using Cloud Computing
Preface to the Second Edition

Why so many quotes? We think quotes make the book more fun to read, but they are also an efficient mechanism to pass along wisdom from the elders, and to help set cultural standards for good software engineering. We also want readers to pick up a bit of history of the field, which is why we feature quotes from Turing Award winners to open each chapter and throughout the text.
If you want to build a ship, don’t drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea.
— Antoine de Saint-Exupéry, Citadelle, 1948
If you’re nostalgic for the Welcome from the First Edition, you can read it at http://www.saasbook.info/welcome-1st-edition.
We created the First Edition of ESaaS in 2014 to help other instructors and students of software engineering practice what we had discovered: Agile\(+\)SaaS is not just a great way to develop and deploy software, it’s also a great fit for teaching software engineering. We have been humbled by the success of the book, the accompanying instructor materials (for which visit saasbook.info), and the Massive Open Online Courses on edX as a way of “spreading the word!”
What’s New: COD, CHIPS, and Codio
This Second Edition has an improved structure (in our opinion) as well as substantial revisions to nearly half of the material.
COD and CHIPS. Most of the book’s sections are Content-Oriented Didactics (COD): the conceptual vocabulary that shows the learner how to think about an important idea. Interspersed after every few COD sections are Coding/Hands-on Integrated Programming activities (CHIPS), where students learn by doing, applying the ideas of the COD sections in hands-on exercises. Each CHIPS has a rating from one to three “aqueducts” reflecting the relative time and effort required to complete it.
All-in-one course using Codio. We have worked closely with Codio to integrate COD, CHIPS, and autograding into their education-focused IDE. We strongly urge instructors or students to use Codio to get started as quickly as possible, including built-in autograding for most of the CHIPS and a preconfigured curated environment with the correct versions of all tools needed. Visit codio.com/esaas to get started. If you’re not using Codio, the starter code and student-facing documentation for each CHIPS are available in a public GitHub repository whose name is given as part of each CHIPS, and instructors can visit saasbook.info to gain access to reference solutions and Gradescope-compatible autograders.
What’s New: Major Content Changes
Mobile-first, API-first exposition of SaaS. Since the First Edition, “cloud \(+\) client” has remained the dominant way that software is developed, but SaaS has transitioned from delivering primarily HTML views to delivering data to mobile clients over APIs. As well, much greater attention is being paid to designing for persons with disabilities. We therefore immediately motivate the use of a resource-based, API-centric approach to thinking about server design, and the use of mobile-first and mobile-friendly frameworks based on open standards, such as Bootstrap, for the client side. The new “API first” exposition should empower learners to think about resource-centric design of their apps and how a RESTful API exposes those resources to a client, and then transfer this thinking to the development of mobile apps.
From “learning Ruby and Rails” to “learning a language and framework.” Recognizing that languages and frameworks continue to evolve, our expositions of Ruby, Rails, and JavaScript now suggest a more general strategy for learning new languages and frameworks rapidly, and on understanding the relationship between a framework and the language features that make it work well.
What Has Not Changed?
Our students at Berkeley still ask “Will this course teach me X?” where popular values of \(X\) in 2019 include React, AWS Lambda, MongoDB, and Node. Our answer has not changed since the First Edition. The software ecosystem evolves so rapidly that at any given time you will have many frameworks and tools from which to choose. Since our choices won’t please everyone and will probably be outdated in a few years anyway, we still choose the tools that best support our pedagogical goal of teaching a particular methodology for developing great software. Our hope is that learners can use our suggested approaches and principles to help learn new languages and frameworks rapidly.
Acknowledgments
Some acknowledgments are in order, as it truly takes a village to create and maintain a good set of course materials. Beyond the people we thanked in the First Edition, the following colleagues were particularly helpful in reviewing the technical accuracy of the Second Edition changes: Prof. Kristin Stephens-Martinez, Duke University (Chapter 1); Prof. Mark Smucker, University of Waterloo (Chapter 2); Blagovesta Kostova, EPFL (Chapter 3); Prof. Michael Verdicchio, The Citadel Military College of South Carolina (Chapter 4); Lic. Matías Mascazzini, independent Rails developer (Chapter 5); Prof. Tom Hastings, University of Colorado at Colorado Springs (Chapter 6); Sam Richard, Google Inc., for the material in Chapters 2 and 6 on Progressive Web Apps; Prof. Hank Walker, Texas A&M University (Chapters 7 and 8); Prof. Prabhat Vaish, New Jersey Institute of Technology (Chapter 9); Prof. Anastasia Kurdia, Tulane University (Chapter 10); Prof. Ed Gehringer, North Carolina State University (Chapter 11); Prof. Daniel Cordeiro, Universidade de São Paulo (Chapter 12). Finally, many thanks to Peter Zhang, legal technologist, Melbourne, Australia, for an exceedingly thorough and precise proofreading of the entire 2nd Edition.
As always, the core members of the “Beta Gold” group, formed way back in the days of the First Edition, have stuck with us and proactively helped improve the course in ways too numerous to mention that benefit everyone who uses the materials: Michael and Hank from the list above, plus Rose Williams, Binghamton University, and Kristen Walcott-Justice, University of Colorado at Colorado Springs.
Our colleagues at GitHub, and particularly Director of Developer Education Vanessa Gennarelli (@mozzadrella), continue to be more generous and supportive of our education efforts than we have any right to expect.
The Codio team, especially Elise Deitrick, Max Kraev, and CEO Phillip Snalune, have done phenomenal work in beautifully integrating both the book and exercises into the Codio platform, providing a one-stop shop for instructors and students wanting to get started quickly. We hope the seamlessness of that experience encourages many more learners to try ESaaS.
Finally, as always, we thank the thousands of UC Berkeley students and teaching assistants, and the hundreds of thousands of MOOC students, for their debugging help and their continuing interest in this material!
Armando Fox
January 2021
San Francisco, California