Recurring Organizational Themes
When choosing how to organize your software development organization, you should address these recurring themes and concepts:
- Creating a software process team
- Balancing centralized versus decentralized organizations
- Managing virtual teams
Creating a Software Process Team
Regardless of organization, every development organization should have a software process team. This team, made up of representatives from each software skill area, should be tasked with developing standard processes used throughout the organization. These individuals can thus become process "experts" who help train the rest of the organization.
Balancing Centralized Versus Decentralized Organization
Most IT groups have experimented with different mixes of centralized versus decentralized organizations. The arguments on both sides are well-known. Centralized organizations generate economies of scale and give developers the most opportunity to specialize. For example, a development group of 50 people can probably have several specialists in user interface development. Break that same organization down into 10 groups of 5, and no group may be able to afford a dedicated user interface specialist or other specialist. The downside of centralized organizations is that they're often unresponsive to individual business unit demands, especially to smaller business units. In theory, a decentralized development group dedicated to an individual business unit can be more responsive to local needs.
One suggestion is to keep a small centralized development organization for enterprise-wide systems and company-wide architecture issues. Individual business units should be responsible for developing their own local applications.
Managing Virtual Teams
Static software development organizations worked well when software was limited to a small, well-defined, and static set of functions within an organization. Today, business requirements often call for the creation of virtual teams that span all aspects of a company, not just its development organization. The classic example is the marketing department that decides the company needs to have an e-commerce web site. In addition to the IT and marketing departments, this might involve the legal department, the sales department, product departments, and the art department. Today's business drivers require that such teams be able to come together, perform their function, turn over a product for maintenance, and disband to go off to other jobs, perhaps several times a year or even more often.
Figures 1 and 2 show sample software development organization charts for small and medium-to-large software development organizations, respectively. There are many types of development organization structures you could come up with in addition to those illustrated here. Following the concepts presented, you should be able to tailor one of these organization charts to best suit the requirements of your group.
Figure 1 Small corporate software development department.
Figure 2 Medium-to-large corporate software development department.