Перевод популярной статьи на medium, автор — Curt Corginia. Активное обсуждение читайте в оригинале.

К написанию заметки меня подтолкнул этот вопрос-обсуждение, ставший популярным на Quora. Наиболее популярные ответы сводились к подобным формулировкам: «это не так, уровень безработицы в этой сфере всего 3.6%», «слишком много разработчиков и недостаточно инженеров» и «это естественное следствие микроэкономической теории». Возможно, было бы полезно остановиться на последнем пункте, но я решил, что гораздо интереснее взглянуть на самый популярный ответ:

«Я был без работы несколько месяцев. Ждал в надежде, что однажды кто-нибудь наймет меня без вайтбординга (от англ. white board — «белая доска», собеседование с решением задач на доске или бумаге). Мне кажется, это хуже пытки водой. После семи месяцев поисков я понял — выхода нет. И теперь, разбудите меня посреди ночи — и я напишу вам код мелом на доске. Компании выстраиваются в очередь, чтобы пригласить меня на интервью, они даже готовы прислать за мной водителя. Ничего не изменилось.  — Аравинд Акшан, Менеджер по разработке ПО».

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

А если серьезно, то ответ про экономику заслуживает отдельного обсуждения. Оплата труда значительно зависит от спроса и предложения. И хотя спрос на разработчиков до сих пор очень высок, только в США сейчас насчитывается около 4.4 миллиона разработчиков. Другими словами, в настоящее время профессия разработчика/программиста уже не является очень редкой, а высшее образование в области компьютерных наук не обеспечивает по умолчанию счастливого билета в будущее, как некоторые до сих пор могут полагать. Я считаю, популярность компьютерных наук и огромное количество различных IT-буткемпов являются свидетельством того, насколько общепризнанной  стала эта область.

Другие возможные причины, по которым может быть непросто найти работу в разработке:

  • В большинстве компаний, в которых я собеседовался, необходимо было пройти по меньшей мере три интервью, чтобы получить оффер. Об этом довольно подробно написано в статье на BBC.
  • Технические собеседования, на которых проверяется умение решать задачи и писать код — это, за неимением лучшего описания, «их собственная игра». Обычно дается от получаса до часа, чтобы решить какую-то задачу, целью которой является проверка знания структур данных и алгоритмов. Независимо от того, считаете ли вы это хорошим тестом, как его сторонникам, так и критикам сложно не согласиться с тем, что что это не то, что вы обычно делаете в полевых условиях, а просто тест.
  • Разработка — это очень широкая область. Вы можете быть фронтенд-разработчиком, который превращает макет в веб-приложение. А можете быть бэкенд-разработчиком, который занимается программной частью, внутренней логикой приложения или ПО и быть близким к железу. Вы можете работать в компании, которая создает лекарство от рака, а можете в компании, чей продукт способствует возникновению рака. Есть неимоверное количество разных областей и ролей, которые можно занять, и здесь мы сталкиваемся с тем же сценарием, что и во время выбора потенциального партнера: компании ищут кандидатов с определенным набором жестких и мягких навыков, и иногда вы и компания просто не подходите друг другу.
  • Возможно, я буду первым человеком в истории, который пожалуется на это, но на интервью, на которых проверяется навык кодинга, обычно дается выбор языка. Одним из недостатков этого является тот факт, что собеседующие инженеры не могут знать всех языков программирования. И если собеседование проходит с задачами на незнакомом им языке, они не смогут помочь в случае затруднений.

Чего ожидать в процессе собеседования?

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

… Хотя, если продолжать говорить откровенно, возможно, вы и сами хотите именно этого.

Может быть, вы также решитесь поспрашивать об открытых позициях у своих знакомых. Возможно, вы напишите HR-департаменту интересной компании напрямую, или решите вести более пассивный поиск, просто разместив резюме на сайте по поиску работы и/или откликаясь на вакансии.

