Все, что нужно знать программисту для собеседования


Оглавление (нажмите, чтобы открыть):

Собеседование: как выявить крутого программиста?

На одном из собеседований я попросил очень опытного разработчика встроенного ПО написать простую программу, которая переворачивает строку и выводит результат на экран. И он не смог.

Он правда был крут. Ему можно было дать кучу металлолома, и он превратил бы её в робота, который смог бы передвигаться по комнате. Он работал над спутниками, которые были пущены в эксплуатацию и сейчас находятся на орбите.

Но вот так сложилось, что ему никогда в жизни не приходилось выводить результаты на экран.

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

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

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

Часть I: проверяем свои предположения

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

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

«Всё написанное в резюме — ложь, пока не доказано обратное».

Если в резюме написано: «Эксперт в такой-то технологии», про себя я думаю, что это означает «знаю название этой технологии». Если в резюме написано «Работал над созданием многопоточной торговой площадки», про себя я замечаю, что это означает «участвовал в выборе цвета фона».

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

Лучше не строить никаких ожиданий, чтобы не разочаровываться. Всё написанное нужно будет проверить.

Как? Очень просто: задать на собеседовании коварные вопросы о каждом указанном навыке или проекте.

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

Коварные вопросы: Сколько человек работало с вами в группе? 15? А над чем конкретно работали вы? Над очередью сообщений? Здорово! А расскажите, что происходит, когда высокоприоритетная задача посылает сообщение низкоприоритетной задаче?

Разрабатывал с нуля протокол звуковой передачи для беспроводных систем безопасности.

Коварные вопросы: Сколько человек было в команде? Только вы? Ого! И как проходил процесс тестирования? Вы использовали RTP?

Чинил баги в XYZEngine.

Расскажите о баге, который было действительно сложно исправить, и как вы решили эту задачу.

Часть II: определяем реальный опыт кандидата

Большой опыт — хороший индикатор крутости программиста. Опытный программист уже насовершал кучу ошибок, и знает, где ещё можно ошибиться. У них уже работает нюх на то, какие требования изменятся, а какие, скорее всего, останутся неизменными. Они знают, когда можно расслабиться, а когда нужно быть педантичным. Это и есть тот настоящий опыт, который увеличивает пропасть между талантами и посредственностями.

Но не каждый опыт одинаково полезен!

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

Узнать о начале карьеры

Есть множество отличных программистов, которые начали кодить при поступлении в интститут. После выпуска у них уже есть несколько лет опыта. А вот множество превосходных разработчиков начали изучать программирование чуть ли не в детстве. У меня есть знакомые, которые начали писать свои первые программы в подростковом возрасте. Эту информацию не указывают в резюме, но её можно выяснить в ходе собеседования:

Как вы попали в сферу разработки ПО?

Какой был ваш первый язык программирования?

Плотность опыта

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

Работа в малых командах/группах;

Работа в большом количестве проектов;

Подробные знания о разных уровнях проекта;

Опыт внесения основного вклада в развитие проекта.

Часть III: подтверждаем опыт соискателя

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

Конкретные темы зависят от требований к должности. Темами для беседы могут быть:

структуры данных и алгоритмы;

объекты и наследование, паттерны разработки;

компиляция и исполнение программ.

Каждая тема включает в себя некоторые базовые вопросы (например, «Что такое семафор?»). Эти вопросы должны быть настолько общими, что каждый, кто хотя бы немного работал в этой сфере, сможет ответить. Помимо общих вопросов нужно задать подробные более узкие вопросы. Что-то не так, если вы просите опытного программиста встроенных систем перевести 0х4с в двоичный код, а он пишет: 4 х 16 + 12.

Тест по программированию

Обычно после первых трёх этапов собеседования я уже понимаю, подходит кандидат или нет, но тест по программированию убирает все сомнения.

Тест необходимо тщательно продумать до собеседования. Если его неправильно задать, ответ, каким бы он ни был, будет бесполезен.

Во-первых, тест должен основываться на опыте кандидата и особенностях вакансии. Если у вас есть отличная задачка, которую можно решить с помощью конвертирования объектов в пересекающиеся 3D-плоскости, но для текущей вакансии не требуется знание 3D-графики, забудьте об этой задачке.

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

Порядок вопросов имеет значение

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

На кандидатов влияет и выбор основного ЯП. Например, вы говорите, что в текущей работе используется Java. Каждый кандидат начнёт клясться и божиться, что он настоящий эксперт в Java, и вообще это его любимый язык. Он будет использовать именно Java во всех тестах, несмотря на то, что не может вспомнить, как в его любимом языке объявляют переменную.

Не замыкайтесь на одном языке

Очень соблазнительно сделать выбор в сторону того языка, который используется в вашей компании. Ограничивая свой выбор одним языком, вы оставляете за бортом множество отличных программистов. Не старайтесь определить, насколько круто кандидат программирует на C или Java. Ваша задача: выяснить, насколько круто кандидат программирует на языке, который он знает лучше всего.

Выходим за рамки

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

Данная схема предполагает построение гипотез и использование интуиции. Вам нужно определить, какими чертами должен обладать крутой разработчик. Поэтому вопрос, на который вы отвечаете сам себе, звучит так: «С какой вероятностью ответ кандидата на тот или иной вопрос подтверждает, что он на самом деле прекрасный программист?». 100%-ной вероятности вы не достигнете, но правильно подобранные вопросы помогут вам подобраться к истине немного ближе.

Перевод: Люся Ширшова. По материалам блога Steve Hanov.

/dev/energy

Сайт о том, как стать программистом и как с этим жить потом

Собеседование на позицию Junior-разработчика. К чему быть готовым?

Давно я не публиковал статьи для начинающих программистов. Сегодня будет материал как раз для них.
Мы поговорим о том, как и к чему готовиться, собираясь на своё первое собеседование.

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

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

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

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

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

Меня зовут Петр Иванов. Я очень целеустремленный и легкообучаемый программист.
Я бы очень хотел работать в вашей компании.

Здесь помимо недостатка информации имеют место шаблонные фразы. Рынок кишмя кишит целеустремленными и легкообучаемыми.
Все письмо построено от позиции «Я крутой, наймите меня». Оно кричит, а выскочки без опыта мало кому понравятся.
Поэтому давайте попробуем составить письмо, которое будет приятно для работодателя.

