It was me who wrote that. My observation of Google is that, while it's not as blandly bureaucratic as a typical big company, and there isn't the mean-spirited greed of investment banks, the place is extremely careerist. People are laser-focused on the promotion process and the political campaigning it entails, because the ranks really matter, and not just in terms of compensation, but how much respect you get within the organization and how much say you have in what you work on. You aren't a Real Googler until a certain point on the promotion ladder, and the Real Googler Line keeps rising: it used to be Senior, but it's shifting over to Staff (the level above Senior). You can be a Real Googler at Senior, but only if you have it "locked in" be Staff in a year or two. If there's a sense that you may have plateaued at Senior, you're not a Real Googler.

I can't imagine how this works well in conjunction with the "choose your own team and product" ethos

Yeah, that's not true anymore. Google has a lot of icky maintenance work that has to be delegated somehow. Not only do you not get to choose your project for the first 18 months, but you don't know what it is coming in the door. This is one area where Google plays the diva card hard: you have to accept the job without knowing your project. You might get something interesting. You might not. More likely, it's the latter.

You can transfer after 18 months, but there's also a "permission paradox" effect; if you haven't worked on good projects, you have a really hard time moving to a good project because you're competing (for transfers) against people who've worked on more exciting and more visible stuff than you have.

A couple other marketing pitches that don't hold up: 20% time is dead. People get fucked over in "Perf" if they're perceived as actually caring about a 20%-time project. Finally, Google markets itself as a "C++, Java, and Python shop" when Python is pretty close to deprecated in production so it's mostly C++ (yes, C++; I am absolutely not making this shit up) and Java. Python gets a lot of use by managers who still want to code and need a real language because they can only commit 1/3 of their time to software, but almost all of the important projects get rewritten in C++.

The other thing I'd say about Google is that the company is extremely good at collecting talent (they have it down to a science, and their recruiters are some of the best in the business) and very bad at managing it, as you alluded. There used to be a morale-destroying process called "slotting": you'd start out at a "mezzanine" between two levels on the engineer ladder. You'd be given a job offer (and paid) as an N+1 but actually be "between levels" and you'd have about a 70% chance of dropping to N when you were slotted a year later. (Some people got double-downslotted, which was the kiss of death.) The result was a system that pissed everyone off. If you worked hard, beat the odds, and got upslotted, you didn't get a bonus-- you just got the job title you were promised. If you were downslotted, you now had a crappy job title compared to what you were promised in your job offer letter, and you wouldn't get raises for a long time on account of being "overpaid" for your level. It was a morale disaster, and thankfully they got rid of that idiocy, but a process like that makes you wonder how such an obviously shitty idea got in the door in the first place.

Career progress at Google is also ungodly slow. The promo rate is something like 10-20%/year (i.e. each "level" represents about 5-10 years of average-case work). The slow progress actually makes sense when you look at what Google is. Most of the work is legacy maintenance in C++, so unless you kill the lottery and get the best projects, you're likely to end up on things where you don't learn much and don't really deserve faster promotions.