Application design discussions can replace design specification documents and, depending on the quality of an Agile development team's communication, are more effective in delivering high-quality code.
Because Agile design is ongoing, design discussions are literally the most important discussion that Agile development teams have daily. Developers and architects need to think through the design, hash out style and other differences, and come to agreement. It's not necessarily a formal meeting, although design discussions can be any format -- such as a meeting or just an unofficial discussion with a white board. Design discussions need to occur whenever the team reaches a discussion point or an Agile development team member poses a question about the current design.
Design discussions occur before any business code is written. Test the prototype code and prove the design by testing it. Use test-driven development TDD principles to determine the strength of the design. Flush out any concerns or issues before writing the code. Proof-of-design credibility creates fewer surprises down the road.
Design happens in the first few days or week of a project. By the end of that first week, the testing team understands the code, making their test more valid because they are better able to test for failure points. Application quality improves.
The more that design discussion occurs up front, the more developers agree and code is written as agreed to. There's less cowboy coding or abandoned code, which also increases application quality. An Agile development team could be through all of this before a specification document is written, read, discussed and, ultimately, ignored.
The key to quality is communication and continuous design. It's imperative to include customers and product management in design meetings as much as possible. If not, the product manager must read, review and understand the design concept and verify that the end business goal is met.
For my money, design discussions are valuable for both the short and long term, and are more useful and relevant to delivering the right code to the customer with the highest possible application quality.
Making Agile development fit for business
Keep your software healthy during Agile development