SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Josh Cummings
Developer – Java Stack
ICS
Paying Off Your
Technical Debt
If you can read this, you don’t need glasses.
Halloween Costume – October 2009
Mein Kode
Halloween Costumes – 2007-2010
The Phantom Reference
Photo courtesy of
tinyfroglet at
http://www.flickr.com/ph
otos/tinyfroglet/271425079
8/sizes/m/in/photostream/
• Why pay down Technical Debt?
• Good debt vs. Bad Debt
• Managing Debt with Sonar
• Batch
• Server
• Priorities
• SDLC
• Technical Debt and the Stack
Goal
• “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,
object-oriented or otherwise.”
- Ward Cunningham, 1992
Why pay it down?
Good debt vs. Bad Debt
Unintentional Intentional
Good
• Long-term, for
strategic reasons
• Focused short-
term, for iterative
reasons
Bad
• How would it be
to take out a loan
without realizing it?
• Unfocused short-
term (credit card
debt)
You are fail
http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx,
Technical Debt
Rationale
• First to market
• Dependencies
• The president
says now
• Laziness
• End of the day
• Ignorance
• Begun in 2008 by Freddy Mallet
• Active development and user community
• 4000 downloads/month
• More than 30000 total downloads
• Dozens of plug-ins
• Started with the goal to assist development teams in
paying off technical debt. Evolved into a
development platform for many static analysis tools.
Enter Sonar
Portfolio
View
Project
Insight
Source
Code
Action Plans
Sonar and the 5 Cs
Copy-paste
Complexity
CommentsQuality
Coverage
• Start up local sonar, or point to a remote one.
• Hint: There are deployments at code.lds.org and also at
sonar.ldschurch.org that you can point to.
• Issue the command ‘mvn sonar:sonar’ either from
the command-line or from Eclipse. Don’t forget to use
Maven 2.
• Wait patiently.
• Once complete, go to http://localhost:9000 to view
your results.
Batch – Analyzing your project If you do this, the Stack’s plug-ins
will run automatically against your
project.
• Invoking third-party tools
• In order to make version compatibility easier, Sonar issues
the appropriate maven goal for each third-party tool instead
of invoking it directly in their respective plug-ins.
• The basic plug-in’s purpose is narrowed down to translating
third-party tool’s output into Sonar input.
• Some plug-ins do invoke their respective tool inline.
• Other tools raise Sonar’s awareness to other languages
• Aggregating information
• Some plug-ins, like PMD and FindBugs, are natural
candidates for aggregation and filtering. Sonar provides
Quality Profiles to allow the coder to fine-tune what actually
gets reported on the dashboard.
Batch – Analyzing your project
• Coverage: Clover, Cobertura,
Emma
• Quality: Checkstyle, FindBugs,
PMD
• Comments
• Copy-paste
• Complexity: LCOM4, RFC,
Cyclometric, Dependencies
Server – Analyzing your project
• Time Machine: Trends
• Clouds: Big word = Big problem
• Hotspots: Quick Wins
• Alerts: Thresholds
Server – Analyzing your project
• Sonar Eclipse Plugin
When does bad debt get noticed?
Static Analysis
typically
happens here
It would be
nice if it
were over
here.
• Plug-ins
• XML rules – Maven, Spring, Tomcat
• CSS rules
• Integration test coverage
• HTML
• JavaScript
• Maven dependency analysis
Sonar and the Stack
Not yet
Here today
• Add your project today ICS’s Sonar dashboard
• Community Deployment: http://code.lds.org/sonar
• Internal Deployment: http://sonar.ldschurch.org
• Download Sonar 2.2 at http://sonar.codehaus.org
• Read about my Sonar exploits at
http://tech.joshuacummings.com
Thank you!
Do it!

Weitere ähnliche Inhalte

Ähnlich wie Paying Off Your Technical Debt

Monkey talk
Monkey talkMonkey talk
Monkey talk
Confiz
 
Automating development-operations-v1
Automating development-operations-v1Automating development-operations-v1
Automating development-operations-v1
Sumanth Vepa
 
Shailaja_SoftwareEngineerQA_4.9Exp
Shailaja_SoftwareEngineerQA_4.9ExpShailaja_SoftwareEngineerQA_4.9Exp
Shailaja_SoftwareEngineerQA_4.9Exp
Shailaja Chundru
 

Ähnlich wie Paying Off Your Technical Debt (20)

PhoneGap Day EU 2017: Hybrid Ember Apps
PhoneGap Day EU 2017: Hybrid Ember AppsPhoneGap Day EU 2017: Hybrid Ember Apps
PhoneGap Day EU 2017: Hybrid Ember Apps
 
Monkey talk
Monkey talkMonkey talk
Monkey talk
 
Docker Enterprise Deployment Planning
Docker Enterprise Deployment PlanningDocker Enterprise Deployment Planning
Docker Enterprise Deployment Planning
 
Strategy, planning and governance for enterprise deployments of containers - ...
Strategy, planning and governance for enterprise deployments of containers - ...Strategy, planning and governance for enterprise deployments of containers - ...
Strategy, planning and governance for enterprise deployments of containers - ...
 
Lec 1-of-oop2
Lec 1-of-oop2Lec 1-of-oop2
Lec 1-of-oop2
 
02 configuration
02   configuration02   configuration
02 configuration
 
Dynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open ChallengesDynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open Challenges
 
Understanding container security
Understanding container securityUnderstanding container security
Understanding container security
 
Microservices - when, why and how incontrodevops.it
Microservices  - when, why and how incontrodevops.itMicroservices  - when, why and how incontrodevops.it
Microservices - when, why and how incontrodevops.it
 
Thinkbox Software
Thinkbox SoftwareThinkbox Software
Thinkbox Software
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technology
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
Building Mobile Web Apps with jQM and Cordova on Azure
Building Mobile Web Apps with jQM and Cordova on AzureBuilding Mobile Web Apps with jQM and Cordova on Azure
Building Mobile Web Apps with jQM and Cordova on Azure
 
Automating development-operations-v1
Automating development-operations-v1Automating development-operations-v1
Automating development-operations-v1
 
Static-Analysis-in-Industry.pptx
Static-Analysis-in-Industry.pptxStatic-Analysis-in-Industry.pptx
Static-Analysis-in-Industry.pptx
 
Shailaja_SoftwareEngineerQA_4.9Exp
Shailaja_SoftwareEngineerQA_4.9ExpShailaja_SoftwareEngineerQA_4.9Exp
Shailaja_SoftwareEngineerQA_4.9Exp
 
Flying a Drone with JavaScript and Computer Vision
Flying a Drone with JavaScript and Computer VisionFlying a Drone with JavaScript and Computer Vision
Flying a Drone with JavaScript and Computer Vision
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
Breaking the Monolith Road to Containers
Breaking the Monolith Road to ContainersBreaking the Monolith Road to Containers
Breaking the Monolith Road to Containers
 

Kürzlich hochgeladen

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Kürzlich hochgeladen (20)

Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%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
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%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
 
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...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 

Paying Off Your Technical Debt

  • 1. Josh Cummings Developer – Java Stack ICS Paying Off Your Technical Debt If you can read this, you don’t need glasses.
  • 2. Halloween Costume – October 2009 Mein Kode
  • 3. Halloween Costumes – 2007-2010 The Phantom Reference Photo courtesy of tinyfroglet at http://www.flickr.com/ph otos/tinyfroglet/271425079 8/sizes/m/in/photostream/
  • 4. • Why pay down Technical Debt? • Good debt vs. Bad Debt • Managing Debt with Sonar • Batch • Server • Priorities • SDLC • Technical Debt and the Stack Goal
  • 5. • “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, object-oriented or otherwise.” - Ward Cunningham, 1992 Why pay it down?
  • 6. Good debt vs. Bad Debt Unintentional Intentional Good • Long-term, for strategic reasons • Focused short- term, for iterative reasons Bad • How would it be to take out a loan without realizing it? • Unfocused short- term (credit card debt) You are fail http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx, Technical Debt Rationale • First to market • Dependencies • The president says now • Laziness • End of the day • Ignorance
  • 7. • Begun in 2008 by Freddy Mallet • Active development and user community • 4000 downloads/month • More than 30000 total downloads • Dozens of plug-ins • Started with the goal to assist development teams in paying off technical debt. Evolved into a development platform for many static analysis tools. Enter Sonar Portfolio View Project Insight Source Code Action Plans
  • 8. Sonar and the 5 Cs Copy-paste Complexity CommentsQuality Coverage
  • 9. • Start up local sonar, or point to a remote one. • Hint: There are deployments at code.lds.org and also at sonar.ldschurch.org that you can point to. • Issue the command ‘mvn sonar:sonar’ either from the command-line or from Eclipse. Don’t forget to use Maven 2. • Wait patiently. • Once complete, go to http://localhost:9000 to view your results. Batch – Analyzing your project If you do this, the Stack’s plug-ins will run automatically against your project.
  • 10. • Invoking third-party tools • In order to make version compatibility easier, Sonar issues the appropriate maven goal for each third-party tool instead of invoking it directly in their respective plug-ins. • The basic plug-in’s purpose is narrowed down to translating third-party tool’s output into Sonar input. • Some plug-ins do invoke their respective tool inline. • Other tools raise Sonar’s awareness to other languages • Aggregating information • Some plug-ins, like PMD and FindBugs, are natural candidates for aggregation and filtering. Sonar provides Quality Profiles to allow the coder to fine-tune what actually gets reported on the dashboard. Batch – Analyzing your project
  • 11. • Coverage: Clover, Cobertura, Emma • Quality: Checkstyle, FindBugs, PMD • Comments • Copy-paste • Complexity: LCOM4, RFC, Cyclometric, Dependencies Server – Analyzing your project
  • 12. • Time Machine: Trends • Clouds: Big word = Big problem • Hotspots: Quick Wins • Alerts: Thresholds Server – Analyzing your project
  • 13. • Sonar Eclipse Plugin When does bad debt get noticed? Static Analysis typically happens here It would be nice if it were over here.
  • 14. • Plug-ins • XML rules – Maven, Spring, Tomcat • CSS rules • Integration test coverage • HTML • JavaScript • Maven dependency analysis Sonar and the Stack Not yet Here today
  • 15. • Add your project today ICS’s Sonar dashboard • Community Deployment: http://code.lds.org/sonar • Internal Deployment: http://sonar.ldschurch.org • Download Sonar 2.2 at http://sonar.codehaus.org • Read about my Sonar exploits at http://tech.joshuacummings.com Thank you! Do it!