Как выйти победителем из программерского собеседования

45 комментариев
Как выйти победителем из программерского собеседования

Рекомендаций от рекрутеров по поводу прохождения собеседования в интернете немало. Но все-таки рекрутеры с Венеры, а разработчики  с Марса. Поэтому вас обязательно должен заинтересовать этот материал  в нем о подготовке к собеседованию рассказывается именно с точки зрения программиста. Автор пытается системным образом изложить рекомендации, которые помогут вам успешно сыграть по их правилам  правилам собеседующих  и выиграть. 

Процесс технического собеседования, применяемый при подборе программистов/разработчиков на новые вакансии, за прошедшие годы существенно не изменился. Соискателю предложат решить на доске пару задач по программированию, выделив примерно час времени на каждую. По ходу дела вы отлучитесь в уборную, возможно, перекусите. Уйдете домой вымотанным, возможно, кляня себя за то, что вновь не вспомнили этот алгоритм сортировки слиянием, и это уже на третьем собеседовании!   

За последние 7 лет я прошел и провел достаточно много собеседований и уловил некоторые их общие закономерности. Честно говоря, следующий факт мне кажется досадным, но он остается фактом: правильная подготовка к собеседованию и понимание того, как оно обычно организуется, помогут вам выдать себя за идеального кандидата на предложенную вакансию, даже если вы им не являетесь. Поэтому собеседования зачастую дают ложноположительные и ложноотрицательные результаты. Мне очень интересно докопаться до сути этих фактически самых важных решений в работе компании: кого взять на работу, а кому отказать. Всего один выдающийся разработчик, которому всегда можно доверять и который решит поставленную задачу во что бы то ни стало, стоит пятерых посредственных кодеров. Кадровые ошибки при приеме на работу могут катастрофически сказываться на эффективности, духе и культуре всей компании.

Как виртуозно сыграть по правилам системы и получить работу своей мечты

В оставшейся части этого поста я выступлю с позиции своеобразного «шулера», цель которого — получить от компании максимально выгодное предложение (зарплата, позиция). Рассмотрю все средства из богатого арсенала соискателя, кроме откровенно нечестных. Считайте, что здесь приведен пример моделирования угроз с точки зрения агрессора. Как только мы поймем, как соискатель может скорректировать процесс собеседования и провести кадровика, мы узнаем типичные недоработки, допускаемые на технических интервью, и подумаем, как их устранить. 

Знать врага в лицо

В каждой цепочке собеседований, от первого контакта до письма с предложением о трудоустройстве, прослеживается ряд типичных этапов:

  • рекрутер >>> Либо рекрутер обращается к вам напрямую, либо связывается с вами после изучения вашего резюме; 
  • собеседование по телефону >>> Назначается одно или несколько собеседований по телефону (в зависимости от компании);
  • собеседование в офисе >>> Длительное (иногда на протяжении целого рабочего дня) собеседование на территории работодателя;
  • предложение >>> Окончательные переговоры, обсуждение условий труда в зависимости от вашего опыта, улаживание других деталей.

Процесс может прерваться на любом этапе, по очень многим причинам. Можно многое сказать о каждом этапе, но здесь я хотел бы сосредоточиться на третьем этапе — том собеседовании, которое проходит на территории работодателя.

Условия такого собеседования существенно отличаются в зависимости от компании, но в любом случае именно по его результатам принимается окончательное решение о том, будет ли вам предложена эта работа.

  • Со стороны работодателя могут участвовать от 3 до 6 экзаменаторов. В основном это разработчики плюс HR-менеджер, иногда также присутствуют один или несколько продакт-менеджеров. Иногда вас одновременно собеседуют два человека; как правило, это делается для того, чтобы более молодой экзаменатор «дублировал» более опытного. 
  • Собеседование состоит из нескольких этапов, каждый из которых длится от 45 минут до часа, как правило, задачи решаются на маркерной доске. В некоторых случаях работа может проходить на ноутбуке, но пока такая практика не слишком распространена.

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

Перед собеседованием

Выстраивание модели успешного собеседования

Полагаю, что о качестве предложения можно судить по следующей модели:

количество предложений = (навык из области программирования) x (чистый интеллект/опыт) x (количество компаний, в которых были пройдены собеседования)
и
качество предложения (позиция и зарплата) = (количество предложений) x (опыт по резюме).

Наша цель — получить максимально качественное предложение. Больше предложений = бóльший выбор = бóльшая переговорная сила = более высокая зарплата/интересная позиция.

