Managing Software Debt

Managing Software Debt : Building for Inevitable Change (paperback)

3.76 (38 ratings by Goodreads)
By (author) 

Free delivery worldwide

Available. Dispatched from the UK in 10 business days
When will my order arrive?

Description

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.
show more

Product details

  • Paperback | 288 pages
  • 100 x 100 x 100mm | 100g
  • Addison-Wesley Educational Publishers Inc
  • New Jersey, United States
  • English
  • 0321948610
  • 9780321948618
  • 1,523,647

Table of contents

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
show more

Review quote

"If you work in technology, you're probably familiar with terms like 'technical debt.' The metaphor seems easy, but using it to influence change can be remarkably hard. To do that, you're going to want to present options to decision makers, backed up by evidence. I've been impressed watching Chris Sterling research and refine his work in just this area for several years, and I'm pleased to see him release it as a book. If you want to go beyond cliches to talk about how to deal with the problem of software debt, this is the seminal work in the field-and it's also the book for you." -Matthew Heusser, Software Process Naturalist



"Inertia: It's what restricts change and leads to a cost of making a change or starting a change after a period of no investment or maintenance. This book explains in great detail what the different types of debt are that lead to inertia and, ultimately, to a cost to the business in managing software maintenance and development. The richness of explanation in this book of how to manage the virtual debt that every business incurs is unmatched. Every business-focused CIO, enterprise architect, software architect, or project manager should have a copy."

-Colin Renouf, Enterprise Architect



"Software debt is an important concept and Sterling does a sterling job of explaining what it is, why it is bad, and how to avoid it. A healthy dose of theory sprinkled with lots of pragmatic examples."

-Roger Sessions, CTO, ObjectWatch (objectwatch.com)



"Chris Sterling's experience in Agile architecture and his focus on software debt make this book a must-read for architects and engineers on Agile teams."

-Jan Bosch, VP Engineering Process, Intuit



"This book offers highlights and shortcomings of managing inherited software code and the debts that come with quality software. The author offers a unique perspective on dealing with software development issues. A must-read for all software developers."

-Leyna Cotran, Institute for Software Research, University of California, Irvine



"The vital importance of rapid feedback to the software process is a fundamental premise of modern software methods. When such feedback is quantified in the form of software debt, the software process becomes most effective. Chris Sterling's book holds the details you need to know in order to quantify the debt and pay it back. Moreover, it will teach you how to avoid debt in the first place."

-Israel Gat, The Agile Executive (theagileexecutive.com and on Twitter at @agile_exec)



"This book represents a wonderful opportunity for a larger community to take advantage of Chris's many years of experience and his innovative approaches to Agile architecture and continuous quality. . . . His book distills many of his principles and techniques into practical guidelines, and he manages to convey very powerful ideas in accessible prose, despite the inherent complexity of architecture and technical debt. . . . Chris's book will help architects, leaders, and teams see their way to better systems and better organizational performance."

-Evan Campbell, Founder of Chinook Software Consulting
show more

About Chris Sterling

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.
show more

Rating details

38 ratings
3.76 out of 5 stars
5 26% (10)
4 37% (14)
3 26% (10)
2 8% (3)
1 3% (1)
Book ratings by Goodreads
Goodreads is the world's largest site for readers with over 50 million reviews. We're featuring millions of their reader ratings on our book pages to help you find your new favourite book. Close X