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. OMG! THIS CODEBASE SUCKS!

  2. Jim Holmes jholmes@PillarTechnology.com @aJimHolmes FrazzledDad.com

  3. THE LEADERSHIP JOURNEY BIT.LY/LEADERSHIPJOURNEY

  4. SLIDES: SPEAKERDECK.COM/JIMHOLMES

  5. FIX WHILE DELIVERING VALUE

  6. THIS TALK’S GOAL:

  7. GIVE YOU IDEAS

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

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

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

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

    fix? Do the fix! ASSEMBLE THE ENTIRE TEAM TO ANSWER THIS
  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)
  14. Can we fix? What do we fix? How do we

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

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

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

    fix? Do the fix! FEW AUTOMATED TESTS NO AUTOMATED TESTS
  18. Can we fix? What do we fix? How do we

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

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

    fix? Do the fix! STRESSED DEVELOPERS
  21. Can we fix? What do we fix? How do we

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

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

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

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

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

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

    fix? Do the fix! BUSINESS DRIVES THE GOALS
  28. Can we fix? What do we fix? How do we

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

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

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

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

    fix? Do the fix! EVALUATE: • PATCH • REPAIR • BURN TO THE GROUND
  34. Can we fix? What do we fix? How do we

    fix? Do the fix! WHAT’S THE CURRENT STATE? • OPEN BUGS • CLOSED BUGS
  35. Can we fix? What do we fix? How do we

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

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

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

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

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

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

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

    fix? Do the fix! TOOLS
  43. Can we fix? What do we fix? How do we

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

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

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

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

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

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

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

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

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

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

    fix? Do the fix! SERIOUSLY
  54. Can we fix? What do we fix? How do we

    fix? Do the fix! GOT TESTS?
  55. Can we fix? What do we fix? How do we

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

    fix? Do the fix! DOING THE TECH THING
  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! PATCH REPAIR BURN TO THE GROUND
  59. Can we fix? What do we fix? How do we

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    fix? Do the fix! MONITOR THE SAME METRICS
  76. Can we fix? What do we fix? How do we

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

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

  81. Jim Holmes jholmes@PillarTechnology.com @aJimHolmes FrazzledDad.com