Итак, давайте исходить из того, что у вас есть 1 месяц для подготовки к собеседованию, подготовка начинается с чистого листа. Вы готовы тратить на подготовку по 2 часа ежедневно, по вечерам и по выходным. Также предположим, что в настоящее время у вас есть основная работа. Думаю, все понимают, что успех будет напрямую зависеть от того, сколько времени удастся потратить на обучение и провести на Linkedin. Плюс постоянно напоминайте себе, как вам нужна эта новая работа.

Подбор вариантов

Если вы покупаете жилье, то, конечно же, не будете хвататься за первый же подвернувшийся вариант. Аналогично, готовясь к собеседованию, необходимо изучить как можно больше предложений. Подбор вариантов начинается с грамотного рекламирования себя — таким образом, чтобы вами заинтересовались как можно больше потенциальных работодателей. Как это делается?

  1. LinkedIn — максимально оперативно обновляйте профиль на LinkedIn, вносите в него информацию о последних выполненных проектах. Также обращайтесь ко всем друзьям и интересуйтесь, не ищет ли их компания новых сотрудников. Попросите друзей, чтобы они писали вам рекомендации; чем больше, тем лучше.
  2. Основные варианты — выберите наиболее приоритетные компании — те, в которых вам действительно хотелось бы работать. Если у вас есть какие-либо контакты с сотрудниками этих компаний, свяжитесь с ними и выразите заинтересованность. Возможно, вас начнут обсуждать в компании уже на этом этапе, а потом пригласят на собеседование. Если проверенные сотрудники компании уже имеют положительный опыт общения с вами, это может стать огромным плюсом, а в некоторых случаях даже перевесить не самое лучшее впечатление, произведенное на собеседовании. Если вы хотите обратиться в совершенно незнакомую компанию, то это всегда следует делать через страницу вакансий (она есть на сайте любой компании). 
  3. Отзывайтесь на все предложения — если вы уже получаете запросы по InMail или на LinkedIn, обязательно отвечайте на них (даже если предложение вас не заинтересует). Многие предложения поступают от хедхантеров, которые могут соединить вас с достаточно привлекательными компаниями.
  4. Запасные варианты — если вы не особенно хотите работать в какой-либо компании, которая вами заинтересовалась, но сходить туда на собеседование вас не затруднит, то записывайте их в «запасные варианты». Собеседования, пройденные в таких местах, послужат вам в качестве «тренировочных заездов». 

По идее, через пару недель вы уже должны пройти пару телефонных и даже очных собеседований из «запасного списка». Если поступят какие-либо предложения из основного списка, постарайтесь максимально их отодвинуть, чтобы выиграть время на подготовку, в частности — на вышеупомянутые тренировочные собеседования. Возможно, к тому моменту, как вы приступите к штурму основного списка, у вас уже будет пара реальных предложений о работе из «запасного». 

Прокачивайте мозг

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

1. Язык — во-первых, выберите язык программирования, в котором вы ориентируетесь лучше всего. Я видел множество соискателей, которые приходят на собеседование и вдруг решают, что выполнят эту задачу на Scala, а не на Ruby. Или на C, а не на Java. Это ошибка. Выберите один язык и работайте с ним на протяжении всей подготовки к собеседованию и на самом собеседовании. Изучите все хитросплетения и тонкости этого языка, чтобы писать на нем код совершенно спокойно. Не забывайте, время в таких условиях всегда поджимает, и вы не можете тратить его на какие-то метания. Лучше всего выбрать язык с хорошей библиотечной поддержкой. Так, использовать готовый HashMap из Java более рационально, чем писать с нуля свой собственный на C.

2. Изучайте материал — далее найдите хорошую подборку вопросов, часто задаваемых на собеседованиях, а также решения для них. Мы будем опираться на множество таких источников, но нашей настольной книгой будет «Cracking the Coding Interview» (в переводе на русский язык — «Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию», СПб.: «Питер», 2012 — прим. пер.). Ее автор очень толково разграничивает проблемы, относящиеся к разным областям. Настоятельно рекомендую приобрести бумажную книгу. В качестве резервных ресурсов обратимся к форуму загадок по информатике (Университет Беркли) и к сайту codercharts.com.

3. Бумага — с этого момента и до победного конца мы будем писать код только на бумаге, чтобы работать в условиях, максимально приближенных к боевым. Конечно, можно пользоваться компьютером, иногда подсматривать синтаксис и алгоритмы, но весь код пишется вручную. Так вы сможете очень хорошо натренировать память на алгоритмы. 