Первый звонок с HR

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

  • Звоня, они первым делом спрашивают, удобно ли сейчас разговаривать. Если время совсем не подходящее, то возможно, лучше вовсе не брать трубку. Я так один раз запорол первичное интервью — мне позвонили в то время, когда я занимался прочисткой засора в ванной комнате.
  • Они попросят рассказать о себе.
  • Они могут спросить о ваших планах на будущую роль или в целом карьеру. Хорошим ответом на подобный вопрос, вероятно, будет что-то вроде про развитие в их компании. Я однажды на такой вопрос ответил, что единственное, чего я бы не хотел делать, так это работать в определенной индустрии (скажем, в автомобильной промышленности). На что они ответили, что как раз недавно заключили контракт с крупным клиентом из автопрома. Надо ли говорить, что это было одно из самых неловких интервью на моей памяти.
  • Они постараются преподнести свою компанию в наилучшем свете.
  • Также они могут задать действительно интересные вопросы, например, про самый любимый проект или про ценности, но это со мной случалось реже.

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

Автоматический тест на навык написания кода

Это моя самая нелюбимая часть интервью. Некоторые компании предлагают пройти такой тест, чтобы перейти на другой уровень. Я считаю, в этом было бы больше смысла, если бы компании делали это сразу после получения отклика на вакансию, и в случае успешного прохождения теста передавали резюме HR-у. HR смотрит резюме, убеждается, что вы обладаете релевантными навыками и опытом и далее организовывает интервью.

Техническое интервью

Это самая главная часть. О прохождении технических интервью написаны целые книги. Вот несколько рекомендаций на этот счет:

  • Выбирайте самый знакомый язык программирования. Большинство компаний предоставят вам выбор, что по мне немного странно — зачем это делать на рандомном языке, который никто в компании не использует… Я так никогда не делал, но в теории это возможно.
  • Вот очень хорошее руководство по прохождению технических собеседований в крупные компании — автор делится советами, которые помогли ему получить оффер из Google, Airbnb и Dropbox.
  • Вот этот ресурс еще умилительнее, чем корги Максин (если вы не знаете про этого корги, обязательно загуглите).
  • Это правда, что вы можете прокручивать в голове общие структуры данных, когда застреваете над решением какого-либо вопроса, и хеш-таблицы (англ. hashmap) являются, как правило, частью решения, но не стоит вытаскивать их из ниоткуда. Одно из моих первых интервью проходило примерно в таком ключе:

Интервьюер: произведите, пожалуйста, сжатую строку. Например, можно превратить aaaabbc в a4b2c1. Можно превратить а в а1.

Я: *немедленно начинаю писать код* Можно использовать хеш-таблицу

Интервьюер: хм… как вы думаете, вы…

Я: Итак, мы создали хеш-таблицу. Теперь давайте сделаем несколько операторов печати.

Хеш-таблица — это полезный инструмент, особенно в таких случаях, но это не RPG. Нельзя просто взять и немедленно вызвать хеш-таблицу и таким образом проскакивать каждое интервью до тех пор, пока вы наконец не столкнетесь с руководителем, который не согласится с использованием хеш-таблицы («думаю, настало время сделать финальный ход — использовать связный список!»)

При решении задач в духе LeetCode можно использовать массив вместо хеш-таблицы (размером 26 за вычетом “a”). Не полагайтесь на это во всем.

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

  • Полезно знать вызовы вроде std::sort и эквивалентные им в других языках. 
  • Лучший опыт собеседования похож на парное программирование, на которых участники обмениваются своими идеями. На самом худшем интервью человек напротив просто молча осуждает тебя.

Финальное(ые) интервью

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

Позитивное отношение

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

Я не отношусь к собеседованиям таким образом, но зрелый человек смог бы. Слушайте то, о чем я говорю, не смотрите на то, что делаю.


Читайте полезные статьи по трудоустройству и развитию:


Смотрите записи карьерных вебинаров OTUS:

  1. «Ваше резюме заинтересовало нашу компанию»: вебинар с Язилей Насибуллиной, основательницей кадрового агентства Tech-Recruiter и HR консультантом в DONE!Berlin. На вебинаре разобрали нюансы составления резюме, узнали о площадках с вакансиями и в целом обсудили актуальную ситуацию на рынке.

2. «Карьерный путь в IT». Обсудили разные роли в команде, кто какие задачи выполняет и какие возможны пути развития.

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