Верхний пост

Мои альтернативные площадки
ПлощадкаАдрес
Твиттерhttp://twitter.com/ms_oberon
Альтернативный блог 1http://miccro.livejournal.com/
Альтернативный блог 2http://msoberon.wordpress.com/

пятница, 25 июня 2010 г.

Эпопея про собеседования

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

Всё это больше и больше смахивает на глумление друг над другом, чем на настоящее собеседование.
Вот что человек явным образом пишет про интервью в Гугл (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 и кончая какой-то глубокой теорией в мелочах по "шкале Рихтера" (Джефри).
Про базы данных ничего! Сложилось впечатление в итоге, что собеседники, вызубрив свои заранее заготовленные вопросы, сами плавали в том, что касалось отступления от их сценария, но сидели с таким видом, как будто я беседую с богами программинга, гуру всея кода и Вселенной.

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

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

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

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

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


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

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

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

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

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

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

вторник, 15 июня 2010 г.

Приморские партизаны-бандиты

Мне кажется, что "партизаны" своими действиями ровно соответствуют вашему же описанию принципов работы спецслужб.
Общая бесцельность.
Действительно, зачем просто брать и обстреливать патрульную машину с простыми милиционерами, тем более за 200 км? С таким же успехом, если уж идти на риск, можно выбирать одиночек в городе...

Наспех сделанное "возвание". В метрошных терактах была найдена Шарипова, здесь - некий Муромцев. Откуда всё это известно? Откуда на следующий день стало известно, что это "банда, убивающая милиционеров"? Из электронного текста возвания?
Ну, и как водится, при штурме все погибли (нет, двоих взяли).

В общем, что меня здесь настараживает.
Они выпускают некий ультиматум (см. сайт дпни). Они там указали фамилии? Скорее всего нет.
Откуда милиция менее, чем за пару недель точно определила состав банды?

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

Зачем им в лесу литература?

И в итоге ловят их в квартире? Странный переход от леса с вертолётами. Откуда точно известна квартира? Так же как квартира, где террористы делали взрывчатку для метро...

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

И обезвредили их строго ко дню России. Совпадение?
Идёт театрализованное расследование в СМИ. Настоящим террористам досточно просто слушать радио.

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

Пацанов, похоже, левых схватили. А признание выбьют.
И действительно странно, зачем в такой ситуации стреляться если они были такими идейными?

Короче говоря, очень нестройная история.