A Google+ post-gone-viral by Google engineer Steve Yegge includes both insightful and at times scathing observations about how his employer needs to learn a lesson or three from his previous employer Amazon, as well as Facebook and other leading tech companies about the importance of building a services-oriented technology platform instead of cranking out stand-alone products.
Privacy concerns aside (Yegge did opt to remove his public-facing post at his own discretion), observers may be fascinated by the contents of the post (reposted here on ycombinator), in which Yegge provided some deep insights into Amazon's successful transformation into an SOA company, despite what he described as occasionally harsh and misguided direction of micromanagerial Jeff Bezos.
Further, Yegge opined that Google needs to learn a particularly critical lesson from Amazon, as well as Facebook, Apple, and other tech giants before it's "too late." "Start with a platform, and then use it for everything," Yegge urged, citing Google+ as a prime example of his employer wrongly creating a mere product instead of a Facebook-style platform upon which products can be added and connected, services-style.
Yegge's assessment of Amazon and its path to SOA is particularly interesting, in part because it comes through the lens of a computer engineer. In a nutshell, he faults Bezos for his at times shortsighted and heavy-handed approach to what ultimately was the company's successful service-focused transformation.
Yegge summarized Bezos's "Big Mandate" thusly:
- All teams will henceforth expose their data and functionality through service interfaces.
- Teams must communicate with each other through these interfaces.
- There will be no other form of interprocess communication allowed: No direct linking, no direct reads of another team's data store, no shared-memory model, no back doors whatsoever. The only communication allowed is via service interface calls over the network.
- It doesn't matter what technology they use. HTTP, Corba, Pubsub, custom protocols -- doesn't matter. Bezos doesn't care.
- All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions.
- Anyone who doesn't do this will be fired.