Моя реакция на этот невероятно распространенный вопрос.

Ого, у него несколько мониторов. Это наверняка полезно. 
Смотрите, он пишет код и смотрит на страницу «Начало работы». Берем.
Ого, у него несколько мониторов. Это наверняка полезно. Смотрите, он пишет код и смотрит на страницу «Начало работы». Берем.

Заголовок этой статьи отсылает к популярному вопросу с Quora*, основные ответы на который свелись к следующему: «Это не так, уровень безработицы составляет 3,6%», «Слишком много разработчиков и недостаточно инженеров» и «Это естественное следствие микроэкономической теории». Возможно, было бы полезно подробнее остановиться на всех этих суждениях, но я подумал, что было бы намного интереснее взглянуть на самый популярный ответ:

«Я был без работы много месяцев. Ждал, надеясь, что однажды меня возьмут на работу, не требуя от меня написания кода от руки на бумаге.

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

Но нет, ничего не изменилось».

Нераскрыт Неразвенчаев, инженер-менеджер в компании "НеСкажуДев".

Вместо того, чтобы давать шаблонный ответ о разнице между разработчиками и инженерами (Software Engineer), эта цитата высмеивает весь процесс собеседования. Если развернуть другие темы в том вопросе, то можно увидеть споры о том, является ли процесс собеседования на позицию SE некорректным.

Если серьезно, то вернемся к ответу про микроэкономику. На оплату работы сильно влияют спрос и предложение. Хотя существует очень высокий спрос на инженеров-программистов (SE), сейчас только в США насчитывается 4,4 миллиона SE-специалистов без работы. Другими словами, инженеры-программисты - не такая уж редкость, и ученая степень в области компьютерных наук не является «золотым билетом», на который рассчитывают некоторые люди. Я думаю, что популярность информатики и рост количества курсов для начинающих по программированию являются свидетельством того, насколько эта область знаний стала популярной.

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

  • В большинстве компаний, с которыми я общался, требуется как минимум три собеседования, чтобы устроиться на работу. Об этом довольно подробно рассказывается в этой статье BBC**.

  • Из-за отсутствия хороших общепринятых норм, собеседования с кодингом являются «чаще всего субъективными». Обычно у вас есть от 30 минут до 1 часа, чтобы решить задачу по кодингу, которая оценит ваше понимание структур данных и алгоритмов. Независимо от того, считаете ли вы это хорошей проверкой, как сторонники, так и критики согласятся, что такой тест - далеко не то, что вы будете делать «в поле».

  • ПО очень разное. Вы можете быть фронтенд-разработчиком интерфейса, превращая блоки в веб-приложение. Вы можете быть бэкенд-инженером, который очень тесно работает с оборудованием. Вы можете работать в компании, которая лечит рак. Вы можете работать в компании, которая вызывает рак. Существует невероятное количество областей и ролей, поэтому мы сталкиваемся с тем же сценарием, с которым сталкиваемся на свиданиях: компании будут искать очень, очень конкретного кандидата с точным набором навыков. Но такой подход чаще всего не работает.

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

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

Вы можете следовать любой из «стартовых стратегий». Может быть, отдел кадров компании свяжется с вами через LinkedIn; возможно, вы решите довериться стороннему рекрутеру. Ваш опыт поиска работы может варьироваться в зависимости от сторонних рекрутеров (так называемых «хедхантеров»). Но, говоря прямо, есть причина, по которой у хедхантеров сформировалась плохая репутация. Некоторые из них действительно очень плохи, в первую очередь для вас. Такие плохие рекрутеры будут пытаться навязать вам компанию, которая вам не подходит, они будут «стрелять из всех орудий», навязывать вас всем и каждому. И они не будут задумываться о ваших интересах. От оффера они хотят только денег.

… хотя, честно говоря, вы, наверное, тоже хотите именно этого.

Может быть, вы вместо этого решите обратиться к другу. Может быть, вы обратитесь напрямую в HR или решите сделать то, что делают миллионы других людей, и просто выберете тактику indeed-easy-apply (быстрая подача заявок в большое количество компаний).

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

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

Интересно, что с ними случилось..?

