I believe that enterprise architecture more closely resembles social structures than physical structures and enterprise architects are more closely related to the authors of the declaration of independence than structural engineers.  This is a key differentiator when discussing application vs. enterprise architecture.  Good enterprise architecture is representative of the community it inhabits.  It tries to reflect the needs, not the desires, of the applications it serves.  The enterprise architecture exists solely at the pleasure of the applications and wholly for the benefit of the end users.

 

To that end, enterprise architecture provides guidance and policy not laws.  Many efforts to establish architectures have failed at the hands of megalomaniacs who, through fear uncertainty and doubt, drove project teams to do things their way.  Countless hours have been wasted enforcing naming conventions or “best practices” neither of which (unless extreme) actually effect the quality or value of the application. 

 

Software is still art produced by craftsman, each leaving their own distinct and identifiable brush strokes in logical constructs, use of white space, nesting etc … The enterprise should not be dictating low level details.  Why would the enterprise require all database connections implicitly pass connection strings; there are too many perfectly reasonable conditions where alternate strategies might be applied.  Instead the enterprise needs to ensure that connections to persistent storage is done safely, securely, and within the layering guidance provided by the enterprise models.

 

Enforcement is equally layered.  Local enforcement is achieved in peer reviews and code reviews within the context of the problem space a given application is being designed to address.  At the local level it is at least possible to define some clear cut do’s and don’ts.  Exceptions can be escalated up to the project level where technical and project leads may identify issues requiring direct action and making on the spot decisions as to how strictly they need to enforce the rules.  If interpretation is necessary it should be delegated to senior technical staff and enterprise leads.  The senior team is best suited to provide a balanced judicial review.  Layering the needs of the broader community on top of good judgment developed over years of experience.