Agile and Architecture: a meeting of the undead - Einar Høst - NDC Oslo 2024

Discover how Agile and Architecture complement each other in modern software development. Key insights on team autonomy, sustainable systems, and managing change effectively.

Key takeaways
  • Both Agile and Architecture are important but shouldn’t be seen as opposing forces - they address different aspects of software development

  • Architecture decisions should be team-oriented and owned by the development teams rather than isolated architects. Architecture is too important to be left to architects alone

  • Changes come from multiple sources (technology, business requirements, team composition) and systems need built-in capacity to handle necessary changes while minimizing exposure to accidental changes

  • Knowledge transfer should be continuous through practices like pair/mob programming rather than relying on documentation or single experts

  • Teams need true autonomy (including budget control) to be effective - protective “terrariums” that isolate teams are counterproductive long-term

  • Direct communication with stakeholders and users is critical - feedback through intermediaries weakens the feedback loop

  • Simplicity should be prioritized - avoid unnecessary dependencies, frameworks and sophistication that don’t directly solve the core problem

  • Architecture should be:

    • Fit for purpose
    • Understandable from the inside
    • Observable from the outside
    • Aligned with team concerns and capabilities
  • Building sustainable “cyborg” systems requires both technical excellence and human factors - code alone is not sufficient

  • Focus on necessary vs accidental changes - protect capacity for handling essential changes by minimizing exposure to accidental ones through careful dependency management

  • Consider decommissioning costs upfront - plan for how systems can be replaced or removed