Опишите в письме свои наиболее интересные на Ваш взгляд проекты, точки заинтересованности в компании. Не старайтесь высасывать из пальца достижения.
Всем прекрасно понятно, что Вы Junior, и ожидать от Вас сверхспособностей никто не станет. Работодателю нужен человек, который заинтересован в том, чтобы обучаться и расти.
Вы написали игру «Крестики-нолики»? Выложите её на github! Покажите, как Вы строите код. Ещё лучше, если Вы покажите, что пользуетесь версионированием постоянно. Сейчас Ваш код говорит за Вас.

Стройте письмо от позиции сотрудничества. В первом примере письма кандидат напоминает рекламный баннер, который хочется поскорее закрыть, потому что он пестрит, но несет никакой пользы. Отвлекает одним словом. Поставьте себя на место работодателя. Чего Вы бы ждали от кандидата? Будьте предельно честны в этом ответе.

Давайте попробуем написать письмо, которое заинтересует работодателя.

Меня зовут Петр Иванов. Меня очень заинтересовала предложенная Вами вакансия на сайте xx.ru.
Мне интересно развиваться в компании, которая занимается %вписать необходимое%.

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

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

Заранее спасибо!
С уважением,
П.Иванов
p.ivanov@somemail.com
+7 999 123 4567

Что мы улучшили в данном письме в сравнении с предыдущим помимо увеличения объема написанных слов?

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

Перед собеседованием
И вот, Вас пригласили. Время и дата назначены, отсчёт пошёл. Что же делать в это время Вам?
Однозначно, не стоит пытаться впихнуть в себя какие-то новые для Вас систему или подход к разработке. Это только породит хаос в Вашем сознании.
Работать нужно над имеющимися данными. Наверняка к этому времени Вы поймёте, где у Вас есть пробелы — старайтесь работать над их закрытием.

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

Теперь о банальном. Не опаздывайте на собеседование. Приезжайте минут за 10-15 до начала. Держитесь на связи. Если у Вас появляются непредвиденные обстоятельства, которые мешают Вам приехать на встречу, позвоните и предупредите о них своё контактное лицо. Но не играйте в молчанку. Уважайте чужое рабочее время!

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

Ни в коем случае не стоит врать или общаться агрессивно. Как было сказано выше, уважайте чужую работу. Однако я замечаю одну нехорошую тенденцию. Интервьюеры стали проверять кандидата на стрессоустойчивость, провоцируя на агрессию. Вам могут задавать неприятные вопросы, говорить неприятные вещи в духе: «Ну хорошо, давайте посмотрим, чем Вы нам можете быть полезны. Это что, всё? И вот Вы правда столько денег за это хотите?». И прочее. Я являюсь противником такого общения на собеседовании, так как всё, что оно может показать — это неадекватность интервьюера, которые прочитал про такой подход где-то в книжке и теперь самоутверждается за счёт этого. Но такие ситуации встречаются. Просто не обращайте на них внимания, если увидите, что другие участники процесса общаются спокойно. Это покажет Вас как стрессоустойчивового кандидата, что будет являться большим плюсом.

После этого Вам предстоит общение с кем-то из команды IT. Здесь общение будет идти на тему Вашего опыта. Задачи могут быть самые разные. Обычно в начале идут теоретические вопросы, а также вопросы, отстраненные от программирования и направленные на логику. Далее возможно будет сессия программирования.

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

Если формализовать подход к ответу на вопрос, то можно вывести несложный алгоритм

1. Выслушайте задачу. При необходимости попросите повторить вопрос или перечитайте постановку задачи.
2. Возьмите 1-2 минуты на то, чтобы подумать над задачей. В это время подумайте над тем, что вызывает у Вас сомнения в этой задаче. Что Вам непонятно в ней? Что бы Вы уточнили?
3. Задайте уточняющие вопросы. Это крайне важный шаг. То, что Вы не броситесь на решение, уже будет для Вас большим плюсом! Задайте вопросы, которые возникли у Вас в пункте 2. После того, как на 100% поймёте постановку задачи, приступайте к решению.
4. Начинайте рассуждать. Рисуйте. Проектируйте. Код должен идти в последнюю очередь — здесь Вам надо показать Ваш стратегический и концептуальный подход. Это залог того, что решение будет реализовано не «в лоб», а с применением обдуманого алгоритма.
5. Если до этого дойдёт, начинайте программировать. Код должен быть «чистым» по определениям Роберта Мартина и соответствовать минимальным стандартам, если таковые установлены для выбранного Вами языка программирования.

Мастер Йода рекомендует:  Как я попал в Cisco на позицию разработчика

Собеседование может длиться от 1 до 3 часов, но Junior-ов обычно долго не мучают. Однако, закладывайтесь на эти цифры. А ешё лучше — спросите о времени заранее, если Вам важно понимать, сколько Вы будете находиться на собеседовании.

После собеседования
Первое, к чему стоит быть готовым, это то, что результат Вам сообщат не сразу. Скорее всего, Вам скажут дежурную фразу «Мы свяжемся с Вами». Она совершенно не означает, что Вы «в пролете». Наоборот, многим компаниям требуется время на сбор обратной связи от интервьюеров и формирование ответа кандидату. Тем не менее, если Вы не получили ответа в течение рабочей недели, прошедшей с момента собеседования, Вы имеете полное право на то, чтобы написать HR-специалисту, который приглашал Вас на собеседование.

Помните, что никто не гарантирует Вам успеха даже при полном соответствии тому, что Вы прочитали здесь или где-то ещё. Каждый работодатель ищет своего кандидата, а это значит, что на самом деле нет универсального поведения, которое будет делать из Вас идеального кандидата.

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

Если делать всё правильно, что в очень скором времени Вас будет ожидать заветное письмо с темой «Job offer for Peter Ivanov»!

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

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

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

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

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

