first_page

strongly disagree: final remarks for the Google Candidate Experience Survey

Google is a capitalist organization of maximum liberty. It can do whatever it wants until the money runs out—and letting Google-amounts of money run out would be quite insane or an extinction-level event. Google sent me an email invitation to their Google Candidate Experience Survey in which I answered several times strongly disagree.

These were my constructive points:

  • Google has the resources to stop using standardized tests on candidates.
  • Google can use data to customize the hiring process to make automation feel like the personal touch.
  • Google can skillfully hide its probing for computer-science competency inside an actual interview instead of an impersonal examination.

Here is an example: Google finds out that my primary programming language is C#. Then, Google exploits this datum to ask me computer-science competency questions relevant to my experience:

Bryan, what kind of data structure is inside the SortedDictionary<TKey,TValue> and why would it be different from plain old Dictionary<TKey,TValue>?

My failure to unpack this question posed without warning (and even with warning) implies these items escape my recollection:

  • the SortedDictionary<TKey,TValue> contains binary search tree (BST) with O(log n) retrieval
  • the Dictionary<TKey,TValue> is effectively a hash table (with generics support) with close to O(1) retrieval
  • the relationship between binary search trees and sorting
  • the use of the hash algorithm
  • asserting that hash table inserts must be faster than BST inserts
  • a derivation of O(log n) retrieval
  • a derivation of O(1) retrieval

Now, unless you are Jon Skeet, Google is collectively and historically not interested in C# but they are interested in hearing enthusiastic, impromptu lectures on binary search trees and retrieval times written in Big O Notation. But Google (just like “everyone” else) wants to learn about these wonderful bits of knowledge inside of me by asking a ‘standard’ question they ask “everyone” instead of the question posed above which is customized for me. Failing to explore this customized question thoroughly leaves me blaming myself—not Google—for my performance inadequacies because I know I use Dictionary<TKey,TValue> every day (but SortedDictionary<TKey,TValue> not so much)—and Google would impress the shit out of me with this knowledge of my behavior because they pointed some kind of machine learning thingy at my GitHub repo. (By the way, I am likely to not answer/unpack such a customized question properly at all times. I would have to prepare first even though I made up this question myself. Humans are weird. And what would be really brilliant of me is to take a canned question from Google and transform it into one customized for me—now that is brilliance for hire! Too bad (for me) that is very, very unlikely to happen as I am rarely ever that comfortable in a FAANG-level interview.)

Google liberally confuses interview with examination. “Everyone” (almost) in the industry does this. Google beginning an examination of me without warning on any topic in computer science it liked (and, yes, the list of topics is relatively short, say, less than 30 topics) is appalling. An examination is different from a relatively shallow “tech screen” (a.k.a. phone screen) which, I think should be on any topic connected to your resume and with little warning. An examination, on the other hand, is similar to verbally defending your thesis for a masters or doctorate—and this is exactly what I feel Google is looking for: a masters- or doctorate-level computer science candidate with excellent verbal skills. And that is fine. They can do what they want. Just don’t toot the “diversity” horn: Google is looking for any person of any skin color with a Star-Trek-uniform computer science education coupled with summer-camp-counselor speaking skills. It is the don’t-be-evil rendition of The Law of Crappy People (assuming we regard a room full of computer scientists with a 1990s degree from Stanford as crappy).

And one must never forget: Google is a company that automates the collection of data generated by people trapped in their honeypot products (I, too, have an Android phone). Google then uses that data to form some kind conceptual model (profile?) of these captivated people for the sake of—wait for it: monetization. Google used zero percent of this technology on me during their interview process. Google expected me to present myself to them under conditions completely specified by Google which is super, super old school. I would rather work for a company that knows it is a little, hokey super, super old school company than a “technology company” that group-thinks it is not—in one of the most expensive regions in world for residential real estate. The previous sentence is truly a revelation to me and this the main reason why I am recording this moment of my personal development. I am over this shit. I’m fine with some snickering adult kid that knows how to type fast thinking I am “too stupid” to work for Google.

Google Candidate Experience survey conclusion

Google makes me angry when they claim that their interview process is just about getting to know “how you think.” They just want to know how you think, eh? In my case, this was not true: Google wants to know how I think about Stanford-campus computer-science class examination questions sprung upon me without warning. As others have noted, this is really a test of how one performs under anxiety (as a child-student of Stanford). It is a form of “tough-love” macho violence, a barbaric ritual that any Roman centurion or Sengoku-period samurai would be proud of—and this is why the cult of tech billionaires that worship stoicism will never give these old-school rituals up. In “fact,” the pressure is a way to weed out the liars and charlatans, right? And why should I be so nervous? (Actually, I am self-destructively angry and slightly ashamed to play along with “silicon valley” elites, thinking I will slip past their archaic, man-machine rituals.) Aren’t Google people friendly and familiar? Don’t I whiteboard code with my friends over beers, like “everyone” else?

There are plenty of articles on the Web about how “hiring is broken” and, years ago, when these complaints first went public, I was passionately in support of what I assumed the intent was behind most of these narratives. I assumed most these protests were about trying to change Google in particular and “the industry” in general “for the better.” Now that I am a little older and have seen several publicly-traded outcomes, I can see that Google in particular and “the industry” in general should continue doing what they are doing without me being “excited” to work for them. I am not interested in ‘improving’ Google. Google is by design: it is an advertising company that happens to use technology. Amazon is, technically, a monopsony. Fascinating. Apple is a legitimate fashion brand. Snap. And Microsoft is upgrading mainframe time sharing and competition with Nintendo via Sony. Cool. Netflix is verboten Java culture (beyond my Microsoft-based comprehension) backing excellent UX and spectacular debt (also beyond my comprehension). Facebook is a company founded on PHP (and the emperor Justinian) so that alone made them completely, zero-day uninteresting to me in terms of employment.

