Some matters are best learned via personal experience, but the next best way is to learn from the experience of others. This collection provides lessons learned and experiences distilled from the author’s long and distinguished career in software development, design, and management. Its compact, informative, and accessible summation of insights into early software projects are relevant to today’s practitioners, and will continue to be relevant for the foreseeable future and in a variety of software projects.
The book addresses six broad aspects of work on software projects: requirements, design, project management, working in teams, software quality, and process improvement. An introductory chapter sets the stage and explains the author’s approach: each of the six chapters addresses a broad area, and a concluding chapter explains the author’s ideas and suggestions for how the lessons can be assimilated into a systematic and realistic process improvement activity. A handy appendix lists each of the “lessons” in brief, and an extensive bibliography is provided. Each of the main chapters is organized as a sequence of succinct statements of core lessons or insights, and each statement includes illustrative anecdotes, expositions of the main idea, tactics for applying the idea to solve problems or improve processes, and suggestions for artifacts to capture knowledge or facilitate efficient working. An overview of the domain precedes the core lessons, and recommended preliminary and conclusory practical exercises are provided in each chapter to help readers integrate the ideas into their own work.
While there are aspects of the software life cycle that are not covered by the six domains in this book--for example, testing--this book collects a sufficiency of basic principles and guidance, and is written so clearly and is so readable that I consider it an excellent educational resource for new practitioners and a worthwhile refresher for experienced developers, analysts, and architects. Furthermore, it can potentially be used to convince teams and organizations, who may otherwise be inclined to skip certain steps due to scheduling or resource constraints, to allot time and resources for process improvement and/or for particular activities or repositories.
More reviews about this item: Amazon