$30 off During Our Annual Pro Sale. View details »

Modernizing through evolution not revolution

Modernizing through evolution not revolution

Due to unavoidable compromises, over time, projects inevitably lean more towards growth and depth than general modernization, to the point that they become difficult to maintain. So, what happens when the bugs add up and the monster emerges? Refactor? Rewrite from scratch? The speaker shall expand and explain what to look out for, from both a technical and business perspective.

Presented at CFSummit 2022, Las Vegas, US

Guust Nieuwenhuis

October 10, 2022
Tweet

More Decks by Guust Nieuwenhuis

Other Decks in Technology

Transcript

  1. MODERNIZING THROUGH EVOLUTION NOT REVOLUTION GUUST NIEUWENHUIS

  2. ABOUT ME Guust Nieuwenhuis Managing Partner @ We Are North

    Full Stack Web Wizard Masa CMS Born in The Netherlands Living in Belgium Soccer coach Mountainbiker
  3. MODERNIZING THROUGH EVOLUTION NOT REVOLUTION GUUST NIEUWENHUIS

  4. 10 YEARS Average software lifetime

  5. Spaghetti code Outdated framework Unsupported libraries Deprecated integrations No tests

    Not documented Difficult to develop Hard to maintain
  6. What’s next?

  7. None
  8. Flights booking engine Performance issues Decided to rewrite from the

    ground up Kept adding new functionality to the “old” engine Development of the “new” engine trying to catch up Financial disaster
  9. REWRITE CODE FROM SCRATCH IS THE SINGLE WORST STRATEGIC MISTAKE

    THAT ANY SOFTWARE COMPANY CAN MAKE Joel Spolsky 
 Co-founder Trello and Stack Over fl ow
  10. A feeling isn’t sufficient Rewrite delays the release of the

    project More bugs and less functionality Expensive No guaranteed success
  11. So, what’s next?

  12. None
  13. 12+ years old web application New separate API for mobile

    app New report builder module Integrated new module in old application Sharing the database Feature flags
  14. 12+ years old web application New separate API for mobile

    app New report builder module Integrated new module in old application Sharing the database Feature flags
  15. 12+ years old web application New separate API for mobile

    app New report builder module Integrated new module in old application Sharing the database Feature flags
  16. None
  17. 25+ years old client-server app Need to move to “The

    Cloud” New module developed Domain Driven Design Microservices architecture Events between “old” and “new”
  18. 25+ years old client-server app Need to move to “The

    Cloud” New module developed Domain Driven Design Microservices architecture Events between “old” and “new”
  19. How?

  20. 1. Case

  21. 1. Case 2. Boundary

  22. 1. Case 2. Boundary 3. Strategy

  23. 1. Case 2. Boundary 3. Strategy Bubble Context

  24. 1. Case 2. Boundary 3. Strategy Bubble Context

  25. 1. Case 2. Boundary 3. Strategy Bubble Context Anticorruption layer

    (ACL)
  26. 1. Case 2. Boundary 3. Strategy Bubble Context ACL Synchronisation

  27. 1. Case 2. Boundary 3. Strategy Event queue

  28. SAME HABITS, SAME MISTAKES!

  29. WANT TO READ MORE? Domain Driven Design Bounded Context Strangler

    Fig Pattern Anti Corruption Layer Eric Evans Martin Fowler Anti Patterns Event Driven Architecture Microservices Feature Flags
  30. ONE MORE THING Steve Jobs Co-founder of Apple, Next and

    Pixar
  31. None
  32. 3 applications Overlapping functionality Consolidate applications Minimum viable product (MVP)

    Won’t copy all functionality Business case drives rewrite!
  33. 3 applicaties Overlapping functionality Consolidate applications Minimum viable product (MVP)

    Won’t copy all functionality Business case drives rewrite!
  34. MODERNIZING THROUGH EVOLUTION NOT REVOLUTION guust@wearenorth.eu https://www.linkedin.com/in/guustnieuwenhuis

  35. None