Solving the Hard Problems

Solving the Hard Problems

🎙 Dave Farley 👥 1.1M 📅 September 24, 2025 ⏱ 38 min 👁 6K 📄 expert opinion 🧭 2026-08-03
Available in: English (current) Français

Keywords

engineeringarchitectureiterationcomplexitydesign

Summary

In this GOTO 2024 talk, Dave Farley argues that software engineering should be treated as a true engineering discipline, focused on problem-solving and design rather than just coding. He emphasizes that complex systems cannot be built in one leap but must evolve through iterative learning and feedback. Farley defines engineering as the application of scientific reasoning to avoid stupid mistakes, and he illustrates this with examples from aviation and space exploration. He introduces the concept of architecture as a ’tourist map’ – a snapshot that helps navigate but is not perfectly accurate. Key principles for managing complexity include modularity, separation of concerns, abstraction, and managing coupling. He stresses that the primary measure of software quality is ease of change, and that architecture should be continuously evolved, not fixed upfront. He advocates for small steps, prioritizing testability, and adapting to context. The talk concludes with practical advice: don’t design ahead, use platforms as abstractions, and manage coupling carefully. Farley’s message is that by embracing an evolutionary approach, software teams can tackle hard problems effectively.

173 words

Critical Evaluation

Dave Farley’s talk is a compelling and well-structured argument for adopting an evolutionary approach to software architecture and design. His central thesis – that software engineering should be treated as a true engineering discipline, focused on problem-solving and design rather than just coding – is both timely and relevant. He effectively uses analogies from other engineering fields, such as aviation and space exploration, to illustrate how complex systems evolve through iteration and learning. The concept of architecture as a ’tourist map’ is particularly insightful, capturing the idea that architecture is a guide for reasoning about the system, not a rigid blueprint. Farley’s emphasis on ’ease of change’ as the primary measure of software quality is a strong and practical principle, though it might be argued that other qualities like security and performance are equally important in certain contexts. The talk is grounded in his extensive experience and his book ‘Modern Software Engineering’, which lends credibility to his arguments. However, it is largely opinion-based, and he does not present new empirical data or case studies to support his claims. The talk is aimed at a professional software engineering audience, and the technical level is appropriate, avoiding excessive jargon while still being substantive. The structure is clear, with a logical progression from the definition of engineering to practical advice on managing complexity. The inclusion of timecodes and slides enhances the accessibility of the content. Overall, this is a valuable talk for software engineers and architects seeking to improve their approach to complex systems, offering both philosophical insights and practical guidance.

258 words

Title / Content Match

The title 'Solving the Hard Problems' is broad but the talk focuses on how to tackle complex software systems through evolutionary architecture and incremental design, which aligns well with the title.

Quality & Reliability

8/10

Dave Farley is a recognized expert in continuous delivery and software engineering. The talk is based on his experience and ideas from his book 'Modern Software Engineering'. The content is coherent and well-argued, but it is primarily opinion and experience-based rather than presenting new empirical research.

Chapters

Cited Sources

Concurring Sources

Contribution & Novelties

The talk synthesizes and popularizes key ideas from evolutionary architecture and continuous delivery, presenting them in a coherent framework for tackling complex software systems. It emphasizes the importance of treating software engineering as a scientific discipline and provides practical guidance on incremental design and managing complexity.

Pour aller plus loin :

  • Evolutionary architecture — Wikipedia article on evolutionary architecture, a concept central to the talk.
  • Continuous delivery — Wikipedia article on continuous delivery, a practice advocated by Farley.
  • Separation of concerns — Wikipedia article on separation of concerns, a key principle for managing complexity.
  • Coupling (computer science) — Wikipedia article on coupling, relevant to managing dependencies.
  • Test-driven development — Wikipedia article on TDD, related to prioritizing testability.

117 words

Radar Profile

The radar profile shows high scores in quality of information and reliability, reflecting the speaker's expertise and coherent argumentation. The quantity of information is also high, but the technical level is moderate, making it accessible to a broad engineering audience.

Reliability 8/10