Акция «Шаг навстречу» с 1 по 31 ноября
Не проходите мимо! Студия «Koritsa» в очередной раз идет навстречу клиентам...
На протяжении всего ноября специальное предложение: при заказе любого сайта «под ключ» - мы проводим бесплатную внутреннюю оптимизацию сайта для продвижения в поисковых системах.

Также продолжает действовать акция «Большой босс»: при заказе сайта на сумму от 999$ - мы предоставляем скидку в 10% от стоимости заказа.
-10 %
от 999$
Не теряйте времени! Звоните прямо сейчас +38 095 136-61-16. До завершения акции осталось: 9 дн. 13 ч. 43 мин. и 42 сек.
Студия дизайна и рекламы Koritsa
Информационные материалы → Разное

Базовое руководство по собеседованиям. Часть Седьмая.



К сожалению, несмотря на то, что, как мне кажется, все хорошие программисты должны работать с рекурсией и указателями, и это прекрасный способ узнать, является ли кто-то хорошим программистом, но правда заключается в том, что сейчас языки программирования почти полностью сделали это особое искусство излишним. Если десять лет назад было редкостью, когда студент-компьютерщик заканчивал колледж, не изучив на одном курсе рекурсию и функциональное программирование, а на следующем - C или Pascal со структурами данных, то сейчас вполне возможно, чтобы в уважаемых во всех других отношениях учебных заведениях проходили только язык Java.
Многие программисты, с кем вы проводили бы сейчас собеседования, склонны считать рекурсию, указатели и даже структуры данных глупыми деталями реализации, скрытыми во многих сегодняшних удачных языках программирования. "А вам когда последний раз пришлось писать алгоритм сортировки?" - хихикают они.
Тем не менее я, по правде говоря, не переживаю. Мне нужно, чтобы вызванная ко мне врач скорой помощи знала анатомию, даже если все, что она должна делать, - это поместить мне на грудь электроды компьютеризованного дефибриллятора и нажать большую красную кнопку. А еще мне нужны программисты, знающие программирование вплоть до уровня ЦПУ, даже если Ruby on Rails, после того как вы сделаете три щелчка мышью, действительно прочитает ваши мысли и полностью построит сетевой Web 2.0-сайт общественной организации.
Хотя с внешней стороны формат собеседования состоит в том, чтобы кандидат просто написал на планшете некий код, но моя настоящая цель состоит в том, чтобы поговорить об этом коде: "Почему вы сделали именно так?"; "Какова производительность вашего алгоритма?"; "Что вы забыли?"; "Где здесь ошибка?"
Это значит, что я в действительности не против, чтобы сообщить о слишком серьезных недостатках программирования, а также дать кандидату шанс начать самому, а затем я с удовольствием по ходу дела даю небольшие подсказки - скажем так, небольшие точки опоры. Я могу попросить кого-то, скажем, спроецировать треугольник на плоскость, что является типичной графической задачей, и я не против того, чтобы помочь с тригонометрией, и когда я спрошу, как ускорить это, то могу бросать маленькие намеки о таблицах просмотра. Обратите внимание, что те подсказки, которые я рад предоставить, - это на самом деле просто ответы на тривиальные вопросы, т.е. нечто такое, что можно найти в Google.
Неизбежно в функции, написанной кандидатом, вы найдете ошибку. Таким образом мы приходим к вопросу номер пять из моего плана собеседования: "Вы довольны своим кодом?" Вам, возможно, захочется спросить: "Ладно, а где же ошибка?" Вот он самый основной вопрос из преисподней, который допускает разные толкования. Все программисты делают ошибки, и в этом нет ничего плохого, просто они должны иметь способность их находить. Что касается строковых функций из C, то большинство деток из колледжа забывают завершить новую строку символом null. Почти в любой их функции наверняка попадаются менее значительные ошибки. Они иногда забывают поставить точку с запятой. Их функция не будет работать правильно на строках нулевой длины или будет выдавать General protection fault ("Общий сбой защиты"), если malloc завершится аварийно. Очень и очень редко попадается кандидат, в коде которого с первого раза не остается ни одной ошибки. Тогда этот вопрос выглядит еще забавнее. Если вы скажете: "В этом коде ошибка", - он внимательно просмотрит свой код, и у вас будет воз­можность узнать, строг ли он в рассуждениях по поводу своего кода, а также проявляет ли он хоть и дипломатическую, но все же твердость, утверждая, что код безупречен.
В качестве последнего этапа собеседования спросите кандидата, есть ли у него какие-то вопросы. Не забывайте, что хотя собеседование проводите вы, но хорошие кандидаты имеют большой выбор мест работы, и они используют этот день, чтобы понять, хотят ли они у вас работать.
Кто-то из тех, кто проводит собеседования, стараются определить, задает ли кандидат "интеллектуальные" вопросы. Лично меня не волнует, какие вопросы задают кандидаты, ведь я уже принял свое решение. Проблема в том, что кандидату в течение дня придется встретиться с пятью-шестью людьми, и для него будет тяжело задавать им разные, да еще и блестящие вопросы, поэтому если у него не будет никаких вопросов, то это тоже прекрасно.
Я всегда оставляю в конце собеседования примерно пять минут, чтобы разрекламировать перед кандидатом компанию и его возможную работу. Это по-настоящему важно, даже если вы не собираетесь его нанимать. В случае, когда вам крупно повезет и кандидат окажется по-настоящему хорошим, вы захотите сделать все возможное, чтобы у него обязательно было желание пойти к вам работать. Но даже тогда, когда кандидат плохой, вам захочется, чтобы ваша компания ему понравилась и он уходил бы с положительным впечатлением.