Эпопея о Собеседованиях
От: msk78 Россия http://miccro.livejournal.com
Дата: 12.07.10 07:14
Оценка: 124 (23) +12 -3
Стал замечать, что последнее время на РСДН и в жизни люди всё чаще недоумевают по поводу того, зачем на собеседованиях спрашивают "отличное" знание алгоритмов и структур данных, заставляют решать какие-то логические задачки, дают тестовые задания на сутки и более.

Всё это больше и больше смахивает на глумление друг над другом, чем на настоящее собеседование.
Вот что человек явным образом пишет про интервью в Гугл (http://iggant.blogspot.com/2009/12/steve-yegge-get-that-job-at-google.html), что...

"Классический пример, который можно найти где угодно: интервьюер A всегда спрашивает о конструкциях C++, файловой системе, сетевых протоколах и дискретной математике. Интервьюер B всегда спрашивает о Java конструкциях, web framework, и управлению проектами. Любому кандидату, которому посчастливится попасть на собеседование к A и B, А и В дадут очень разные отзывы. Дай им шанс, и A и B не наймут друг друга, но им обоим пришлось пройти через интервьюера C, который задавал им вопросы о структурах данных, UNIX утилитах, процессах и потоках, и оба A и B ели прошли его."

Это же просто клоунада! Автор фактически этим утверждает, что компания не способна нанять нормальных сотрудников, ибо следующий интервьюер D просто побеседует с кандидатом на тему фалоимитаторов и наймёт его. Получается, что интервьюеры А и B считают друг друга некомпетентными. То, что наняли их самих, является везением чистой воды, абсурдом мирового масштаба, и не факт, что каждый из них нанял бы интервьюера С. Да это же полный бедлам в процессе найма персонала!

И, что самое удивительное в этой истории, все эти люди от A до D и нанятый кандидат наверняка работают в проекте на PHP и исправляют баги во внутреннем корпоративном сайте! Или, что наиболее вероятно, пишут какой-нибудь софт, упрощающий кому-то бухгалтерию. При всём при этом мозг друг другу люди отпипали конкретно!

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

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

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

Безусловно такой человек располагает временем и может позволить себе собеседовать вас несколько часов подряд, терпеливо дожидаясь задачи, на которой вы наконец-то свалитесь. От усталости, голода или неимения времени. Вы же, в отличии от него, работаете в реальном проекте!

Современный процесс собеседования во многих программных конторах недалеко ушёл по сравнению с тем же процессом 90-х годов.

Все повторяют уже набившую оскомину фразу Джоэла Спольски: "smart and get things done". Джоэл умный мужик; с тех пор, как он её произёс, прошло уже лет 10, но народ долдонит её как мантру.

Ключ в ней — это "гет сынгс дан". Будь наймит хоть трижды "смарт", но если не "гет сынгс дан", то будет кирдык!
Джоэл пишет и другое, например, нет смысла давать логические задачки — максимум, что вы узнаете, это то, что знал человек ответ заранее или нет.
Джоэл пишет, что не имеет смысла спрашивать чем отличается varchar от nvarchar-a и т.д., но кто этому следует?
Джоэл уже давно скорректировал свою точку зрения. А вы?

Вернёмся к нашим баранам, а точнее к 90-м. Именно тогда такой подход имел смысл.
Интернет был неразвит. По миру, в России в частности сидели небольшие оффшорные команды по 2-5 человек, а то и вообще одиночки. Контора, в которой я работал, начинала у директора дома. Сидело 3 программиста, а его жена делала нам омлет.


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

Это сейчас разноплановых фреймворков, как собак нерезаных. А тогда такого не было.
Поэтому конечно же было выгодно нанять человека, знающего Си (язык плюс-плюс несколько библиотек), по возможности COM-технологию да владеющего на отличном уровне алгоритмами и структурами данных для написания доморощенных структур данных и сортировок со всевозможными и невозможными порядками малости. Ибо посмотреть где-либо негде да и спросить не у кого.

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

Некоторые спрашивают сегодня в 21 веке основы геометрии, формулу длины пениса и окружности. Накой! Вот в 90-е это было надо, ибо окружности и поверхности рисовались по точкам(drawpixel) и формулам. Сейчас же человек должен просто быть усидчивым и любить познавать. Этого достаточно для работы в среднестатистической компании. Есть исключения, например, работа в команде по разработке DirectX-а, но это скорее исключение.

Да и вообще на кой ляд при исправлении багов в Рефлекторе знать длину окружности?! С таким же успехом можно знать длину ножек и размер сисек тестерши напротив. Но ведь это не спрашивают?!

Особенно умиляет заявление: "Ну, ты же программист!", напоминающее анекдот:
— Тов. комиссар, патроны кончились!
— Но ты же коммунист!
(и пулемёт застрочил снова)

Тогда кто такой программист?
Некий сферический конь в вакууме, умеющий всё и сразу, эдакий профессор программирования, но при этом не 1с-ник, не ХТМЛ-писатель, не... Кто ещё не?

Всё-таки мне неясно, зачем программистам 90 процентов которых пишут что-то типа "d = new Dictinary; d.Sort();" и то даже не каждую неделю, а то и реже, знать теорию алгоритмов и структур.

Самое замечательное в этом то, что таких заявлений можно сделать вагон и маленькую тележку.
Почему те же самые заявители, управляя своим автомобилем, зачастую не знают, как устроен двигатель, электрика? Ведь всегда можно сказать: "ты же водитель, шофёр! Ты должен это знать". Но нет. При каждой мелочи они едут в сервис. Как они вообще передвигают ноги, не зная глубоко анатомии человека?!

В крупных компаниях часто бывает так, что человека собеседуют, например, на ASP.NET и C#, а в итоге через пару месяцев он сидит и работает в другом проекте на WinForms и VB.NET с Office Tools да с WMI в придачу. Получается, что контора собеседовала человека в холостую. Тресли с него знания всяких Ajax-ов да чёрта в ступе для Веба, а в итоге вебом сотрудник и не занимается. Организация потратила время и деньги коту под хвост. Да, она наняла человека, но ведь она отсеивала уйму кандидатов, не удовлетворяющих знаниям ASP.NET и C#. А зачем? Зачем, чтобы попасть в Париж, нужно ехать через Австралию? Чтобы потратить лишние деньги?

Народ жалуется, откуда берутся у нас в организациях неадекваты. Я почему-то сталкиваюсь с неадекватами в основном на собеседованиях.
Любое собеседование — это отличный фильтр, для того чтобы взять к себе в проект "неадеквата" (или адеквата). А потом эти неадекваты уже будут набирать себе подобных.

Человек (SE) пишет по этому поводу:
"Отлично. Сам, наблюдая за субкультурой группы из небольших проектов, сделал аналогичный вывод.
Причем судя по тому, что количество людей на проектах выросло втрое, а субкультура коренным образом отличалась от принятого в компании стандарта, я имел возможность наблюдать раковую опухоль в действии. (...) Дык проводить собеседования — работа такая неблагодарная (...)"

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

Пример. Был недавно. В конторе.
Имелся список заранее придуманных вопросов, начиная от того, что такое боксинг/небоксинг и модификатор public и кончая какой-то глубокой теорией в мелочах по "шкале Рихтера" (Джефри).
Про базы данных ничего! Сложилось впечатление в итоге, что собеседники, вызубрив свои заранее заготовленные вопросы, сами плавали в том, что касалось отступления от их сценария, но сидели с таким видом, как будто я беседую с богами программинга, гуру всея кода и Вселенной.

При этом набирали на проект, где надо лопатить какой-то старый дряхлый код.

"Чем отличается вызов метода в классе А от очень сходного другого метода этого же класса?" — заставил меня прочитать по листочку свой вопрос интервьюер. Получив мои соображения и ожидая услышать что-то конкретное и неключевое здесь, он изрёк: "Это всё в МСДНе написано!". Каково, а?! Самое удивительное, я знал ответ, пользуясь этой отличительной особенностью методов, но никогда формулировал это такими словами, так как цель методов совсем в другом. Он же сделал вывод, что я не читал МСДН Какой прок компании от его собеседования? Только отрицательный.

Может он опять читал Спольки и зациклился на фразе "Лучше отказать хорошему, чем нанять не того". Да это же бред сивой кабылы! [Простите меня!]

Есть замечательная поговорка: "Лучшее — враг хорошего". При вышеописанном подходе вы никогда не наймёте того, а когда наймёте, он уволится через три месяца, потому что его будет нещадно рвать от вашего проекта. Получается вы наняли не того "того"

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

Иными словами, в некоторых организациях интервьюер — это некий университетский экзаменатор, не имеющий реальной цели собеседования, его цель — отсобеседовать "студента" на знание "ВСЕЙ физики", всего(!) программирования, вообще ВСЕГО!

Лучше сказать, что у такого человека цель не совпадает с целью компании, ибо компании нужен персонаж, который будет копаться в старом гов... (ой) коде, разгребать чужие юнит-тесты, подшаманивать уже существующий ремоутинг. Не знает, не работал с ремоутингом? Разберётся за пару часов для текущей задачи, а в дальнейшем либо ремоутинг вообще не понадобится, либо прочитает подробней о нём позднее.

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

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

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

Сообщите о своём проекте, что надо делать. Устраивает вас и его? Отлично! Берите! Не имеет смысла собеседовать ещё сто кандидатов. Вы только потеряете деньги организации на проведении собеседований и на простаивающем проекте.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.