Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OMG! This Codebase Sucks!

OMG! This Codebase Sucks!

Sure, you know you need to clean up the lousy codebase that’s falling apart at the seams, but how are you going to figure out what to fix, how to fix it, who will fix it—and how you’ll get that done while meeting the other commitments of continuing to deliver new value to your customers?

This talk focuses on two aspects of dealing with technical debt: tools to help you figure out what’s in bad shape, and figuring out how to get the work done while continuing to ship.

To find out what to fix, will look at tools like NDepend, Visual Studio, Codeclimate, and metric-fu for hard-core metrics. We’ll walk through things like source code churn and defect rates to help you understand troublesome areas.

Armed with that information, we’ll talk about different ways to negotiate getting technical debt paid off while meeting your larger goals of continuing to ship value to your customers.

This talk won’t cover best practices (BECAUSE THERE AREN’T ANY) nor will it attempt to convince you there are simple fixes to an unhealthy codebase. What you WILL leave with are ideas on how you can approach creating a strategy for your current situation.

Updated a bit for my presentation at Canton Coders in January, 2022.

Fd80f9c58b06270d42356dd77a32defa?s=128

Jim Holmes

May 29, 2014
Tweet

More Decks by Jim Holmes

Other Decks in Programming

Transcript

  1. OMG! THIS CODEBASE SUCKS!

  2. SLIDES: SPEAKERDECK.COM/JIMHOLMES

  3. Jim Holmes Jim.Holmes@ConstructConnect.com FrazzledDad.com

  4. THE LEADERSHIP JOURNEY BIT.LY/LEADERSHIPJOURNEY

  5. None
  6. None
  7. None
  8. None
  9. FIX WHILE DELIVERING VALUE

  10. THIS TALK’S GOAL:

  11. GIVE YOU IDEAS

  12. Can we fix? What do we fix? How do we

    fix? Do the fix! Should we fix? What do we fix? How do we fix? Do the fix! Agree to fix Biz Goals Epics+Cost Backlog Items Working Stuff!
  13. Can we fix? What do we fix? How do we

    fix? Do the fix! SHOULD WE FIX IT?
  14. Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: AGREEMENT CHANGE IS NEEDED
  15. Can we fix? What do we fix? How do we

    fix? Do the fix! DOES FIXING IT BRING VALUE TO THE BUSINESS?
  16. Can we fix? What do we fix? How do we

    fix? Do the fix! ASSEMBLE THE ENTIRE TEAM TO ANSWER THIS
  17. Can we fix? What do we fix? How do we

    fix? Do the fix! DEVS TESTERS PMS POS SUPPORT OPS USERS EXECS (BIZ, SPONSORS)
  18. Can we fix? What do we fix? How do we

    fix? Do the fix! EVALUATE WHERE YOU’RE AT
  19. Can we fix? What do we fix? How do we

    fix? Do the fix! HIGH LEVEL, NO CODE
  20. Can we fix? What do we fix? How do we

    fix? Do the fix! LONG SHIP CYCLES
  21. Can we fix? What do we fix? How do we

    fix? Do the fix! LATE TO TEST
  22. Can we fix? What do we fix? How do we

    fix? Do the fix!
  23. Can we fix? What do we fix? How do we

    fix? Do the fix! STRESSED DEVS AND OPS
  24. Can we fix? What do we fix? How do we

    fix? Do the fix!
  25. Can we fix? What do we fix? How do we

    fix? Do the fix! ANGRY SUPPORT
  26. Can we fix? What do we fix? How do we

    fix? Do the fix!
  27. Can we fix? What do we fix? How do we

    fix? Do the fix! ANGRY CUSTOMERS
  28. Can we fix? What do we fix? How do we

    fix? Do the fix!
  29. Can we fix? What do we fix? How do we

    fix? Do the fix! POOR SALES (OR NO SALES)
  30. Can we fix? What do we fix? How do we

    fix? Do the fix!
  31. Can we fix? What do we fix? How do we

    fix? Do the fix! ARE WE MEETING OUR MISSION?
  32. Can we fix? What do we fix? How do we

    fix? Do the fix! STRATEGIC CONSIDERATIONS E.G. ARE WE KEEPING THIS SYSTEM?
  33. Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: AGREEMENT CHANGE IS NEEDED
  34. Can we fix? What do we fix? How do we

    fix? Do the fix! WHAT DO WE FIX?
  35. Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: PRIORITIZED GOALS EPICS/STORIES ESTIMATES
  36. Can we fix? What do we fix? How do we

    fix? Do the fix! KEEP SHIPPING NEW VALUE
  37. Can we fix? What do we fix? How do we

    fix? Do the fix! WEAVE FIXES IN TO DELIVERY
  38. Can we fix? What do we fix? How do we

    fix? Do the fix! FOR FIXES: BUSINESS DRIVES THE GOALS
  39. Can we fix? What do we fix? How do we

    fix? Do the fix! RISK--;
  40. Can we fix? What do we fix? How do we

    fix? Do the fix! ARE WE LOSING REVENUE? WILL WE GET SUED? ARE WE LOSING CUSTOMERS?
  41. Can we fix? What do we fix? How do we

    fix? Do the fix! VALUE++;
  42. Can we fix? What do we fix? How do we

    fix? Do the fix! SUPPORT COSTS ↓ SELL MORE! SHIP FEATURES FASTER!
  43. Can we fix? What do we fix? How do we

    fix? Do the fix! TECH CHANGES MUST SUPPORT BUSINESS GOALS
  44. Can we fix? What do we fix? How do we

    fix? Do the fix! EXAMPLE AREAS: CUSTOMER PROFILES VISIBLE INSTABLE BILLING SERVICE POOR RECOMMENDATIONS
  45. Can we fix? What do we fix? How do we

    fix? Do the fix! WHAT’S THE CURRENT STATE? OPEN BUGS CLOSED BUGS HIGH SUPPORT COSTS
  46. Can we fix? What do we fix? How do we

    fix? Do the fix! WHAT’S THE CODEBASE LIKE?
  47. Can we fix? What do we fix? How do we

    fix? Do the fix! U+1F4A9
  48. Can we fix? What do we fix? How do we

    fix? Do the fix!
  49. Can we fix? What do we fix? How do we

    fix? Do the fix! DEPENDENCIES
  50. Can we fix? What do we fix? How do we

    fix? Do the fix! COMPLEXITY
  51. Can we fix? What do we fix? How do we

    fix? Do the fix! SIZE OF CLASSES & METHODS
  52. Can we fix? What do we fix? How do we

    fix? Do the fix! CHURN
  53. Can we fix? What do we fix? How do we

    fix? Do the fix! LOOK FOR OVERLAP
  54. Can we fix? What do we fix? How do we

    fix? Do the fix! DRAFT UP EPICS
  55. Can we fix? What do we fix? How do we

    fix? Do the fix! (DON’T DIVE IN TOO DEEP!)
  56. Can we fix? What do we fix? How do we

    fix? Do the fix! MAKE ESTIMATES
  57. Can we fix? What do we fix? How do we

    fix? Do the fix!
  58. Can we fix? What do we fix? How do we

    fix? Do the fix! NOW YOU’VE GOT A LIST • What • How big
  59. Can we fix? What do we fix? How do we

    fix? Do the fix! PRIORITIZE NEW VALUE AND FIXES
  60. Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: PRIORITIZED GOALS EPICS/STORIES ESTIMATES
  61. Can we fix? What do we fix? How do we

    fix? Do the fix! HOW DO WE FIX IT?
  62. Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: BACKLOG ITEMS
  63. Can we fix? What do we fix? How do we

    fix? Do the fix! BUILD OUT WORK ITEMS
  64. Can we fix? What do we fix? How do we

    fix? Do the fix! BE CLEAR ON WHAT AND WHY YOU’RE BUILDING STUFF
  65. Can we fix? What do we fix? How do we

    fix? Do the fix!
  66. Can we fix? What do we fix? How do we

    fix? Do the fix! DOING THE TECH THING
  67. Can we fix? What do we fix? How do we

    fix? Do the fix!
  68. Can we fix? What do we fix? How do we

    fix? Do the fix! CHANGE HOW YOU WORK
  69. Can we fix? What do we fix? How do we

    fix? Do the fix! IMPROVE READABILITY
  70. Can we fix? What do we fix? How do we

    fix? Do the fix! ELIMINATE COMPLEXITIES
  71. Can we fix? What do we fix? How do we

    fix? Do the fix! CUT DEPENDENCIES
  72. Can we fix? What do we fix? How do we

    fix? Do the fix! WORK AS SMALL AS POSSIBLE
  73. Can we fix? What do we fix? How do we

    fix? Do the fix! SLICE VERY THINLY
  74. Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: BACKLOG ITEMS
  75. Can we fix? What do we fix? How do we

    fix? Do the fix! FIX IT!
  76. Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: WORKING STUFF!
  77. Can we fix? What do we fix? How do we

    fix? Do the fix! CULTURE
  78. Can we fix? What do we fix? How do we

    fix? Do the fix! CULTURE
  79. Can we fix? What do we fix? How do we

    fix? Do the fix! CULTURE
  80. Can we fix? What do we fix? How do we

    fix? Do the fix! CONSTANT, HONEST COLLABORATION
  81. Can we fix? What do we fix? How do we

    fix? Do the fix! FOLLOW NEW PATTERNS
  82. Can we fix? What do we fix? How do we

    fix? Do the fix! PAIR UP
  83. Can we fix? What do we fix? How do we

    fix? Do the fix! CODE REVIEWS
  84. Can we fix? What do we fix? How do we

    fix? Do the fix! TESTING REALLY IS COOL. HONEST.
  85. Can we fix? What do we fix? How do we

    fix? Do the fix! FIGURE OUT A BRANCH STRATEGY
  86. Can we fix? What do we fix? How do we

    fix? Do the fix! MEASURE OUTCOMES NOT ACTIVITY
  87. Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: WORKING STUFF!
  88. Can we fix? What do we fix? How do we

    fix? Do the fix! Agree to fix Biz Goals Epics+Cost Backlog Items Working Stuff!
  89. THANK YOU!

  90. Jim Holmes Jim.Holmes@ConstructConnect.com FrazzledDad.com