The typical rhythm of agile software development is to work on the next known, small batch of work. Some propose that software architecture should emerge and shouldn’t require any extra attention. But it isn’t always prudent to let your architecture emerge at the speed of the next iteration, especially when you are building large, complex software systems. Complex enterprise systems and large software projects have many moving parts, dependencies, challenges, and unknowns. Without appropriate architectural investigations and ongoing attention, such projects can be risky. Yet two commonly heard phrases in agile development are, “Let your architecture emerge” and, “Always implement what you actually need, never what you think you might need.”
This talk will explore how you can be agile at managing architecture risks and innnovations for complex projects and programs.We’ll present options for effectively developing and refining your architecture and monitoring its ongoing health. We’ll introduce the notion of architecture spikes and explain how they differ from design spikes. We’ll discuss how small team design practices contribute to sustainable architecture, and introduce other practices you might want to employ to mitigate architecture risk and incrementally develop and evolve your architecture. We’ll conclude with a call for action to agile architects and their role in enabling sustainable software development.