4. Время — ежедневно необходимо прорабатывать 4—5 вопросов, которые могут встретиться вам на собеседовании. Это нужно делать вплоть до последнего дня — того, в который вы окончательно договоритесь о выходе на работу. Если у вас выдастся лишняя пятнадцатиминутка — решите еще одну задачу для собеседования. Это ваше новое хобби, на которое необходимо тратить как можно больше свободного времени.  

5. Совмещайте подготовку с работой — чтобы выиграть дополнительное время, придется отказаться от всех овертаймов на работе/в университете. Работайте ровно столько, сколько нужно для выполнения ваших прямых обязательств, не больше. Сейчас ваш основной приоритет — подготовка к смене работы.

6. Очертите тематические области — в книге «Карьера программиста» все рассматриваемые вопросы разделены на различные категории. Для решения вопросов из каждой категории требуется овладеть конкретными методами — этим мы и займемся. Вот наиболее важные из таких категорий:

1. основные: деревья и графы, рекурсия и динамическое программирование, массивы и строки, сортировка и поиск, стеки и очереди, объектно-ориентированное проектирование, связные списки, манипуляция битами;

2. предметно-обусловленные (в зависимости от искомой позиции): математика и теория вероятности, масштабирование и память, тестирование, базы данных, потоки и блокировки.

7. Джентльменский набор алгоритмов — следующие алгоритмы полезно знать именно для того, чтобы выгодно показать себя на собеседовании; при этом вполне возможно, что в повседневной работе вы пользуетесь ими нечасто: поиск в ширину, поиск в глубину, динамическое программирование, обход двоичного дерева, сортировка слиянием (почему-то ее спрашивают часто), алгоритм Дейкстры, хвостовая рекурсия, паттерны работы с потоками и параллельной обработки.

  • По моему опыту, первые 4 алгоритма из этого списка встречаются на собеседованиях непропорционально часто (~1/3).

8. Контроль — ежедневно отслеживайте ваши успехи в решении поставленных проблем. Делайте всю работу в блокноте, причем начинайте решать каждую следующую задачу с новой страницы. Такой подход полезен потому, что вскоре вы начнете улавливать взаимосвязи между проблемами. На отдельном листе ведите список проработанных проблем; это помогает почувствовать уверенность в себе и понять, что вы уже действительно знаете. Пример:
 

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

10.  Охарактеризуйте все сделанное по системе «О большое-О малое» — изучите, что такое Big-O notation, как эта система применяется к любому разрабатываемому вами алгоритму. На собеседовании по программированию вас обязательно попросят проанализировать пространственно-временную сложность предложенного алгоритма. При решении каждой поставленной перед вами задачи по программированию вы должны автоматически применять этот принцип, чтобы выбрать оптимальный вариант решения.

11. Говорите — ваше умение вербально описывать свой мыслительный процесс в ходе собеседования будет огромным козырем. Учитесь говорить сами с собой при написании кода (если слишком стесняетесь — можете говорить про себя).  

12. Прогресс — поначалу вы будете совершенствоваться очень медленно. Печально, но это факт. Вы с трудом будете припоминать простейшие алгоритмы из университетского курса информатики, а при мыслях о собеседовании будете чувствовать себя глупым и напуганным. Вы так и будете нервничать, пока не пройдете несколько собеседований в компаниях из «запасного» списка. А затем, возможно, совершенно неожиданно у вас в голове начнет складываться стройная картина, вы начнете легко улавливать закономерности. Окажется, что устрашающий на первый взгляд вопрос о графах решается путем простого поиска в ширину (а такой алгоритм вы теперь напишете даже с завязанными глазами), вопрос о связном списке окажется проще пареной репы, так как вы уже в совершенстве владеете рекурсией… и т.д.

13. Вопросы о личностных качествах — возможно, вам зададут и такие вопросы, и их тоже нужно учесть при подготовке к собеседованию. Подготовьте хорошо продуманные, убедительные, четкие ответы на вопросы примерно такого рода: [«Опишите проект, над которым вы сейчас работаете», «Вспомните какой-нибудь случай, когда у вас возникли разногласия с коллегой. Как вы смогли уладить эту ситуацию?», «Какова ваша самая серьезная слабость?», «Почему вы хотите работать в нашей компании?»]. Некоторые из этих вопросов вполне закономерны (всегда умейте объяснить, почему хотите работать в той компании, где сейчас собеседуетесь). Другие вопросы — полная чушь, и если вы не будете к ним готовы, то наверняка дадите какой-нибудь ужасный ответ и сильно ухудшите свои шансы — пусть и по оплошности.  

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

