The document discusses strategies for dealing with legacy codebases, specifically rewriting the code completely versus incrementally redeveloping it. It outlines characteristics of software that lasts, such as the ability to evolve over time, separation of concerns, using standard languages, and fault tolerance. Best practices for developing lasting software are also presented, including coding standards, static analysis tools, defensive programming, testing, documentation, and leaving the codebase in a better state than when development started. The overall recommendation is for incremental redevelopment of legacy codebases rather than full rewrites.
20. Characteristics
• Ability to evolve over time
• Separation of concerns
• Use of standard languages
• Minimising of dependencies
21. Characteristics
• Ability to evolve over time
• Separation of concerns
• Use of standard languages
• Minimising of dependencies
• Simple, readable code
22. Characteristics
• Ability to evolve over time
• Separation of concerns
• Use of standard languages
• Minimising of dependencies
• Simple, readable code
• Fault-tolerance and fast recovery
23.
24. Characteristics
• Ability to evolve over time
• Separation of concerns
• Use of standard languages
• Minimising of dependencies
• Simple, readable code
• Fault-tolerance and fast recovery
38. Characteristics
• Ability to evolve over time
• Separation of concerns
• Use of standard languages
• Minimising of dependencies
• Simple, readable code
• Fault-tolerance and fast recovery
39. Best practices
• Coding standards and code reviews
• Static analysis tools
• Defensive programming
• Property-based testing
• The Campsite Rule
• Documentation