team organization


Although I generally PreferFunctionalStaffOrganization the arguments in favor of a technical orientation over a FunctionalStaffOrganization cannot be dismissed lightly.

Technical based organizations align people around technical aspects of an IT project or organization. In a large company you'll see specialists in web interfaces, databases, networking, etc. You'll see teams dedicated to handling particular services which can be used by multiple upstream services. Within a single project you'll see similar organization by the natural layers of an application.

Software development is complex, to build a realistic system you need a host of skills and knowledge - far more than can fit in a mortal's head. For anyone to really master and understand what they are doing, they need to specialize into a particular area. That way they can use the technology in the most efficient and effective way.

This is true particularly for people of lessor ability, who have problems dealing with too many topics. But it's also true for high ability people who prefer to concentrate on a focused set of topics. In particular it allows you to allocate the best people to the most complex and valuable parts of the IT infrastructure - in particular to areas that are needed by many parts of the organization.

In order to improve the efficiency of an organization, it's imperative that you avoid duplicate effort. If every project builds its own database interaction layer, or messaging system, you wasted money both to build the duplicate capabilities and to maintain it into the future. Functional teams tend to do things their own way and not communicate with each other much, which leads to this kind of wasteful duplication. Why do something a dozen ways in a crummy way rather than doing something once properly?

If developers concentrate on single applications, they don't get a broad view of the overall business, which puts them into the same siloed mentality as compartmentalized business units. These days software is the glue by which a business hangs together - and IT needs to think of the business in holistic way.

By organizing along technical lines, people naturally network with peers and can learn from each other to improve their technical skills.