15. Изучайте межличностные отношения — нет, не всю эту психологическую дисциплину :). Но, как минимум, прочтите «Как приобретать друзей и оказывать влияние на людей» Дейла Карнеги. Многие мысли, высказанные в этой книге, исключительно пригодятся, чтобы достойно выстоять психологический раунд собеседования. Очень рекомендую эту книгу.

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

На собеседовании

Итак, вы потратили на подготовку пару недель, и ваша работа принесла плоды. Вы приехали в офис на собеседование и желаете показать себя с наилучшей стороны. Сначала вы непременно будете нервничать, но самое важное на данном этапе: А) положиться на те навыки, которые вы натренировали; B) действовать с глубоким пониманием межличностной психологии.

1. Коммуникация — все время поддерживайте коммуникацию. Если соискатель получает задачу, а потом в течение 45 минут молча пишет код, его на работу не возьмут. Для настоящего разработчика коммуникативные навыки не менее важны, чем искусство программирования. Спрашивайте. Если запутаетесь — четко проговорите ваши мысли и опишите, какую подзадачу попытаетесь решить далее. Даже если вы не справитесь с поставленной проблемой, умение объяснить ход своих мыслей дорогого стоит.

2. Если застрянете — перед вами поставлена проблема, а вы не представляете, с какой стороны к ней подступиться. Вы пытаетесь ее решить, но в глубине души понимаете, что этот способ тупиковый. Через 20 минут вы продолжаете «ходить по кругу». Это очень распространенная беда, и результаты собеседования в таком случае будут неутешительными. Чтобы выйти из положения, максимально подробно озвучьте ход ваших мыслей. Проговорите предположения, имеющиеся у вас на данный момент, и попытайтесь изложить их вашим экзаменаторам в вопросительной форме. Обычно если они видят, что вы совсем плаваете, то дают вам какие-то подсказки. 

3. Добивайтесь взаимопонимания — если вы понравитесь собеседующим, то они более охотно предложат вам работу. Конечно, так происходит не всегда, и представители компании даже не всегда осознают этот механизм, но он действует. Две вещи, которые нужно попытаться сделать на любом собеседовании: 1) вызывать у экзаменатора улыбку; 2) добиться, чтобы он рассказал вам что-нибудь о себе. Эти ходы лучше делать в начале собеседования, но они срабатывают, только если выглядят абсолютно естественно.

4. Тренируйте почерк — аккуратно пишите код. Это может показаться банальным, но вы проиграете, если ваш код будет написан некрасиво и читать его можно будет только с большим трудом.

5. Решайте только те задачи, которые перед вами поставлены — не пытайтесь разобраться с теми проблемами, которых перед вами никто не ставил. Очень легко приступить к решению проблемы и избрать для этого неоправданно сложный путь. Обязательно решайте только ту задачу, которая перед вами поставлена, иначе только навредите себе. Иногда сами собеседующие позволят вам пойти по такой извилистой дорожке, если они сами плохо подготовились к интервью… об этом следующий пункт. 

6. Упрощайте — когда перед вами ставят проблему, вы можете задать уточняющий вопрос, после которого ее сформулируют вам в более простом виде — для этого сами выскажите упрощающие предположения. Возможность для такого маневра представляется гораздо чаще, чем может показаться, а умение ею воспользоваться приходит с опытом. Например, вместо того чтобы писать метод сортировки с нуля, предположите, что вы можете использовать встроенный метод сортировки. Раз — и 20 минут сэкономлено!

7. Никогда не спорьте — ни в коем случае не пытайтесь спорить с собеседующими, даже если они не правы. Если вы заметили у них совершенно очевидную ошибку — вежливо укажите на нее, но если они упорствуют — не настаивайте. Гордость экзаменатора — вещь, с которой нельзя шутить, вы обязательно получите отпор. Согласитесь, что вы не правы и работайте дальше; обычно в таких случаях собеседующий вас человек почти сразу разберется и признает свою ошибку. 

8. Делайте пометки — возьмите с собой на собеседование блокнот и запишите имена всех тех, кто беседовал с вами. Если сделать такой ход в начале собеседования, это выглядит очень профессионально, а также помогает вам не забыть имена собеседников в ходе работы. Когда собеседование будет закончено, запишите вопросы, которые вам задавали, а также свои впечатления о том, как вы справились с каждым из вопросов. В ходе дальнейшей подготовки, если она потребуется, будьте самокритичны и проработайте те темы, которые дались вам хуже всего.