Список моих вопросов при собеседовании программистов ниже:

  1. Попросить рассказать о разрабатываемом ранее продукте, зачем он и для чего/кого. Если человек реально работал над проектом, то он должен хорошо понимать зачем он, кто его пользователи и т.п.
  2. Что сделал на прошлых местах работы? В резюме часто просто пишут про проект целиком. Возможно, соискатель разрабатывал его архитектура и писал ядро, а может просто нарисовалAboutдиалог.
  3. Какая была роль в команде? Чем занимались другие люди? Интересно узнать, как человек видит себя в проекте и команде.
  4. Какие были процессы разработки? Общий вопрос для начала, чтобы понять направление дальнейшего диалога.
  5. Были ли требования к продукту? Откуда они брались? Были ли аналитики, product manager и т.п.? Оценка умения работать по требованиям, а не городить отсебятину по принципу «я лучше знаю».
  6. Кто осуществлял декомпозицию больших задач на подзадачи? Сразу понятно, какая роль была на прошлой работе.
  7. Кто оценивал трудозатраты по задачам? Часто ли ошибались? Выясняем опыт разработчика в оценке задач, если такого опыта нет, то это не очень хорошо.
  8. Использовались ли Unit Tests? На мой взгляд это полезная практика, уменьшающая число багов. Хорошо, если кандидат ее использовал. К сожалению, часто приходится слышать на собеседовании ответ: «Да я хотел использовать, но времени на написание тестов никогда не выделяли.»
  9. Были ли ночные билды, ночные прогоны автотестов? Показывает, что разработка была не совсем коленочная. Скорее всего, есть привычка не ломать сборку своими коммитами.
  10. Мнение о той или иной процедуре в процессе разработки. Интересно послушать мнение о процессах. Если ответ в стиле: «Начальство самодуры, только мешают работать со своими кодревью», то имеет смысл задуматься ��
  11. Были ли процедуры code review? Приходилось ли быть ревьювером? Если ревьювером быть не приходилось, это показатель не самого высокого уровня.
  12. Использовалась ли система контроля версий? Была ли разработка отдельных фичей в отдельных ветках? Если не использовали совсем, то какой-то совсем анахронизм. Если все делали в одной ветке, то можно предположить проблемы с мержами в будущем и боязнь использования веток.
  13. Что такое TDD? Не все такой подход одобряют, но можно задать кандидату вопрос: «Почему это хорошо это или плохо?»
  14. Были ли процедуры типа Gated check-in, проверка собираемости или тестов при коммитах? Дает понять насколько зрелый процесс разработки был на прошлом месте работы соискателя.
  15. На собеседовании имеет смысл спросить соискателя про отношение к «шаблонам по Александреску» и подобным стили программирования. ПринципKISSникто не отменял ��
  16. Что сам кандидат спросит про работу и процесс в конторе? Показывает заинтересованность в работе, что реально интересует кандидата в новой работе. Некоторым важен процесс разработки, некоторым продукт, некоторым график работы, а есть такие, которым на все пофиг, лишь бы взяли.

Все новости сайта в telegram канале: @pmlife_ru

Как проводить собеседование программистов?

Я довольно часто провожу собеседование программистов.

Раньше мы это делали следующим образом:

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

Эта схема плоха тем, что реально мы не знаем, чего стоило ему выполнить это задание. Может он сделал его за 5 минут. А возможно он рогом уперся, перерыл весь интернет, делал всю ночь и все-таки сделал это задание. Согласитесь, это совсем разные истории.

Сейчас мы пришли к тому, что гораздо эффективнее проводить собеседование следующим образом:

  • созвон по скайпу;
  • запрашиваем уровень ожиданий – какой опыт по технологиям и какая почасовая ставка;
  • человек запускает демонстрацию своего экрана, открывает блокнот и делает ваши базовые типовые задания по технологиям;
  • уже по первым минутам вы поймете, с кем имеете дело. По моему опыту, можно по одному заданию сразу понять, соответствует ли человек тому, что он указал (ставка, опыт). Если человек говорит, что у него опыт jQuery 1-2 года, и ставка 300 руб. в час, но при этом он не может правильно написать, как добавить div элемент в body – то все сразу становится понятно и на свои места.

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

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

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

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

П.С. Очень многие программисты говорят “Это я не помню на память, я всегда быстро найду в Google”. Дайте ему задачу посложнее и пусть решит с помощью Google. Если быстро решит, то можно его рассматривать. Однако помните, что поиски в Google оплачивать в итоге будете вы. Любой поиск – это отрыв мыслительного процесса от программирования, а это снижает общую эффективность программиста.

П.С.2. Ориентация на курс в некоторой степени уменьшает вероятность появления чужих senior developer (т.е. чужих опытных программистов). Мы сознательно выбрали этот путь. Собеседования показали, что очень часто подавляющее количество таких “senior” не имеют даже базовых знаний по тем технологиям, по которым у них опыт проставлен от года. Очень сложно понять, кто есть кто. Курс решает эту проблему – мы четко понимаем возможности каждого человека в команде.

UPD. Если вы в целом интересуесь процессами совершенствования своей системы – то читайте про Гипотезы и инновации.

Если вам понравилась статья, помогите, пожалуйста с распространением этого материала в Сети.

Неправильный, но быстрый способ стать программистом

Хотите стать программистом? Даже если вы не новичок в IT, то эта затея потребует от вас много времени и усилий, и далеко не факт, что вы окажетесь на коне. Но если у вас совсем нет времени и вы в душе авантюрист, то существует несколько хоть и неправильных, зато действенных способов, которые помогут вам пройти собеседование в IT-компанию и удержаться на плаву. Остальное за вами!

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

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

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

Как я стал программистом

С компьютером я впервые познакомился в 6 лет. В 13 лет у меня уже был свой персональный веб-сайт. В школе учился плохо, в универе тоже. На втором курсе мой друг нашёл работу Java-программистом и настоятельно рекомендовал мне сделать то же самое. Идея заинтриговала. Нужен был план.

Первый шаг — резюме

Первая и основная проблема, с которой сталкиваются новички, — резюме. Без адекватного, цепляющего резюме вас не будут приглашать на собеседования. Но как быть тем, у кого совсем нет опыта работы? Для того чтобы «не с пустыми руками» идти к HR, мы с моим другом вписали мне в резюме целый год опыта работы над его проектом, над которым мы якобы вместе трудились.

Зарплатная политика

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

Позор и стыд

Первые собеседования были провальными. Надо мной буквально смеялись. На первом же техническом собеседовании, где мне дали пару задачек на бумаге, меня раскусили в два счёта. Кто-то даже по-отечески посоветовал книгу Thinking in Java.

Первая работа

