В обстановке собеседования: Как лучше всего определить, когда кто-то является отличным программистом . Под этим я подразумеваю, что он один из тех, кто в 10-15 раз более эффективен / быстр / лучше, чем его сверстники по направлению к нижнему краю спектра.
Многие из нас слышали о проблеме FizzBuzz как о способе отсеять слабых. Конечно, 5-10 минут, чтобы решить эту проблему, являются серьезным показателем того, что кандидат является слабым кандидатом. Я полагаю, что хорошим показателем является возможность решить это так быстро, как вы можете написать. Это не кажется достаточным, хотя.
Может быть, это что-то вроде того, чтобы дать ему умеренно сложную программу с ошибками, и посмотреть, как быстро он сможет справиться с ней и выявить все проблемы с ней?
источник
Ответы:
Приношу свои извинения всем, кто не заботится о длинных ответах, но я думаю, что очень важно квалифицировать своих кандидатов, прежде чем их нанять. Любой, кто провел значительное количество собеседований в этой отрасли, знает, что большинство кандидатов не продержатся в течение первых 15-30 минут собеседования, поэтому большая часть этого списка не понадобится. Просто помните, как дорого (и финансово, и эмоционально) уволить кого-то, прежде чем вы отклоните мой список как излишнее. Я попытался перечислить свои темы интервью здесь в порядке важности.
Общий интеллект (тизеры / логические головоломки)
Знание информатики
Программирование упражнений
Знание методов объектно-ориентированного программирования и общих шаблонов проектирования
Анализ алгоритма ( сложность O (n) времени выполнения и требования к памяти)
Использование инструментов и методологий
Знание общих уязвимостей и атак
Базовая математика
криптография
Дискретная математика
Возможно, вы также захотите взглянуть на книгу « Программируемые интервью» . Это хорошая ссылка на тему.
источник
Ах, вечный вопрос.
В этом году я провел много собеседований (у меня запланированы два кандидата на завтра), и, по моему опыту, найм на работу - это больше для интуиции и навыков людей, а не для технических знаний.
Не спешите с резюме. Некоторые резюме могут быть отклонены в считанные секунды, некоторые занимают полчаса. Иногда я думаю о кандидате на основе резюме намного дольше, чем я беру у него интервью. Несколько раз я готовил вопросы для интервью специально для этого кандидата, хотя обычно у меня нет подготовленных вопросов.
Технические знания - это минимум, которого я хочу, и обычно это довольно легко понять. Если вы сомневаетесь, во время собеседования поговорите о проектах, которые он упомянул в резюме, и пойдите настолько глубоко, насколько это необходимо. Обычно этого более чем достаточно, чтобы рассказать вам, что он знает и что заставляет его тикать. Образование не важно, предыдущие рабочие места имеют значение, возможные личные проекты получают высокие оценки.
Спросите о том, что он хочет сделать и куда он хочет пойти в своей карьере - вам нужно то, что у него есть, и можете ли вы предоставить то, что он хочет? Кроме того, ближе к концу собеседования я обычно спрашиваю о предпочтительной зарплате. Если он выходит за рамки моих возможностей, или если я не буду платить так много за то, что он знает, на этом мы заканчиваем интервью.
Самое главное, кандидат должен вписаться в команду, и я должен быть уверен, что мы сможем работать вместе. Мне не нужно любить его, но я должен быть в состоянии справиться с ним, и он должен быть в состоянии справиться со мной. Если это не так, я сдам, потому что я не смогу использовать его технические знания. С другой стороны, если это так, и если он быстро учится, его отсутствие технических знаний не помешает мне нанять его.
Я научил девушек из отдела кадров передавать мне любые резюме, как только они их получают; Я планирую собеседование лично, так быстро, как могу (в идеале послезавтра после получения резюме для хороших резюме). Затем он получает полчаса или час собеседования со мной и, по крайней мере, с одним коллегой (обычно моим начальником или членом команды), где я узнаю его и отвечу на любые вопросы. Даже если я отклоню его заявление на месте, он получает 20-30 минут экскурсии по компании, и я говорю о том, что мы делаем и как мы это делаем. Затем я отправляю его в отдел кадров для психотестирования и немного по-настоящему базового бумажного кодирования / SQL. Оба теста почти никогда не играют существенной роли в моем решении, это скорее подтверждение, которое я правильно оценил в интервью. После 15-минутной беседы я делаю ему предложение, и если мы договариваемся об условиях, которыми мы оба довольны, его нанимают.
Это процесс, за который мне пришлось бороться через бюрократию компании, после того, как я пропустил пару хороших кандидатов, и который работает, потому что я тот, кто принимает решение о найме (хотя я прислушиваюсь к советам как HR, так и коллег, мой слово окончательно). Больше лиц, принимающих решения, более длительный процесс. Чем дольше процесс, тем больше вам нужно быть Google, чтобы получить максимальную отдачу.
Как только я уверен, что это не матч, я заканчиваю интервью, он получает тур по компании, и все кончено. Это может занять всего две минуты по телефону при планировании интервью. Даже если вы отклоните кандидата, продайте компанию. Если вы хорошо поработали, хороший найм может прийти из уст в уста от отклоненного кандидата.
Также один совет. Отправляйте отказные письма (или электронные письма) по каждому полученному вами заявлению. В моей нынешней компании я обычно оставляю это HR (кроме тех, о которых я рассказываю во время интервью), но в какой-то момент это было бесценно, получив восхищенный ответ от отклоненного кандидата в строках «СПАСИБО! ответил, вместо того, чтобы оставить меня интересующимся, ответят ли они однажды! "
источник
Этот ответ немного нестандартен, но я думаю, что это ценный момент.
Самые лучшие программисты редко берут интервью. Они не должны . Если ваша компания особенно меняет мир, или завораживающе окутана тайной, или туда ушли несколько уважаемых ими программистов, то они могут подать заявку, но, как правило, великие программисты получают работу через сеть своих партнеров, а не отправляя резюме.
Итак, лучший способ сказать отличному программисту на собеседовании - его там нет .
источник
Любой ответ должен включать примеры кода. Нанимать программиста, не видя его или ее код, - это все равно что нанимать шеф-повара, не пробуя готовить его или ее.
источник
Возможно, «отличный» программист не придет к вам на собеседование. Вы, вероятно, должны украсть его у кого-то еще.
источник
Один из способов отличить увлеченных программистов от программистов «Я просто хочу работу» - спросить их, какую книгу они читают на этой неделе. Затем спросите их о книгах, которые они прочитали за последние недели.
Я обнаружил, что увлеченные программисты ВСЕГДА читают, и обычно список включает в себя несколько программ / Комп. Sci. книги в недавнем списке.
Речь идет не только о том, чтобы идти в ногу с профессией - страстные программисты имеют желание и любовь к программированию и стремятся поглощать материалы по различным темам - не только на каком бы языке они ни использовали сейчас, но и на методологиях, на других языках (особенно новые или "странные" или древние), другие аспекты ИТ (может быть, робототехника, или ИИ, или игры, или ...)
Если у них вообще нет недавнего списка книг, то, по моему опыту, они, вероятно, не слишком программисты.
Ура,
-Р
источник
Существуют разные временные рамки, в которых кто-то может быть «быстрым»: некоторые умные люди могут решать сложные головоломки за считанные секунды, но некоторые умные люди вырабатывают много хорошего кода за месяц, даже если они не так быстро задают вопросы на собеседовании.
Спросите кандидатов, активны ли они в каком-либо проекте с открытым исходным кодом, где вы можете просмотреть часть их кода, и потратить некоторое время на чтение архивов списков рассылки этих проектов и фиксацию журналов. Это скажет вам гораздо больше, чем все, что кандидаты могут продемонстрировать на собеседовании. (Конечно, это не может заменить интервью, так как не все хорошие программисты работают с открытым исходным кодом.)
источник
Книга « Умный и добившийся успеха: краткое руководство Джоэла Спольски по поиску лучших технических талантов » может помочь найти ответ.
Содержание:
Статья Джоэля «Партизанский справочник по интервью» (версия 3) также может быть полезной.
И статья «Готово, и все становится умным» Стива Йегге на эту тему.
источник
Задайте им ряд вопросов, которые требуют, чтобы они кодировали, и чтобы вопросы становились все сложнее. Если им, кажется, нравится этот вызов, у вас, вероятно, есть живой.
Если они не могут ответить на первый простой вопрос, такой как «написать цикл for» или что-то глупо простое, тогда вы знаете, что этот человек не может кодировать.
источник
Попросите их написать код на доске. Только так вы сможете сказать, знают ли они, как писать код.
источник
Вы должны главным образом судить о работе, которую они уже сделали. Любой код или идеи, которые кто-то генерирует во время собеседования, связанного с тревогой, являются плохим доказательством того, что он может действительно создать в команде.
Для решения задач кодирования используйте IM с чем-то вроде codepad.com, и пусть они делают это не выходя из собственного дома. Вы пишете большую часть своего кода на доске перед вашим боссом с 30-минутным сроком и вашим бонусом на линии? Я не.
Так что, интервью бессмысленно? Нет, но акцент должен быть сделан на том, чтобы они объяснили, что они сделали и что именно они внесли.
Вы также будете подвержены всевозможным психологическим уклонам, когда встретитесь с кем-то лицом к лицу. Не случайно нанимайте программиста, потому что он лучше смотрел в глаза или выше, чем кто-либо другой. Чтобы обойти их, я бы провел как можно больше интервью по чату / электронной почте, прежде чем встретиться с ними лицом к лицу.
источник
Язык не имеет значения. Логика делает. Я имею в виду, что IDE и компиляторы настолько хороши в наши дни, что любой хороший программист может выбрать любой язык (хорошо, может быть, не ассемблер) за неделю; стать приличным через пару недель и быть очень хорошим через пару месяцев.
Это его (ее) мозг, который вы должны подтвердить. И ты это делаешь, мой разговор. Я прошу их решить простые проблемы. Не написав код, а объяснив мне их логику, чтобы найти решение.
Но я признаю, что если он не может написать простой цикл со счетом от 1 до 10, у вас проблемы.
источник
Прежде всего, есть один способ получить представление еще до начала интервью:
Если у них есть блог или они участвуют в одном или нескольких проектах с открытым исходным кодом, просто посмотрите на код и статьи, которые они написали. Прежде всего, если они сделали что-то из этого, у них есть инициатива, чтобы добиться цели. Кроме того, вы можете сравнить эти вещи с опытом работы, который они перечислили в своем резюме, и получить представление о том, пойдут ли они домой и узнают больше после работы, или если они пойдут домой и забудут о работе после 17:00.
По сути, они имеют страсть к программированию или нет? Это настоящий вопрос.
источник
На мой взгляд, лучше всего присутствовать в интервью с хорошим программистом.
Только эксперт может судить, знает ли заявитель много вопросов для собеседования или действительно думает о проблемах и может вдаваться в подробности. Помните, что вы не хотите нанимать людей для решения головоломок на собеседованиях, вы хотите нанимать их для выполнения реальной работы.
Загадки исключают людей, которые не понимают основы правильно. Если вы хотите проверить свои навыки, подготовьте несколько вещей, о которых вы (или ваш «хороший программист») можете подробно рассказать и сосредоточиться на том, о чем кандидат должен подумать некоторое время. Как он подходит к проблемам, решение которых он не знает сразу?
источник
Я не думаю, что вы должны говорить о страсти на интервью. Честно говоря, это звучит так, будто компания, которая ищет «страсть», на самом деле означает «работать без денег на идею».
Страсть даже не гарантирует совершенства. Я имею в виду, что я провожу почти всю свою жизнь за программированием, читая о программировании, изучая сумасшедшие языки, такие как Erlang или Clojure, и мне не платят ни за что из этого. Все же я отстой в программировании.
Я думаю, у отличного программиста должен быть трек успешных проектов, в которых они активно участвовали. Таким образом, заставлять программиста писать что-то выше базового FizzBuzz не нужно в интервью. Поговорите о своих прошлых проектах и о том, что они сделали. Вы нанимаете программистов для решения кубиков Рубика и подсчета шариков или работаете над длинными и большими и утомительными программными проектами, насчитывающими более 50 строк?
источник
http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/
Из статьи:
Критерии в пулях
Итак, в заключение, вот некоторые показатели и контр-индикаторы, которые должны помочь вам узнать хорошего программиста.
Положительные показатели :
Отрицательные показатели :
Программирование - это работа дня
На самом деле не хочу разговаривать по магазинам, даже когда
Изучает новые технологии на курсах, спонсируемых компанией
Рад работать с любой выбранной вами технологией, «все технологии хороши»
Не кажется слишком умным
Начал программировать в университете
Весь опыт программирования есть в резюме
Ориентирован в основном на один или два технологических стека (например, все, что связано с разработкой Java-приложения), без опыта работы за его пределами
источник
Отличный программист сможет работать и с теми коллегами с более низким спектром. Пока они могут пройти тест и не погрязнуть в своем эго, у вас есть хороший кандидат, нет?
Этот тест на шипение довольно забавен. Решение, которое я могу придумать, использует оператор по модулю. Что я знаю только из определения координат отображения символов (никогда не упоминалось в школе или колледже). Знал бы об этом обычный программист или у меня было дерьмовое образование?
источник
Один из критериев, который я использую, - это увидеть «языки» и инструменты, над которыми он работал, в академических или профессиональных проектах, и что именно он достиг. Всегда ли он работал на уровне приложений, используя стандартные библиотеки (всегда парень на C # или VB6?) Или он делал проект с использованием C в Linux, занимаясь такими жесткими вещами, как указатели, управление памятью, рекурсия, синхронизация процессов, взаимное исключение, события и т. Д. Если он всегда использовал эти основные и фундаментальные понятия на каком-то уровне абстракции, я сомневаюсь.
Это, очевидно, в дополнение к тому, чтобы заставить его писать код. Ничто не может заменить это. Тем не менее, я учитываю тот факт, что некоторые люди могут писать код быстрее, чем другие, и у людей разное время отклика в центре внимания интервью.
источник