Complexity

The Infinite Software Crisis – Jake Nations, Netflix

The Infinite Software Crisis – Jake Nations, Netflix

In an era of the "Infinite Software Crisis" where AI-generated code outpaces human understanding, this talk argues for choosing "simple" design over "easy" generation. The speaker presents a three-phase methodology—Research, Planning, and Implementation—that forces developers to think critically before generating code. This approach leverages AI for mechanical tasks while ensuring that human judgment, context, and a deep understanding of the system remain the core of the software development process, turning human insight into the ultimate competitive advantage.

Solving the Hard Problems • Dave Farley • GOTO 2024

Solving the Hard Problems • Dave Farley • GOTO 2024

Dave Farley argues that modern software development should be treated as an engineering discipline, emphasizing an evolutionary and iterative approach to architecture and design. He outlines key principles for tackling complexity, focusing on optimizing for learning and ease of change through techniques like working in small steps, prioritizing testability, and managing coupling.

Balancing Coupling in Software Design • Vlad Khononov & Sheen Brisals

Balancing Coupling in Software Design • Vlad Khononov & Sheen Brisals

Author Vlad Khononov discusses his book "Balancing Coupling in Software Design," explaining how a failed microservices project led him to rediscover timeless design principles from the 1970s. He explores the concepts of local vs. global complexity, the role of modularity as an antidote to complexity, and how managing coupling is crucial for building maintainable systems in any architectural style, from monoliths to cloud-native applications.