“The industry” in general is about moving from data breach to data breach with, maybe, a negative carbon footprint in the next 20 years. This really has very little to do with computer science and getting to know “how you think.” And once my “career path” put me barely within reach of these FAANG-stock organizations, I began to realize that I had to formally address my personal relationship with computer science. I am a physics major who has had a self-sabotaging-but-justifiable disrespect for computer science. My Google, Amazon and Microsoft failed-interviews all represent catalysts to form a progressive, personally-useful respect for computer science. But, before I conclude on that positive note, here are some points around why physics majors righteously underestimate computer science:

  • Computer science never (or rarely) exceeds the maths education of a first-year physics student.
  • Computer science, like law (and chemistry), is about memorizing historical precedents (mostly algorithm and data-structure dramas) while (classical) physics is about finding solutions based on a handful of macroscopic principles (laws) with no real regard for history outside of that which is written in the language of fluents and fluxions.
  • Computer science has a religious, historical penchant for c-like languages which biases against functional programming (and the higher-maths elegance any physics girl would love).
  • Computer science is culturally about imperative perfection, leading to mechanical devotion to dogmas-du-jour while physics can throw out entire systems of thought that took centuries to establish (like classical mechanics) and storm the Bastille, making mistake after mistake quite openly for the sake of something completely different.
  • Computer science is too often about finding flying-buttresses of beauty in complexity (nested for-loops anyone?) while physics is frequently stagnating around the desire for poetic simplicity. (I’m stagnating right now as I write this.)

Steven Skiena himself will tell you that a computer scientist is a mathematician that solves all problems with the dominoes of induction. And speaking of a professor, I see two types of professors: (i) professors that want you to hear and (ii) professors that expect you to listen. Hearing is about something that happens within you on your respectable time (which sounds like a future I want to live in). Listening is about you compiling and retaining a list that you can resurface and play back as a script, brilliantly, on command (which is some old, old school Prussian officer school shit). I would prefer to have both skills but I will never force myself to master the latter. But the latter is the cultural currency of the modern job interview, and the marketing-and-sales-focused workplace. And, no, kids: it is a mistake to assume that a technology-focused organization is immune/superior to marketing- and sales-based behaviors.

Back to the positive note: although the Jacquard machine, its relationship to the Hollerith card is quite fascinating, the drama of computer science that I very much respect begins with the need to search for data quickly. Two important points emerge from this need:

  1. The quickness of (most) searching depends on sorting data first.
  2. The c-language ritual of sorting depends (mostly) on the for-loop.

In terms of my personal education (which I have always found to be more important than my reputation as an obedient, stoic, samurai employee of workaholic camp-counselor happiness), these points are two germs that grow into my authentic interest in computer science. This fundamental need for sorting explains to me why sort algorithms (and sorted tree structures) are so important. This for-loop deal leads to my first-year calculus study on finite series which swirls around into expressing time complexity and Big O Notation. I assume that my personal approach into this field of study will lead me (in my twilight years, perhaps) towards the heights of what Robert Harper calls the “holy trinity” of computer science:

  • proof theory (logic)
  • type theory (programs)
  • category theory (algebra)

Just because I have these authentic germs running around in my head (and heart) does not mean I am ready to give you an implementation-detail-filled lecture on these subjects based on rote memorization of lines of code. I know from history and experience that there is a difference between living and working with the knowledge of something and being able to present that knowledge to others in a saleable (dramatic and pleasant) way. A traditional examination-level job interview is like people coming to your house who refuse to come in, asking you to bring the contents of your home out to them in a presentable ordered manner. When you are standing in front of a pup tent greeting your guests, this can be quite fun. When you are raging alone in a subterranean mansion, things can get clumsy and frustrating. The great mathematician, Srinivasa Ramanujan, was so enthralled with number theory that he did not have any command over basic calculus. Without a “recognized authority” advocating for him, I am quite certain that any organization with a healthy respect for a linear and ordered institutional education would not take a meeting with Ramanujan—and such an organization would never “know how he thinks.”

Srinivasa Ramanujan can be considered offensive to an ‘ordered’ interviewer because clearly we can assume that Srinivasa Ramanujan would not be interested in talking about calculus and may betray a lack of understanding of calculus at that moment in the interview. The insulting mistake the ‘ordered’ interviewer makes is assuming that Srinivasa Ramanujan is permanently incapable of learning calculus and should be dismissed outright forever. It is too easy to come to this conclusion instead of talking to Srinivasa Ramanujan about what he likes (after five minutes of research) and free-associating that with calculus fundamentals (try connecting division by zero with the derivative perhaps?). Such interviewing skill requires having more knowledge than Srinivasa Ramanujan in his subject of interest (or what is even better is to use Ramanujan’s knowledge around division by zero to guide him toward the derivative). It is of course easier on the ego to assume that Srinivasa Ramanujan is an idiot and never see him again—because the expectation is always there that he can be replaced with a “professional” person who understands how to present herself “correctly” to a linear and ordered institution.

“Think different.” Nah…

I am very proud and pleased to know that having a “recognized authority” advocating for me and having skilled acting/presentation training are impressive feathers in one’s team-player cap—but these decorations are not debilitatingly important to me. And, so far (for the last 24 years), these are not so important to “the industry” such that I cannot find any senior-level-like software development role.

related links

https://github.com/BryanWilhite/