Dhanji Prasanna. The name probably doesn’t ring a bell, right? Well it should. Jesse Wilson, Bob Lee, and he created, maintained, and continue to develop Guice. Guice. You might not know what Guice is either. Guice is a dependency injection framework created by Google and you use it every day in the form of Google AdWords (maybe the most important application at Google). Also, if you use Maven 3, you use Guice all the time, a big part of the Maven 2 -> Maven 3 transition was a switch to Guice as a foundation. Dhanji was also a big part of the Google Wave project.
He left Google and he’s got some interesting things to say. Read his full post here. What strikes me about this post is how much it resembles a post that I criticized two weeks back for being a bit unfair. Right, everyone who leaves a job is looking to post-date a justification, sure, but in this case I happen to use and respect the guy’s technical output.
What does he say?
On the “software stack” used by Google: “the software stack on top of it is 10 years old, aging and designed for building search engines and crawlers. And it is well and truly obsolete.”
On Google’s incentive for engineers to maintain control: “Engineers who simply staked out one component in the codebase, and rejected patches so they could maintain complete control over design and implementation details had much greater rewards.”
Reading Between the Lines
Here’s what I read into all of these exit posts, and this is something of a leap, so try to stay with me here.
Google Wave was a spectacular failure – spectacular. Google hyped Wave as the “Next Big thing” at Google IO, it hit the mainstream media for a few days, and they made us all drunk with expectation. Look! The next big thing is operational transform. Every organization will be running a Wave server. Wave will replace email.
In reality, while Google Wave succeeded as a technology, it likely ran into a strong headwind of corporate resistance (“Tell me again. How does Wave affect this quarter’s 10-Q? Ok, it doesn’t. Can we move on.”).
While Lars might have convinced Larry and Sergey that Wave was an interesting gamble, the technology had nothing to do with how Google makes money. My sense of Wave was that no one ever bothered to think about the business case for Wave – it was the all too common Silly Valley “Field of Dreams” business strategy: “Cool technology, but what’s the business case? Build it and the business case will come.”
Some of the sentiment in this post is due to the fact that Dhanji’s project was badly managed. If Wave had been a smashing success, I’m guessing he’d still be there. Wave shouldn’t have been such a public flop, and the executive team should have had a strong plan for rolling out a product. Google launched Wave like a technology company – like Sun Microsystems throwing out some random tech crap at a 2007 JavaOne. Based on Dhanji’s statements about the technology stack it is clear that Google is not a technology company. They don’t have a good history of investing in sustained technology projects that are not directly tied to revenue.
This makes at least three exit blog posts mentioning the fact that Google’s software stack is awful and outdated. While it is true that success breeds a certain kind of architectural and operational inertia, Google tends to want to exude the sense that they’ve redefined the concept of massively scalable architecture. And, they have, but after reading a post like this you get the sense that they redefined massively scalable architecture in 2002 and then they just stopped. (Clearly that’s hyperbole.)