SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Purging The Technical Debt
Brian Di Croce, B.Eng., MCPD
@bdicroce
Context
Side Effects
Tools and Technologies
Processes
Wrap Up
Let’s start
What is a technical debt?
https://en.wikipedia.org/wiki/Technical_debt
“Technical debt is a concept in software
development that reflects the implied cost of
additional rework caused by choosing an easy
(limited) solution now instead of using a better
approach that would take longer.” - Wikipedia
What is the consequence if
we don’t deal with it now?
The term “technical debt” was coined by
Ward Cunningham (co-creator of XP)
almost 30 years ago.
"Shipping first-time code is like going into
debt. A little debt speeds development so
long as it is paid back promptly with a
rewrite.
The danger occurs when the debt is
not repaid. Every minute spent on
“not-quite-right” code counts as
interest on that debt. Entire
engineering organizations can be
brought to a stand-still under the
debt load of an unconsolidated
implementation."
LATER?NOW?
Why should we not ignore our technical debt?
Because it gives us a sense of pride
Because we care about the things we value
Because we’re in it for the long run
In 2018,
Stripe published the
results on an interesting
study related to the current
state of software development
The Developer Coefficient:
Software engineering efficiency
and its $3 trillion impact on global
GDP
(PDF)
COMPANIES WASTE $300 BILLION OF
DEVELOPER PRODUCTIVITY EVERY YEAR
“Developers spend over 17 hours every week
dealing with maintenance issues like debugging
and refactoring, and about a quarter of that time is
spent fixing bad code.
That’s nearly $300B in lost productivity every year.
It’s not how many software engineers a company
has; it’s how their talent is being utilized.”
Source: The Developer Coefficient:
Software engineering efficiency and its
$3 trillion impact on global GDP
Source: The Developer Coefficient:
Software engineering efficiency and its
$3 trillion impact on global GDP
What causes technical debt?
complexity
The law of software entropy states that as a
system is modified, its disorder (entropy)
tends to increase
In software development, that disorder (entropy)
is represented by the delta of complexity
In his book The Mythical
Man-Month: Essays in
Software Engineering
(1975), Prof. Frederick P.
Brooks distinguishes two
types of complexity:
Essential Complexity
Accidental Complexity
Essential complexity is the fundamental
implementation of functionalities to make the
system work according to its intended purpose
regardless of the inherent complexity
Accidental complexity is the non-essential code
or quick fixes that are implemented to prove a
temporary idea or get a short-term gain, but
remains intrinsic in the system.
Accidental complexity is the main contributor
to the technical debt.
But it’s not the only one…
Unrealistic project constraints
Poor understanding of the problem
Lack of a comprehensive suite of tests
Immature design or system architecture
(high coupling and low cohesion)
An incomplete or weak CI/CD strategy
Inefficient tools and processes
Software entropy
increases in direct
proportion to the
technical debt
The Side Effects of Technical Debt
Business logic intertwined all over
the codebase
Hundreds or thousands lines of code within a
method or stored procedure
Continuous deployments solely to fix bugs
in production
Security vulnerabilities exposed publicly
Unit tests that randomly pass or fail
depending whether they’re executed
individually or in parallel
Tools and Technologies
SonarQube
JetBrains Rider/ReSharper
NDepend (.NET)
StepSize (VSCode ext.)
SonarQube
JetBrains Rider/ReSharper
(IntelliJ for Java folks)
NDepend
(.NET)
StepSize
(VSCode extension)
Processes
Look into the practices of
Extreme Programming
Rapid Feedback
Pair programming
Planning game
Whole team
Continuous Process
Continuous integration
Refactoring
Small releases
Shared Understanding
Coding standards
Collective code ownership
Simple design
System metaphor
Programmer welfare
Sustainable pace
Look into the values of
Extreme Programming…
Communication
Simplicity
Feedback
Courage
Respect
Wrapping Up
Remember that you don’t have to ask
permission to do the right thing
Thank you

Weitere ähnliche Inhalte

Was ist angesagt?

Overview of Agile Methodology
Overview of Agile MethodologyOverview of Agile Methodology
Overview of Agile Methodology
Haresh Karkar
 

Was ist angesagt? (20)

The Next Wave of Reliability Engineering
The Next Wave of Reliability EngineeringThe Next Wave of Reliability Engineering
The Next Wave of Reliability Engineering
 
Lean Principles for Agile Teams
Lean Principles for Agile TeamsLean Principles for Agile Teams
Lean Principles for Agile Teams
 
