Пользователь
0,0
рейтинг
30 мая 2013 в 00:15

Разработка → 4 шага на пути в Google, не имея высшего образования перевод



Как получить должность инженера в Google, не имея высшего образования?
Вот вам небольшая история.

Как и все я собирался пойти в университет. Мой выбор пал на Калифорнийский университет в Лос-Анджелесе. К сожалению в школе у меня был небольшой средний балл (2.45 по четырехбалльной шкале) и я не мог поступить туда. Вместо этого я ходил на курсы по информатике в местном университете.

Шаг № 1: Жульничай, пока тебе это удается

Учась на курсах, я параллельно работал в небольшой компании в Гриффит, Индиана. Создавал сайты для местного малого бизнеса за $12/час. Работа, конечно, была не совсем той, которую я представлял для себя в будущем, но могло быть и хуже.
Я старался не высовываться, обещания давал с запасом, при этом выполняя их немного раньше. Работал в разных проектах. Компания хорошо заработала на мне.

Между делом, я пытался создать игру, в свое свободное время, которого у меня было немного.
И как-то набравшись смелости я пошел к руководству и попросил 3 месяца за их счет, чтобы доделать свою игру, и начать продавать ее онлайн. Я составил таблицы и красочные графики как будет работать shareware-модель и какую прибыль можно получить. У меня было смутное представление всего этого, но каким-то чудом они поверили в меня, возможно, благодаря красочным графикам. После двух месяцев разработки я запустил демо-версию онлайн.

В какой-то момент молодой стартап в Калифорнии под поддержкой CodeFire прислал уведомление, о том что они делают такую же игру! Space-шутер с видом сверху, наподобие SubSpace, только в 3D. В своем уведомлении они требовали убрать мою игру.
На это я мог ответить только одно: Конечно, если вы наймете меня на работу.
И они ответили предложением о работе! Я пошел к ним.
Компания сохранила права на оригинальную игру. Я оповестил о своем уходе за три недели и мы расстались на хороших условиях.

Шаг № 2: Подружитесь с профессионалами.

Это, вероятно, одна из самых важных вещей, которые вы можете сделать. Найти кого-то, кто является профессионалом в своем деле, сделать его вашим наставником. И никогда не прекращайте учиться. Во время работы в Double Helix, у меня был наставник Натан Хант, один из самых умных и самых скромных парней, которых я когда-либо встречал. И он был очень терпеливым, несмотря на мои элементарные вопросы. Наверно, я тысячу раз заходил к нему в кабинет за ответом на очередной глупый вопрос. Годы спустя, он присоединится к Google через месяц после меня.
Каждый из моих наставников изменил что-то во мне и в моем видении мира. И это только малая часть того что они мне дали.

Шаг № 3: Заполните пробелы в знаниях.

Так как у меня не было высшего образования, я не знал многих фундаментальных вещей.
Я, к примеру, реализовывал физический движок, но при этом никогда не сталкивался с динамическим программированием(способ решения сложных задач путём разбиения их на более простые подзадачи). Чтобы восполнить эти пробелы, я реализовал почти все наиболее распространенные алгоритмы и структуры данных, которые я слышал или читал. Необходимую информацию можно найти в избытке, но существует огромная пропасть между наблюдением того как что-то работает и пониманием сути этой работы.

Со временем вам нужно выполнить следующее:
1. Стать профессионалом хотя бы в одном из этих языков: C, C + +, Objective-C, Java, PHP, Python или
Ruby. Свободно владеть хотя бы одним другим языком и познакомится с такими языками как Scala, Haskell или Lisp.
2. Изучайте структуры данных. Сделайте реализацию большинства из них. Также нужно понимать временную сложность алгоритмов(О — нотация оценки сложности алгоритмов).
3. Решайте задачки на программирование. Прочтите это и постарайтесь решить задачи отсюда.
4. Создайте свое портфолио. (например, написанные вами фреймворки, различные приложения, небольшие игры и т.п.)

Шаг № 4: Обретите уверенность.

Спустя шесть лет после переезда из Индианы, я сделал шесть игр на разных платформах. Мне стало скучно, мне нужно было что-то новое. Я отправил резюме в Google и подумал, что если бы меня взяли, то я бы стал настоящим инженером, так как «считал себя неполноценным» из-за отсутствия желанной бумажки. Но я так и не получил ответа, чему собственно и не удивился.