9. Умейте сходить с дистанции — если предполагалось, что вы пройдете 6 собеседований, а вам назначили только 3, то это, скорее всего, означает, что вы уже проиграли. То есть на первых собеседованиях вы показали настолько плохие результаты, что работодатель просто решил не тратить на вас рабочее время еще троих человек. Иногда это происходит из-за ошибки работодателя, так что в любом случае не расстраивайтесь. Будьте спокойны, тренируйтесь дальше.

Заключение

Резюмируя, можно сказать, что секрет победы на любом программистском собеседовании таков: стоит побывать на собеседованиях в достаточно большом количестве компаний и воспользоваться вышеизложенными методами. В таком случае, если в среду я попаду на собеседование в компанию А и меня завалят на каком-либо каверзном вопросе, то вполне вероятно, что уже в четверг в компании B мне зададут примерно такой же вопрос. В компании A мои навыки сочтут плохими, а в компании B — хорошими. Рано или поздно я изучу все распространенные вопросы с типичного собеседования и буду отвечать на них неизменно блистательно. 

Следует исходить из того, что события будут развиваться именно по такому сценарию, и поэтому учиться улавливать такие закономерности, начиная с самого первого собеседования. Чем быстрее соискатель достигает своего «пикового уровня» (конечно, этот уровень у разных людей отличается), тем больше у него будет выгодных предложений, тем увереннее он будет вести переговоры с работодателем.

Я действительно могу подписаться под каждым словом этой статьи и знаю, что эти методы работают. Такая ситуация удручает, и я делаю все возможное, чтобы ее изменить.

Филип Юссеф

Источник

Хотите сообщить важную новость?

Пишите в наш Телеграм

Читайте также

«Все собеседования онлайн». CEO о том, как и почему хайрит в кризис и пандемию
«Все собеседования онлайн». CEO о том, как и почему хайрит в кризис и пандемию

«Все собеседования онлайн». CEO о том, как и почему хайрит в кризис и пандемию

Ringl Technologies — активно развивающаяся IT-компания из Минска, резидент ПВТ, которая в этом году завершила разработку своего первого продукта — сервиса доставки еды из ресторанов, товаров и услуг и вот-вот выпустит еще один.  В команде Ringl уже трудится около 30 разработчиков, но компания продолжает активно расширяться. Только за последние два месяца ребята приняли 17 человек. CEO компании Ringl Technologies Екатерина Пятницкая рассказала dev.by о том, какие качества сотрудников выходят на первый план в непростые времена, как получить высокооплачиваемую работу и почему компания не заманивает плюшками из соцпакета.
13 комментариев
Как защитить видеозвонки. Советы экспертов
Как защитить видеозвонки. Советы экспертов

Как защитить видеозвонки. Советы экспертов

За месяц число ежедневных активных пользователей сервиса для видеосвязи Zoom выросло в 1,5 раза — с 200 млн до 300 млн, хотя ещё в декабре их было лишь 10 млн. По мере роста популярности приложение стало привлекать хакеров, а в сети появилось столько новостей об уязвимостях Zoom, что на мессенджер обратило внимание ФБР. Издание Computerworld собрало небольшой список рекомендаций от экспертов по кибербезопасности о том, как защитить данные и участников видеоконференций от взломов, утечек и непрошенных гостей.
Guardian: массовые мероприятия как топливо для эпидемии
Guardian: массовые мероприятия как топливо для эпидемии

Guardian: массовые мероприятия как топливо для эпидемии

Коллективная статья семи журналистов Guardian о том, почему массовые скопления, рукопожатия, поцелуи и общие напитки виноваты в распространении коронавируса. Публикуем перевод материала с незначительными сокращениями.
1 комментарий
10 образовательных приложений, чтобы провести самоизоляцию с пользой
10 образовательных приложений, чтобы провести самоизоляцию с пользой

10 образовательных приложений, чтобы провести самоизоляцию с пользой

Перевели подборку бесплатных приложений для удалённого обучения. для тех, кто устал от доомашнего спорта, документалок и сериалов.
3 комментария

Обсуждение

3

Западная перепечатка, как итог: совершенно оторвана от наших реалий.

Ольга  Нарейко
Ольга Нарейко Head of HR в Orion Soft
3

