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

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.

Sabrina Leandro

June 09, 2017
Tweet

More Decks by Sabrina Leandro

Other Decks in Technology

Transcript

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

    View full-size slide

  2. Lessons from
    Big rewrite projects

    View full-size slide

  3. BIG REWRITE STRIKES AGAIN

    View full-size slide

  4. This talk
    • The problem
    • How to start it
    • How to run it
    • How to finish it
    • How to not need it again!

    View full-size slide

  5. The problem
    Stop me if you think you’ve heard this one before

    View full-size slide

  6. Software Entropy

    View full-size slide

  7. How to start it

    View full-size slide

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

    View full-size slide

  9. Product discovery
    Is it the right time?

    View full-size slide

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

    View full-size slide

  11. Is it the right time?
    Yes, if the product has a
    clear business value today.

    View full-size slide

  12. What difference does it make?
    Is it the right reason?

    View full-size slide

  13. •Do you have a business case?


    View full-size slide

  14. •Do you have a business case?
    •Can you explain it to anyone in
    your organisation?

    View full-size slide

  15. Is it the right reason?
    Yes, if there’s one clear
    business case.

    View full-size slide

  16. PLEASE
    PLEASE
    PLEASE
    Let me get what I want

    View full-size slide

  17. Have one clear business case
    How to sell it

    View full-size slide

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

    it will be!

    View full-size slide

  19. How to sell it
    Find allies outside of your team

    View full-size slide

  20. Make
    the pain
    visible
    How to sell it

    View full-size slide

  21. How to sell it
    Do Repeat Yourself

    View full-size slide

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

    View full-size slide

  23. How to run it

    View full-size slide

  24. Technical
    vision
    and
    strategy
    Now The future!

    View full-size slide

  25. Now The future!
    Technical
    vision
    and
    strategy

    View full-size slide

  26. Technical approaches

    View full-size slide

  27. 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

    View full-size slide

  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
    Legacy
    application

    View full-size slide

  29. The strangler
    application

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  32. “ Deleting is faster
    than rewriting.

    View full-size slide

  33. Bones
    Muscle
    Fat
    Cut features
    to move
    faster

    View full-size slide

  34. “ If we were starting over,
    what would we build today,
    knowing what we know now?

    View full-size slide

  35. 1) Find the biggest blocker
    2) Remove it completely
    3) Repeat
    What to do first?

    View full-size slide

  36. During the project

    View full-size slide

  37. How to run it
    Show internal progress

    View full-size slide

  38. How to run it
    Celebrate your successes!

    View full-size slide

  39. That joke isn’t funny anymore…
    How to run it
    Do Repeat Yourself, again

    View full-size slide

  40. How to finish it
    I started something I couldn’t finish

    View full-size slide

  41. These things 

    take time
    How to finish it

    View full-size slide

  42. How to not need it
    again

    View full-size slide

  43. Software Entropy

    View full-size slide

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

    View full-size slide

  45. DELETE
    CODE
    FEATURES
    PRODUCTS

    View full-size slide

  46. “ If we were starting over,
    what would we build today,
    knowing what we know now?

    View full-size slide

  47. How to not need it again
    Make it part of your day-to-day

    View full-size slide

  48. “ A refactor a day
    keeps the rewrite
    away!

    View full-size slide

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

    View full-size slide

  50. How to not need it again
    Promote a culture of collaboration

    View full-size slide

  51. Technical migrations
    Continuously deliver
    value
    Delete what’s not
    valuable
    One business goal

    View full-size slide

  52. Sustainable Software
    Make maintenance
    cost visible
    Learn and collaborate
    Refactor a little bit
    and often

    View full-size slide

  53. 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

    View full-size slide

  54. 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/

    View full-size slide

  55. 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

    View full-size slide