OrganizationFollowsMarket

Vegetable market, San Diego, California.

....the market comprises several customers with similar but conflicting needs. The project has adopted sound architectural principles, and can organize its software according to market needs.

✥ ✥ ✥

There needs to be an identified role or organization with accountability to each market segment.

For example, AT&T used to market both private branch exchanges (PBXs), which customers owned and administered on site, and a feature called CENTREX that ran on telephone company switches to offer PBX-like features to its customers. Different organizations marketed CENTREX and PBXs, which caused confusion about how best to serve the company's markets.

The development organization should track and meet the needs of each customer. Customer needs are similar, and much of what they all need can be done in common. Different customers expect results on different schedules. Therefore:

In an organization designed to serve several distinct markets, it is important to reflect the market structure in thedevelopment organization. One frequently overlooked opportunity for a powerful pattern is the conscious design of a "core" organization, that supports only what is common across all market segments. Ralph Johnson calls this a framework team. It is important to put this organization in place up front.

✥ ✥ ✥

Note that since ConwaysLaw states that organization and architecture are isomorphic, that the architecture must follow the market. In reality, if the organization is set up to follow the market, it makes it easier to have a clean architecture that follows the market lines. The success of this pattern is necessary to the success of ArchitectAlsoImplements, since the architect's focus and intent are driven much by the market. ArchitectAlsoImplements should be seen as an audit, refinement, or fine-tuning of this pattern.

Once taken care of, this pattern allows the organization to start forming around patterns like FormFollowsFunction to flesh out the structure at a finer level.

AT&T actually solved this problem in an extreme way — by spinning off its PBX organization as a separate company.

Most of the rationale is in the forces. Two of the major forces relate to individual customer schedules, and to posture the organization to respond quickly to customer requests. Two important aspects of domain analysis are broadening the architecture (e.g., by working at the base class level), and ensuring that architectural evolution tracks the vendor understanding of customer needs. A single organization can't faithfully track multiple customer needs, and this organization allows different arms of the organization to track different markets independently.