В конце концов меня пригласили на собеседование в филиал одной датской компании, где я ответил на фундаментальные вопросы и приятно удивил всех своим английским. Меня взяли на должность Junior Java developer с одним условием — первые три месяца я буду проходить курс SCJP (Sun Certified Java Programmer), который восполнил бы мои пробелы и выковал бы из меня более подготовленного специалиста. Что может быть лучше, чем оплачиваемая стажировка без нужды работать (выдавать свою некомпетентность)? В этой компании я проработал полгода, чтобы через несколько месяцев пойти на повышение в компанию покрупнее.

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

Рекомендации для начинающих программистов

  1. Резюме. Оно должно быть правильно отформатированным и написанным исключительно на английском. Если не хватает опыта, то его можно (и нужно) придумать, но следует подготовиться отвечать за каждое написанное в резюме слово. Например, если у вас там написано JMS (Java Message Service), то вам как минимум следует пройти хоть одну обучалку и поиграться с JMS, поделать какие-нибудь примеры, пускай это и будет банальное «Hello, world!». Теперь вам будет удобнее пускать пыль в глаза, вы ведь и правда «работали с JMS».
  2. Выучите азбуку программирования. Если вы ещё можете позволить себе «плавать» на глубоких уровнях каких-нибудь комплексных технологий вроде Struts и Spring, то неправильные ответы на элементарные вопросы вам никогда не простят. Если вас ночью разбудить, то вы должны уметь рассказать про ООП, наследование, инкапсуляцию, полиморфизм и другие базовые концепции, а также суметь объяснить это всё на примерах.
  3. Практика. Научиться программировать можно, только лишь программируя. Это больно и неприятно (если вы не программист), но другого пути нет. Единственный способ перестать бояться задачек на собеседованиях — порешать их дома самостоятельно.
  4. Читайте книги и проходите туториалы по Java только на английском. Абсолютно все термины программирования проще понимать на языке оригинала, то есть на английском. Читать техническую литературу по Java на русском — себя не уважать. Почему? Потому что, чтобы понимать что-нибудь в духе «…модуль таблицы во многих смыслах представляет собой промежуточный вариант, компромиссный по отношению к сценарию транзакции и модели предметной области», нужно быть поистине гением, которым вы вряд ли являетесь.
  5. Выучите, наконец, английский! В первую очередь это касается разговорного английского. Сложно сосчитать то огромное количество толковых программистов, которых на моей памяти забраковали по одной единственной причине — неудовлетворительный уровень разговорного английского. Нет, если вы, конечно, собираетесь работать программистом где-нибудь в «Киевстаре» или в другой отечественной компании, то ваш уровень языка не будет играть важной роли. Но если вы хотите попасть на работу в международную компанию, то сам бог велел выучить язык. Уровень вашего английского будет конвертироваться в дополнительные сотни долларов прибавки к вашей зарплате.
  6. Знайте рынок. Походите по вакансиям, почитайте требования, поспрашивайте друзей-программистов, сколько они получают. Используйте сервисы, которые позволят составить вам более полную картину о рынке IT. Вы были бы удивлены, узнав о том, насколько велико количество талантливых программистов, которые получают в два раза меньше, чем могли бы, только лишь по причине своей лени и нежелания держать нос по ветру.
  7. Торгуйтесь. Нет ничего предосудительного в том, чтобы торговаться за зарплату. Вашим аргументом в споре может быть как хороший английский, так и предложение о работе в другой компании. Последний аргумент особенно хорошо работает: «Да, но мне в Luxoft предлагают на 300 долларов больше, почему я должен соглашаться на ваши условия? Может, мы могли бы найти компромиссный вариант?». В своё время мне пару раз удалось выторговать дополнительную сотню долларов к своей зарплате, и через год эта сотня долларов дала мне дополнительные 1 800 долларов дохода на ровном месте. Вы должны понимать, что даже для небольших зарубежных IT-компаний лишняя сотня баксов как капля в море.
  8. Найдите себе ментора. Хорошо, если у вас будет более опытный товарищ, который сможет помочь советом и ответить даже на самые глупые вопросы. Благодаря его опыту и моральной поддержке вы будете продвигаться в программировании быстрее, чем в одиночку. Если нет ментора, то неплохо бы сходить на какие-нибудь курсы по программированию, которые не только дадут вам более полную картинку того, чем занимается программист, но и позволят познакомиться с более опытными людьми. Кто знает, может быть, кто-нибудь из них захочет стать вашим ментором.
  9. Начните свой проект. Даже если он будет образцом самых худших практик кодинга и вы его никогда не закончите, по крайней мере у вас будет то дело, ради которого вам захочется разбираться в программировании и изучать новые технологии. Кроме того, у вас появится дополнительная тема для задушевных бесед на собеседованиях.
  10. Ищите работу летом. Во-первых, когда все в отпусках, в компаниях более остро ощущается нехватка кадров и повышается вероятность того, что вас позовут на собеседование. Во-вторых, поскольку ваши конкуренты-соискатели тоже на отдыхе, у вас опять-таки повышаются шансы быть замеченным HR.
  11. Никогда не сдавайтесь. Даже если вам кажется, что вы заваливаете собеседование, важно проявить стойкость и продолжить попытки решить задачу, какой бы сложной она ни казалась. Кто знает, может быть так, что вас именно в этот момент проверяют на усердие в работе!
  12. Избегайте заданий на компьютере. Нет способа быстрее раскусить непрофессионала, чем сразу же бросить его в пекло программирования. Ваша задача — постараться перевести все беседы на высокий уровень, где обсуждаются общие подходы и концепции, но никак не конкретная реализация в решении той или иной задачи. Если вам дали бумагу и ручку и попросили записать решение, то попросите возможность нарисовать его схематически. Таким образом, удалившись от синтаксиса конкретного языка, вы не только убережёте себя от каких-нибудь режущих глаз ошибок, но и покажете, что способны мыслить абстрактно, не вдаваясь так уж сильно в детали.
  13. Начинайте говорить первым. Избегайте ситуаций, когда в воздухе виснет пауза, во время которой в мозгу у интервьюера может созреть очередной коварный вопрос. Как только происходит какая-либо заминка, следует начать рассказывать что-нибудь из того, что вы хорошо знаете. Постарайтесь навязать интервьюеру свою игру.
  14. Старайтесь говорить правду. Если вы никогда не писали PL/SQL процедуры, то лучше об этом сказать прямо. Возможно, в этом для вас будет минус, однако вы убережёте себя от нужды выкручиваться, отвечая на вопрос, в котором ничего не смыслите. Опытный интервьюер за версту почувствует ваши пробелы в знаниях.
  15. Бойтесь маленьких компаний. В небольших компаниях, как правило, небольшие команды. Чем меньше в команде людей, тем быстрее вас раскусят. Ваша цель — большая и неповоротливая корпорация, где вы сможете выиграть для себя немного времени.
  16. Соблюдайте дресс-код. Если вы придёте на собеседование на должность программиста в шикарном костюме, то это вызовет больше подозрения, чем если вы явитесь в шортах или потёртом свитере. Не лишним будет также нацепить очки, мол, «эдакий я книжный червь».
