No one would build a building by hiring eight different architects to design individual rooms and then try to put them together after-the-fact. Why do we build software systems without having architectural plans, goals, and guidelines?
I have been thinking quite a bit about systems architecture lately and will jot down some of my thoughts. I reserve the right to add to or modify this list in the future (updated 2007-01-17).
- Either designate (promote from within) or hire an overall system architect (a single person) who works closely with specialists such as a data architect and a UI architect. This person needs technical skills and abilities, but that's not all. This position also requires the ability to lead and build consensus among teams.
- Do build a committee around this architect, but give this one person both the responsibility and the authority to design and implement your organization's architecture.
- Have this person, with the help of the architecture team, create a comprehensive enterprise architecture. It should include guidance for all parts of the system (UI, mid-tier, database, messaging, security, installation and implementation, application cohesion and coupling, etc.).
- Have a five-years-out goal and require that every new bit of software written somehow gets you closer to that goal.
- Learn from each project and update the overall architecture and the plans and guidelines as necessary. Technology, your customers, and your competition will all change. Your architecture should change in response.