Многие люди говорят о том, «как» и «почему» кодировать интервью, так как насчет того, «когда»?

Если вы претендуете на работу в качестве разработчика программного обеспечения или инженера-программиста, вы можете быть удивлены тем, насколько стандартизирован этот процесс. Да, все еще есть небольшая полоска компаний, которые не используют собеседования по программированию/белой доске; да, в некоторых местах все еще любят головоломки.

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

Может быть, вам повезет, и интервьюер задаст вам вопрос об анаграммах. Может быть, вам не повезло, и интервьюер задает вам вопрос на максимальное двудольное соответствие. К концу сеанса вы, как правило, переходите к следующему раунду только в том случае, если ваш код работает и/или интервьюер доволен.

Кевин Нотон утверждает, что Cracking the Coding Interview популяризировал такого рода вопросы и изменил всю индустрию, но я не могу найти никаких крупных публикаций, подтверждающих это. По его словам, крупные технологические компании раньше задавали вопросы, например, почему крышки люков круглые или как наполнить 5-галлонную банку только 4- и 6-галлонной. Со временем собеседования по кодированию стали доминировать в отрасли.

Об этом сделали целую страницу в Википедии.

Еще в 90-х

Согласно статье Forbes (хотя, надо признать, эта фраза, вероятно, не настолько спорна, чтобы требовать цитирования), раньше тестировать код было очень дорого, поэтому программисты пользовались ручкой и бумагой. В 1990-х белые доски стали более популярными, чем классные доски для программирования, и собеседование по программированию на доске, естественно, стало популярным.

Статья CoderPad (эй! Вы, ребята, были во введении) подтверждает это, заявляя, что в 1990-х белые доски были в моде и что этот энтузиазм отразился на интервью.

Сегодня эта практика просто продолжилась. Некоторые компании используют программу без выделения текста для имитации процесса работы с белой доской, но им все равно нужен какой-то способ для оценки базового уровня «компетентности в программировании».

Головоломки исчезают

В статье Википедии Coding Interview утверждается, что Microsoft была пионером, в основном из-за увлечения Билла Гейтса головоломками. Еще в 2003 году кандидатам все еще задавали такие вопросы:

Предположим, у вас есть восемь бильярдных шаров. Один из них бракованный — он весит больше остальных. Как с помощью весов определить, какой из шариков оказался бракованным при двух взвешиваниях?

Решение — это подход «разделяй и властвуй», и я могу лично подтвердить, что Microsoft по-прежнему задает этот вопрос (хотя я буду защищать свой источник), но почему эти вопросы стали менее популярными в пользу тестов по кодированию, мне менее ясно. В статье Википедии говорится, что:

Интервью Microsoft было пионером в том, что оно касалось технических знаний, решения проблем и творчества, в отличие от собеседований о целях и слабых сторонах, которые использовало большинство компаний в то время. Первоначально основанные на одержимости Билла Гейтса головоломками, многие из головоломок, представленных во время интервью, начинались как задачи Ферми, а иногда и логические задачи, и в конечном итоге с годами превратились в вопросы, относящиеся к программированию.

…но Википедия, как скажет вам любой учитель английского языка/письма, ужасно ненадежный источник, несмотря на то, что она подвергается более тщательному анализу, чем большинство статей на Medium. Во имя точности и правды, вот комментарий пользователя Reddit:

Суть, по словам этого опытного разработчика с 40 000 кармой, в том, что головоломки доминировали, пока Google не изменил правила игры. Сначала наступила «эпоха головоломок», начатая Microsoft, пока такие книги, как Как бы вы сдвинули гору Фудзи, не дали кандидатам конкурентное преимущество. Затем последовали собеседования по кодированию, которые мы знаем и любим (или ненавидим) сегодня. Впервые их придумал Google, пока такие книги, как Cracking the Coding Interview, не дали кандидатам конкурентное преимущество.

Пост выше почти как будто подразумевает, что интервью в стиле программирования/Гугла неизбежно будет вытеснено чем-то другим, как и вышеупомянутая статья Forbes, но я не могу себе представить, чем.

Вместо этого все начнут собирать сертификаты Google?

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

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

Заключительные мысли

Я получил от кого-то комментарий о том, что Cracking the Coding Interview не первая книга в своем роде. Я написал остальную часть этого до того, как прочитал его комментарий, но он иллюстрирует достойную мысль: не каждая компания следует определенной тенденции. Это не значит, что каждая компания подражала Microsoft и использовала головоломки, а затем каждая компания быстро изменила курс и приняла интервью по программированию.

Следующий пост в блоге был написан в 2000 году Джоэлем Спольски, создателем Trello и техническим блоггером, который остается очень активным и по сей день. Из статьи:

По вопросам программирования я прошу кандидатов написать небольшую функцию на C. Вот несколько типичных проблем, которые я бы задал:

Перевернуть строку на месте

Отменить связанный список

Подсчитайте все биты, которые находятся в байте

Бинарный поиск

Найдите самую длинную серию в строке

атои

itoa (отлично, потому что они должны использовать стек или strrev)

— Спасибо за это, Грег

Чтобы предсказать, куда пойдут собеседования по кодированию, нужно также предсказать, куда движется кодирование. Это интересная тема, но здесь не о чем говорить.

Ниже Аарон Джек рисует удивительно оптимистичную картину будущего. Он считает, что вместо того, чтобы беспокоиться о том, что программисты устаревают, рынок взорвется — подобно тому, как такие технологии, как Python, а затем веб-фреймворки снизили входной барьер и позволили существовать большему количеству технологических компаний, которым затем требовалось больше разработчиков для их запуска.