Итак, первый звонок.

  • HR спросит, «Сейчас удобное время для общения?». Если бы это было не лучшее время, то, вероятно, вы бы не взяли трубку. Я пропустил первое собеседование, когда мне нужно было прочистить туалет;

  • HR попросит вас рассказать о себе;

  • HR может спросить, что вы ожидаете на своей новой работе. Хороший ответ на этот вопрос «Вашу компанию». Однажды я ответил на этот вопрос так: «Не работать с автомобильной промышленностью». В ответ мне сказали, что недавно получили контракт с автопромом. Это было одно из самых неловких интервью, которые у меня были;

  • HR действительно попытается представить свою компанию;

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

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

Автоматизированный тест по кодингу

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

Кодинг-интервью

А вот и суть дела. Об этом шаге написаны целые книги.

  • Выберите язык программирования, с которым вы знакомы. Большинство компаний предоставят вам выбор, что для меня немного безумно, учитывая, как вы можете использовать непонятный язык, который никто в компании не использует;

  • Вот хорошее руководство***;

  • Вот этот ресурс даже круче, чем корги****;

  • Да, это правда, что вы можете просто вспомнить распространенные структуры данных, если застряли на проблеме. И тоже правда, что хэш-таблицы (hashmap) обычно являются частью решения. Но не стоит просто вытаскивать hashmap из ниоткуда. Одно из моих первых собеседований по кодингу прошло примерно так:

Интервьюер: Я хочу, чтобы вы создали сжатую строку. Например, вы можете превратить aaaabbc в a4b2c1. Вы можете превратить a в a1
Я: *сразу приступает к кодингу* Давайте воспользуемся hashmap
Интервьюер: Э ... как вы думаете, вы ..
Я: Хорошо, мы сделали hashmap. Теперь давайте продолжим...

Hashmap - полезный инструмент, особенно в таких случаях, но это не панацея. Вы не просто неожиданно применяете hashmap, а затем рушите каждое интервью. Ведь потом, наконец, вы встретите босса, который сможет противодействовать hashmap («О нет, думаю, я лучше выберу основной подход: связанный список!»).

В некоторых задачах в стиле leetcode вы можете использовать массив вместо hashmap. Но не надейтесь на это во всех ситуациях. Некоторые из простейших задач собеседований связаны с использованием hashmap для подсчетов… вы не сможете просто брать и использовать действительно большой массив.

  • Это помогает узнать некоторые полезные вызовы, такие как std::sort или что-то еще, эквиваленты на других языках;

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

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

Это та часть, где все становится немного… хардкорно.

У вас может быть четыре собеседования за один день. Скажем, одно стартовое, два технических (но сложнее, чем то, что вы делали раньше), и последнее - проектирование системы.

Положительное отношение

Я сам не могу думать об этом в такой парадигме. Но зрелый человек мог бы. Наверное.

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


Тут я оставляю ссылки, чтобы не засорять тело статьи: *, **, ***, ****.

Комментарии (7)


  1. lexore
    07.09.2021 14:28

    Похоже, что ответ на вопрос в заголовке - потому что все бросаются использовать hashmap.


  1. KamiSempai
    08.09.2021 12:59
    +3

    Интервьюер: Я хочу, чтобы вы создали сжатую строку. Например, вы можете превратить aaaabbc в a4b2c1. Вы можете превратить a в a1
    Я: *сразу приступает к кодингу* Давайте воспользуемся hashmap
    Интервьюер: Э ... как вы думаете, вы ..
    Я: Хорошо, мы сделали hashmap. Теперь давайте продолжим...

    Если при входных данных типа "aaaabbaa" на выходе ожидается получить "a4b2a2", то hashmap здесь вообще не к месту.

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


  1. sahsAGU Автор
    08.09.2021 13:34

    Про разницу реакций
    Оригинал:
    Перевод:


    1. mkone112
      09.09.2021 09:36

      Скорее про разницу реализаций. Вы хоть пробовали на эти ручки тыкать?


      1. sahsAGU Автор
        09.09.2021 12:01

        На реддите тоже другая реализация? Или будете спорить с топ-1 месяца за восемь дней в сабреддите «programming»?

        Я хоть.


        1. mkone112
          15.09.2021 15:28
          -2

          Вы бы еще вконтакте вспомнили. Тут все проще - люди видят мусор - ставят минус. Всего доброго!


          1. sahsAGU Автор
            15.09.2021 15:36
            -1

            Вам я минус поставил, всего доброго :)