28 октября 2015 г.Редакция Портала SaaS.RU

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

Отбор кандидата на должность программиста — нелегкое, часто неблагодарное, но все-таки интересное занятие. Как раскрыть все таланты кодера и обзавестись собственным Нео? Читайте в нашей статье.

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


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


Подбор специалистов в IT-отдел


Кому-то везет

Один довольно известный в русскоязычном интернет-пространстве бизнесмен, Антон Кленов, начинал в 2000-х годах именно с программирования. Точнее, главным было желание «удрать» куда подальше из страны, для чего был избран необычный на тот момент способ податься в мастера кода. Литературы по этому направлению продавалось немного, обучение было не по карману, и бизнесмен пошел ва-банк: подал свое резюме в очень солидную немецкую компанию. Ситуация осложнялась тем, что английский и немецкий он знал на школьном, то есть практически нулевом, уровне.

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


По пути во Франкфурт-на-Майне будущий «программист» добросовестно вызубрил книжку со шпаргалками по PHP и Java, а по прилету с энтузиазмом взялся за работу (вот она, сила безвыходного положения). За неделю ему удалось одолеть месячный объем работы, а еще через пару месяцев он получал гонорар, сравнимый с тремя средними московскими зарплатами, и ездил на служебном авто с шофером.

Источник: twitter.com

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


Программист или самозванец: как определить уровень кандидата?


Никому не верить!

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

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


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

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


Образование для программиста не так важно. Да, в некоторых сферах без нескольких лет мехмата за плечами далеко не продвинуться, но у многих известных программистов даже профильного образования нет вообще. Гораздо важнее инициативность специалиста, готовность постоянно учиться и обновлять свои знания. Чтобы быть в «тонусе», нужно регулярно изучать тематические блоги, общаться на специализированных ресурсах, просматривать конференции. Активность в opensource тоже один из больших плюсов.

Источник: diary.ru


Образование в Сети: где и чему можно научиться в интернете


Тестовое задание: ищем самую суть


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


Часто в качестве тестового задания рекрутеры предлагают специалисту решить несколько головоломок задач на логику. Или просто задают пару каверзных вопросов. Таким подходом к отбору кандидатов славятся крупные IT-компании, такие как Google или Microsoft. Вот несколько примеров:


«Объясните, что такое База Данных в 3 предложениях так, как будто перед вами ваш 8-летний племянник»


«Сколько бейсбольных мячей поместится в обычный школьный автобус?»


«Почему крышки у канализационных люков именно круглой формы?»

Источник:habrahabr.ru


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


Как проверить идею стартапа и собрать команду мечты?


Другие варианты практического задания


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


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


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


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


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


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


Как запустить стартап, не написав ни строчки кода?


На что еще обратить внимание?


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


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


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


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


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


Image source: internet archive bookimages