Software design

20+ Years in Tech: Things We Wish We Knew Sooner • Daniel Terhorst-North & Kevlin Henney

20+ Years in Tech: Things We Wish We Knew Sooner • Daniel Terhorst-North & Kevlin Henney

In a reflective and forward-looking conversation, Daniel Terhorst-North and Kevlin Henney explore the evolution of software development over the past 20 years and predict the key challenges and innovations for the next 20. They delve into the philosophy of programming language design, the critical need for hardware-sympathetic programming, the untapped potential of concurrency models like CSP and the Actor Model, and the future of user interfaces and decentralized technology.

Early Days of Agile Development & Is Design Dead? • Martin Fowler & James Lewis

Early Days of Agile Development & Is Design Dead? • Martin Fowler & James Lewis

In an interview with James Lewis, Martin Fowler recounts his journey into the Agile movement, starting from the object-oriented community to the pivotal Chrysler C3 project where Extreme Programming (XP) was born. He discusses the shift from upfront to evolutionary design, the creation of the Agile Manifesto, and offers modern perspectives on developer productivity, the role of GenAI in software analysis, and the enduring importance of XP's technical practices.

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.