Согласна, есть некоторая оторванность от реальной ситуации.
Но если уж говорить о собеседовании, то могу подтвердить, что блокнот- полезная штука, особенно, когда собеседований много и в разных компаниях- работодателях. Перед визитом к потенциальному работодателю - потратьте пару минут, запишите те вопросы, которые хотели бы задать (ведь в пылу собеседования многое забывается, откладывается "на потом" и забывается). А записанная информация останется с вами надолго и поможет сделать выбор в ту, либо иную сторону :)
Немного улыбнул "некрасивый код". В моей практике не было, чтобы технический специалист не разобрался в чужом коде. На худой конец и переспросить можно (и нужно!) что человек имел ввиду.

Anonymous
Anonymous
1

"Некоторая оторванность"? Вы уверены, что только некоторая? Ни одного собеседования не видел\проходил, которое прошло бы по такой схеме.

3

западное собеседование ценнее, там можно по удаленке больше заработать. Спасибо за перевод.

owl
owl
4

В последнее время появилась мода давать тестовые задания, или это мне так "повезло" (в 3 из 4 компаний кому я писал). И ладно бы было что то стоящее, а то (как выяснилось в процесссе собеседования) проект - суппорт древнего монстра за среднюю по рынку зарплату. Неужели кто то ради этого готов по вчерам в течении недели писать никому не нужный код.

1

" во-первых, выберите язык программирования" круто..... ноу коментс

2

Почему сразу ноу коментс, пора бы уже и нам начать привыкать, что хороший программист не должен быть привязан к одному языку, а уметь спокойно писать код и на С и на Java и на VB тд. И уметь выбирать инструмент, подходящий для решения поставленной задачи.
А данный пункт тут указан, так как всё равно человек будет знать какой-то из языков лучше (хотя бы потому, что последний проект на нем писался)

2

Я регулярно собеседую людей которые не привязаны к одному языку. Это студенты без опыта. Но статья не пор них явно.

Алексей Данченко
Алексей Данченко Инженер-программист в ЛюксСофт
1

Все те же Google, Microsoft иногда нанимают просто "инженеров" без особой привязки к конкретному языку программирования.

0

Это достаточно распространенная практика в более адекватных и продвинутых компаниях. Даже на личном примере скажу - у меня был текущим основным языком Scala, без вопросов собеседовался на работу, где надо было писать на Python. Алгоритмические задачки делал для них на Javascript :D

0

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

3

Может быть джуниором, даже если знает несколько языков, т.к. не язык критерий проффессиональности, а умение решать задачи в срок :).

Нормальное техническое собеседование, если изначально известен проект на который человек берется:

1. В двух словах рассакжите чем вы занимались и какие задачи выполняли на предыдущем месте работы (5-7 минут) - на этом этапе уже будет понятно стоит вас дальше собеседовать или нет (для джуниоров - чем в университете занимались).

2. Для джуниора обычные вопросы по инструментам которые в резюме, для всех остальных - как бы вы решали такую задачу (любая из проектных задач) - 15-25 минут

3. пара вопросов по не проектным тулам - слышали ли вы и/или сложная проектная ситуация - узнать каким способом человек бы ее решал - на сколько быстро человек ориентируется в способах поиска решений. 10-15 минут

Если на собеседовании начинают сознательно "садить", лить воду в уши и т.п. - совет не тратить время на контору, собеседование самостоятельно останавливать, сказать спасибо и уходить. На лицо признаки конфликтности и завышенной самооценки людей, работать с большой вероятностью будет не комфортно, так же может быть признаком того что хотят финансовое ожидание уменьшить, в ряде случаев может быть и обоснованно, но попытки унижения на собеседовании обычно показывает неумение людей вести обоснованный диалог - т.е. обходите стороной :)

Пару раз эти вещи сознательно провоцировал :)))

Anonymous
Anonymous
0

Я думаю вы слишком девальвировали понятие "знание языка программирования".

-1

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

Ниндзя - это тот кто умеет махать мечем и прыгать, а не тот кто в костюме и держит :)

Anonymous
Anonymous
2

Именно это я и имел ввиду. В моем понимании знание языка программирования как раз таки и подразумевает решение боевых задач. А то что ктото ознакомился с синтаксисом, прочитал книжку, написал пару сортировок или hello-world - это не знание языка.

0

А может ли программист, который привязан к одной операционной системе (конторе, стране, планете), называться не джуниором?

Все условно. Главное - широта мышления.

А то я счас в своей супер-CMS-на-PHP кааак забадяжу вставочку на Ruby... так все и офигеют от моего профессионализма.

0

А, ну и вдогонку. Миниатюрка "Собеседование писателя".

- Фамилия?
- Толстой
- На чем пишете?
- На русском
- И только? Спасибо, вы нам не подходите

6

сразу видно, что войну и мир вы не читали

// для тех кто не читал - там половина текста не на русском :)

0

Известных писателей по фамилии Толстой больше одного.

2

Блин, все таки надо было в школе себя заставить, не попал бы сейчас в неловкое положение :)

0

по поводу страны\планеты вы передергиваете. Вот в том-то и дело, что широта мышленя не должна ограничиваться синтаксисом одного языка\знанием одной платформы\ОС\итд (нужное подчеркнуть). В штатах модна нонче позиция principal developer - человек, который умеет решать поставленные задачи, а какие инструменты он будет при этом использовать - не имеет значения :).
И почему бы не забадяжить вставочку на руби, если это займет 1 минуту, вместо дня, без руби.

0

очень сильно перегибаете

2

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

0

"человек, который умеет решать поставленные задачи, а какие инструменты он будет при этом использовать - не имеет значения :). " - в то же время знание нескольких языков на уровне решения проходных, хоть и самых боевых, задач не особо приблизит к principal developer-у. У такого человека все-же должен быть в первую очередь солидный CS-бэкграунд и много опыта. Кругозор типа что язык\платформа\ОС в принципе может, а что нет, безусловно нужен, но для его приобретения не нужно погружаться в кодерские дебри.

0

Конечно передергиваю. Справедливости ради, я и в "Войну и мир" даже как-то заглядывал, но искренее забыл о вставках на французском. Надо было в миниатюрку вместо Толстого Маяковского вставить...

Если я забадяжу вставочку на руби в проект на пхп, меня отстегают проводом от мышки. Я же не Толстой.

0

Ну Маяковский правильно выбрал русский язык как инструмент написания стихов, понятных пролетариату и гнобящих буржуев :) Уверен он владел и другим инструментарием :)
Отстегают одноязычники? :)

1

"Одноязычники" - это оценка умственных способностей? :)

На самом деле все ситуативно. Но основания для таких вот экстремальных трюков, как вышеупомянутая "вставочка", должны быть очень весомыми.

А с другой стороны, принять такое решение может только достаточно прошаренный чел (и в языках тоже). Ну или сумасшедший.

1

По ходу чтения несколько раз задавался вопросом: это все еще о собседовании при найме или о подготовке к госэкзамену в ВУЗе?

5

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

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

Алексей Данченко
Алексей Данченко Инженер-программист в ЛюксСофт
0

>Вы ищите человека каждый день решать хитроумные алгоритмические задачи?..

Собеседования такого вида, как они описаны в статье, как мне кажется, характерны для компаний вроде Google, Microsoft, Facebook.. Думаю, что надо воспринимать статью примерно в этой плоскости.

0

Да, согласен. И Google может себе позволить нанимать лучших, людей быстро решающих алгоритмические задачи, при этом в последствии давая им посредственные текущие таски - работает имя. Но далеко не все в Гугле работают над задачами требующими серьезного Computer Science.

owl
owl
0

Может кто подскажет, а есть ли у нас компании где требуются серьезный Computer Science? Из того что на слуху, не всегда соответствует действительности (как правило бывает, что ядро уже написано, и дальше занимаются интеграцией с другими продуктами и прочей нужной но не творческой работой). Есть, например, кто нибудь из Яндекса, как там проекты?

0

Я слышал из последнего про Playtika - высокие нагрузки. Вроде Синезис что-то делали с Computer Vision. Понимаете, что чистый CS будет только в университетах, в компания нужны работающие решения, инжиниринг, а не чисто наука. Еще, если вы умный, можете попробоваться в Taucraft. Не знаю. что у них там CS, но свой продукт они делают толково, продумывают - полагаю, там много чему можно поучиться.

-3

Computer Science - это в первую очередь работа бизнес-аналитика с математическим образованием (не тот который посредник между клиентом и разработчиками). Обычно этот кусок работы связан с коммерческой тайной бизнеса и ни один вменяемый заказчик эту работу на внешнюю разработку не отдаст. Исключение продуктовые конторы, но с теми с которыми сталкивался за последние 12 лет в Беларуси, ни одна из контор не занималась. Возможно в некоторых стартапах это есть.

Если хотите поля для деятельности в по части Computer Science (маркетинговое слово под которым подразумеваются - мат.статистика, дискретная математика, логистика, физика и др), то нужно идти не в IT контору.

1

