Моя реакция на этот невероятно распространенный вопрос.
Заголовок этой статьи отсылает к популярному вопросу с 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)
KamiSempai
08.09.2021 12:59+3Интервьюер: Я хочу, чтобы вы создали сжатую строку. Например, вы можете превратить aaaabbc в a4b2c1. Вы можете превратить a в a1
Я: *сразу приступает к кодингу* Давайте воспользуемся hashmap
Интервьюер: Э ... как вы думаете, вы ..
Я: Хорошо, мы сделали hashmap. Теперь давайте продолжим...Если при входных данных типа "aaaabbaa" на выходе ожидается получить "a4b2a2", то hashmap здесь вообще не к месту.
Получается автор оригинальной статьи приступил к работе даже не разобравшись в поставленной задаче, а при попытке интервьюера мягко направить его в правильное русло просто перебил того и продолжил гнуть свою линию.
lexore
Похоже, что ответ на вопрос в заголовке - потому что все бросаются использовать hashmap.