Представьте что вы мебельщик-краснодеревщик, который заходит в мебельный магазин или на производство. Оглядев предлагаемые товары, вы осознаете, что создать такое может только человек, который даже на ремесленном уровне слаб. Это не просто дешевый эконом-класс (может быть товары даже дорогие), это именно слабость на ремесленном уровне. К чему я это говорю? Если вам кажется, что в отрасли программирования работают профессиональные инженеры – я вас немного разочарую. Людей, которые даже на ремесленном уровне слабы – более чем достаточно. Один из коллег, сравнительно недавно, с некоторой гордостью в голосе заявил что за всю карьеру он не нашел применения полиморфизма. Поясню – это один из 3 базовых принципов объектно-ориентированного программирования (ООП), если кто не в курсе. Проблема в том, что даже на текущем проекте мест для применения вагон и маленькая тележка и если бы такие люди применяли подобные принципы в работе – проект был бы проще в поддержке в разы. А в объеме – возможно в 10 раз.
Откуда такое берется? Проблемы, на мой взгляд, две. Первая – уровень образования. Вторая – технология подбора персонала. По первой я уже частично писал в этом посте, а вот про вторую хочется немножко поразмышлять.
За свою карьеру я посетил сотню собеседований. И технических, и психологических, и встреч с руководителями разного уровня, да и просто ознакомительные имели место. Меня просили делать все что угодно, но почти никогда не просили сделать одну простую вещь – написать простенький код. Лично я убежден, что один из лучших способов определения квалификации программиста – задачка часа на 4 для домашней реализации. Примеры таких задачек я опишу в отдельном посте, а пока поразмышляем о проблемных местах. Для предлагаемой мой методики есть одна проблема – вы не можете гарантировать, что задачу выполнит соискатель. Причем если вы выбираете разработчика SQL – то этой проблемы нет. Дайте ему ноутбук с базой данных и попросите написать несколько скриптов. Накопительный итог, например.
Какие же я методики отбора проходил? Начнем с самой популярной – тесты. Причем неважно задает ли вопросы испытатель или соискателю вручается бумажка с вопросами. Методика, разумеется, имеет место быть. Она позволяет отсеять самых трешовых соискателей. А вот с остальными – проблема. Мы не знаем - нашли ли они ответ в гугле, знают ли на собственном опыте, узнали на прошлом собеседовании или просто ткнули пальцем в небо и угадали. Все эти варианты я применял на практике. Некоторые из них привели к успеху и получению оффера. Проблема в том, что ни один из этих вариантов не говорит о моей квалификации как разработчика. Скажете что «знание на собственном опыте» говорит? Тогда промотайте пост наверх и увидите историю про человека, который знает про инструменты, но не считает нужным использовать.
Второй самый популярный метод отбора – беседа с кадровиком. Своим личным опытом я уже делился. Что можно добавить? Мы никогда не знаем что в голове оппонента. Предположим, кадровик задает вопрос, на который есть несколько вариантов ответа, причем один из них каноничный, несколько спорных и ряд дегенеративных. Например «является ли земля плоской?». Так вот – предположим, мне как соискателю, все равно где работать, с плоскоземельщиками или нет. Но что хочет услышать мой оппонент? Правильный ответ? Заумный ответ? Проверить, не плоскоземельщик ли я? Видимо надо гадать. Искать вариант, который нужен кадровику, а не правильный. Скажете, что вопрос некорректен и слишком безумен? Ну, может быть. Давайте возьмем вопрос «получше». «Кем вы себя видите через 5 лет?», «На какую зарплату претендуете?», «Какими бы проектами хотели заниматься?». Стало лучше? Или кто-то сейчас мне расскажет, что ответы на эти вопросы имеют сакральное значение? Так вот – из-за того что в моем опыте работы имеются эпизоды работы в компаниях, занимающихся оценкой кадров, я на такие вопросы всегда стараюсь ответить не правду, а примерно то что хочет услышать задающий вопрос. Иногда они совпадают, а иногда – нет. Ну и итог – на квалификацию разработчика этот метод никак не повлияет. Можно отсеять высококвалифицированного специалиста, можно пропустить дегенерата.
Есть еще и компании с небольшим «подвохом». Представьте, что вы приходите в относительно надежную успешную компанию. Вы проходите ряд собеседований, беседы с руководителями, получаете нормальное предложение и устраиваетесь. Проходит некоторое время и вы узнаете, что набор кадров ведется довольно без разборный с целью попытаться выжать пользу из сотрудника в другой команде, на другом проекте или еще как-то. Лично я, если бы услышал о подобном – сразу бы засомневался в себе. Меня взяли за квалификацию или просто брали всех подряд?!
Давайте закругляться. Идеального решения – нет. В моем опыте были собеседования, где давались тестовые задания в виде целых тестовых приложений, на разработку которых нужно потратить время. А были и собеседования, где первым и единственным вопросом был «Когда вы сможете выйти на работу?». Устраивают подобные компании соискателей или нет – личное дело каждого. В конце концов – будучи молодым специалистом, не всегда можно «капризничать» при выборе места работы. Конечно, что все эти методы можно сочетать, применить несколько и вроде как через это сито пройдут высококлассные специалисты, но дело в том, что эти специалисты могут и плюнуть и пойти в менее замороченную компанию.