Notes
- The word 'Architecture' comes from the construction metaphor which very quickly breaks down when discussing code.
- "What is Architecture anyway?" As a group we discussed this particular point to make sure that we were all talking about the same thing.
- An architecture is created upfront before the creation of the full development team. You need to do this to make sure that the application is secure, extensible, and scalable.
- An architecuture, in an agile environment, is built via evolutionary design. The idea is to build without upfront design with a smaller team and then grow the team after the 'architecture' has been flushed out.
- Architecture is the theory of the code.
- Documents are used to create a history and give an overall picture of the architecture.
- Documents cannot replace a person who is the Keeper of the Theory of the Code.
- "What does an Architect do?"
- An Architect is out of a job.
- An Architect's job is to share and communicate this theory so that developers know where the new pieces of design fit.
- Domain Driven Design affects the theory of the code.
- An Architect is the "guiding hand" that guides (sometimes forces)important design decisions on a team.
- An Architect still has a place on the evolutionary design team although the role has changed.
Conclusion
We came to agreement that an Architect role is still necessary - especially on larger projects (large in scope or long in timeframe). An Architect role has changed - we did not get consensus on what this role should be. The two major roles that were discussed were 1) Architect as a guiding hand, and 2) Architect as the Keeper of the theory of the code.