Мастер Йода рекомендует:  Как использовать пользовательские сегменты, отчеты и сводки Google Analytics

Конечно, кто-то знающий может отметить, что приведённый выше рецепт — это скорее способ стать кодером, чем программистом, и он где-то будет прав. Однако дело всё в том, что вы никогда не найдёте вакансию с заголовком «Требуется плохой кодер». Всем нужны программисты. Желательно senior. У которых более пяти лет опыта работы на корпоративных проектах и которые одинаково хорошо владеют сразу несколькими языками программирования, при этом досконально разбираются в СУБД, умеют писать bash-скрипты, хранимые процедуры, знают в совершенстве Linux, TCP/IP, обладают лидерскими качествами, стрессоустойчивостью, коммуникабельностью и ещё массой навыков, «без которых никак».

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

Что нужно знать и уметь джуниору PHP программисту для того чтобы устроится на работу(минимальный набор знаний)?

мне уже за 30, высшего образования нет, уверен это существенные «недостатки» , которые могут, как мне кажется, вызвать ряд вопросов у работодателя.

уметь джуниору PHP программисту для того чтобы устроится на работу(минимальный набор знаний)

Я бы дал ссылочку но там трэш.
ключевые слова двач, программирование, мы вам перезвоним

И вообще на сколько это тяжело по вашему мнению устроится в 2020 году PHP-джуном

учитывая, что до 265 лет я не игрался в песочнице

В свое время на собеседовании мы проверяли знание основ PHP (простенькая задачка на знание синтаксиса), знание ООП в контексте PHP, понимание принципов SOLID, знание основных паттернов, как программных, так и архитектурных. Так как мы занимались Laravel, собственно, знание фреймворка не далее, чем написано в документации. Ну и просили написать небольшой тестовый фрагмент кода, примерно на 1 час работы, который оплачивался, впоследствии, где проверяли умение работать с базой данных, миграциями, небольшое умение верстать и знание основ (!) JS, а также умение писать аккуратно. Git и умение пользоваться редактором кода.

На ошибки внимание не обращалось, если человек хорошо себя показывал, даже, если он ошибся в каких-то вопросах, мы это игнорировали.

Как пройти техническое собеседование: советы девяти программисток

Девять программисток поделились своим опытом прохождения технического собеседования в разных IT-компаниях. Вот какие советы они дали.

Порепетируйте и найдите знакомых в этой компании

Лиа работает программистом в Google и занимается Google Картами и локальным поиском. До этого она проходила практику в Apple и Facebook. Лиа советует отрепетировать собеседование с другом — пусть он сыграет интервьюера, а вы будете писать перед ним алгоритмы на доске. А еще нужно обязательно заранее изучить проекты компании, в которую вы устраиваетесь, чтобы подготовиться к их обсуждению на собеседовании.

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

«Вы удивитесь, как много людей хочет вам помочь, — рассказала Лиа. — Однажды я попросила незнакомого программиста провести для меня экскурсию по офису Twitter, и он не отказался. А я даже не пользовалась этой соцсетью».

Задавайте важные вопросы

Сейдж Франч — разработчик, предпринимательница и автор блога TrendyTechie.ca. Она работает с технологиями блокчейна, смешанной реальности и когнитивных вычислений.

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

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

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

Показывайте любовь к своему делу

Элисон работает frontend-разработчиком в медицинской компании. Однажды ее подруга дала ей очень ценный совет. «Найти человека, который бы выполнял работу, легко, — сказала она. — Гораздо сложнее найти того, кто искренне полюбит эту работу. Именно эту любовь я и ищу у кандидатов».

С тех пор Элисон старается показать свою любовь к делу в резюме и на собеседованиях. Она не только изучает код, но и пишет на различных социальных платформах о своем опыте, ходит на митапы, где знакомится с коллегами по индустрии, и начала работать фрилансером, чтобы собрать портфолио. Кроме того, Элисон работает волонтером в различных организациях, которые помогают обучать людей базовым навыкам программирования.

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

Превратите собеседование в разговор

Стефани работала в таких компаниях, как Google, Facebook, NASA Jet Propulsion Laboratory. Девушка утверждает, что технические собеседования сильно изматывают, поэтому советует следующее:

  • Думайте вслух. Пожалуй, самый распространенный совет для тех, кто проходит техническое собеседование. Говорите все, что думаете, даже если вам кажется, что ваши слова прозвучат глупо. Так интервьюер поймет, как вы обдумываете проблемы и, что самое главное, сможет определить, как вам можно помочь.
  • Задавайте вопросы. Собеседование — это не экзамен, поэтому можно спрашивать о том, что вам непонятно. Чаще всего Стефани использует фразы вроде «что вы имеете в виду?» или «можете привести пример?». На работе вы ведь тоже будете задавать вопросы коллегам.
  • Разговаривайте, а не проводите собеседование. Зачастую бывает неловко объяснять свою мысль умному и опытному программисту. Представьте, что вы общаетесь с другом, которому нужна помощь и вам необходимо объяснить ему какой-то вопрос. Общайтесь с интервьюером на равных и ведите себя максимально расслабленно и повседневно.

Стефани советует помнить, что то, что вас пригласили на техническое собеседование, это уже достижение. Успокойтесь, будьте собой и подготовьтесь ко всему заранее.

Сообщите, если вам нужны особые условия работы

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

Не бойтесь ответить на вопрос с ошибкой

Джонна Рутч разрабатывает цифровые решения для клиентов компании Credera. Она считает, что каждый может ошибаться и на собеседованиях никто не ждет от вас энциклопедических знаний того или иного языка программирования, фреймворка или алгоритма. Если вы в чем-то неуверены, проговорите свои доводы вслух. Лучше пройти 90% пути к правильному ответу, чем сидеть молча и выдать стопроцентно неправильный ответ.

Будьте собой

