Shipping imperfect software is like going into debt. When you incur debt, the illusion of doing things faster can lead to exponential growth in the cost of maintaining software. Software debt takes five major forms: technical, quality, configuration management, design, and platform experience. In today's rush to market, software debt is inevitable. And that's okay—if you're careful about the debt you incur, and if you quickly pay it back. In Managing Software Debt, leading Agile expert Chris Sterling shows how understanding software debt can help you move products to market faster, with a…mehr
Shipping imperfect software is like going into debt. When you incur debt, the illusion of doing things faster can lead to exponential growth in the cost of maintaining software. Software debt takes five major forms: technical, quality, configuration management, design, and platform experience. In today's rush to market, software debt is inevitable. And that's okay—if you're careful about the debt you incur, and if you quickly pay it back. In Managing Software Debt, leading Agile expert Chris Sterling shows how understanding software debt can help you move products to market faster, with a realistic plan for refactoring them based on experience. Writing for all Agile software professionals, Sterling explains why you're going into software debt whether you know it or not—and why the interest on that debt can bring projects to a standstill. Next, he thoroughly explains each form of software debt, showing how to plan for it intelligently and repay it successfully. You'll learn why accepting software debt is not the same as deliberate sloppiness, and you'll learn how to use the software debt concept to systematically improve architectural agility. Coverage includes * Managing tensions between speed and perfection and recognizing that you'll inevitably ship some "not quite right” code * Planning to minimize interest payments by paying debts quickly * Building architectures that respond to change and help enterprises run more smoothly * Incorporating emergent architecture concepts into daily activities, using Agile collaboration and refactoring techniques * Delivering code and other software internals that reduce the friction of future change * Using early, automated testing to move past the "break/fix” mentality * Scripting and streamlining both deployment and rollback * Implementing team configuration patterns and knowledge sharing approaches that make software debt easier to repay * Clearing away technical impediments in existing architectures * Using the YAGNI ("you ain't gonna need it”) approach to strip away unnecessary complexity Using this book's techniques, senior software leadership can deliver more business value; managers can organize and support development teams more effectively; and teams and team members can improve their performance throughout the development lifecycle.Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Chris Sterling, Partner at Sterling Barton, LLC, works with widely diverse clients as a technology, management, and Agile consultant. A Certified Scrum Trainer and Innovation Games Facilitator, he has created—and continues contributing to—multiple open source projects. He has been a speaker at many conferences and events, including Agile conferences, Better Software, SD West, Scrum Gatherings, and PNSQC. He teaches the Advanced Topics in Agile Software Development course for the University of Washington’s Agile Developer Certificate extension program.
Inhaltsangabe
Foreword xv Introduction xxi Acknowledgments xxxi About the Author xxxiii Chapter 1: Managing Software Debt 1 Where Does Software Debt Come From? 1 Software Debt Creeps In 3 Software Asset Depreciation 5 Business Expectations Do Not Lessen as Software Ages 12 Summary 14 Chapter 2: Technical Debt 15 Origins of Terminology 16 Patterns of Technical Debt 19 Acknowledging Technical Debt 22 Summary 30 Chapter 3: Sustaining Internal Quality 31 Discipline in Approach 31 Summary 52 Chapter 4: Executable Design 55 Principles of Executable Design 55 Executable Design in Practice 59 Summary 79 Chapter 5: Quality Debt 81 Quality as an Afterthought 81 Indicators of Quality Debt 85 Test Automation 93 Summary 104 Chapter 6: Configuration Management Debt 107 Overview of Configuration Management 108 Responsibilities for Configuration Management 109 Release Management 115 Branching Strategies 123 Documenting Software 126 Summary 128 Chapter 7: Design Debt 131 Robustness 131 The Cost of Not Addressing 135 Changeability 138 Review Sessions 146 Summary 150 Chapter 8: Designing Software 153 Application Design 153 Team Tools for Effective Design 163 Summary 171 Chapter 9: Communicating Architectures 173 The Three Levels of Architecture Perspective 173 Architecture Is S.A.I.D. 178 Modeling 186 Summary 188 Chapter 10: Technology Evaluation Styles 191 The Need for Technology Evaluation 191 When to Conduct Technology Evaluations 196 Summary 198 Chapter 11: Platform Experience Debt 199 Defining Platform Experience 199 Sharing Knowledge 203 Collaborative Team Configurations 206 Importance of Relevant Experience 217 Summary 219 Appendix: What Is Agile? 221 Index 229