Are Rewrites always a Bad Idea? - Adele Carpenter - NDC Oslo 2024

Adele Carpenter

Learn when software rewrites make sense, how to avoid common pitfalls, and strategies for successful implementation. Guidelines for making the rewrite vs refactor decision.

Key takeaways
  • The key reasons to consider a rewrite:

    • There is a desire to functionally change the application
    • No small steps available to improve the codebase
    • The team lacks required skills and doesn’t wish to acquire them
    • The service is small with well-defined scope
  • Before starting a rewrite:

    • Conduct thorough audit of current application functionality
    • Look for evidence that proves rewrite is wrong rather than right
    • Treat initial phase as discovery/feasibility study
    • Be prepared to walk away if scope is larger than expected
    • Break rewrite into smaller deployable chunks
  • Avoid common pitfalls:

    • Resume-driven development (choosing new tech just to add to resume)
    • Assuming predecessors made poor decisions
    • Underestimating complexity of existing system
    • Taking on too large a scope
    • Not delivering value early
  • Successful rewrite approach:

    • Use strangler fig pattern for gradual replacement
    • Keep tech stack choices aligned with team expertise
    • Focus on consistency over perfection
    • Get early user feedback
    • Document thoroughly including “todos” and loose ends
  • Key considerations:

    • Rewrite must solve actual user pain points
    • Team skills and preferences matter more than “best” technology
    • Small, well-defined scope is crucial
    • Early stakeholder buy-in through quick wins
    • Leadership and communication are as important as technical skills