Поздравляю всех причастных! Желаю чтобы все работало само и не ломалось, а вы бы просто сидели весь рабочий день на джое, потому что все и так работает!
Всех пользователей призываю поздравить своих админов!
Спасибо коке и махмуду за тёплые слова. Извиняюсь за задержку, во первых адское лето регулярно говорит мне: "севодня лежиш", а во вторых у меня ушло куда больше времени на эту статью из-за паровоза мыслей (когда говоришь А, и вспоминаешь, что неплохо бы сказать Б, В и Г, а упомянув Б... ну вы поняли).
Здесь я поделюсь своим опытом с Амазон, Майкрософт и Гугл, а так же паре трюков с ними, которым я научился, пока собеседовался с ними по нескольку раз.
Для контекста, мне 7 годиков как кодеру на C#, потому джуном меня назвать не получится. Но для любого от 1 года опыта на brainfuck тоже подойдёт.
#1. Как выглядит сам процесс
В целом, он похож на 99% у всех троих. Все этапы состоят из одного из двух ингредиентов: задача по алгоритмам и поведение (о них чуть ниже), меняется только способ их проведение (и здорово меняется, на самом деле). Этапы у всех такие:
- 15 минутное интервью с рекрутером, которому ты рассказываешь про свои последние год-два опыта. Или просто о себе. Или о гипотетической ситуации. Вопросы абстрактные, запутанные, но всё сведётся только к одному шаблону, и об этом ниже.
- Тестовое задание на платформе типа leetcode. За ограниченное время, нужно решить задачи по алгоритмам, о них тоже подробнее ниже. Во всяком случае, так было до ChatGPT, который щёлкает их как орешки. После, не сталкивался
- 45 минутное интервью с действующим разработчиком
- 3 интервью с алгоритмами и 1-2 по поведению (4-5 всего) в течении одного - двух дней.
- результат: когда как, могут ответить в течении двух недель, а могут и за два дня
#2. Как попасть в этот процесс?
Здесь это - самый кусючий фильтр. Чёртова лотерея. Подаёшь заявки, десятки их и... "к сожалению бла бла бла, попытайтесь в другой раз". Неприятно, и по самооценке бьёт (особенно заметно после нескольких десятков попыток).
Пидор, если у тебя часто возникают мысли, "а не дурачок ли я?" и "зачем мне это?", то ты не один. Это нормально. Можно даже пройти собес в слабую компанию чисто для поднятия духа.
Если взглянуть на это с другой стороны, в одну вакансию за 3 дня накидали 400 заявок. И такое с каждой, рекрутер не в состоянии обработать их все.
Так же, не помогают и массовые увольнения, что были раньше: меньше рекрутеров, больше конкуренции из уже бывших сотрудников этих компаний.
Мне повезло: в 2021 и начале 2022, мне написали сами все эти 3 компании. Правда, был отсеян на последнем этапе у всех трёх. В этом году не написали, и мне удалось в процесс только с гуглом, за счёт поддержки рекрутера (чел буквально за пару дней меня закинул не просто в процесс, а сразу в последний этап).
#3. Интервью: Поведение
Техника STAR (или SAR) - сильнейший инструмент на моём опыте. Сперва было непросто понять как это работает, особенно на фоне 14 принципов лидерства Амазон (о них немного здесь https://habr.com/ru/articles/645045/, но ради бога, это лишь метрики, с ними можно свериться, но не ориентироваться, пользы мало, а дезориентации много). Но, с практикой это превращается в BFG9000.
Для тех, кто не знает, STAR - это когда ты отвечаешь по шаблону: - Ситуация/Задача — Situation/Task: Где, когда это произошло, почему это важно?- Действие — Action: что ты лично сделал, как ты это сделал, кто ещё учавствовал?- Результат — Result: как ты измерил выхлоп этого проекта? Какие результаты у тебя вышли? * Экономия затрат, получение дохода * Считай в цифрах, чтобы дать понять объемы, размеры, масштабы * Изменение в процентах, годовые улучшения * Время выхода на рынок, время реализации, экономия времени * Воздействие на заказчика, команду * Улучшение качества
Не больше, чтобы не циклиться на деталях, лучше это понимается на примерах.
Так же, помогает смена ролей. Вместо "ты собеседуемый и пытаешься понравиться хорошей компании" на "ты - тренер и помогаешь джуну понять, что к чему". Сразу исчезает давление, посторонние мысли в голову не лезут, и ты делаешь то, что привык делать (надеюсь, если нет - самое время пробовать).
Вернёмся к STAR. Рассмотрим пару примеров. Тебя просят рассказать о своих достижениях:
а) Ты занимаешься скучной фигнёй вроде разработки приложения для менеджеров по продажам для понимания клиентов.
б) Может, работаешь с большим легаси приложением - швейцарским ножом для внутреннего потребления в компании.
в) Ну или пишешь плагин чтобы было проще программировать роботическую руку, отвечающую за упаковку.
В любом случае, ты решаешь себе задачки, затем забываешь о них и занимаешься своими домашними делами. Какие вообще достижения??
Как подготовиться:
Возьми любую задачу что ты решал и ответь себе на вопрос: что за проблему оно решило? Главное - цифры.
Задача:
а) Ты добавил фичу, проверяющую пользовательский ввод, если ты бэк.
б) Передвинул пару кнопок, если фронт (конечно, работа у ребят будет посложнее, но я специально беру максимально тупые примеры). в) Ты исправил баг в приложении на компьютер, когда пользователь работает ногами, и приложение внезапно красится в "горячий розовый".
г) Эм... ты написал драйвер на ассемблере, что работает на 10% быстрее предыдущего за счёт квантовых вычислений и расщипления чёрных дыр на атомы.
Решённая проблема (что было до этого - проблема, и что после - результат):
а) Пользователи раз в день* вводили неверные данные. Это нарушало работу нашей системы и нам присылали задачи их исправить. Такая задача занимала час в день. С введением этой фичи, я сэкономил 1 час работы, это 1 час разработчика каждый день
* - даже если не знаешь сколько точно, лучше по наитию назвать конкретную цифру; будь готов обосновать, в этом примере у тебя было 50 менеджеров по продажам и кто-то да ошибался (если нет, то убеди себя что действительно было, хотя откровенно врать - так себе идея)
б) У нас был неинтуитивный пользовательский интерфейс (*зевок*). Это заставляло продажников тратить в среднем по 1 минуте в день на поиски нужных кнопок, когда они работали с приложением. Всего у нас 10 продажников. Итого, я этим сэкономил примерно 1 час в неделю, а так же избавил продажников от стресса (пункт: влияние на заказчика, команду) путём улучшения качества софта (тоже пунктик).
в) Нам раз в неделю* поступали жалобы об интересном баге (о котором написано выше). У нас не было точных метрик (если же были - используй!), но где-то 10 пользователей из 50 всего натыкались на этот баг, из-за которого они перезагружали приложение, чтобы сбросить странный цвет, и потом писали негативные отзывы о нас**. Что я сделал: я обнаружил, что в определённом сервисе есть неучтённый случай работы пользователя ногами и добавил туда проверку. Так, я исправил этот баг, и снизил кол-во негативных отзывов о нас с 1 в неделю до 1 в квартал.
* опять же, конкретная цифра ** не забыть про то, какая была проблема
г) У нас хороший продукт. Одно из достоинств/один из недостатков его - скорость. Чем быстрее - тем выше конкурентноспособность приложения, ведь тогда продукция выходит быстрее / администратор работает быстрее и более слажено.
Понимая это, я предложил способ его ускорить. Он основывается на ... (описано выше). Я разработал подробный план действий, потому не было сложности в том, чтобы его одобрить. Его и одобрили. Затем, я за 3 месяца выполнил эту часть, используя стиль змеи и прочие микро компоненты.
У меня получилось ускорить процесс на 10%, что ... (повторяешь то, что написано в начале этого пункта, да и идея, надеюсь, понятна).
Перевод в STAR:
Падажжи, так мы уже перевели это в STAR. Что остаётся, это обозначить для себя, где заканчивается одна часть и начинается другая. Ну и добавить деталей, чтобы это звучало как история, а не голый шаблон. Но это придёт с опытом. Опытом писателя или говорителя.
Итоги:
Насколько хорошо это работает? Мой опыт слишком мал чтобы говорить однозначно, но мне удавалось куда проще впечатлять любую компанию на данном этапе, отплёвывались всегда на чём-то другом.
Разумеется, если роль зовётся "XXL лид разраб на облаке", а ты пилишь мелкие веб приложения, то такой пробел техникой не закроешь. Но можно подать себя более выгодно, если есть хоть какой опыт (именно лидом и именно облако) и ты умудрился попасть на собеседование.
Кто-то обратит внимание, что я привожу в примеры задачи, когда техника подразумевает проекты. На самом деле, она работает в любом масштабе, и я не заметил разницы (буду благодарен если кто-то из внутренней кухни расскажет, есть ли она, и какова).
#4. Задачи и Алгоритмы
Немного метрик. У меня всего где-то 300 решённых задач + кой какой опыт с компаниями ранее. Этого не хватило.
У этого блогера () их под 600, и его взяли. Правда, он не только их решал, но ещё и объяснял, и делал видео.
Получается, надо додрочить эти алгоритмы как раз до 600 штук чтобы был высокий шанс пройти эту часть (люди с 3000+ решенными задачами за годы, ебать вы высокие). Так ли это - узнаю через пол года/год :)
Есть небольшая разница между компаниями. Майкрософт подбирает задачи из leetcode, а Гугл ещё и добавляет какую-то заковырку.
В последнем этапе у всех трёх есть отдельная комиссия, сравнивающая результаты от кандидатов. Гугл говорит, что они тестируют то, как ты думаешь, такими задачами. На это и был мой ориентир тренировок.
Результат: не хватает эффективности. Решаю я их слишком медленно для формата "45 минут на всё" и запинаюсь иногда. То есть, обратное от того, что говорят, надо именно придрочиться к алгоритмам.
## Язык программирования?
Вообще похуй (с). Писал на своём без проблем. С brainfuck будут проблемы потому, что это brainfuck.
ПыСы: если вы дошли до сюда, то большое спасибо, что прочитали! Я буду рад любой критике, много ли воды, слишком ли разжевывал, чего не досказал, ошибки, может сумбурно получилось или непонятный стиль. Буду даже удивлён если что толковое получилось из этого безумного хаоса мыслей и пережитков.
Отличный комментарий!