Такой совет дала девушка по имени Рэйчел, которая увлекается медицинскими технологиями и прошла программу Google Summer of Code.

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

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

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

Подробно рассказывайте о ваших предыдущих проектах

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

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

Не забывайте о своих личных качествах

Оливия Шэнли — программист по образованию. Она считает, что личные качества могут выделить вас на фоне других кандидатов с аналогичными техническими навыками. К таким качествам относится умение адаптироваться и работать в коллективе, энтузиазм, креативность и критическое мышление.

Материалы по теме:

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

/dev/energy

Сайт о том, как стать программистом и как с этим жить потом

Собеседование на позицию Junior-разработчика. К чему быть готовым?

Давно я не публиковал статьи для начинающих программистов. Сегодня будет материал как раз для них.
Мы поговорим о том, как и к чему готовиться, собираясь на своё первое собеседование.

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

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

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

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

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

Меня зовут Петр Иванов. Я очень целеустремленный и легкообучаемый программист.
Я бы очень хотел работать в вашей компании.

Здесь помимо недостатка информации имеют место шаблонные фразы. Рынок кишмя кишит целеустремленными и легкообучаемыми.
Все письмо построено от позиции «Я крутой, наймите меня». Оно кричит, а выскочки без опыта мало кому понравятся.
Поэтому давайте попробуем составить письмо, которое будет приятно для работодателя.

Опишите в письме свои наиболее интересные на Ваш взгляд проекты, точки заинтересованности в компании. Не старайтесь высасывать из пальца достижения.
Всем прекрасно понятно, что Вы Junior, и ожидать от Вас сверхспособностей никто не станет. Работодателю нужен человек, который заинтересован в том, чтобы обучаться и расти.
Вы написали игру «Крестики-нолики»? Выложите её на github! Покажите, как Вы строите код. Ещё лучше, если Вы покажите, что пользуетесь версионированием постоянно. Сейчас Ваш код говорит за Вас.

Стройте письмо от позиции сотрудничества. В первом примере письма кандидат напоминает рекламный баннер, который хочется поскорее закрыть, потому что он пестрит, но несет никакой пользы. Отвлекает одним словом. Поставьте себя на место работодателя. Чего Вы бы ждали от кандидата? Будьте предельно честны в этом ответе.

Давайте попробуем написать письмо, которое заинтересует работодателя.

Меня зовут Петр Иванов. Меня очень заинтересовала предложенная Вами вакансия на сайте xx.ru.
Мне интересно развиваться в компании, которая занимается %вписать необходимое%.

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

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

Заранее спасибо!
С уважением,
П.Иванов
p.ivanov@somemail.com
+7 999 123 4567

Что мы улучшили в данном письме в сравнении с предыдущим помимо увеличения объема написанных слов?

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

Перед собеседованием
И вот, Вас пригласили. Время и дата назначены, отсчёт пошёл. Что же делать в это время Вам?
Однозначно, не стоит пытаться впихнуть в себя какие-то новые для Вас систему или подход к разработке. Это только породит хаос в Вашем сознании.
Работать нужно над имеющимися данными. Наверняка к этому времени Вы поймёте, где у Вас есть пробелы — старайтесь работать над их закрытием.

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

Теперь о банальном. Не опаздывайте на собеседование. Приезжайте минут за 10-15 до начала. Держитесь на связи. Если у Вас появляются непредвиденные обстоятельства, которые мешают Вам приехать на встречу, позвоните и предупредите о них своё контактное лицо. Но не играйте в молчанку. Уважайте чужое рабочее время!

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

Ни в коем случае не стоит врать или общаться агрессивно. Как было сказано выше, уважайте чужую работу. Однако я замечаю одну нехорошую тенденцию. Интервьюеры стали проверять кандидата на стрессоустойчивость, провоцируя на агрессию. Вам могут задавать неприятные вопросы, говорить неприятные вещи в духе: «Ну хорошо, давайте посмотрим, чем Вы нам можете быть полезны. Это что, всё? И вот Вы правда столько денег за это хотите?». И прочее. Я являюсь противником такого общения на собеседовании, так как всё, что оно может показать — это неадекватность интервьюера, которые прочитал про такой подход где-то в книжке и теперь самоутверждается за счёт этого. Но такие ситуации встречаются. Просто не обращайте на них внимания, если увидите, что другие участники процесса общаются спокойно. Это покажет Вас как стрессоустойчивового кандидата, что будет являться большим плюсом.

После этого Вам предстоит общение с кем-то из команды IT. Здесь общение будет идти на тему Вашего опыта. Задачи могут быть самые разные. Обычно в начале идут теоретические вопросы, а также вопросы, отстраненные от программирования и направленные на логику. Далее возможно будет сессия программирования.

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

Если формализовать подход к ответу на вопрос, то можно вывести несложный алгоритм

1. Выслушайте задачу. При необходимости попросите повторить вопрос или перечитайте постановку задачи.
2. Возьмите 1-2 минуты на то, чтобы подумать над задачей. В это время подумайте над тем, что вызывает у Вас сомнения в этой задаче. Что Вам непонятно в ней? Что бы Вы уточнили?
3. Задайте уточняющие вопросы. Это крайне важный шаг. То, что Вы не броситесь на решение, уже будет для Вас большим плюсом! Задайте вопросы, которые возникли у Вас в пункте 2. После того, как на 100% поймёте постановку задачи, приступайте к решению.
4. Начинайте рассуждать. Рисуйте. Проектируйте. Код должен идти в последнюю очередь — здесь Вам надо показать Ваш стратегический и концептуальный подход. Это залог того, что решение будет реализовано не «в лоб», а с применением обдуманого алгоритма.
5. Если до этого дойдёт, начинайте программировать. Код должен быть «чистым» по определениям Роберта Мартина и соответствовать минимальным стандартам, если таковые установлены для выбранного Вами языка программирования.

Собеседование может длиться от 1 до 3 часов, но Junior-ов обычно долго не мучают. Однако, закладывайтесь на эти цифры. А ешё лучше — спросите о времени заранее, если Вам важно понимать, сколько Вы будете находиться на собеседовании.

После собеседования
Первое, к чему стоит быть готовым, это то, что результат Вам сообщат не сразу. Скорее всего, Вам скажут дежурную фразу «Мы свяжемся с Вами». Она совершенно не означает, что Вы «в пролете». Наоборот, многим компаниям требуется время на сбор обратной связи от интервьюеров и формирование ответа кандидату. Тем не менее, если Вы не получили ответа в течение рабочей недели, прошедшей с момента собеседования, Вы имеете полное право на то, чтобы написать HR-специалисту, который приглашал Вас на собеседование.

