Managing Software Debt: Building for Inevitable Change (paperback) (Agile Software Development)

Managing Software Debt: Building for Inevitable Change (paperback) (Agile Software Development)

Chris Sterling

Language: English

Pages: 288

ISBN: 0321948610

Format: PDF / Kindle (mobi) / ePub


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.

C++ Primer Plus (5th Edition)

Accelerating MATLAB with GPU Computing: A Primer with Examples

Computer Animation: Algorithms and Techniques (3rd Edition)

Software Paradigms

Mastering PhoneGap Mobile Application Development

Getting Started with JUCE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

of the software is always sacrificed when the plan is inflexible and does not incorporate reality. • When there is a lack of passion for learning and implementing effective TDD practices on the team: The high degree of discipline required in TDD makes passion for working in this way extremely helpful. • Not enough people on the team with experience doing TDD in practice: Without any experience on the team, success in adoption is lower. • On an existing code base, if the software’s design is poor,

should also understand what aspects of the software architecture are not well understood yet and what risk that poses to a solution. In Agile, the sequence of delivery is 1. “Principles behind the Agile Manifesto,” www.agilemanifesto.org/principles.html, 2001. xxi Wow! eBook xxii I NTRODUCTION ordered by business priority, one of the main reasons Agile is now mainstream. Elements of the software architecture are built and proven early to support the business priorities, and

characteristics exhibited by self-organizing project teams, which I summarize here: Autonomy: External involvement is limited to guidance, money, and moral support, and top management rarely intervenes in the team’s work. The team is able to set its own direction on day-to-day activities. Self-transcendence: Teams seem to be continually striving for perfection. Teams set their own goals that align with top management objectives and devise ways to change the status quo. 3. Hirotaka Takeuchi and

API development focus is wrong. Actually, it is my opinion that identifying opportunities for reusable API is a powerful practice for development teams. The potential for design debt in API development really lies in the decision to establish an API before it is used or to allow it to emerge from real-world usage. In Patterns of Software,7 Richard Gabriel discusses his view on the work of Christopher Alexander on patterns8 and how it relates to software development. Gabriel focuses on three

the internals of software, mostly the code, can be delivered in a way that reduces the friction of future changes. Chapter 5, “Quality Debt,” discusses the problem inherent in the break/fix mentality common in software development organizations. This chapter discusses the use of automation and putting tests toward the front of software delivery to progress toward zero bug tolerance. Chapter 6, “Configuration Management Debt,” presents the need for teams to take care of their software’s

Download sample

Download

About admin