Pull to refresh

3 совета для разработчиков по результатам 20 собеседований

Reading time7 min
Views16K
Original author: Liu Zheng

На глаза попалась статья о приеме разработчиков на работу. Мы сейчас тоже ищем разработчиков, поэтому тема откликнулась. Автор статьи провел 20 собеседований и делится опытом, попутно давая советы соискателям. Мы, конечно же, провели гораздо больше собеседований и понимаем, что в этом деле не всё так однозначно, как пишет программист из США. И хотя статья достаточно спорная, я всё же решил поделиться и узнать, а как она вам? 

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

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

В переводе статьи речь идет уже о счастливчиках, кто все-таки добрался до этапа собеседования. Вот и сама статья.


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

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

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

«О, круто! Еще один эксперт по Python, Node.js, C++, базам данных SQL и noSQL, а также почти по всем технологиям, о которых я слышал!»

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

Я не спорю: вы не должны стесняться демонстрировать в своем резюме всё, на что способны. Однако проблема в другом: многие кандидаты утверждают, что они владеют этими навыками, несмотря на то, что на самом деле все их знания — это пара (ну ладно, тройка) уроков на Stepik. Мало того, что это дает работодателям ложные надежды, но и попросту перечеркивает все усилия соискателя. Когда выяснится, что ваши знания гораздо слабее даже их самых низких ожиданий, впечатление о вас как о достойном кандидате будет испорчено.

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

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

  • Знаю ли я, как это работает? Понимаю ли я это на более глубоком уровне (подробнее смотри ниже совет 2)?

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

Если кто-то говорит, что владеет SQL, то он по меньшей мере должен знать, как и когда создавать индекс. Я лично ожидал этого минимума от кандидатов. Когда кто-то не оправдывал моих ожиданий, приходилось делать в отчете пометки: «Кандидат в своем резюме утверждал, что владеет [определенными навыками], но на собеседовании не ответил даже на [мои вопросы]». Как вы думаете, стоит ли рассматривать дальше вашу кандидатуру?

Что думаю я

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

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

«Какой уровень знаний мне нужен, чтобы освоить язык программирования и меня взяли на работу за 300К в наносекунду?»

«Я разработчик Python. Мне действительно нужно разбираться в указателях и управлении памятью?»

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

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

  • Я уже упомянул SQL и индекс. Если вы работаете с SQL ежедневно, то, скорее всего, вы уже умеете создавать индексы для ускорения определенных запросов. В таком случае не стоит останавливаться на этих знаниях. Постарайтесь понять, как работает индекс: например, как работают B-дерево и B+дерево и почему их можно использовать для реализации индексов. Почему индекс может ускорить запрос и как система управления базами данных (СУБД) принимает решения, какой индекс использовать при выполнении запроса («план выполнения запроса»).

  • Это нормально, если вы выполняете повседневную работу, используя высокоуровневые языки, такие как Python или JavaScript, но вы точно потом скажете себе спасибо, если углубитесь в изучение нюансов работы указателей, ссылок, heap и стеков. При этом вам не обязательно разбираться во внутреннем устройстве Python (реализация PyObject на C/C++). Зная, например, как работают указатели и ссылки, вы по крайней мере не удивитесь, если объект, переданный в функцию, изменен (или не изменен) на месте. Если вы знаете, как коды хранятся в памяти в виде инструкций, вы не впадете в ступор, если кто-то попросит вас изучить байт-код, сгенерированный функцией dis.

  • Если вы используете современные фреймворки для реализации веб-приложений, знание протоколов HTTP и TCP может вам очень помочь.

Что думаю я

Тут всё достаточно просто. Знания кандидата должны прежде всего соответствовать требованиям вакансии. Если квалификация у него выше, он и будет искать себе работу получше. А если работодатель требует от кандидата больше того,  чем написано в вакансии, готов ли он и платить сотруднику больше? 

Совет 3. Программирование копипастом из Google (или Stack Overflow) не делает вас разработчиком.

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

Да, с момента, как Google и Stack Overflow стали суперэффективными инструментами для поиска узкопрофильной информации, многие кандидаты удивляются, если их просят написать код прямо на собеседовании.

«В конце концов вы нанимаете программистов для решения задач, а не для ответов на экзаменационные вопросы».

«Я всегда могу найти в интернете фрагмент кода, чтобы решить проблему. Это ли не доказывает, что я быстро учусь?»

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

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

Что думаю я 

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

Послесловие

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

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

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

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

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

Tags:
Hubs:
Total votes 22: ↑6 and ↓16-10
Comments46

Articles