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 Slide

  2. Lessons from
    Big rewrite projects

    View Slide

  3. BIG REWRITE STRIKES AGAIN

    View 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 Slide

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

    View Slide

  6. Software Entropy

    View Slide

  7. View Slide

  8. How to start it

    View Slide

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

    View Slide

  10. Product discovery
    Is it the right time?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. •Do you have a business case?


    View Slide

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

    View Slide

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

    View Slide

  17. PLEASE
    PLEASE
    PLEASE
    Let me get what I want

    View Slide

  18. Have one clear business case
    How to sell it

    View Slide

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

    it will be!

    View Slide

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

    View Slide

  21. Make
    the pain
    visible
    How to sell it

    View Slide

  22. How to sell it
    Do Repeat Yourself

    View Slide

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

    View Slide

  24. How to run it

    View Slide

  25. Technical
    vision
    and
    strategy
    Now The future!

    View Slide

  26. Now The future!
    Technical
    vision
    and
    strategy

    View Slide

  27. Technical approaches

    View 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

    View Slide

  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

    View Slide

  30. The strangler
    application

    View Slide

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

    View Slide

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

    View Slide

  33. “ Deleting is faster
    than rewriting.

    View Slide

  34. Bones
    Muscle
    Fat
    Cut features
    to move
    faster

    View Slide

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

    View Slide

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

    View Slide

  37. During the project

    View Slide

  38. How to run it
    Show internal progress

    View Slide

  39. How to run it
    Celebrate your successes!

    View Slide

  40. View Slide

  41. View Slide

  42. View Slide

  43. View Slide

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

    View Slide

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

    View Slide

  46. These things 

    take time
    How to finish it

    View Slide

  47. How to not need it
    again

    View Slide

  48. Software Entropy

    View Slide

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

    View Slide

  50. View Slide

  51. DELETE
    CODE
    FEATURES
    PRODUCTS

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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…
    [email protected]
    @saleandro

    View Slide

  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/

    View Slide

  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

    View Slide