Is it logical that Google rejected the candidacy of Max Howell, the author of Homebrew, for his inability to invert binary trees?
Hi, I'm the same Max Howell, so, in a good way, I probably should not have answered here.
Hi, I’m Max Howell, and for the last two years I tried not to answer such a bunch of very similar questions. Perhaps it was not worth this time.
So what about logic? It’s clear that I created something worthy of Google, right?
Well, actually - no, not right, did not create. I wrote a simple package manager, anyone could do the same. Mine, I must confess, is terrible. It does not provide proper dependency management. He does not deal very well with border situations. It is poorly tested. Frankly, he's just crappy.
After this, is it surprising that I could not properly answer their deeply theoretically oriented questions?
On the other hand, my program was incredibly successful. Why? Well, the answer is not to be found in the realm of computer science. I always focused on the user experience when creating my programs, so Homebrew takes care of the user. If something went wrong while using Homebrew - he tries his best to tell you why - he looks for similar problems on Github and shows them to you. He takes care of you . Most tools just do not care about you. Something went wrong - you kirdyk. Homebrew helps you. And if he can’t help, I tried to make it easy to correct the situation (I built a command for editing and correction). You can make it better, and this is a brilliant example of true Open Source software.
Homebrew may not be very good at managing dependencies, but it does it in a way that is closer to you. Unlike competitors of the time, Homebrew is based on the use of dependencies installed on your computer. This saves a lot of time and often saves from pain when installing programs, because, in practice, large dependency graphs are unreliable. But computer science has nothing to do with it, no graphs or trees are used there, so here I’m probably a sucker.
In defense of Google - firstly, I not only could not invert the binary tree, I did not really understand what a "binary tree" is. I studied chemistry, not computer science. Well, yes, while defending my dissertation, I used Mathematica to simulate the quantum mechanical properties of helium (I worked hard, by the way), but, again, it was not about computer science at all. And on the other hand, what, in fact, do computer sciences have to do with modern application development? That's exactly what I wanted to note in that tweet.
In fact, Google conducted seven interviews with me, and I was not bad as a developer, because this, in fact, is my talent. I’m not at ease for that tweet: it was dishonest, he only added fuel to this hell of an angry-oriented reading, which the modern Internet has turned into, that’s why it has become so popular and that’s why I am sincerely ashamed.
But in the end, could Google hire me? Yes, of course yes. I often behave like a goat, it is often difficult with me, I often swim in computer science, but. But. I can create really cool things, maybe not perfect, but people really like them. I’m sure, I’m sure Google could come in handy.
Some of the popular comments on the original article.
Andrew McGregor , Site Reliability Engineer at Google (2013 and up to now), ~ 230 votes
I’m sure that you will find a place in Google as a product manager, or a technical project manager, or even as a system / support engineer, but not as a software engineer. And this is normal, I respect all such specialists ... but a software engineer must know computer science, this is practically not in dispute. And the fact that they went to the wrong position ... well, it happens.
Gayle Laakmann McDowell , worked for Google, ~ 900 votes
Thank you for ringing the bells. I agree with what you said and appreciate your recognition that I have long suspected - you simply did not understand the issue, or, most likely, the basics of CS.
The assumptions that Google should have hired you (the assumptions of other people, not yours, which is built on a different logic) seem to me a little ridiculous. It is proposed to believe that someone who is a great programmer in one area will certainly be great in other areas, which, of course, is completely different.
I’m sure that you have proven yourself as a developer in other places, but Google, at least as a software engineer, is unlikely to suit you. They actually need computer scientists. The ability to determine what needs to be created is not valued so highly in this case because it simply does not fall within the scope of the main responsibilities of a software engineer.
It seems you are sure that your ability to create great products does not relate so much to the technical level as to the design level. In this case, the role in product management (in Google, or elsewhere) would suit you perfectly if your desire was to work in a large company.
Yes, and "being a goat" is also a disaster if you are serious :)Mark Klein , 185 votes
At the same time, I think he was trying to convey that technical interviews may not be the most accurate way to evaluate such a thing as a “good software engineer”.
In the second paragraph, you argue that the belief that “someone who is a great programmer in one area will certainly be great in other areas” is simply wrong. I agree, however, when you propose that Google may not be the best place for it, you actually declare that someone who is not a great programmer in a particular field is probably not a very good software engineer at all. Do not these errors seem to you similar?
Technical interviews focus on specific areas of software development — knowledge of specific algorithms and data structures — and although this may well correlate with success as an engineer (???), it may not be the best way to assess the potential of certain candidates (such candidates, like Max, who have already demonstrated success in software development elsewhere).
The argument that Google should have hired him does not mean that he is an exceptional developer in every sense, but rather that the demonstrated extreme success in previous projects may mean a better understanding of the software creation process than the ability to invert binary trees . You can google the last. To google to a degree of full understanding the first - you can spend a couple of years.
Algorithm interviews test a very narrow range in a large field of knowledge, so it cannot be argued that he is not worthy of work on only one failure. Even the evidence of a serious gap in algorithmic knowledge, in principle, probably doesn’t determine anything because many teams need just engineers who can build good products by studying everything they need as they go along. And if you are interested in my opinion - the presence of programmers who are fixated on user-friendliness can be a good thing.
Carlos Matias La Borde , ~ 120 voices of
Yela Pala, so it's all for real!