Год спустя я снова отправил свое резюме. Только на этот раз я убрал в нем раздел «Образование» полностью. По иронии судьбы, рекрутер позвонил мне чтобы договориться о предварительном интервью по скайпу. Я попросил перенести интервью на две недели позже, и он согласился. Мне было нужно это время. Я использовал эти две недели для того, чтобы впихнуть в свою голову как можно больше алгоритмов и структур данных. Я программировал 12-14 часов в сутки и решил сотни задач за это время. Я был буквально одержим и не останавливался, пока мой страх перед интервью в Google не превратился в уверенность.

Я помню каждое из моих интервью в Google. Это было ошеломительно. С интервьюерами было довольно интересно говорить. Они видели мое волнение и были доброжелательны со мной.

Некоторые из задач, которые были даны мне:

  1. Дан набор из двумерных точек, нужно вычислить горизонт. Это было легко. Я воспользовался структурой данных, известной как двоичная куча. Вот одно из решений этой проблемы
  2. Спроектируйте Microsoft Paint.
    Это была самая веселая задачка. Я начал с составления интерфейсов и диаграммы классов. Я упомянул инструмент «заливка» и интервьюер попросил меня реализовать ее. К счастью, я знал, как это сделать с закрытыми глазами.
  3. Опишите ваше мнение о хорошем тоне в программировании.
    Это было открытое обсуждение. Я говорил о том, какие способы тестирования существуют и когда их нужно использовать (например: Юнит-тестирование, Интеграционное тестирование, Приемочное тестирование). Я говорил о едином стиле кода. И так далее. Это можно найти в книгах Code Complete и Effective Java

Я искренне наслаждался каждым раундом интервью. Если бы я не готовился, я уверен, все было бы совсем иначе. После интервью, у меня было очень хорошее чувство, я был доволен. Но, я слышал, что даже если рекрутеры дали добро, Ларри должен сам одобрить кандидата. Я боялся, что, как только он увидит мою необразованность, то на этом все и закончится.
Но этого не произошло, и однажды, когда я ел суши на обеде в Санта-Клер, мне позвонили и я с энтузиазмом принял предложение о работе. В тот день, я точно знал, что я никогда не вернусь в школу.

«Победители сначала добиваются победы, а потом идут на войну, в то время как побежденные идут сначала на войну, а затем стремятся победить.»

