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 StirTrek 2015

Fd80f9c58b06270d42356dd77a32defa?s=128

Jim Holmes

May 29, 2014
Tweet

Transcript

  1. 8.

    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. 9.

    Can we fix? What do we fix? How do we

    fix? Do the fix! SHOULD WE FIX IT?
  3. 10.

    Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: AGREEMENT CHANGE IS NEEDED
  4. 11.

    Can we fix? What do we fix? How do we

    fix? Do the fix! DOES FIXING IT BRING VALUE TO THE BUSINESS?
  5. 12.

    Can we fix? What do we fix? How do we

    fix? Do the fix! ASSEMBLE THE ENTIRE TEAM TO ANSWER THIS
  6. 13.

    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. 14.

    Can we fix? What do we fix? How do we

    fix? Do the fix! EVALUATE WHERE YOU’RE AT
  8. 15.

    Can we fix? What do we fix? How do we

    fix? Do the fix! HIGH LEVEL, NO CODE
  9. 16.

    Can we fix? What do we fix? How do we

    fix? Do the fix! LONG SHIP CYCLES
  10. 17.

    Can we fix? What do we fix? How do we

    fix? Do the fix! FEW AUTOMATED TESTS NO AUTOMATED TESTS
  11. 18.

    Can we fix? What do we fix? How do we

    fix? Do the fix! LATE TO TEST
  12. 20.

    Can we fix? What do we fix? How do we

    fix? Do the fix! STRESSED DEVELOPERS
  13. 22.

    Can we fix? What do we fix? How do we

    fix? Do the fix! ANGRY SUPPORT
  14. 23.

    Can we fix? What do we fix? How do we

    fix? Do the fix! ANGRY CUSTOMERS
  15. 24.

    Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: AGREEMENT CHANGE IS NEEDED
  16. 25.

    Can we fix? What do we fix? How do we

    fix? Do the fix! WHAT DO WE FIX?
  17. 26.

    Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: BUSINESS GOALS EPICS/STORIES ESTIMATES
  18. 27.

    Can we fix? What do we fix? How do we

    fix? Do the fix! BUSINESS DRIVES THE GOALS
  19. 28.

    Can we fix? What do we fix? How do we

    fix? Do the fix! RISK--;
  20. 29.

    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?
  21. 30.

    Can we fix? What do we fix? How do we

    fix? Do the fix! VALUE++;
  22. 31.

    Can we fix? What do we fix? How do we

    fix? Do the fix! SUPPORT COSTS ↓ SELL MORE! SHIP FEATURES FASTER!
  23. 32.

    Can we fix? What do we fix? How do we

    fix? Do the fix! TECH CHANGES MUST SUPPORT BUSINESS GOALS
  24. 33.

    Can we fix? What do we fix? How do we

    fix? Do the fix! EVALUATE: • PATCH • REPAIR • BURN TO THE GROUND
  25. 34.

    Can we fix? What do we fix? How do we

    fix? Do the fix! WHAT’S THE CURRENT STATE? • OPEN BUGS • CLOSED BUGS
  26. 35.

    Can we fix? What do we fix? How do we

    fix? Do the fix! WHAT’S THE CODEBASE LIKE?
  27. 36.

    Can we fix? What do we fix? How do we

    fix? Do the fix! U+1F4A9
  28. 38.

    Can we fix? What do we fix? How do we

    fix? Do the fix! DEPENDENCIES
  29. 39.

    Can we fix? What do we fix? How do we

    fix? Do the fix! COMPLEXITY
  30. 40.

    Can we fix? What do we fix? How do we

    fix? Do the fix! SIZE OF CLASSES & METHODS
  31. 41.

    Can we fix? What do we fix? How do we

    fix? Do the fix! CHURN
  32. 42.

    Can we fix? What do we fix? How do we

    fix? Do the fix! TOOLS
  33. 43.

    Can we fix? What do we fix? How do we

    fix? Do the fix! LOOK FOR OVERLAP
  34. 44.

    Can we fix? What do we fix? How do we

    fix? Do the fix! DRAFT UP EPICS
  35. 45.

    Can we fix? What do we fix? How do we

    fix? Do the fix! (DON’T DIVE IN TOO DEEP!)
  36. 46.

    Can we fix? What do we fix? How do we

    fix? Do the fix! MAKE ESTIMATES
  37. 48.

    Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: BUSINESS GOALS EPICS/STORIES ESTIMATES
  38. 49.

    Can we fix? What do we fix? How do we

    fix? Do the fix! HOW DO WE FIX IT?
  39. 50.

    Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: BACKLOG ITEMS
  40. 51.

    Can we fix? What do we fix? How do we

    fix? Do the fix! CULTURE
  41. 52.

    Can we fix? What do we fix? How do we

    fix? Do the fix! STOP DIGGING
  42. 53.

    Can we fix? What do we fix? How do we

    fix? Do the fix! SERIOUSLY
  43. 54.

    Can we fix? What do we fix? How do we

    fix? Do the fix! GOT TESTS?
  44. 56.

    Can we fix? What do we fix? How do we

    fix? Do the fix! DOING THE TECH THING
  45. 58.

    Can we fix? What do we fix? How do we

    fix? Do the fix! PATCH REPAIR BURN TO THE GROUND
  46. 59.

    Can we fix? What do we fix? How do we

    fix? Do the fix! IMPROVE READABILITY
  47. 60.

    Can we fix? What do we fix? How do we

    fix? Do the fix! ELIMINATE COMPLEXITIES
  48. 61.

    Can we fix? What do we fix? How do we

    fix? Do the fix! CUT DEPENDENCIES
  49. 62.

    Can we fix? What do we fix? How do we

    fix? Do the fix! WORK AS SMALL AS POSSIBLE
  50. 63.

    Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: BACKLOG ITEMS
  51. 64.

    Can we fix? What do we fix? How do we

    fix? Do the fix! FIX IT!
  52. 65.

    Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: WORKING STUFF!
  53. 66.

    Can we fix? What do we fix? How do we

    fix? Do the fix! CULTURE
  54. 67.

    Can we fix? What do we fix? How do we

    fix? Do the fix! CULTURE
  55. 68.

    Can we fix? What do we fix? How do we

    fix? Do the fix! CULTURE
  56. 69.

    Can we fix? What do we fix? How do we

    fix? Do the fix! CONSTANT, HONEST COLLABORATION
  57. 70.

    Can we fix? What do we fix? How do we

    fix? Do the fix! FOLLOW NEW PATTERNS
  58. 71.

    Can we fix? What do we fix? How do we

    fix? Do the fix! PAIR UP
  59. 72.

    Can we fix? What do we fix? How do we

    fix? Do the fix! CODE REVIEWS
  60. 73.

    Can we fix? What do we fix? How do we

    fix? Do the fix! TESTING REALLY IS COOL. HONEST.
  61. 74.

    Can we fix? What do we fix? How do we

    fix? Do the fix! FIGURE OUT A BRANCH STRATEGY
  62. 75.

    Can we fix? What do we fix? How do we

    fix? Do the fix! MONITOR THE SAME METRICS
  63. 76.

    Can we fix? What do we fix? How do we

    fix? Do the fix! CULTURE
  64. 77.

    Can we fix? What do we fix? How do we

    fix? Do the fix! OUTPUT: WORKING STUFF!
  65. 78.

    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!
  66. 79.

    IMAGES • Poo • http://www.fileformat.info/info/unicode/char/1F4A9/index.htm • Lucy in factory •

    http://gifsoup.com/view/104295/lucy-in-chocolate-factory.html • Angry Typing • http://awesomegifs.com/2011/12/internet-typing/ • Dr. Evil • https://i.chzbgr.com/maxW500/7843555584/h9174ED21