How to rewrite, a bit at a time

How to rewrite, a bit at a time

Domain-Driven Design Europe 2019

4d1993f91aa4f2efccf08051205e3bad?s=128

Sabrina Leandro

February 01, 2019
Tweet

Transcript

  1. 1.

    How to rewrite, a bit at a time Sabrina Leandro

    @saleandro Domain-Driven Design Europe 2019
  2. 8.

    • The problem • How to start a rewrite project

    • How to run it • How to finish it • How to not need it again! This talk
  3. 13.

    Complex abstractions Lots of features Too many slow tests Little

    to no tests No clear abstractions Lots of features
  4. 14.

    Complex abstractions Lots of features Too many slow tests Little

    to no tests No clear abstractions Lots of features Tickets store & Internal tools
  5. 15.

    Complex abstractions Lots of features Too many slow tests Little

    to no tests No clear abstractions Lots of features Songkick.com Tickets store & Internal tools
  6. 16.
  7. 20.

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

    a clear business value today.
  8. 34.

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

    scratch Legacy application Team 1: Maintaining legacy application
  9. 35.

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

    scratch Legacy application Team 1: Maintaining legacy application
  10. 36.

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

    scratch Legacy application Team 1: Maintaining legacy application Legacy application
  11. 37.

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

    scratch Legacy application Team 1: Maintaining legacy application New Legacy application
  12. 38.

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

    scratch Legacy application Team 1: Maintaining legacy application New Legacy application Legacy application
  13. 39.

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

    scratch Legacy application Team 1: Maintaining legacy application New Legacy application Legacy application New application
  14. 40.

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

    scratch Legacy application Team 1: Maintaining legacy application New New application Legacy application Legacy application New application
  15. 41.

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

    scratch Legacy application Team 1: Maintaining legacy application New New application Legacy application Legacy application RIP Legacy application New application
  16. 42.

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

    scratch Legacy application Team 1: Maintaining legacy application New New application VALUE Legacy application Legacy application RIP Legacy application New application
  17. 43.

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

    scratch Legacy application Team 1: Maintaining legacy application New Legacy application Legacy application New application
  18. 44.

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

    scratch Legacy application Team 1: Maintaining legacy application New Legacy application Legacy application New application Legacy application
  19. 53.
  20. 54.
  21. 55.
  22. 56.
  23. 57.

    Team 1: Maintaining legacy and building new application New applicati

    VALUE! Now Bright future! Rewrite using strangler
  24. 62.
  25. 65.

    Must haves: main proposition Should haves: if there’s time Won’t

    haves: remove completely Cut features to move faster
  26. 66.

    “ If we were starting over, what would we build

    today, knowing what we know now?
  27. 69.

    1. Find the biggest blocker 2. Remove it completely 3.

    Repeat How to run it Warning: Step 2 might involve more than coding
  28. 71.
  29. 72.
  30. 73.
  31. 74.
  32. 82.
  33. 83.
  34. 87.

    “ If we were starting over, what would we build

    today, knowing what we know now?
  35. 95.

    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
  36. 96.

    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://brightonruby.com/2017/livable-code-sarah-mei/ • 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/ References
  37. 97.

    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