When I worked at Myspace, there was one (small) team dedicated to creating and maintaining internal services. The platform was called "slayer," short for service layer. It was built very well, for the most part. All the documentation and calls were in one place. And the few teams who used it built cool products (including my own) that leveraged data from a wide variety of services.
I think the simple reason that our products were better was because we could easily see all the data sources available to us every time we checked the documentation to do some simple things (say, retrieving a user's data). We can get friends data from here, music data from here, analytics from there. And what do you know, putting all that data into one place can make a cool product or feature. Without that, you spend so much time worrying about what your own product and team is doing that you forget about working together.
Wow, thanks @vnorby! That was my team. We started out in the beginning of 2007 with myself and 2 other devs and we were just the "API Team". Our goal was to simplify and standardize data access for all front-end features. At that time, this was a monumental task as most features lacked common code besides the infamous MaintenanceConfig. There was basic SQL call wrappers for querying data and some core handling of the large number of federated profile/mail DBs, but besides that, features tended to be built ad hoc.
This posed a problem to scaling the massive web traffic load on these databases. It also left open dangerous patterns of duplicate data calls where each control on a page was making its own calls for the data it would bind to.
Man... I could go on for days about the path we took from the wild wild west of code slinging up to the nice accessible, maintainable, freakin' BEAUTIFUL Server Slayer platform. Instead, let me just leave you with the logo we designed for this internal platform: http://imgur.com/Pvpy7
\m/
-- robbie
API Development Mgr.
MySpace 2/2007 - 3/2010
I think the simple reason that our products were better was because we could easily see all the data sources available to us every time we checked the documentation to do some simple things (say, retrieving a user's data). We can get friends data from here, music data from here, analytics from there. And what do you know, putting all that data into one place can make a cool product or feature. Without that, you spend so much time worrying about what your own product and team is doing that you forget about working together.