Empirical Software Design: When & Why with Kent Beck
Since the publication of Parnas' "On the Criteria to Be Used in Decomposing Systems into Modules" we have had good advice on how to design software. However, most software is more difficult to change than it should be and that friction compounds over time. The Empirical Design Project seeks to resolve the seemingly-irresolvable tradeoff between short-term feature progress and long-term optionality, focusing on:
-
How is software actually designed? What can we learn from data about how software is designed?
- When should software design decisions be made? What is the optimal moment given unclear and changing information & priorities?
- How can we enhance the survival of software projects while expanding optionality?
Kent Beck
Kent Beck is an American software engineer and the creator of Extreme Programming, a software development methodology that eschews rigid formal specification for a collaborative and iterative design process. Beck was one of the 17 original signatories of the Agile Manifesto.
Beck pioneered Test-Driven Development, its successor TCR: Test && Commit || Revert, software design patterns, and 3X: Explore/Expand/Extract. He wrote the SUnit unit testing framework for Smalltalk, which spawned the xUnit series of frameworks, notably JUnit for Java, which Beck wrote with Erich Gamma. Beck popularized CRC cards with Ward Cunningham, the inventor of the wiki.