Мастер Йода рекомендует:  10 лучших инструментов для хакинга в 2020 году

Помните, что никто не гарантирует Вам успеха даже при полном соответствии тому, что Вы прочитали здесь или где-то ещё. Каждый работодатель ищет своего кандидата, а это значит, что на самом деле нет универсального поведения, которое будет делать из Вас идеального кандидата.

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

Если делать всё правильно, что в очень скором времени Вас будет ожидать заветное письмо с темой «Job offer for Peter Ivanov»!

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

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

Все, что нужно знать программисту для собеседования

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

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

Очень многое зависит полученной специальности в образовательной организации. Сейчас наблюдается повышенный интерес на IT специалистов, окончивших курсы Школы DevEducation. Это обуславливается тем, что в данной организации преподают настоящие профессионалы своего дела, а учебные программы в полной мере соответствуют современным тенденциям.

Как же правильно подготовиться к собеседованию?

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

Чтобы не попасть впросак, проведите небольшое исследование:

  • поинтересуйтесь деятельностью компании;
  • размером штата;
  • количеством филиалов;
  • ознакомьтесь с локальным офисом;
  • внимательно прочитайте описание вакансии;
  • исследуйте продукт, над которым возможно придется работать

Подготовьтесь к вопросу: «Почему Вы выбрали именно вакансию в нашей компании?». Отвечая, акцентируйте внимание на Вашей заинтересованности в профессиональном росте и развитии, и на том, что выбранная компания позволит Вам это сделать.

Сбивает с толку большинство респондентов просьба рассказать что-то о себе. Работодателя на данном этапе не интересует Ваша любимая книга, фильм или увлечение. Ответ на этот вопрос необходимо формулировать, опираясь на опыт, который может Вам понадобиться на вакантной должности. Если это первое собеседование программиста, то стоит сообщить работодателю о:

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

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

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

Помните собеседование с работодателем – не интервью

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

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

Записки программиста

Мой скромный опыт в роли HR

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

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

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

Затем мы пишем текст вакансии. Если у вас открыто более одной позиции, не поленитесь написать более одной вакансии. Исключение из этого правила составляет случай, когда открыто две абсолютно одинаковые позиции (один отдел, один офис, одна должность, …). В тексте должны содержаться ответы на следующие вопросы. Кто работодатель? Где получить дополнительную информацию о нем? Где находится офис (адрес, ближайшее метро), можно ли работать удаленно? Что за должность? Какими задачами предстоит заниматься на этой должности? Знание каких технологий и на каком уровне требуется от кандидата? Какая вилка? Белая ли зарплата? Дополнительные требования — минимальный опыт работы, образование и тд. Гибкость графика, соц пакет, прочие плюшки. Как откликнуться на вакансию?

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

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

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

Для связи с кандидатами лучше всего использовать электропочту. Одновременно общаться с несколькими десятками людей совсем не так просто, как кажется, и может сильно изматывать. Чтобы не забыть, что кто-то из кандидатов ожидает ответа, используйте следующею схему. Если письмо лежит в вашем «Inbox», значит вы должны что-то на него ответить. Если письмо перенесено в папочку «HR», значит вы на него уже как-то отреагировали и мячик теперь на стороне кандидата. Соответственно, GMail может оказаться не самым подходящим инструментом. Посмотрите на что-нибудь более похожее на Thunderbird или The Bat. Лично я предпочитаю Claws Mail.

Итак, вам на почту сыпется огромный поток резюме. Не спешите радоваться. Печально, но факт — более половины кандидатов скорее всего ни на что не годятся. Особенно если вы имели неосторожность написать, что ищете человека без опыта на удаленную работу и готовы платить ему кучу денег. К счастью, с большой точностью определить сомнительного кандидата обычно не сложно. Типичные признаки — куча ключевых слов в резюме при скромном опыте работы (никто и никогда не становился экспертом в PostgreSQL, MySQL, SQLite, Riak, RabbitMQ, MongoDB, Cassandra, Hadoop, Tarantool, Memcached и Redis за полтора года работы в одной-единственной компании), частая смена места работы, текст с ошибками и множеством смайликов, окончание института три месяца назад, резюме в формате docx.

Если вы сомневаетесь в кандидате, предложите ему тестовое задание. Как придумать хорошее тестовое задание — это отдельная тема. Задание должно быть не слишком унылым, более-менее соответствовать задачам, которые предстоит решать кандидату, и решатся за несколько часов работы в спокойном режиме. Например, около года назад мы искали программистов на Erlang, и в качестве тестового задания предлагали написать простенький socks5 прокси. Теперь GitHub кишит проксями на Erlang, и нам пришлось придумать новые задачки 🙂

Опыт показывает, что 95% кандидатов бесследно исчезают после получения текста задания. А те 5%, которые что-то присылают (пусть даже решение содержит пару ошибок), оказываются довольно интересными кандидатами. Так что, тестовые задания представляют собой хороший фильтр. Не имеет смысла ограничивать время на решение задачи. Если кандидат способен ее решить, то пришлет решение в течение недели, если нет — никогда не пришлет. Не давайте задачки кандидатам, которые кажутся подходящими. Они могут просто не найти времени на их решение, и в результате вы зря отсеете хорошего кандидата.

Теперь у нас есть множество предположительно неплохих кандидатов. Договоритесь с ними о дате и времени собеседования. По пришествии к консенсусу напишите резюмирующее письмо с днем недели, числом, месяцем и точным времени, о котором вы договорились. Укажите адрес вашего офиса, по возможности прикрепите схему, как до вас добраться. Объясните, на какой этаж нужно подняться, в какую дверь позвонить, кого спросить. Если на проходной нужно показать паспорт, напишите об этом. На всякий случай укажите свой мобильный телефон. Предварительно убедитесь, что у вас есть свободная комната и забронируйте ее на соответствующее время. Если кандидат находится в другом городе, можно пособеседовать его по Skype. В этом случае протокол тот же, только вместо адреса сообщите ваш идентификатор в Skype.

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

