I have been thinking a lot about this topic as of late. The nature of my job, Integration Architecture, exposes me to a lot of projects within the company. Our development organizations are aligned to our business teams. The developments teams do not tend to do a lot of full blown custom development. Instead they are generally charged with implementing what I would call niche packaged applications from industry specific vendors. Implementations meaning getting the package to production with some custom add-ons like reporting, additional business logic or integration to other corporate systems.
Within each development team, the developer's skill sets may be mixed or all of one particular type of skill. This as you can imagine leads to the inconsistent application of technology across the company. Sometimes the choice of technology is driven by the package or often by the skill set of the particular application development team.
We have had much success with webMethods at our company. But I would argue it had less to do with the technology and more to do with how we have organized around it. We still see the same business aligned development teams, but we also implemented a small integration competency center. This competency center has been charged with overall responsibility of the architecture, implementation, and on-going support of the integration platform. This concentration of skill set has lead to consistent, reliable and repeatable integrations.
I'm curious to know what others see in their organizations. Should developers in large organizations be business aligned or do competency centers make more sense?