Technical Debt and What to do about it. Kane Mar Certified Scrum Trainer and Coach (CST and CSC) Kane Mar Certified.

Slides:



Advertisements
Similar presentations
Behavior Driven Test Development
Advertisements

Prescriptive Process models
Why Use Test Driven Development (TDD)?.  Why the need to change to TDD.  Talk about what TDD is.  Talk about the expectations of TDD.
More CMM Part Two : Details.
ITEC 370 Lecture 25 Lifecycles. Review Questions? F give prototype demonstration –Testing plan for your software Life cycles –Scrum (Roles, Meetings,
SCRUM John Drew. SCRUM - overview Scrum is a project management discipline that has evolved since the early 1990s to deliver software that meets business.
NAUG NAUG Knowledge Evening – th February 2007.
Agile development By Sam Chamberlain. First a bit of history..
Agile Software Development. Traditional Software Development 1.Initiation (RFP) 2.Feasibility study Technical – can we build it? Economic – should we.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Software Process CS 414 – Software Engineering I Donald J. Bagert Rose-Hulman Institute of Technology December 17, 2002.
Software Engineering Lecture No:12. Lecture # 7
An Agile View of Process
Introduction to Agile.
Agile Estimating & Planning Kane Mar Certified Scrum Coach and Trainer.
BEFORE AGILE METHODS Other Engineering fields development models were used, ie: Waterfall Method: Intensive planning and refactoring before coding is actually.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Chapter 2 The process Process, Methods, and Tools
Dr. Tom WayCSC Software Processes CSC 4700 Software Engineering.
What is Scrum? Kane Mar Certified Scrum Coach and Trainer.
Scrum’s Product Owner Role Jeff Patton Agile Product Design
Seattle Area Software Quality Assurance Group Release and Configuration Management, The Acceleration of Change and Its Contribution To Software Quality.
Embracing change with Extreme Programming Method Engineering Erik ten Brinke
© 2006 Cisco Systems, Inc. All rights reserved.Cisco ConfidentialPresentation_ID 1 Agile Assessment Gadi Lifshitz, Ayelet Kroskin, Barak Yagour, Yael Dubinsky.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
1 Project Management Introduction. 2 Chap 1 What is the impact? 1994: 16% of IT projects completed “On-Time” 2004 : 29% of IT projects “On- Time” 53%
Dr. Nguyen Hai Quan.  Why SCRUM?  What is SCRUM?  Some terms  SCRUM Meetings  Sprint  Estimation  Product backlog  Sprint backlog  Whiteboard.
Measuring and Estimating Software Defects Loren Stroup UCF EEL6883: Software Engineering II.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Quality Management Managing the quality of the software process and products.
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
Why Scrum? Kane Mar Certified Scrum Coach and Trainer.
Copyright © by Mark J. Sebern Software Engineering Process I SE 2800.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Stand Up Comedy Project/Product Management
Dr. Rob Hasker. A new process: YOGA  10 Principles 1. Ignore the past, only look ahead 2. Be artists, free to create 3. Meditate on code each day: what.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
Phoenix Scrum User Group Simplifying Scrum Online May 21 st 2009.
PV213 EIS in Practice: 06 – Development process 1 PV213 Enterprise Information Systems in Practice 06 – Development process.
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
Intelligence and Information Systems 1 3/17/2004 © 2004 Raytheon Company USC/CSE Executive Workshop on Agile Experiences March 17, 2004 A Raytheon Agile.
Introduction Requirements and the Software Lifecycle (3)
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
CS223: Software Engineering Lecture 32: Software Maintenance.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Informed Traveler Program and Applications Agile / Scrum Overview Jerry Inberg.
Scuola Politecnica Dipartimento DITEN Università degli Studi di Genova An Introduction to Scrum and XP Prof. Riccardo Berta.
Barnes & Noble Alonda Morgan. Agile UX Agile.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Software Development.
CEN 4010 Intro to Software Engineering Professor Alex Roque
Software Quality Control and Quality Assurance: Introduction
CIS 375 Bruce R. Maxim UM-Dearborn
Software & Software Engineering Pertemuan-4 Dosen :Kundang K Juman
Quality Management chapter 27.
Integrate Agile Testing into the Process
Agile Software Development Brian Moseley.
Impact of Agile Methodology on Software Architecture
Johanna Rothman Create Technical Excellence Chapter 9
روش‌های سريع الانتقال (چابک) توسعه نرم افزار
Johanna Rothman Report Your Project State Chapter 14
Johanna Rothman Know What “Done” Means Chapter 11
Software Engineering Fundamentals
Real World Scrum with TFS & VSTS / Azure DevOps
Scrum in 10 slides by Pierre Mengal – Scrum In Ten Slides v2.0 is licensed under a Creative Commons Attribution-NoDerivs 3.0 Unported.
AgilityHealth® ScrumMaster Training
Presentation transcript:

Technical Debt and What to do about it. Kane Mar Certified Scrum Trainer and Coach (CST and CSC) Kane Mar Certified Scrum Trainer and Coach (CST and CSC)

Creative Commons Attribution 3.0 Kane Mar and Others (see credits) You are free: to Share — to copy, distribute and transmit the work to Remix — to adapt the work Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work) You are free: to Share — to copy, distribute and transmit the work to Remix — to adapt the work Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work)

