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

How to rewrite, a bit at a time - Pipeline Conf...

How to rewrite, a bit at a time - Pipeline Conference 2018

There’s nothing more frustrating than not being able to deliver new features because of unnecessarily complicated code. A fast deployment pipeline is of no use if the code itself is too hard and slow to change.

You may decide it’s time to throw it all away and start over… and what began full of optimism, drags on for months and years, 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 in an iterative way. 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.

Sabrina Leandro

March 20, 2018
Tweet

More Decks by Sabrina Leandro

Other Decks in Technology

Transcript

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

    @saleandro Pipeline Conference 2018
  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. “ If we were starting over, what would we build

    today, knowing what we know now?
  20. 1.Find the biggest blocker 2.Remove it completely 3.Repeat How to

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

    today, knowing what we know now?
  22. 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
  23. 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/ References
  24. 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