Mistakes Google made in scaling its organization
quora.com
quora.com
1. See item 3.
2. VP changes rarely happen compared to a PM change. And a PM who comes may change some of the goals, but the focus area of your product doesn't change, e.g. your optimization tool for display advertising will continue to be an optimization tool for display advertising. It would be hard to find your project suddenly disagreeing with some "existing strategy."
3. New products that launch should have a UX designer contributing or at least advising. There should be mocks for the frontend engineers to follow, and the backend engineers are just told to make it work.
4. Yeah, there's a checklist, and it is long. SREs want to minimize the number of pages there, but pages happen because something's going bad, and they want you to have proper monitoring in place to address the pages quickly. The launch checklist also focuses a lot on addressing potential security vulnerabilities. Google is tough on security.
5. Google's all about the software compensating for commodity hardware. I don't think too many teams have specialized hardware. You can ask for what resources you need, but would have to fight for what form you get them in.
7. Can't speak for this. Why reorganize marketing?
8. While I agree that Google likes to fail fast, in my opinion some Google products probably didn't get the love or time they needed to take off. I wasn't really privy to how those decisions are made.
I could imagine somebody who just made an awesome feature that made an application 5% slower complain about how stupid that policy is. However, they don't realize that however awesome their feature is, speed of applications is a hidden cost that everybody bears, and sometimes the priority for a company may differ with a specific developers vision. Google wants their products to be fast, wants them to be available, and wants them to be secure. I'm not saying that everything they do is great and their processes and checklists are optimal, but when they have processes designed to do a certain thing, it isn't fair to say their processes are a mistake because they don't do something else.
Not to mention that most products (like most startups) fail. As a product-centric company, do you break teams apart after a product fails? If a product succeeds, do you take that successful team and move it to the other product? That may work if you're lucky enough to have a team with the proper skills balance (not to mention passion) to move across different products. What about career goals? People in a particular field tend to want to work with the best people in that field--a huge draw of working at Google is working with the best people in Field X. In a functional organization, the functions (almost) never go away--so the teams are stable.
Of course, being on the outside I can't speak for the problems that are mentioned, such as in-fighting, lack of executive discipline ("You will not launch your product because I don't like your hair style, FUUUUUUUUU!"), etc., but those problems are bad regardless of organization type.
Personally, however, this is not something I would want to achieve, but to each his own I guess.
For example, anything that's Google Search or GMail or similar must meet some performance, stability, and realiability criteria but those applications would also get to run on the big clusters. Conversely, it wouldn't matter if a beta-toy is a bit buggy or hogs down the servers on the playground since it's just playground.
Some users would bear with the unfinished tone and start using the apps there, and at times it would happen that one application would gain lots of momentum, and Google could consider fixing and lifting that one to the full service level.
And that almost every fast growing company gets it, in some form or another.. "wrong." But they also find success despite their failure.
Whereas the guy who took the couple of Org Design courses probably ends up working for a VC running innumerable other companies straight into the ground.
If you don't have people there you can ask, take a close look at what has happened to the products and teams that google has acquired.
The kind of problems described certainly seem to have been exacerbated by the way they are structured. But all organization structures have their own problems, and the issues caused by (say) a project based organization* might have been even more detrimental to success.
The most professionally managed organizations I have worked for have generally been matrix orgs (sort of functional, with projects 'borrowing' resource for a year or two at a time) and that worked pretty well, but only because they burned a lot of time and money managing the process. In many cases it may be cheaper just to live with doing it imperfectly.
*Lack of product integration, break up of technical pool of talent, even bigger resource fights, duplication of effort, lack of communication, and zombie projects amongst other things.
It'll never happen, because it's diametrically opposed to the founding ideology, which is that every problem has a rational solution. Without getting too Ayn Rand on this, it's the classic mistake of central planning vs personal initiative.
Let's say google reengineered to provide something like ec2,each team can run it's own images. does each group hire security experts? Does each group have to solve scaling problems google already faced?
I think maybe it could work like this.Google proper hires domain experts, security, engineering etc. Provides each mini startup with a budget, mini startups can spend the cash on the Google proper experts, or go outside for areas where Google is lacking. Mini startup pays hosting fees to run on Google's EC2 like infrastructure, or use whatever Google has in place now.
You can run a wide range of things on EC2, but I'd be willing to bet certain sets of things dominate.
If the solution google has internally really is the best solution available, let it compete. It'll win until it's no longer the best.
I think it's feasible to do that at Google if the infrastructure group would be spun off as a stand-alone entity (let's call it Google Ops) that can offer resources and consulting to any product group. When a new product is started, it would be similar to a start-up: 3 people in a room in the Googleplex who could choose to work with Google Ops, Amazon EC2, or something else. And Google would own a majority stake in this "start-up" and it would give them a certain budget (up to $1M - $10M).
Good engineers are fairly self-driven. Hire people who work well in a team; make sure they get along well and just let them loose with minimal supervision. Have a decent set of guidelines in place; make an "architect" available to them who they can call on for advice and "best practices".
I am reminded of this old article: http://www.fastcompany.com/magazine/28/ge.html It's definitely worth a read.