"маркетинговое слово " - ага, информатика это лженаука и продажная девка капитализма.
Кстати, причем там логистика? Если она пользуется теорией графов, то уже неявно включена в приложения дисмата. А физика причем?

А вообще имхо даже кодеру не помешало ды владеть формальной логикой и иметь понятие о дисмате. Даже применение одних лишь законов де Моргана часто позволяет писать код чище, и рефакторить осознанней.

-1

А физика причем? - модель которой должен подчиняться искомый объект или процесс из реального мира.

Алексей Данченко
Алексей Данченко Инженер-программист в ЛюксСофт
0

"...массивы и строки, сортировка и поиск, стеки и очереди, объектно-ориентированное проектирование, связные списки...". Забавно, как в середине этого списка затесалось OOD. Такое чувство, что либо у автора проблемы с категоризацией, либо это проверка читателей на внимательность. Ну и вообще, из этой статьи хорошо видно тему, в которой он "плавает" :)

5

>>Соискателю предложат решить на доске пару задач по программированию, выделив примерно час времени на каждую.

Из приблизительно 30-ти пройденных мной собеседований в местных конторах только в одной давали время и доску для выполнения задания.

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

У нас - не стОит. Нигде, где кодерам платят 1500$, выдающемуся разработчику не заплатят 7500$.

>>Некоторые компании отказываются от второго пункта и сразу устраивают сессию парного программирования и живой отладки кода.

У нас о таком вообще нигде не слышал.

P.S.: dev.by - ну пофиксите вы уже проблему с эскейпом символов в форме редактирования комментария!

-3

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

0

а есть вообще в Минске места, где лиду готовы платить 4k и выше?
обычно оказывается так: "все ок, но столько мы заплатить не можем"
смысл тогда ходить на собеседования..

0

Подобные собеседования (exam-style) - хороший повод внести компанию в личный черный список.

7

И еще...

7. Никогда не спорьте — ни в коем случае не пытайтесь спорить с собеседующими, даже если они не правы. Если вы заметили у них совершенно очевидную ошибку — вежливо укажите на нее, но если они упорствуют — не настаивайте. Гордость экзаменатора — вещь, с которой нельзя шутить, вы обязательно получите отпор. Согласитесь, что вы не правы и работайте дальше; обычно в таких случаях собеседующий вас человек почти сразу разберется и признает свою ошибку.

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

Короче это тот редкий случай, когда в споре рождается истина. :)

1

интересно, все говорят про дефицит программистов, и в то же время делают такие бредовые интервью - где логика?

1

Немного собственного опыта из уже почти 7ми летней практики в IT.
1. Дефицита программистов на рынке труда нет. Есть дефицит тех, кто готов работать на данных условиях, за те деньги, которые предлагает работодатель.
2. Некоторые компании просто формируют базы соискателей "на всякий случай" в этом варианте вакансия может висеть несколько месяцев и (!)даже лет.
3. Тех.собеседование, как правило, будет зависеть только от двух вещей - настроения того, кто его будет проводить и реальной потребности в работнике данной квалификации. Те, если пришел синьёр, а ищут в-принципе мидла, или вообще студента, то даже близкий к 100% выполненный тест не поможет.
4. Страшная тайна =). Из опыта работы с иностранными заказчиками и собственного тимлидинга. Если работа выполняется по контракту(а лично у меня таких было большинство), то тех собеседование в том виде, как его любят проводить у нас (псевдо экзамен) НЕ нужно в принципе. Достаточно прочитать CV кандидата, беседы об опыте работы и испытательного срока.. Программирование, как и хирургия)) это не та профессия, где можно приписать несуществующие скилы - все становится видно в течении первой же недели. Поэтому, важно узнать проф."направленность" кандидата (например, человека который в основном работал с базами данных не сажать за GUI). В результате же "экзаменационных" собеседований часто приходят те, кто умеет быстро отвечать на стандартные вопросы/писать отчеты, но теряются, когда в работе встречаются с чем-то новым. Вобщем, Энштейн и Резетфорд тесты по физике провалили бы).
5. Лучший вариант для кандидата-девелопера - попасть в команду, в которой тим лид и прожект менеджер имеют реальный опыт программирования (>5 лет сеньером), это убирает очень много проблем коммуникативного свойства. Ну, а если глава фирмы тоже имеет опыт разработки (а не только продаж), то, считайте, что вы нашли работу мечты =)
That's all, folks =)

0

видео о том как проходить собеседование по Python

https://www.youtube.com/watch?v=070WyS06e-Q

Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже