{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Найм программистов. Советы от программиста

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

Мои впечатления? Я в печали... Почти все материалы, на мой взгляд, напоминают «вредные советы».

В особенности «порадовала» последняя прочитанная статья: «25 классических вопросов, которые HR-ы задают программистам на собеседованиях» ( ссылка ), после прочтения которой и возникло желание написать данный материал.

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

Итак...

Первая встреча, собеседование без тех специалиста

HR-ы, не обманывайте себя. Вы никогда не поймёте на сколько хорош программист

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

И поверьте, этого достаточно.

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

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

Что ещё можно спросить на первом этапе? Зависит от специфики вакансии.

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

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

Собранной на первом этапе информации хватит чтобы отсеять 80% - 90% кандидатов.

Часть вторая. Собеседование с тех специалистом

НЕ НАДО СПРАШИВАТЬ ТЕОРИЮ!

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

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

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

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

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

Что же, по моему, нужно спрашивать у кандидата?

Спрашивайте технические нюансы из их предыдущего опыта, особенно те, которые пересекаются с будущей работой.

По тому, как человек рассказывает, будет понятно:

  1. Реально ли он разбирается в вопросе или просто придумал эти пункты для набивания себе цены.
  2. На сколько его опыт и знания подходят для текущей вакансии.
  3. Сможет ли он справиться с будущей работой.
  4. Сможет ли он научиться, если не имеет подобного опыта.

И, как мне кажется, этого достаточно, чтобы сделать финальный выбор.

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

Для дискуссий приглашаю в комментарии.

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

0
453 комментария
Написать комментарий...
Максим Федоров

Немного мыслей:

1. Теория. Нужна, так или иначе.
- Ну очень глупо доверять веб-разработку человеку, не понимающему HTTP
- Как брать человека в команду на проект без понимания SOLID?
- Как брать специалиста, который не умеет думать? Спрашивать "Справитесь ли вы?" Серьезно?!

Но справедливости ради расскажу такой случай. Я относительно молодой спец-т, всего полтора года. Собеседовался в Рамблер и мне в реалтайме дали задание по 5 пыхе на англ языке -- это все ладно, но задания были чисто по синтаксису, точнее его потаенным местам. Так как я развивался и работал только в 2017-18 годах (эпоха 7 пыхи), то конечно я больше заморочен на ООП, СОЛИДЕ и архитектуре, нежели на синтаксисе языка... крч не очень удачно прошел его :(

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

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

...

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

...

К проблеме бы я отнес вот какой момент -- не очень тщательно прорабатывают кандидатов и приходится по телефону выяснять все ли так, как в вакансии, кого ищут и как все работает,
а то зовут на бекенд, а на собесе JS фреймворки всплывает на 70% работы

Ответить
Развернуть ветку
DEVVEB Constantine
Автор
1. Теория. Нужна, так или иначе.
- Ну очень глупо доверять веб-разработку человеку, не понимающему HTTP
- Как брать человека в команду на проект без понимания SOLID?
- Как брать специалиста, который не умеет думать? Спрашивать "Справитесь ли вы?" Серьезно?!

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

По поводу SOLID и ООП в целом - функциональщики негодуют... А если серьезно, в реальных проектах все эти принципы и модели далеко не всегда применимы. К тому же в каждой компании есть свои правила написания кода, некоторые по моделям, некоторые нет.

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

2. Тестовые задания

Ни разу не делал. Жалко время терять. Хотите посмотреть мой код, вот вам гитхаб.

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

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

Ответить
Развернуть ветку
Максим Федоров

По TDD согласен, но TDD разработка тянет много чего кроме "можно научиться Юнит-тест писать за 10 минут", я об этом

По поводу фронтендер без HTTP, функциональщик без SOLID -- это уже узкие нюансы... понятное дело я говорил про SOLID для ООП, HTTP для веб бека :)

Но все так или иначе увязано с теорией, я еще про БД промолчал...

Ответить
Развернуть ветку
DEVVEB Constantine
Автор

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

Затем когда пришло время написать эти самые тесты - открыл маленькую статейку, за 5 минут прочитал, за вторые 5 минут написал тест.

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

Ответить
Развернуть ветку
Nikita

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

Ответить
Развернуть ветку
DEVVEB Constantine
Автор

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

Ответить
Развернуть ветку
Nikita

Именно, и это не гуглится.

Ответить
Развернуть ветку
DEVVEB Constantine
Автор
По моему, если ответ на Ваш вопрос лежит по первой ссылке в гугле, то спрашивать его не имеет смысла.
Прошу обратить внимание, более сложные тесты уже относятся к вопросам об опыте, о которых далее.
Ответить
Развернуть ветку
Nikita

Я не знаю что такое «более сложные тесты». Иногда даже простые тесты не напишешь для лапшиобразного кода.

Научиться их писать не тяжело. Зачем тратить и своё и чужое время на такие вопросы?

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

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

Ответить
Развернуть ветку
DEVVEB Constantine
Автор

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

Ответить
Развернуть ветку
Nikita

Опыт значит важен, а вопросы на его выявление - нет. А как тогда оценить опыт? Чем вопросы про тесты не вопрос про опыт, например?

Понимание важности тестов приходит или с опытом, или при попадании в правильную команду, что тоже ценно.

Ответить
Развернуть ветку
DEVVEB Constantine
Автор

Прочитайте пожалуйста статью ещё раз.

Я советую спрашивать о технической реализации задач из их опыта.

Как Я понял по последним Вашим комментариям Вам просто охота поспорить?

Ответить
Развернуть ветку
Nikita

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

Затем когда пришло время написать эти самые тесты - открыл маленькую статейку, за 5 минут прочитал, за вторые 5 минут написал тест.

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

Ответить
Развернуть ветку
DEVVEB Constantine
Автор

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

Так понятно?

Ответить
Развернуть ветку
Nikita

Я не знаю что такое "хороший код" для вас. Это субъективный критерий. Для меня это в том числе и код, который легко покрывается тестами. То есть нельзя писать хороший код, если ты не умеешь в тестирование.

Ответить
Развернуть ветку
DEVVEB Constantine
Автор

Да не особо и субъективный, есть общие правила и во многих компаниях они схожи.

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

Ответить
Развернуть ветку
Nikita

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

Ответить
Развернуть ветку
450 комментариев
Раскрывать всегда