На собеседовании не должно присутствовать слишком много народу. Максимум — четыре человека, включая самого кандидата. Обычно собеседование длится часа полтора. Вопреки интуиции, это очень мало времени, поэтому придерживайтесь плана и графика. Хорошо зарекомендовал себя следующий план собеседования. Первые 10 минут — знакомство и небольшой рассказ о компании. Следующие 40 минут кандидат задает возникшие у него вопросы, а вы задаете вопросы, возникшие к кандидату. Не лишено смысла заготовить список вопросов. Из расчета 2-3 минуты на то, чтобы ответить на один вопрос, получаем, что вопросов может быть максимум штук 20. Вопросы должны соответствовать позиции. Если вы не работаете с Mnesia и эрланговыми релизами, нет смысла спрашивать о них. Вопросы с подвохом лучше либо вообще не задавать, либо поместить их в конце списка. Вопросы типа «почему канализационные люки обычно круглые» или «сколько шариков для гольфа помещается в Боинг» задавать не следует, если только вы не собеседуете сантехника или пилота. Это просто пустая трата вашего времени.

В конце собеседования дайте кандидату пару задачек для решения на бумаге. Задачи должны быть не слишком сложными и подобраны так, чтобы на их решение уходило минут двадцать. Плюс 10 минут на то, чтобы объяснить задачи и ответить на вопросы, возникшие у кандидата. Еще 10 минут на то, чтобы проверить решение и попрощаться. Как видите, времени в обрез. Пока кандидат решает задачи, можно оставить его одного и обменяться с коллегами своими впечатлениями. Сами по себе задачи хоть и не являются решающим фактором при приеме на работу, но при этом выступают важным критерием. Если кандидат не смог даже скобочки в строке посчитать, то с ним и разговаривать не о чем. Аналогично, если он решил задачу, которую почему-то решает только 10% кандидатов, это огромный плюс. Само собой разумеется, если кандидат присылал вам по почте решение тестового задания, не стоит давать ему задачки на бумаге. Вместо этого лучше пообщайтесь с ним побольше или просто сэкономьте пол часа своего времени.

Сообщите кандидату, сколько ему ждать от вас какого-нибудь ответа. Типичный срок — две недели. Если поток резюме уже почти весь разобран, можно пообещать ответить через неделю. Сделайте напоминалку в календаре или Trello, чтобы не забыть! Если сразу видно, что кандидат слабый и не получит офер, сообщите об этом на собеседовании. Заодно укажите на области, в которых кандидат слаб, посоветуйте ему литературу для прокачки этих областей. Кто знает, может вы захотите взять его через полгода.

Сразу после собеседования запищите все, что вы думаете о кандидате, в Trello, Jira, или что вы там используете. Попросите об этом же ваших коллег, которые также участвовали в собеседовании. Без этих пометок через две недели вы ни за что не вспомните, кто вам больше понравился — Иван Иванов или Петр Петров.

Далее возможно два исхода. Либо кандидат не подходит и ему пишется об этом письмо, либо подходит, и тогда проводится микро собеседование, на котором вы узнаете, сколько денег хочет кандидат, когда он готов выйти на работу и так далее. По результатам этого собеседования делается официальный офер. Удачная формулировка в случае, если кандидат не подходит — «к сожалению, в настоящее время мы не готовы сделать вам офер». Не следует скупиться на пожелания профессионального роста и приглашения повторно прийти на собеседование через полгода.

Во время собеседования обратите внимание на то, насколько понятно кандидат излагает свои мысли, помыл ли он голову перед собеседованием и так далее. Сможете ли вы работать с этим человеком? Если вы считаете себя очень умным и полагаете, что не наделаете ошибок во время собеседования, то ошибаетесь! Чтобы была хоть какая-то рефлексия, обязательно возьмите с собой более опытного в этих вопросах коллегу. Например, типичная ошибка — задавать кандидату вопросы и самому же отвечать на них. Да-да, вы сделаете эту ошибку, не сомневайтесь! Еще одна ошибка — вы задаете кандидату вопрос, он отвечает вам в форме вопроса, а вы отвечаете на этот вопрос.

— Сколько индексов нужно для эффективного выполнения этого запроса?
— Три?
— Нет.
— Два?

— Сколько индексов нужно для эффективного выполнения этого запроса?
— Три?
— Вы меня спрашиваете? Это вы должны мне ответить!

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

Обязательно узнайте у кандидата, почему он желает сменить место работы. «Мало платят» или «идиот-начальник» — это плохие причины. «Я там уже три года, скучно» считается хорошим ответом. Вас не должно особо волновать, о каких технологиях кандидат почитывает книги или как классно он использует MongoDB в своем pet project. Равно как и то, с чем он работал два года назад. Спрашивайте его о том, чем он конкретно сейчас занимается и с чем конкретно сейчас работает.

Если кандидат утверждает, что пишет на Erlang, расспросите его с пристрастием про Erlang. Если он работает с PostgreSQL, спросите его, что он помнит про первые три нормальные формы, какие уровни изоляции бывают и в каких запросах СУБД применяет bitmap scans. Это то, с чем сейчас кандидат работает. Он обязан это знать. Отмазаться, что мало с этим работал или работал давно и все забылось, не прокатит. По своему опыту могу сказать, что редкий кандидат помнит вторую нормальную форму и когда-нибудь слышал про уровни изоляции. Если кандидат отвечает на эти вопросы, берите не думая! Если выясняется, что кандидат почти ничего не знает о технологиях, с которыми он сейчас якобы работает, или, еще хуже, он просто так написал в резюме кучу умных слов, это повод послать его лесом.

Возникает закономерный вопрос, неужели программисты должны всем этим заниматься? Подозреваю, что нет. Существенную часть работы, касающуюся переписки с кандидатами, бронирования комнат и так далее можно на кого-нибудь переложить. Но я глубоко убежден, что только другой программист может нормально провести техническое собеседование. Или очень-очень крутой HR, но существование таких находится под большим вопросом. Если вы работаете в компании, где HR или, о Скотче, кадровое агентство, приводит вам какого-то мальчика, которого никто никогда не видел, и говорит «это Петя, теперь он пишет код вместе с вами», значит настала пора валить!

Если у вас есть вопросы, я постараюсь ответить на них в комментариях. У меня, между прочем, тоже для вас вопрос. Как происходит подбор персонала там, где вы работаете?

Дополнение: А в этой заметке tonsky рассказывает о том, как в свое время нанимали людей в Echo.

Добавить комментарий