Building Information Modeling (BIM)
Building Information Modeling (BIM)Building Information Modeling (BIM)
Building Information Modeling (BIM)
 
What Is DevOps?
What Is DevOps?What Is DevOps?
What Is DevOps?
 
DevOps
DevOps DevOps
DevOps
 
Technical Debt
Technical DebtTechnical Debt
Technical Debt
 
Digital construction information management
Digital construction information managementDigital construction information management
Digital construction information management
 
Digital Transformation of the Construction Industry
Digital Transformation of the Construction IndustryDigital Transformation of the Construction Industry
Digital Transformation of the Construction Industry
 
Scrum best practices
Scrum best practicesScrum best practices
Scrum best practices
 
Role of artificial intellligence in construction engg & management
Role of artificial intellligence in construction engg & managementRole of artificial intellligence in construction engg & management
Role of artificial intellligence in construction engg & management
 
DevOps seminar ppt
DevOps seminar ppt DevOps seminar ppt
DevOps seminar ppt
 
Overview of Agile Methodology
Overview of Agile MethodologyOverview of Agile Methodology
Overview of Agile Methodology
 
Technical and Product Debt Management
Technical and Product Debt ManagementTechnical and Product Debt Management
Technical and Product Debt Management
 
Push or pull agile leadership model - 2019-11-06 w hilpert-rmederer
Push or pull   agile leadership model - 2019-11-06 w hilpert-rmedererPush or pull   agile leadership model - 2019-11-06 w hilpert-rmederer
Push or pull agile leadership model - 2019-11-06 w hilpert-rmederer
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
 
050 Intergrating Constructability with Lean Construction
050 Intergrating Constructability with Lean Construction 050 Intergrating Constructability with Lean Construction
050 Intergrating Constructability with Lean Construction
 
Deferring the Last Responsible Moment
Deferring the Last Responsible MomentDeferring the Last Responsible Moment
Deferring the Last Responsible Moment
 
DevOps Culture
DevOps CultureDevOps Culture
DevOps Culture
 
DevOps explained
DevOps explainedDevOps explained
DevOps explained
 
Bim Facades.Final
Bim Facades.FinalBim Facades.Final
Bim Facades.Final
 

Ähnlich wie Purging the Technical Debt

1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx
jackiewalcutt
 
From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...
Damian Tamburri
 
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docxNo Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
curwenmichaela
 
Personal Note On Software Engineering
Personal Note On Software EngineeringPersonal Note On Software Engineering
Personal Note On Software Engineering
Heidi Maestas
 

Ähnlich wie Purging the Technical Debt (20)

software engineering.docx
software engineering.docxsoftware engineering.docx
software engineering.docx
 
overview introduction to Software Engineering
overview introduction to Software Engineeringoverview introduction to Software Engineering
overview introduction to Software Engineering
 
1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx
 
Software engineering unit 1
Software engineering  unit 1Software engineering  unit 1
Software engineering unit 1
 
No Silver Bullet - Essence and Accident in Software Engineering
No Silver Bullet - Essence and Accident in Software EngineeringNo Silver Bullet - Essence and Accident in Software Engineering
No Silver Bullet - Essence and Accident in Software Engineering
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about technical debt?
 
From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...
 
se01.ppt
se01.pptse01.ppt
se01.ppt
 
Restructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality ApproachRestructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality Approach
 
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docxNo Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOps
 
IEEE 2013 The flaws in the traditional contract for software development
IEEE 2013 The flaws in the traditional contract for software developmentIEEE 2013 The flaws in the traditional contract for software development
IEEE 2013 The flaws in the traditional contract for software development
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOps
 
Wait for it: identifying “On-Hold” self-admitted technical debt
Wait for it: identifying “On-Hold” self-admitted technical debtWait for it: identifying “On-Hold” self-admitted technical debt
Wait for it: identifying “On-Hold” self-admitted technical debt
 
From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical Health
 
Personal Note On Software Engineering
Personal Note On Software EngineeringPersonal Note On Software Engineering
Personal Note On Software Engineering
 
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdfTechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
 
chapt_1_Introduction_computer_science.pptx
chapt_1_Introduction_computer_science.pptxchapt_1_Introduction_computer_science.pptx
chapt_1_Introduction_computer_science.pptx
 
L02 What is Software Architecture?
L02 What is Software Architecture?L02 What is Software Architecture?
L02 What is Software Architecture?
 
