Как и во многих других вещах в ИТ-индустрии, в процессе найма программистов всегда возникают разногласия. На одном конце спектра находятся ярые сторонники алгоритмических головоломок, а на другом — страстные их ненавистники.

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

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

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

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

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

Повсеместная доступность решений подняла планку проблем. Для оценки кандидата желательно посмотреть, как он справляется с задачами, с которыми раньше не сталкивался. Чтобы решить эту проблему, многие компании задают сложные вопросы на собеседованиях. Обратной стороной этого является то, что решения этих сложных проблем в конечном итоге появляются в Интернете. Таким образом, это превращает процесс собеседования в счастливую ничью из того, сколько похожих проблем кандидат видел раньше, тем самым сводя на нет всю цель собеседования. Цитирую Сахат Ялкабов:

Удача и случайность не должны быть частью процесса технического собеседования.

Также многие достойные кандидаты не склонны прилагать много усилий только ради собеседований.

Типичное интервью должно состоять из следующего:

  • текущие знания кандидата (проекты, технологии, языки).
  • задавать проблемы, связанные с работой.

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

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

В одном из моих интервью я прошел четыре раунда только для того, чтобы получить отказ в пятом из-за тщеславного интервьюера. Каждый из предыдущих четырех раундов состоял из алгоритмических задач. В пятом раунде он спросил меня, какие Шаблоны проектирования мне известны, и попросил реализовать Singleton (на java). Я сказал ему, что мы можем использовать enum, так как у него не будет проблем с синхронизацией. Очевидно, он не ожидал такого ответа и попросил меня реализовать синглтон без использования перечисления. В последующем обсуждении я сказал ему, что синглтоны нарушают принцип единой ответственности, о котором он не знал. Вполне ожидаемо, что мои, казалось бы, эксцентричные взгляды не могли его насытить.

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

Отказы жестоки и оскорбительны. Они ранят. Они вполне способны навсегда разрушить чье-то доверие. Серебряная подкладка многочисленных отказов размыта. Я видел, как самые достойные и дотошные получали отказы, а сумасшедшие проходили. Как и многие другие вещи в жизни, прием на работу несправедлив. Закончу эту разглагольствование цитатой из фильма Рокки:

Позвольте мне рассказать вам то, что вы уже знаете. В мире не только солнце и радуга. Это очень подлое и противное место, и мне все равно, насколько вы круты, оно поставит вас на колени и будет держать вас там навсегда, если вы позволите. Ты, я или никто не ударит так сильно, как жизнь. Но дело не в том, как сильно ты бьешь. Речь идет о том, как сильно вы можете получить удар и продолжать двигаться вперед; сколько вы можете взять и продолжать двигаться вперед. Вот как делается победа! Теперь, если вы знаете, чего вы стоите, тогда идите и получите то, что вы стоите. Но ты должен быть готов принять удары, а не показывать пальцами, говоря, что ты не там, где хочешь быть из-за него, или ее, или кого-то еще. Трусы делают это, и это не ты. Ты лучше этого! - Рокки Бальбоа