The enterprise and / or team organization are not the best possible for the project


Enterprise and team organization will have a big impact on a project.  Appropriate organization makes success much easier to achieve.  Inappropriate organization will make success harder and more expensive, if it can be achieved at all.


Appropriate organization addresses the amount of communication required (see TooMuchCommunication), the geographical constraints, marketing conditions, skill profiles and other issues.  Any attempt at appropriate organization will be a compromise, and it would be sensible to have secondary structures in place to counter the worst problems of any chosen organizational structure.  For example, it is common to hear a discussion as to whether a large development team ought to be split into teams of manageable size by following functionality or alternatively by following technology layering.  Functionality cuts across technology layering, and vice-versa; the two are orthogonal.  If we choose to split teams by functionality, then it would be sensible to have technologically oriented ‘special interest groups’ that communicate among themselves and cut across the teams, to keep the functionality groups in step with each other.

Prevention, Amelioration, Cure


The pattern UpsideDownMatrixManagement deals with the issue of legacy enterprise and finer grain organization problems in general.  The three patterns ConwaysLaw, OrganizationFollowsLocation and OrganizationFollowsMarket relate the ideal large-scale project organization respectively to product architecture, geographical distribution and market structure.  These are not necessarily mutually incompatible.  DivideAndConquer advocates organization based on roles where team size is becoming unmanageably large, though there are risks that this will increase CostOfCommunication if the hand-off between communicating roles cannot be kept informal.  HubSpokeAndRim puts a manager in the role of co-ordinator while co-operating roles communicate directly.  The question of optimizing organization for inter-role communication is also dealt with by the patterns CouplingDecreasesLatency, ProducerRoles, ThreeToSevenHelpersPerRole and ResponsibilitiesEngage.  DeveloperControlsProcess, ArchitectureTeam, HolisticDiversity and DiverseGroups deal with team organization for individual tasks.


In general, modern methods recommend small, agile, flexible teams working in an OpenWorkspace that have excellent internal communications and thus avoid most organizational problems.  DevelopingInPairs allows a member of a pair from each of the orthogonal interests (functionality and technological layering), though CollectiveOwnership and GeneralizingSpecialists mean that it is more likely we would find the necessary knowledge and skills in a single person.