In this interview made by InfoQ’s Deborah Hartmann during Agile 2008, Rebecca Wirfs-Brock talks about software design, the need for good design and the technical debt that might accumulate slowing down the development process. The conclusion is that agile developers should not disregard design.
Watch: Software Design Helps Being Agile (37 min.)
Many people new to Agile emphasize the need for code testing and delivering unit tests along with the code, forgetting about the need to maintain code design over time and the design complexity they might introduce. Ignoring code design will have negative consequences over time.
One of the signs showing damaged code design is the team’s inability to evaluate how much the implementation of a new story will take, because it is not clear where the new code is supposed to be fit in. Another sign is that new functionality is added with reduced velocity.
Perhaps the most important result of not having nor maintaining a good design, according to Rebecca, is the technical debt. While it is OK to deliver a product with a certain amount of manageable technical debt, it is not desirable to let it accumulate too much because it will affect the future of the product and its maintenance.
The conclusion of the interview is that agile developers should consider some software design upfront and should add new functionality following design patterns.