The vision and / or architecture are not the best possible


Various things impact on architecture.  Architecture is important to get right.  It is important to strive for the best possible architecture.  Some of the arguments also apply to the vision of the project.


Architecture and Organization are closely bound to each other (see ConwaysLaw).  There are many things that impact Architecture directly, or impact Organization, thus potentially impacting architecture indirectly.  It is also important to make architectural decisions at the right time during development.  Do this too soon and the requirements are not well enough understood (though candidate architectures may be identified for later assessment).  Do it too late and the cost of change to adapt existing code to amended architecture will be larger than necessary.

Prevention, Amelioration, Cure

In all cases, it is useful to identify a subset of the requirements as ‘architecturally significant’ and assign these to be implemented in early iterations during IterativeDevelopment.


For even a small architectural design, it is advisable to ensure diverse viewpoints are addressed, and assemble an ArchitectureTeam.  To regain that coherence of vision that a single person can produce but committees rarely do, LockEmUpTogether.  Once an ideal architecture is identified, ensure the organization is compatible by following ConwaysLaw.  To avoid following an authority figure unquestioningly, have a WiseFool on the team.


Agile approaches typically have small teams of GeneralizingSpecialists, often having CollectiveOwnership, perhaps even relying on emergent architecture by applying YouArentGoingToNeedIt as a guiding principle.  This latter is a particularly fine way of ensuring the architecture is suited to purpose, it does everything it needs to do and nothing else.  These latter practices should not be attempted in isolation of appropriate supporting practices.  However, GeneralizingSpecialists are always a good thing to have.