About Me, About You

What is Technical Debt The concept of software complexity as debt was originally coined by Ward Cunningham in an experience report for OOPSLA ‘92 (*) Reference: The concept of software complexity as debt was originally coined by Ward Cunningham in an experience report for OOPSLA ‘92 (*) Reference:

What is Technical Debt During the planning or execution of a software project, decisions are made to defer necessary work: It's too late in the LifeCycle? to upgrade to the new release of the compiler. We'll do it next time around.? We're not completely conforming to the UserInterface guidelines. We'll get to it next time.UserInterface We don't have time to uncruft the hyper-widget code. Punt until next time. During the planning or execution of a software project, decisions are made to defer necessary work: It's too late in the LifeCycle? to upgrade to the new release of the compiler. We'll do it next time around.? We're not completely conforming to the UserInterface guidelines. We'll get to it next time.UserInterface We don't have time to uncruft the hyper-widget code. Punt until next time.

What is Technical Debt A big pile of deferred work can gum up a project, yet many of the items on the list don't appear on a project team's radar, especially if the focus is primarily on new product features. Yet removing accumulated sludge needs to be accounted for in planning! Therefore: Make the debt visible. Keep an explicit list Technical Debt A big pile of deferred work can gum up a project, yet many of the items on the list don't appear on a project team's radar, especially if the focus is primarily on new product features. Yet removing accumulated sludge needs to be accounted for in planning! Therefore: Make the debt visible. Keep an explicit list Technical Debt

Quality and Velocity

The story of a burger...

How does “Technical Debt” occur? By not enforcing high quality standards in the definition of “done.” Cutting corners to achieve a higher velocity and meet impossible timelines leads to build up of low quality, unmaintainable code. Death spiral: As the maximum velocity of system goes down, even more corners are cut to compensate until the velocity approaches zero. By not enforcing high quality standards in the definition of “done.” Cutting corners to achieve a higher velocity and meet impossible timelines leads to build up of low quality, unmaintainable code. Death spiral: As the maximum velocity of system goes down, even more corners are cut to compensate until the velocity approaches zero.

Signs of Technical Debt The code is considered part of a core or legacy system There is either no testing, or minimal testing surrounding the code There is highly compartmentized knowledge regarding the core/legacy system, and it may be supported by only one or two people in the company (over specialization) The code is considered part of a core or legacy system There is either no testing, or minimal testing surrounding the code There is highly compartmentized knowledge regarding the core/legacy system, and it may be supported by only one or two people in the company (over specialization)

Signs of Technical Debt The legacy system is not in a know state It takes as long to fix defects caused be adding new functionality, as it does to add the new functionality Re-platforming... and then repeat the mistakes of the past The legacy system is not in a know state It takes as long to fix defects caused be adding new functionality, as it does to add the new functionality Re-platforming... and then repeat the mistakes of the past

What to do about Technical Debt Avoid accumulating technical debt Pay it off over time (mortgage) “Working with legacy code” by Michael Feathers An anti-pattern worth mentioning Avoid accumulating technical debt Pay it off over time (mortgage) “Working with legacy code” by Michael Feathers An anti-pattern worth mentioning

Avoid Technical Debt Implement the Agile Engineering practices: Continuous Integration Test Driven Development Refactoring Pair Programming Implement the Agile Engineering practices: Continuous Integration Test Driven Development Refactoring Pair Programming

Avoid Technical Debt Development teams must curb over-optimism in assessing availability and capacity Management redirects attention from applying pressure to removing organizational impediments to progress Product Owners understand the iron triangle, ownership of risks, and impact of cutting quality ScrumMaster must prevent demonstration of any work that is not “done” Development teams must curb over-optimism in assessing availability and capacity Management redirects attention from applying pressure to removing organizational impediments to progress Product Owners understand the iron triangle, ownership of risks, and impact of cutting quality ScrumMaster must prevent demonstration of any work that is not “done”

Paying off Technical Debt Described by Michael Feathers in “Working Effectively with Legacy code” Start by introducing Continuous Integration Write Tests around customer reported defects Over a period of time a testing framework will be built up around the most brittle code Described by Michael Feathers in “Working Effectively with Legacy code” Start by introducing Continuous Integration Write Tests around customer reported defects Over a period of time a testing framework will be built up around the most brittle code

And Avoid this anti-pattern There is a temptation to try and write a comprehensive testing framework around the entire product Does not address the defects that the customer views as most important May run out of money before you complete the framework There is a temptation to try and write a comprehensive testing framework around the entire product Does not address the defects that the customer views as most important May run out of money before you complete the framework

Thank you!

Photos Credits