How to Build Evolvable Systems | ThoughtWorks Keynote @ DeveloperWeek 2019

Here is the meta description: "Learn how to build evolvable systems with ThoughtWorks Keynote at DeveloperWeek 2019. Discover the principles and techniques for creating adaptable systems that prioritize change and customer value."

Key takeaways
  • Ecosystem change is as important as requirement change, and architects must plan for both.
  • Evolutionary architecture is not just for microservices, but a broader approach to building adaptable systems.
  • Key to evolutionary architecture is prioritizing changes and focusing on one aspect at a time.
  • Fitness functions guide the development of a system and ensure it meets specific requirements.
  • Unsatisfactory solutions can lead to constant refactoring, whereas incremental change can be more efficient.
  • Conway’s law states that an organization’s system will reflect its communication structures, making it crucial to enable communication and change management.
  • The “last responsible moment” principle ensures that changes are made only when necessary, and the “simulation” principle allows for testing and prototyping.
  • Structured monoliths can be more evolvable than traditional monoliths, but still require planning and incremental change.
  • Evolutionary architecture is not a replacement for traditional software development principles, but a complementary approach.
  • The “guided” principle ensures that solutions are focused on specific priorities and iterations.
  • Database refactoring is a technique for facilitating incremental change and evolution of a system.
  • Testability is crucial for evolutionary architecture, as it allows for experimentation and evaluation of different solutions.
  • Building adaptable systems requires a willingness to change and iteration, rather than a fixed vision or plan.
  • A focus on customer value and feedback is essential for understanding what changes are necessary and prioritizing them effectively.