Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to rewrite, a bit at a time

How to rewrite, a bit at a time

Domain-Driven Design Europe 2019

Sabrina Leandro

February 01, 2019
Tweet

More Decks by Sabrina Leandro

Other Decks in Technology

Transcript

  1. How to rewrite, a bit at a time Sabrina Leandro

    @saleandro Domain-Driven Design Europe 2019
  2. • 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. Complex abstractions Lots of features Too many slow tests Little

    to no tests No clear abstractions Lots of features
  4. Complex abstractions Lots of features Too many slow tests Little

    to no tests No clear abstractions Lots of features Tickets store & Internal tools
  5. 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. Is it the right time? Yes, if the product has

    a clear business value today.
  7. Now Bright future! Team 2: Building new application Rewrite from

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

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

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

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

    scratch Legacy application Team 1: Maintaining legacy application New Legacy application Legacy application
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. Team 1: Maintaining legacy and building new application New applicati

    VALUE! Now Bright future! Rewrite using strangler
  19. Must haves: main proposition Should haves: if there’s time Won’t

    haves: remove completely Cut features to move faster
  20. “ If we were starting over, what would we build

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

    Repeat How to run it Warning: Step 2 might involve more than coding
  22. “ If we were starting over, what would we build

    today, knowing what we know now?
  23. 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… [email protected] @saleandro
  24. 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
  25. 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