Pull to refresh

Логично ли, что Гугл отклонил кандидатуру Макса Хауэлла, автора Homebrew, за неумение инвертировать двоичные деревья?

Reading time5 min
Views63K
Original author: Max Howell
Disclaimer: Вопрос из заголовка был задан на сайте Quora
и сопровождался ссылкой на твит разработчика Homebrew. Ответил, неожиданно, главный персонаж.

Привет, я — тот самый Макс Хауэлл, так что, по-хорошему, наверное, и не должен был бы тут отвечать.



Привет, я Макс Хауэлл, и последние два года я старался не отвечать вот на такой и кучу очень похожих вопросов. Возможно не стоило и в этот раз.

Так что там насчет логики? Ясно ведь, что я создал что-то достойное Гугла, правильно?

Ну, на самом деле — нет, не правильно, не создал. Я написал простой менеджер пакетов, любой мог бы сделать такой же. Мой, должен признаться, ужасен. Он не обеспечивает правильного управления зависимостями. Он не очень хорошо справляется с пограничными ситуациями. Он плохо оттестирован. Откровенно говоря, он просто дерьмовый.

Удивительно ли, после этого, что я не смог нормально ответить на их глубоко-теоретически-ориентированные вопросы?

С другой стороны – моя программа оказалась невероятно успешной. Почему? Ну, ответ не стоит искать в царстве компьютерных наук. Я всегда фокусировался на пользовательском опыте при создании своих программ, вот и Homebrew заботится о пользователе. Если что-то пошло не так при использовании Homebrew – он изо всех сил старается подсказать вам, почему – он ищет на Github-е похожие проблемы и показывает их вам. Он заботится о Вас. Большинству же инструментов на Вас просто плевать. Что-то пошло не так – кирдык тебе. Homebrew помогает вам. И если он помочь не может – я постарался сделать так, чтобы исправить ситуацию было несложно (встроил команду для редактирования и исправления). Вы можете сделать его лучше, и это — блестящий пример истинно Открытого ПО.

Возможно Homebrew не очень справляется с управлением зависимостями, но делает он это в том виде, который ближе вам. В отличие от тогдашних конкурентов, в основе Homebrew лежит использование зависимостей, установленных на Вашем компьютере. Это экономит много времени и достаточно часто спасает от боли при установке программ, потому что, на практике, большие графы зависимостей ненадежны. Но компьютерные науки здесь не причем, не используются там никакие графы или деревья, так что тут я, наверное, лох.

В защиту Гугла – во-первых, я не просто не смог инвертировать двоичное дерево, я вообще не очень понимал, что такое «двоичное дерево». Я изучал химию, не информатику. Ну да, во время защиты диссертации я использовал Mathematica, чтобы смоделировать квантовомеханические свойства гелия (хорошо потрудился, кстати), но, еще раз, это было совсем не про информатику. А с другой стороны, какое, собственно говоря, отношение имеют компьютерные науки к современной разработке приложений? Вот именно это я хотел отметить в том своем твите.

По факту, Гугл провел со мной семь интервью, и я был неплох как разработчик, потому что в этом, на самом деле, и заключается мой талант. Мне не по себе за тот твит: получилось нечестно, он только подлил масла в эту геенну гнево-ориентированного-чтива, в которую превратился современный интернет, именно потому стал таким популярным и именно за это мне искренне стыдно.

Но, в конце концов, мог ли Гугл меня нанять? Да, конечно да. Я часто веду себя как козел, со мной часто трудно, я часто плаваю в компьютерных науках, но. Но. Я умею создавать действительно клевые вещи, может не идеальные, но людям они реально нравятся. Уверен, уверен Гуглу это могло бы пригодиться.

Некоторые из популярных комментариев к оригинальной статье
Andrew McGregor, Site Reliability Engineer в Google (2013-и до сих пор), ~230 голосов

Уверен, что в Гугле Вам найдется место как продакт-менеджеру, или техническому проектному менеджеру, или даже, как системному инженеру/инженеру поддержки, но не как инженеру-программисту. И это нормально, уважаю всех таких специалистов… но инженер-программист должен знать компьютерные науки, это практически не оспаривается. А то, что подались на неправильную позицию… ну бывает.



Gayle Laakmann McDowell, работала в Google, ~900 голосов

Спасибо, что бьете в колокола. Согласна с тем, что Вы сказали и высоко ценю Ваше признание в том, что я давно подозревала – вы просто не понимали ни вопроса, ни, вероятнее всего, основ CS.
Предположения о том, что Гугл должен был бы Вас нанять (предположения других людей, не Ваше, которе строится на другой логике) кажутся мне немного смешными. Предлагается поверить в то, что кто-либо, являющийся великим программером в одной области, обязательно будет великим и в других областях, что, конечно, совсем не так.

Уверена, что Вы отлично себя зарекомендовали как разработчик в иных местах, но Гугл, по крайней мере в роли инженера-программиста, навряд ли Вам подойдет. Им на самом деле нужны ученые из информатики. Способность к определению того, что именно нужно создавать не ценится в данном случае так высоко потому, что это просто не входит в сферу основных обязанностей инженера-программиста.

Похоже Вы уверены в том, что Ваши способности создавать великие продукты относятся не столько к техническому уровню, сколько к уровню дизайна. В таком случае Вам отлично подошла бы роль в продакт-менеджменте (в Гугл, или где-либо еще), если Вашим желанием было работать именно в большой компании.

Да, и «быть козлом» — тоже беда, если Вы это серьезно :)


Mark Klein, 185 голосов

Вместе с тем, я думаю он пытался донести, что технические интервью, возможно, не самый точный способ оценки такого явления, как «хороший инженер-программист».
Во втором параграфе Вы утверждаете, что уверенность в том, что «кто-либо, являющийся великим программером в одной области, обязательно будет великим и в других областях» просто ошибочна. Я соглашусь, однако, когда Вы предлагаете считать, что Гугл может быть не лучшим местом для него, Вы фактически заявляете, что тот, кто не является великим программером в конкретной области – возможно вообще не очень хороший инженер-программист. Вам эти заблуждения не кажутся похожими?

Технические интервью фокусируются на специфических областях разработки программного обеспечения – на знании специфических алгоритмов и структур данных – и, хотя это может хорошо коррелировать с успехом в роли инженера (???) – это может быть не лучшим способом оценки потенциала определенных кандидатов (таких кандидатов, как Макс, которые уже продемонстрировали успешность в разработке ПО в других местах).
Доводы о том, что Гуглу стоило нанять его, не говорят о том, что он исключительный разработчик во всех смыслах, скорее они говорят о том, что продемонстрированный чрезвычайный успех в предыдущих проектах может означать лучшее понимание процесса создания программного обеспечения, чем способность инвертирования двоичных деревьев. Последнее вы можете загуглить. Чтобы нагуглить до степени полного понимания первое – можно потратить пару лет.

Собеседования по алгоритмам проверяют очень узкий диапазон в большой области знаний, так что нельзя утверждать, что он недостоин работы лишь по одному провалу. Даже доказательства серьезного пробела в алгоритмических знаниях, в принципе, возможно, ничего не определяют потому, что многим командам нужны, как раз, инженеры, которые могут строить хорошие продукты изучая все необходимое по ходу продвижения. И если вам интересно мое мнение – наличие программистов, которые зациклены на удобстве для пользователя – может быть неплохим делом.



Carlos Matias La Borde, ~120 голосов

Елы палы, так это все по-настоящему!

Tags:
Hubs:
Total votes 120: ↑114 and ↓6+108
Comments291

Articles