Big Rewrite Strikes Again - Lead Dev London 2017

Big Rewrite Strikes Again - Lead Dev London 2017

There’s nothing more frustrating than not being able to deliver new features because of unnecessarily complicated code. You may decide it’s time to throw it all away and start over… and what starts off full of optimism, drags on for months and months, adding even more complexity and various levels of legacy.

It doesn’t have to be this way! In this presentation, you’ll hear a first-hand experience of how to approach technical debt at its worst, and how a rewrite project was successful in more ways than expected.

This talk will teach you lessons on how to start, and most importantly, finish a big rewrite project. You will learn how to approach the conversation with the “business”, avoid the most common pitfalls when changing the architecture of a complex codebase, and ensure the rewrite brings value from the start till the very happy end.

4d1993f91aa4f2efccf08051205e3bad?s=128

Sabrina Leandro

June 09, 2017
Tweet

Transcript

  1. BIG REWRITE STRIKES AGAIN Sabrina Leandro @saleandro The Lead Developer

    UK 2017
  2. Lessons from Big rewrite projects

  3. BIG REWRITE STRIKES AGAIN

  4. This talk • The problem • How to start it

    • How to run it • How to finish it • How to not need it again!
  5. The problem Stop me if you think you’ve heard this

    one before
  6. Software Entropy

  7. None
  8. How to start it

  9. •Is it the right time? •Is it the right reason?

  10. Product discovery Is it the right time?

  11. Product discovery Product delivery Is it the right time?

  12. Is it the right time? Yes, if the product has

    a clear business value today.
  13. What difference does it make? Is it the right reason?

  14. •Do you have a business case?
 


  15. •Do you have a business case? •Can you explain it

    to anyone in your organisation?
  16. Is it the right reason? Yes, if there’s one clear

    business case.
  17. PLEASE PLEASE PLEASE Let me get what I want

  18. Have one clear business case How to sell it

  19. How to sell it Show what a great new world

    
 it will be!
  20. How to sell it Find allies outside of your team

  21. Make the pain visible How to sell it

  22. How to sell it Do Repeat Yourself

  23. How to sell it Do Repeat Yourself Do Repeat Yourself

  24. How to run it

  25. Technical vision and strategy Now The future!

  26. Now The future! Technical vision and strategy

  27. Technical approaches

  28. Now Bright future! Team 2: Building new application Rewrite from

    scratch Legacy application Team 1: Maintaining legacy application New New application New application VALUE! Legacy application Legacy application
  29. Now Bright future! Team 2: Building new application Rewrite from

    scratch Legacy application Team 1: Maintaining legacy application New New application New application VALUE! Legacy application Legacy application Legacy application
  30. The strangler application

  31. Now Bright future! Team 1: Maintaining legacy and building new

    application New application Rewrite using strangler approach
  32. Now Bright future! Team 1: Maintaining legacy and building new

    application New application VALUE! Rewrite using strangler approach
  33. “ Deleting is faster than rewriting.

  34. Bones Muscle Fat Cut features to move faster

  35. “ If we were starting over, what would we build

    today, knowing what we know now?
  36. 1) Find the biggest blocker 2) Remove it completely 3)

    Repeat What to do first?
  37. During the project

  38. How to run it Show internal progress

  39. How to run it Celebrate your successes!

  40. None
  41. None
  42. None
  43. None
  44. That joke isn’t funny anymore… How to run it Do

    Repeat Yourself, again
  45. How to finish it I started something I couldn’t finish

  46. These things 
 take time How to finish it

  47. How to not need it again

  48. Software Entropy

  49. How to not need it again Make the cost visible

  50. None
  51. DELETE CODE FEATURES PRODUCTS

  52. “ If we were starting over, what would we build

    today, knowing what we know now?
  53. How to not need it again Make it part of

    your day-to-day
  54. “ A refactor a day keeps the rewrite away!

  55. How to not need it again Get used to inconsistencies

  56. How to not need it again Promote a culture of

    collaboration
  57. Technical migrations Continuously deliver value Delete what’s not valuable One

    business goal
  58. Sustainable Software Make maintenance cost visible Learn and collaborate Refactor

    a little bit and often
  59. Bigmouth Strikes Again This Charming Man Stop Me If You

    Think You’ve Heard This One Before What Difference Does It Make? Please, Please, Please, Let Me Get What I Want That Joke Isn’t Funny Anymore I Started Something I Couldn’t Finish These Things Take Time Sheila Take A Bow Thanks! Sabrina, take a bow… sabrina@saleandro.com @saleandro
  60. References Songkick.com rewrite • https://devblog.songkick.com/the-path-to-soa-d986a18d4a8b • https://devblog.songkick.com/our-object-based-rails-frontend-3e2ddc048d12 • https://www.youtube.com/watch?v=-VEf8j6aGMk •

    https://www.martinfowler.com/bliki/StranglerApplication.html Celebrate your successes • https://medium.com/@Songkick/gamify-your-product-team-to-power-level-9000-261e9fceaa22 Hoarders metaphor / Liveable code • https://twitter.com/sarahmei/status/783115752794492928 • https://www.youtube.com/watch?v=mz3l_oEA2cU • https://twitter.com/kentbeck/status/856537528886673408 Product discovery and product delivery • http://jpattonassociates.com/dual-track-development/ • https://martinfowler.com/bliki/DesignStaminaHypothesis.html • https://www.facebook.com/notes/kent-beck/teams-in-3x/1244519748914220/
  61. References Make the cost visible • http://codemanship.co.uk/parlezuml/blog/?postid=1433 • http://blogs.msdn.com/b/elee/archive/2009/03/11/source-code-is-a-liability-not-an- asset.aspx

    Make it part of your day-to-day • https://martinfowler.com/bliki/OpportunisticRefactoring.html • http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/ • http://firstround.com/review/forget-technical-debt-heres-how-to-build-technical-wealth/ • https://www.infoq.com/presentations/microservices-replaceability-consistency • https://www.sandimetz.com/blog/2017/6/1/the-half-life-of-code • https://www.infoq.com/presentations/remove-unneeded-code Playlist :) • https://open.spotify.com/user/saleandro/playlist/6i3RVHtys4djlYlLLGZc26