Walking the architecture/design highwire
Donald Rumsfeld was right: it’s the unknown unknowns that are the real killers in software development.
Design decisions made too early amount to speculation without facts. But you must have architecture into account before you can do anything. Neal Ford’s session at W-JAX 2013 talks about the tension in between architecture and design in agile projects, discussing two key elements of emergent design (Utilizing the load responsible moment and harvesting idiomatic patterns) and how to de-brittlize your architecture so that you can play nicely with others.
This talk includes both proactive (test-driven development) and reactive (refactoring, metrics, visualizations, tests) approaches for discovering design, and discusses the use of custom attributes, DSLs and other technologies.