P.S. К сожалению не хватает пока кармы чтобы разместить топик в соответствующих хабах, не пинайте сильно пожалуйста из-за этого )
Перевод: David Byttow
@LANC
карма
27,7
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (55)

  • +4
    Не совсем понял про вычисление горизонта, что-то вроде метода наименьших квадратов?
    • +7
      Имелась в виду вот эта задача: uva.onlinejudge.org/external/1/105.html
      • +2
        Вот хорошее описание алгоритма плавающего горизонта. Суть этого примера в том, чтобы убрать невидимые наблюдателю линии, представленные функциями в трехмерном пространстве.
      • +1
        да, и в статье есть аналогичная ссылка.

        p.s. Спасибо тем кто пишет в лс., исправил пару ошибок, в частности ссылки сделал прямыми
    • +8
      наверное не совсем подходящий перевод слова skyline. это не только горизонт но и очертания зданий города на фоне неба.
  • +3
    Какой молодец) Я скажу так: надо увелить по некомпетентности того менеджера, который профукает такой энтузиазм в соискателе! Мне б таких сотрудников!) (Боже, это не зависть!))
  • +17
    «After an amazing five years of learning and growing as an engineer, I no longer work at Google.»
    • +1
      Зато теперь в совете директоров Square.
      • +6
        Уже нет.
        Ex-Googler. Ex-Square. Now building things.
        • 0
          Был неправ, признаю: в апреле ушел.
        • +3
          >Now building things.
          Пошел рабочим на китайскую фабрику?
    • +11
      Вот тут то и вся правда индустрии: тужься тужься, а делать все равно придется скучные задачи половина которых пойдет в стол.
  • +62
    TLDR: станьте профессионалом в Computer Science и пройдите собеседование
  • +3
    А что именно он делал в Google?
    • +4
      Он работал там с 2008 по 2012 и вот что есть в его профиле на linkedin:
      * Lead Google+ Profiles and Pages engineering and product teams.
      * Built the Google +1 Button. 100K+ queries per second scale.
      * Built the Google Wave platform.
      * Worked on Google App Engine APIs.
  • +24
    Вот так в итоге собеседование показывает не реальный опыт, а усиленную двух недельную подготовку. И потом (на собеседовании) этот человек рассуждает о видах тестирования, хотя возможно никогда не пользовалься им на практике.
    • +3
      Помимо собеседования есть ещё предыдущий опыт. Не всякого, кто пошлет резюме, позовут на собеседование. А иногда бывает наоборот, ничего не слал, даже резюме нет, а тебя зовут-зовут, зовут-зовут.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          В Google? Не знал, что у них нехватка такого рода специалистов. ;-)
    • +1
      Обычно человека, который только умеет рассуждать хорошо видно. Из 5 человек практически наверняка найдется такой перед кем недостаточно просто помахать руками И скорее всего не один!
      • +1
        Компаний очень много и стек технологий у всех разных. Лично мне не понравилось, что из меня пытались «сделать дурака», задавая вопросы, которые важны именно в их компании, по сути лишь сбивая цену на з\п или потешая свое эго. Но факт в том, что на все эти вопросы я буду знать ответы меньше чем через неделю, при принятии решения, что это нужно мне.
    • 0
      Знание алгоритмов, структур данных и прочих алгоритмических задач дает шанс свести текущую задачу к общеизвестной уже решенной, таким образом решить текущую задачу более оптимальным способом нежели ты бы выдумал.

      Я верю в это, но на практике не получается. Либо я не знаю те алгоритмы и структуры данных к которым могли бы свестись мои задачи, решение которых мне приходится порой выдумывать.
      • 0
        Да кто бы спорил, что знание помогает. Другое дело, что реально эти знания получены всего за 2 недели. И получается, разница между кандидатами будет в 2-х недельном обучении. Что, учитывая что сотрудник нанимается не на 1 год, довольно смешная цифра.
        То есть к примеру есть фирмы где применяется тестирование, есть где не применяется. И так по большинству технологий есть разногласия. Так что считаю более правильным активно изучать специфические знания уже после приема на работу, а не до. А вот рекрутер как раз проверяет, изучал ли ты их до.
      • 0
        Много ли вы сможете выучить за 2 недели? Я нет. А он смог. Это о чем то говорит.
        • 0
          Мне кажется такие знания быстро вылетят из головы, если не начать ими пользоваться постоянно
          • 0
            И ещё быстрее влетят обратно при необходимости.
  • +48
    Не очень понимаю когда нанимают не по результатам того что ты уже реализовал о по результатам тестов, проверяющие знания, которые скорее всего не пригодятся. У меня вроде и диплом красный и аспирантура итп но нанимаясь на работу работодателя интересовало прежде всего что я писал и как это выглядит и работает. Любой алгоритм находится за очень короткий срок в википедии или спец литературе, скажите, зачем их все держать голове, она ведь не помойка. Глубоко уверен что ценность работника определяет не количество алгоритмов в голове а умением работать с информацией, находить её и быстро с ней разбираться. Капица старший принимал экзамены в библиотеке, бери что хочешь, но сумей это найти и объяснить. Эти, гуглевские потуги при приёме на работу, напоминают попытку людей, самих не обладающих достаточными знаниями и умениями выбирать тех кто ими обладает. Потому решают задачу в лоб, просто смотря что у человека в памяти а не смотря на то как работает его голова. Я не стесняюсь чего то не знать, но мне есть что показать из сделанного и я знаю что большинство задач решаемых спецами гугла мне тоже под силу, но меня тошнит от мысли что надо кому то доказывать что я умный. Если человек пытается разглядеть в тебе перспективного спеца просто играя в лотерею «знаешь или не знаешь» это говорит только о том, что что то в этой конторе не так. Настоящая работа по поиску талантов подменена на какую то бесталанную формальность.
    п.с. на последнем месте работы никого не интересовал мой красный диплом (в него даже не глянули), характеристики тоже не было (т.к. уходя с другой работы не хотел раньше времени объявлять об уходе). Я просто показал что писал, как писал, что хочу реализовать в будущем как считаю все должно развиваться дальше, какие есть у меня идеи. И этого было более чем достаточно что бы ударить по рукам уже при первом собеседовании. Контора была конечно не гуглем, но по деньгам я думаю даже выиграл в сравнении с ним, и мне не приходится хоронить свои таланты на рутинных задачах в золотой конторе, я занимаюсь действительно интересным программированием которое позволяет мне развиваться и дышать полной грудью получая удовольствие от того что делаешь. Так что не на одном гугле свет клином сошелся, не зацикливайтесь на нём. Бесплатный сыр бывает, как правило, только в мышеловке.
    • +10
      Тяжело искать информацию, если не знаешь куда копать.
      Если перед вами стоит зада реализовать что то новое или сменить платформу, то простое гугление «Сделать хорошо», вам не поможет.
      Нужны знания и умение применять их.
      Плюс это ускоряет работу.
    • +3
      Я когда то тоже рассуждал как Вы, но сейчас пришел к выводу что основы все таки знать необходимо, например, как язык программирования, на котором ты пишешь, оперирует с числами с плавающей точкой.
      • +9
        Никто не спорит что знания нужны и они ускоряют работу. Но знать все невозможно, из того что мы учим, без практики, через некоторое время, детали просто вылетают из головы. Нет смысла пихать в голову все подряд. Достаточно знать что это есть и где примерно лежит. Как Вы упомянули «знать основы». Понятно, что устраиваясь программистом на каком то языке надо знать этот язык, и желательно основы много ещё чего. Уже хотя бы для того — что бы при необходимости, быстро найти. Понятно, что человек не знающий математику не способен решить задачу, например, вычисления пути или самонаведения на цель. Но человек не знающий определённую формулу но изучавший математику, способен эту формулу отыскать и использовать. Моя основная мысль, если Вы заметили, была не проверка знания деталей какого то алгоритма а проверка сообразительности, умения найти информацию и разобраться с ней. Умение поставить задачу, систематизировать её, собрать информацию по ней и решить её используя найденное и конечно базовые знания. Потому я и не очень верю в сказку про золушку которая без высшего образования и знаний базовых наук способна решать серьёзные задачи. Разобраться в методах тестирования без базовых знаний может и возможно, а вот разработать самому алгоритм распознавания образов, без знания математики, никогда.
        • 0
          На собеседовании в google (facebook, microsoft, etc.) обычно не задают задач на «знать формулу» или «знать алгоритм», только на «придумать формулу» и «придумать алгоритм». И никто не будет просить разработать самому алгоритм распознавания образов, задачи рассчитаны на 15-30 минут времени человека с головой и базовыми знаниями.
      • +1
        например, как язык программирования, на котором ты пишешь

        Это само собой обязательно знать — по сути язык программирования это инструмент, которым регулярно, и постоянно пользуешься, не знать как он работает — не приемлемо. Однако RusMikle говорит совсем не об этом, он говорит, что на собеседованиях частенько проверяют умение отгадывания кроссвордов, или прохождения тестов, а не реальные навыки и опыт.
    • +12
      Это хорошо, когда у человека куча кода на GitHub, который можно открыть и увидеть, что он за месяц вбил 20 тысяч строк протестированного кода. Только людей, повседневный код которых открыт, мало.
      Рассмотрим другого человека — который последние пять лет работал в большой компании, и код, который он там произвел, разумеется, он показать не может. Его можно спросить, что он делал, но тут есть три проблемы:
      1. Он может наврать. А не наврать, так преукрасить. У его менеджера же не будешь спрашивать подробности, даже если звонишь ему за рекомендацией.
      2. Когда человек описывает то, что он делал, это почти всегда очень общее описание, и детали обсудить очень сложно, если только сам не работал над чем-то очень близким. Сложно понять, делал ли он что-то нереально крутое, или это было просто вбивание кода. Не зная деталей сложно оценить и сложность проблемы.
      3. Он работал в команде. При работе в команде очень сложно часто провести границу между своим вкладом и вкладом команды. Он может описать офигенный код, который его команда произвела, в котором его роль была самой скучной и незначительной.

      И примеров есть много. Я сам общался с людьми, которые в Оракле проработали 10 лет, и писали системный код, а я их спрашиваю, как обойти дерево по слоям, и они пишут рекурсию. Кто-то может не беспокоится, если люди не знают обход в ширину, а с моей точки зрения это фундаментальные знания, без которых системный код писать сложно.

      За один час общения с человеком обычными алгоритмическими задачками можно очень хорошо понять, насколько он не тупой. Это уже хороший показатель. А чтобы понять, может (и главное, любит) ли он кодить, четырех часов, которые есть на интервью, мало, как вопросы не построй.
    • +8
      Глубоко уверен что ценность работника определяет не количество алгоритмов в голове а умением работать с информацией, находить её и быстро с ней разбираться. Капица старший принимал экзамены в библиотеке, бери что хочешь, но сумей это найти и объяснить. Эти, гуглевские потуги при приёме на работу, напоминают попытку людей, самих не обладающих достаточными знаниями и умениями выбирать тех кто ими обладает.

      Не очень понял, какая из задач в статье навела Вас на мысль, что на собеседовании проверяется знание конкретных алгоритмов? Кроме того, никто не запрещает спрашивать у интервьюера, если кандидат что-то забыл. В идеале собеседование — это дружественное обсуждение интересной задачи двумя инженерами.
    • +2
      Очевидно у задачи приема нужного сотрудника на работу есть более одного решения. Одно — ваше, второе — гугловское, третье — еще какое-нибудь. У каждого решения есть и плюсы и минусы.
      Довольно странно, когда опытный инженер считает, что существует только одно правильное решение, пусть и неинженерной задачи.
    • 0
      А где вы работаете, если не секрет? :-)
    • +1
      Не все алгоритмы можно тривиально применить, о существовании некоторых ты можешь и не знать.
  • +1
    Ну тут же явно показана теоретическая подготовка. Длительный опыт и подготовка экстерном, даже самым усиленным — разные вещи. Больше опыта надо, а не теоретических рассуждений на собеседовании.
  • +16
    я бы послушал, как он устраивался в Гугл (да и другие US фирмы) без в/о, если бы родился и жил в другой стране :)
    • +5
      Тут уже возникают проблемы бюрократического плана. Гугл может быть и рад бы визу выписать, но чиновники будут против.
  • +2
    Интересная статья, но к сожалению далека от реалий постсоветского пространства. Главная идея — «не останавливаясь двигаться к цели и не опускать руки, и все обязательно получится».
    • 0
      Вы действительно считаете, что на постсоветском пространстве все работодатели смотрят на наличие диплома?
      • 0
        Недапвно на хабре писали про закрытие в РФ и Украине двух офисов, которые писали проект для Гугля, так что гугль далеко не всегда означает переезд в Америку
      • 0
        Я вам не скажу за все «пространство», но за Украину, в частности за Одессу и Киев, могу с уверенностью сказать, что смотрят на наличие диплома довольно часто. И довольно часто принимают решение в пользу того у кого есть диплом, игнорируя знания того у кого профильного диплома нет. Конечно это не те компании, которые можно назвать «компанией мечты», но для относительно начинающего разработчика поиск работы на первых порах может быть проблемным.
        Хотя сейчас ситуация начинает выправляться в пользу увлеченных своей профессией. И в таких случаях на диплом смотрят в последнюю очередь, если смотрят вобще.
        • 0
          А вот у нас в России (не Москва) когда я участвовал в собеседованиях, мы смотрели в первую очередь на опыт работы и знания, и только при отсутствии опыта имел значение диплом. И без диплома был выше порог прохождения и спрашивали более пристрастно. Я сам устраивался без диплома и с малым опытом, но очень хорошо показал себя на собеседовании.
          • 0
            Я сам прошел через все это — в итоге попал в контору, где смотрели на знания, а не на диплом, его цвет и содержимое.
  • +1
    Данная статья в очредной раз показывает, что на пути к успеху (или к некоторым высоким достижениям) в IT сфере не является ни отсутствие диплома, ни еще чего-то. Нужно просто желание, напор и время. Куча материала и знаний в открытом доступе. Еще раз повторюсь нужно желание, время и целеустремлённость.
  • +4
    >>>они делают такую же игру! Space-шутер с видом сверху
    >>>они требовали убрать мою игру.
    Простите, что? Существуют десятки тысяч Space-шутеров с видом сверху, это один из самых старых жанров игр.
    Как такое можно вообще считать плагиатом?!!!
    • 0
      ну скорее всего не требовали, а просили. За спрос то денег не берут))
      Но в итоге там хорошо все закончилось))
  • 0
    Как начать работать в Google если ты не родился в «Стране Возможностей»? Этот вопрос, лично меня, волнует больше.
    • +1
      Элементарно. Они хантят очень много людей, в том числе в европейские офисы (Цюрих, Дублин, Мюнхен). Если у вас хороший профиль в linkedin — то сами напишут, но можете и вы отправить им своё резюме.
    • 0
      Устроиться в стартап который купит гугл например. Мне как то пришло письмо от моего начальника типа «поздравляем мы все теперь работаем в Google».
      • 0
        Так не бывает.
        В Google только через интервью.
        На Google — верю.
      • 0
        • +1
          Нет, Metaweb.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.