Алгоритмы и циклы

Dec 31, 2024 11:10

У Аввы на днях был пост про задачи на интервью (для программистов). Я сам недавно сменил работу и активно проходил эти интервью. Хочу отрефлексировать в уйутненьком.

Я начал работать программистом в конце 1990-х в Израиле. Тогда программирование ещё было мало устоявшейся областью. Интервью варьировались от разумных и эффективных до всяких анекдотических случаев когда просят решить недавно найденный баг или что там интервьюера лично зацепило.

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

Стандарт возник из-за суровой необходимости перелопачивать десятки тысяч заявлений. Если практиковать индивидуальный подход, как в старину, то такие горы руды отфильтровать просто невозможно. В современной технологической компании ежегодная текучка кадров 20-30% в тучные годы. В тощие годы может падать до 15%. Т.е., каждый год надо нанимать четверть от штата просто для того, чтобы остаться на том месте где стоишь. А если компания хочет расти, то надо нанимать ещё больше.

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

На каком материале проводить интервью, что спрашивать? Тут самым удачным образом подвернулось соревновательное программирование. В этом виде спорта задачи self-contained, удобно разбиты на уровни сложности, мало зависят от языка программирования, решаются за короткое время (несколько минут), легко открыты для дальнейшего усложнения. Самое главное, эти задачи удобно переводятся в числа: кандидат решил задачу на 75%.

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

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

- Начальный фильтр: в ответ на резюме человек получает линк на автоматизированный тест. Обычно пара-тройка задач уровня leetcode medium.
- Первый контакт с HR по телефону или видео. Беседа 20-40 минут.
- Инженерное интервью до 1 часа. 5м - поздороваться; 5-10м рассказать о задаче; 10-15м первый вариант решения; 5м - усложнение; 10-15м - решение усложнённого варианта. 10м - ответы на вопросы кандидата.
- Второе инженерное интервью. Обычно интервью различаются по тематике. Скажем, одно с упором на алгоритмы, второе на структуры данных.
- Третье инженерное интервью: system design. Это не то проектирование систем, которое развивалось во второй половине XX века. Это компьютерные загадки на знание современных технологических продуктов и в каких случаях их применять в разных комбинациях.
- Если кандидат метит на позицию principal и выше, то может быть дополнительное инженерное интервью.
- Интервью с менеджерами: behavioural interview. До 1 часа. Расскажи как разрешал конфликт; всякое достигаторство на предыдущих работах и т.д..
- Переговоры с HR по поводу зарплаты.

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

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

Возможно, скоро допилят AI и он вообще заменит собой человеческих программистов, как в своё время автомобили заменили извозчиков и конюхов.

Или само понятие софтверного продукта уйдёт в прошлое. AI будет создавать под конкретный запрос уникальное работающее решение на один день-неделю-месяц. А потом требования всё равно изменятся.

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

Много вариантов.

life, puter

Previous post
Up