Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
Mechanical coffee machines are amazing! You drop in a coin, listen for the clink, make a selection, and the machine springs to life, hissing, clicking, and whirring. Then the complex mechanical ballet ends, splashing that glorious, aromatic liquid into the cup. Ah! C’est magnifique! There’s just one problem. Our customers also want soup! And, our machine is not extensible. So, we have a choice: we can add to the complexity of our machine by jamming in a new dispenser with each new request; or, we can pause to make our machine more extensible before development slows to a halt.
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
In the video titled "A Brewer’s Guide to Filtering out Complexity and Churn," speakers Alan Ridlehoover and Fito von Zastrow present methods for addressing software complexity in development. They use the metaphor of a coffee machine to illustrate how complexity accumulates in software through incremental changes or 'commits.' The speakers highlight three key objectives: - **Understanding Complexity**: They discuss how complexity sneaks into applications, specifically through conditional statements and duplicated code as new features are added, ultimately creating tightly coupled code that is difficult to maintain. - **Measuring Complexity and Churn**: The talk emphasizes the need to measure both complexity—using metrics like method length and scores from the Ruby Flog tool—and churn, which reflects how often code is modified. High complexity coupled with high churn indicates potential areas of pain in the codebase. - **Removing Complexity**: The presenters advocate for a proactive approach to software design by restructuring code to maintain low complexity while allowing for new features, such as using polymorphism and factory patterns to instantiate new beverage types without modifying existing code. Throughout the presentation, Alan and Fito share a practical demonstration by building a coffee machine application that evolves to include various drinks, showcasing how complexity can escalate with each expansion. They outline several points that act as indicators for the need to refactor or rethink the software’s design: - Method length should be short (ideally under five lines). - Complexity scores should remain below 20. - Developers should trust their instincts about the manageability of code. In the end, they successfully add a new feature (soup) without creating additional complexity by applying principles they outlined earlier during the talk. Their final takeaways encourage developers to be vigilant about managing complexity by regularly measuring and reflecting on their code's architecture, even suggesting practical homework tasks for audience members to assess their own projects. Overall, the talk underscores the importance of designed resilience in software systems to handle new requirements without being encumbered by previous complexities, enhancing maintainability and development speed.
Suggest modifications
Cancel