Hacker News new | past | comments | ask | show | jobs | submit login

A few days ago I was at a conference and there was this Google recruitment desk, with gadgets and two nice guys. I walked near the desk and said: "Hi, can I have a t-shirt for my son?", and they said sure, asking me to compile a form in an Android tablet.

Basically it was a list of programming questions, and out of 5 questions I was able to reply only to three. One was the time complexity of heap sort, that's pretty obvious, another one a probability theory quiz about trowing balls into bins, also pretty reasonable. Another one I can't remember, still pretty general.

Then there were this two questions I was not able to reply: one was about Java argument passing conventions in some specific kind of method I can't even remember (I can't write "Hello World" in Java). Another was about graph theory and adjacent Matrix.

Well, my idea is, that a big percentage of Google problems are due to this kind of hiring process. It's good if I know the fundamental algorithms as a programmer, but why I'm required to know Java as it was a pre-requisite to be a good programmer? About graph theory, it's something that is rarely used, if I need to do something I can grab a book and check it, it's strange to remember this stuff when you don't use it a lot.

Now hiring only guys that know exactly the Java calling convetions AND graph theory means to apply a big filter between the programming world and your company. This filter is good as it's cool to know a lot of things, but it's also bad because, for instance, a lot of good programmers I know don't care about Java at all, and while they may have a generally good understanding of algorithms they don't remember how to factor a number with polland-rho, or dynamic programming, and so forth.

This filter does not tell you nothing about the real ability of the candidate to write good programs, to use the right abstractions, and to design beautiful systems. Actually it may tell you that the candidate is focused on the details, and the brain is a zero-sum game sometimes.

Another thing I'm pretty convinced of is that this kind of candidates is not the only kind of employees you want if you want to enter the social network business and compete with Facebook. Your output as a company will be a system that little resembles what average people want.

So the #1 problem of Google IMHO is to allow more internal divesification of cultures and programming backgrounds.




>about graph theory, it's something that is rarely used, if I need to do something I can grab a book and check it, it's strange to remember this stuff when you don't use it a lot.

I don't think you appreciate how pervasively useful a basic understanding of graph theory can be. For example, Google was founded around the idea of viewing the internet as a graph of hyperlinks (and decomposing its adjacency matrix to rank sites relative to each other). All that wacky data on the internet is easier to deal with if you can think about its graph structure.

Social network? Graph. Language model? Graph. Road network? Graph. etc...

This is a tool for thinking, not some particular API you can look up in a reference. You should be able to reason about the sparsity of the graph (and hence what sort of adjacency representation to use), the degree of the vertices (and thus how badly a search algorithm might perform), etc...


You can understand graphs without remembering a theorem about adjacent graphs. I know a lot of people that would score 100% in all the quiz that don't have a intuitive understanding of algorithm. What you want in a programmer is the latter, not the book remembered verbatim.


Did it ever occur to you that 5 questions at a recruitment desk might not be representative of the whole Google hiring process?


Recruitment desk and hiring process just might be related somehow.


They are quite representative.


You don't have to know Java to get hired, any programming language is fine. You do get asked design questions. I think making the leap from these 5 questions to "This is the #1 problem Google has and why they fail at social networks" is a bit far fetched, but it looks like I'm the only one...


The impression I got was that you don't have to know Java, but you should know at least one of Python/Java/C++. They strongly prefer the latter two.

The leap from the questions to google failing at social networks is far fetched, though.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: