23rd January, 2012
If I ever make some statement about thinking about joining / applying to Google, please remind me of this post so that I come to my senses.
Follows is a non-exhaustive enumeration of the reasons I do not wish to work at Google.
1) I will not sign a contract that prohibits me from telling my significant other what I did at work today. I can promise you she is not a Bing spy, and wouldn’t even know what I’m on about if I said the code I had been working on had provided a 3x speed boost for users of a certain API. There’s something wrong with being contractually obliged to hold secrets from your other half.
1a) Same as 1) but for mum.
2) I will not have “sweetners” used to offset wages, which may subsequently be removed. See here for more.
3) You can slap as much lipstick on the pig as you like, but Google is still a large company and will still feel, look and act like one. No thanks.
4) I’d like transferable skills. Sure there’s learning programming languages and people skills etc., but I can learn those elsewhere. Learning behemoth internal APIs and writing apps that will only ever run on one architecture (Google’s massive one)? What’s the point in learning about scaling if you can only scale on one architecture? Hardly transferable.
5) I do not want to be bombarded by questions I cannot answer. Not that I do not know the answer, but I am not allowed to give you the answer. I.e. any conversation I have with anyone who asks “So what do you do?” is limited to “Work for Google” and “I write software”. Booooorrrrring. Additionally, because I work for Google, everyone spends the whole time trying to extract information out of me in increasingly stupid ways. Also boring.
6) I don’t need the CV boost it could give. (I deleted my CV anyway)
7) I fundamentally disagree with their hiring process. Specifically, the bit where they pull some names of algorithms out of a hat and ask you to state their time complexity. This will be controversial, because Google engineers say “But this is the simple stuff”. It is a waste of my time to remember this - I am sat at a computer, and if I really need to know it then I can look it up quite easily. What matters is that I can analyse algorithms in code for their time complexity, and suggest optimisations; properly assign problems to suitable data structures and pick algorithms for specific cases optimally; and understand common formats for expressing algorithms in pseudocode so that they can be easily implemented if necessary. I see memorising this lot just for one interview as counterproductive and an inefficient use of time. Unfortunately for Google, this is the first pre-screen on their phone interviews, so it never goes that well.