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.

Jim Holmes

May 29, 2014
Tweet

More Decks by Jim Holmes

Other Decks in Programming

Transcript

  1. 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!
  2. Can we fix? What do we fix? How do we

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    fix? Do the fix! RISK--;
  24. 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?
  25. Can we fix? What do we fix? How do we

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

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

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

    fix? Do the fix! EXAMPLE AREAS: CUSTOMER PROFILES VISIBLE INSTABLE BILLING SERVICE POOR RECOMMENDATIONS
  29. 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
  30. Can we fix? What do we fix? How do we

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    fix? Do the fix! OUTPUT: WORKING STUFF!
  68. 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!