A presentation on software crisis
A presentation on software crisisA presentation on software crisis
A presentation on software crisis
 

Kürzlich hochgeladen

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Kürzlich hochgeladen (20)

WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 

Purging the Technical Debt

Hinweis der Redaktion

  1. I’ll upload the PowerPoint slides after the interview and send you a link. You can post it on Twitter and I’ll do the same.
  2. Technical debt is a concept in programming that reflects the extra development work that arises when code that is easy to implement in the short run is used instead of applying the best overall solution.
  3. Technical debt is a metaphor that equates to financial debt.
  4. It’s the concept of time vs. money to market. Image URL: https://commons.wikimedia.org/wiki/File:Time_n_Money.jpg For a startup, contrary to an established brand, the decisions won’t be influenced by the same factors. Depending on the adopted solution, the result can be positive or negative down the road. The negative part is that there will be work, time and effort to plan in order to get back to the path of success.
  5. This is the project management conundrum. In many cases, only two of these factors can be picked.
  6. It’s about the NOW vs LATER question. It’s not easy to answer this question. It’s super hard. Technical debt will always be present…its importance, its weight will be determined by the answer to this question. What if you’re building a new software that you have to publish to a user base because of the competition? What if you’re building a mission-critical app that could affect people’s health, the financial market or the environment…the answer will vary.
  7. Eat delicious, juicy, tasty junk food and you might enjoy it now, but you’ll pay it later with health issues. Eat boring, monotonous, but nutritious food now and you’ll reap the benefits of a healthy lifestyle in the future. It’s about the NOW vs LATER.
  8. In order to answer this question, we must first answer a few “real-life” questions that should provide an answer to this one.
  9. Why do we wash our cars?
  10. Because you’re proud of your car. You also want to know early on if there are any defects before you drive it on the road. Think about your software, your code…Pride in our work is important because it motivates us to do good work
  11. For those that may not have a car…Why do you wash your bike? Next slide for the answer…
  12. Because you care. Because you want to know that your tires and drivetrain are operational before you hop on it and pedal away with it. Think about your software, your code…
  13. Why do you work out? Next slide…
  14. Because you want to take care of your body. It’s the only vehicle you have to travel and discover your world.
  15. Technical debt can slow you down or shut you down (startup). You’ll get to your destination, but it’ll be painful, you’ll get there late…and you might get there in last position.
  16. Forbes: Technical debt drives developers mad: It makes their jobs progressively more difficult, more time-consuming, and less rewarding. Considering that it costs up to $67,500 to recruit and train a new developer, the costs of technical debt add up quickly when it’s chasing developers out the door. https://www.forbes.com/sites/falonfatemi/2016/05/30/technical-debt-the-silent-company-killer/#6bd4c8f84562
  17. We’ll understand complexity in the next slide…
  18. To understand what complexity is and the different nature of complexity, we should get familiarize with the law of software entropy. READ SLIDE Now that we’re building more distributed systems, the law of software entropy is much more important than before, because not only do we have the codebase to nurture, but now we have to consider the supporting systems such as the hardware, the virtual machines, the hard drives, the system memory, the third party services, and more importantly the networks where all these component live and communicate with each other. Things can break.
  19. Essential complexity is the fundamental required blocks that are assembled to make a system serve and react according to its intended purpose regardless of the inherent complexity
  20. Take for example a tree. It looks very simple in appearance, but inside of it lives quite a complex system that collaborates in a so-called “distributed environment”. The roots, the leaves, the bark are all affected by its input (water, wind, sunlight and other nutrients). But in return, it produces photosynthesis to output an essential product for life on earth and under the water. Most things in nature have an essential complexity.
  21. The result of it is also called a “big ball of mud”.
  22. Maybe this place started with one sign…then another one was put up…then another…someone forgot to leave the system in a clean state after changing it. Most things made by men have an accidental complexity. .
  23. - Commit messages not being descriptive enough
  24. The “debt” is what you will pay or reimburse in both time and effort to reduce or eliminate the accidental complexity or its secondary effects (bugs, missing functionalities, refactoring, etc.) If that debt is not repaid, it can accumulate “interest” which makes it harder to implement changes. You can still advance, but not as fast because now you have potential bugs or performance issues waiting for you at runtime (as if you’re walking attached to a chain ball).
  25. What are the consequences or effects of technical debt?
  26. If you have to scrollbar a lot within a method, that’s already a sign that the method might suffer from accidental complexity.
  27. The tools are there to help you make logical decisions based on quantitative metrics instead of being directed with your emotions or assumptions. They help you decide what to fix and why, so that you don’t have to waste time in guessing what to improve during a sprint.
  28. Show demo of SonarQube Show how it integrates with CI pipeline Show how it integrates with other IDEs (SonarLint) You can’t understand what you don’t measure Opensource web application that analyzes source code and provides various kind of quality metrics based on the analysis Metrics helps to make smart decisions that are not driven by emotions - Supports over 20 programming languages and keeps up with the majority of the languages updates - You can install it on premise or on a Docker container (perfect scenario for quickly hosting it on Digital Ocean for example) - You can use it as part of your CI pipeline
  29. Using a smart, fast, simple IDE not only helps to write code quickly, but looks over our shoulder to make sure we didn’t miss anything…or created a potential defect in the code. Rider: Code inspections (project vs solution) Plugins: CodeStream: great extension if working with remote colleagues. Communicate about your code within the IDE CognitiveComplexity (one of the metrics for SonarQube) Visual Studio/R# Solution > Code Metrics Select project > ReSharper > Inspect > Code Issue Solution > Dependency Graph
  30. Integrates with your CI process (Azure DevOps, TeamCity)
  31. Building software systems requires communicating system requirements to the developers of the system. In formal software development methodologies, this task is accomplished through documentation. Extreme programming techniques can be viewed as methods for rapidly building and disseminating institutional knowledge among members of a development team. The goal is to give all developers a shared view of the system which matches the view held by the users of the system. To this end, extreme programming favors simple designs, common metaphors, collaboration of users and programmers, frequent verbal communication, and feedback.
  32. Extreme programming encourages starting with the simplest solution. Extra functionality can then be added later. The difference between this approach and more conventional system development methods is the focus on designing and coding for the needs of today instead of those of tomorrow, next week, or next month. This is sometimes summed up as the "You aren't gonna need it" (YAGNI) approach.[11] Proponents of XP acknowledge the disadvantage that this can sometimes entail more effort tomorrow to change the system; their claim is that this is more than compensated for by the advantage of not investing in possible future requirements that might change before they become relevant. Coding and designing for uncertain future requirements implies the risk of spending resources on something that might not be needed, while perhaps delaying crucial features. Related to the "communication" value, simplicity in design and coding should improve the quality of communication. A simple design with very simple code could be easily understood by most programmers in the team.
  33. Within extreme programming, feedback relates to different dimensions of the system development: Feedback from the system: by writing unit tests,[5] or running periodic integration tests, the programmers have direct feedback from the state of the system after implementing changes. Feedback from the customer: The functional tests (aka acceptance tests) are written by the customer and the testers. They will get concrete feedback about the current state of their system. This review is planned once in every two or three weeks so the customer can easily steer the development. Feedback from the team: When customers come up with new requirements in the planning game the team directly gives an estimation of the time that it will take to implement. Feedback is closely related to communication and simplicity. Flaws in the system are easily communicated by writing a unit test that proves a certain piece of code will break. The direct feedback from the system tells programmers to recode this part. A customer is able to test the system periodically according to the functional requirements, known as user stories.[5] To quote Kent Beck, "Optimism is an occupational hazard of programming. Feedback is the treatment."[12]
  34. Several practices embody courage. One is the commandment to always design and code for today and not for tomorrow. This is an effort to avoid getting bogged down in design and requiring a lot of effort to implement anything else. Courage enables developers to feel comfortable with refactoring their code when necessary.[5] This means reviewing the existing system and modifying it so that future changes can be implemented more easily. Another example of courage is knowing when to throw code away: courage to remove source code that is obsolete, no matter how much effort was used to create that source code. Also, courage means persistence: a programmer might be stuck on a complex problem for an entire day, then solve the problem quickly the next day, but only if they are persistent.
  35. Respect for others and the system The respect value includes respect for others as well as self-respect. Programmers should never commit changes that break compilation, that make existing unit-tests fail, or that otherwise delay the work of their peers. Members respect their own work by always striving for high quality and seeking for the best design for the solution at hand through refactoring. Adopting the four earlier values leads to respect gained from others in the team. Nobody on the team should feel unappreciated or ignored. This ensures a high level of motivation and encourages loyalty toward the team and toward the goal of the project. This value is dependent upon the other values, and is oriented toward teamwork.
  36. Implementing these tools or adopting some the practices is not a hard thing to do.