This book is a masterful exposition of how to develop large software programs, aimed at business leaders but useful to others. “Speed” refers to shortening the time required to get new software to the customer. “Data” refers to maximizing the usefulness of data, particularly data about actual customer use. “Ecosystems” describes making best use of industry capabilities outside the company, to maximize the effectiveness of internal research and development (R&D). The book’s unifying model, “stairway to heaven,” consists of five stages of growth: traditional development, agile development, continuous integration, continuous deployment, and R&D as an innovation system. The last stage is created when the company’s R&D is focused only on what differentiates the company. (The author’s research indicates that in most companies, only a small part of the software development being done results in increasing the company’s competitive advantage.)
Many insights are presented in the book; only a sample is given in this review. The rapid development of new technology means that the “fast follower” strategy is no longer viable; companies must recognize customer needs before the customer does. Continuous integration of innovations into the existing product means that the company always has a shippable product. It also means faster feedback to the R&D group that the innovations work and do not break what has worked before. Continuous deployment of innovations means rapid feedback from customers so the R&D group is in fact working on useful features. (The book points out, in several places, that many features supplied in software packages are never used by customers.) A software company must balance efforts to make improvements meeting the needs of all customers with efforts responding to requests from a single customer. The author recommends forming customer-specific teams for these latter requests, so the basic product is not bloated. As software engineers meet customer requests, the basic architecture is likely to erode and become less clean, thus “architectural technical debt” accumulates.
Suggestions are presented on how to refactor the architecture as needed--both a technical and an organizational problem. Data management should evolve following the stairway to heaven model so the company becomes an evidence-based organization. Three kinds of software development exist: optimization of existing features, developing new features for existing software, and creation of entirely new products. Techniques for collecting customer data for each of these are described. A major problem in software development is the gap between the designers’ beliefs in what the customer wants and the actual wants. The gap can be reduced by a hypothesis testing model.
A final section deals with guiding R&D. Three basic dimensions are used: strategy, architecture, and organization. Each has an internal and external sub-dimension. To illustrate, internal strategy encompasses the business model; external strategy determines how the company interacts with the ecosystem. The model helps in understanding and planning innovation strategies. The book includes much more, for example, arguments for the importance of software in business strategy, guidance on using agile development, and insights from consulting experiences. It is clearly written, with helpful guidance to the reader. I highly recommend it for its insight and scope.