Centralize Expectations Decentralize Control

Problem: You are having a difficult time getting a large number of groups to standardize their behavior

Solution: Stop trying to constrain their actions and focus your energy on clarifying your expectations on the outcome.

Context: Large IT organizations frequently bless a certain group with the authority (and often not the responsibility) of defining the proper architectural practices and design solutions that can be used throughout the organization. This leads to items like common data access components that lock down access to a narrowly defined channel that all groups (regardless of their design needs) must use. It also results in certain languages being verboten, and certain portions of languages being verboten -- again without regard to specific needs.

As an alternative, these same groups can get out of the traffic cop/prision guard roles, and shift their focus to clarifying expectations. One way to do this is via extensive automated testing. If there are certain architectural or security constraints in the environment, write tests that will break code that does not conform to them (centralizing expectations) then shift the responsibility to the diverse groups that their code must pass those tests to move into production.

I envision Agile development and ExtremeProgramming playing a role in such a strategy, allowing the organization to approach these problems TestFirst. The central group can spend less time doing code reviews and writing standards documents, and more time capturing their enterprise constraints as tests, and implementing solutions in a true reference application that can pass those tests. This SeinfeldApplication would then be living documentation that each group could refer to for ideas. Furthermore, when new approaches, and issues are discovered, members of the discovering group can pair with members of the architectural group to enhance the SeinfeldApplication, extending the organization's knowledge. Constant refactoring will lead to truly useful (instead of merely limiting) abstractions that are widely used in the organization. EnterpriseContinuousIntegration ensures that feedback is tight enough across the organization to allow updates to shared code.


Contributers: BillCaputo


CategoryOrganization


EditText of this page (last edited December 14, 2014) or FindPage with title or text search