Вот почему некоторые разработчики зарабатывают $400 000, в то время как большинство — нет

Стратегии обучения и развития разработчиков мирового класса

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

Анна Гат, основательница Interintellect

Лучшие инженеры в мире имеют только одну общую черту: их одержимость. Они — современные столпы, которые никогда не довольствуются достигнутым, движимые неутолимым желанием достичь большего.

🚀 Решайте свои задачи с помощью последних самых дорогих версий искусственного интеллекта!

🚀 Бот ChatGPT по-русски умеет:

📃 Писать рефераты, курсовые, дипломы.

📐 Решать задачи.

👨🏻‍💻 Программировать.

🖼 Рисовать изображения.

📝 Писать за вас любые тексты.

🧠 Предлагать идеи на любые темы.
Жмите ChatGPT по-русски

Неизвестная платформа

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

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

Вот почему некоторые разработчики зарабатывают $400 000, в то время как большинство — нет

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

И вот однажды я получил это письмо:

Мы рады официально предложить вам должность старшего инженера-программиста.

Оглядываясь назад, в нашем разговоре друг упомянул несколько книг по алгоритмам и сайт под названием Leetcode.

Эта статья — глубокое погружение в секреты сообщества Leetcode. Мы узнаем шаблоны в процессе найма, как проходят интервью в FAANG, и услышим потрясающие истории, которые там рассказывают программисты.

Это именно то, что я хотел бы знать, будучи младшим разработчиком.

Внутри LeetcodeДля тех, кто не знает, Leetcode — это платформа для практики типичных задач по программированию, которые часто встречаются на собеседованиях. На сайте есть вкладка обсуждений, где каждый может оставить пост.

Вот так выглядит вкладка Discuss на Leetcode.

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

Я решил собрать посты за последние 2 года (около 10 000) и проанализировать тренды и интересные данные. Вот несколько фактов:

Компании FAANG часто упоминаются в постах:

  • Facebook: 513
  • Amazon: 398
  • Apple: 23
  • Netflix: 5
  • Google: 457

Есть множество примеров собеседований на должности старшего инженера-программиста: 147

А вот один из многих случайных/забавных постов, которые я там нашел:

Remitly | Старший инженер | Телефонное собеседование

"...Он не давал мне ничего, кроме базовых данных для тестирования, а крайние случаи я придумывал сам. Казалось, ему не было дела до собеседования; я был в процессе кодирования, и вдруг он начал громко включать ужасную музыку из болливудского фильма. Я такой: что за черт?.."

Так что в духе этого собеседования…

Давайте начнем вечеринку!

Анатомия собеседования на должность разработчика программного обеспечения

Собеседования на позиции старших инженеров-программистов становятся все более стандартизированными во многих компаниях, и большинство из них следует следующему шаблону: Meta | SWE — Infra | E5 Full Loop.

Вот типичный процесс:

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

Опыт работы становится решающим фактором в ожиданиях компаний.

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

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

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

В течение всей статьи я буду добавлять ссылки на задачи Leetcode в качестве примеров к тому, что объясняю.

Этап программирования

Разработка программного обеспечения — это сложно. Я понимаю разочарование, но опытные программисты знают, что единственное решение — это практика, терпение и приверженность делу. Читая посты на Leetcode, становится очевидно, что лучшие разработчики годами фокусируются на практике, как этот человек, описывающий 4-летний путь: 400 Leetcode Problems Celebration | The Awakening.

Что мне нравится в этих постах, так это возможность увидеть, как выглядят реальные собеседования, например, в Amazon SDE II Online Assessment Toronto.

Вот почему некоторые разработчики зарабатывают $400 000, в то время как большинство — нет

Также можно получить множество полезных рекомендаций. Я заметил закономерность: в нескольких постах, таких как «6+ месяцев упорной работы и, наконец, предложение от Facebook», упоминалась полезность пробных собеседований.

Я обнаружил, что у многих историй успеха есть одна общая черта: акцент на качество, а не количество, и особое внимание на пробные собеседования.

Проектирование систем

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

Мое решение этого вопроса простое — золотая книга под названием: Clean Architecture.

Посты на Leetcode также рекомендуют сайты, такие как Systems Design in a Hurry, и книги, такие как Designing Data-Intensive Applications. Можно найти детальные объяснения в таких постах, как System Design: 100 topics to learn.

Поведенческое интервью

Для поведенческого интервью можно практиковать ответы на вопросы по методике STAR, и если вам нужно мнение со стороны, я настоятельно рекомендую использовать ChatGPT.

Типичные вопросы включают рассказ о случае, когда вам пришлось решать конфликт, или когда вы получили отрицательный отзыв и как вы с этим справились.

Шаблоны и ИИ

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

Я начал с использования API для классификации комментариев. Однако быстро обнаружил, что модели не сохраняют состояния, что затрудняет анализ последовательности постов.

Я не буду вдаваться в технические подробности, но, по сути, я загрузил данные в свою базу данных и начал делать запросы как к API OpenAI, так и к ChatGPT.

Вот почему некоторые разработчики зарабатывают $400 000, в то время как большинство — нет

Логика, используемая ChatGPT

Одно интересное наблюдение, которое я сделал, заключается в том, что ChatGPT гораздо лучше работает с PDF-документами, чем с электронными таблицами. При анализе таблицы ChatGPT сначала пытается создать цикл на Python для поиска по файлу. В то время как PDF-версия анализируется как единое целое.

Используя PDF, ChatGPT составил удивительный список наиболее распространенных задач по программированию на собеседованиях:

Вопросы для онлайн-оценки Google:

  • Минимальная амплитуда
  • Способы разделения строки
  • Максимальное время
  • Минимальная абсолютная разница в загрузке серверов
  • Самый бронируемый номер в отеле
  • Минимальные вращения домино для одинакового ряда
  • Время на набор строки
  • Максимальная сумма уровней бинарного дерева
  • Минимальное количество стульев
  • K ближайших точек к началу координат
  • Прыжки через нечетные и четные элементы

Задачи по программированию для Adobe:

  • Список книг: Реализуйте функцию автозаполнения.
  • Длительность фильма: Создайте функцию для определения максимального времени показа.

Вопросы по проектированию систем:

  • Разработайте сервис автозаполнения, аналогичный строке поиска Google.
  • Проектирование на низком уровне для системы поиска рейсов.
  • Разработка механизма публикации/подписки в реальном времени, используемого в приложениях, таких как Google Docs.

Вопросы по алгоритмам и структурам данных:

  • Задача "Круг друзей": Определите самое раннее время, когда все люди познакомились на основе логов.
  • Определите, существует ли путь в дереве, сумма которого равна заданному числу.
  • Самое раннее знакомство: Найдите момент, когда все люди стали знакомыми.

Вопросы, специфичные для фронтенда:

  • Реализуйте функции или исправьте проблемы в коде, связанном с фронтенд-технологиями.
  • Создайте пользовательские хуки в React для управления асинхронными операциями.

Интересные находки

Есть и другие интересные посты, например, с очень детальными объяснениями процесса собеседования, такие как Meta preparation strategy | Step by step guide | E4 and plus.

Также можно найти собеседование на должность старшего инженера-программиста в Tesla, которое, на первый взгляд, кажется простым, но, вероятно, направлено на оценку того, насколько хорошо кандидат проектирует архитектуру. Это характерно для компаний, которые не входят в FAANG.

Существуют и конкретные руководства по программированию, такие как Dynamic Programming Study Guide.

Море данных, океан сомнений

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

Мы растем как сумасшедшие только в действительно неудобных и экстремальных ситуациях.

Особенно меня зацепил один из постов, который я обнаружил во время этого анализа.

Аноним
Низшая точка в моей жизни

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

Я хочу поделиться своим ответом на этот комментарий с вами.

"Привет! Сейчас я старший инженер-программист, но в жизни у меня было много подобных моментов, и в какой-то момент я был на грани голода.
Я не могу дать тебе конкретный совет, потому что только ты знаешь, что для тебя будет лучшим, но я хочу рассказать о вещах, которые помогли мне:
1- Стоицизм: стоицизм очень помог мне в таких моментах. Книга «Препятствие — это путь» помогла мне понять, что эти моменты делают меня сильнее и устойчивее. Чтение таких историй может вдохновить тебя и помочь найти другие решения.
2 - Вера: твой мозг сейчас в режиме тревоги, и ты видишь только темноту в будущем, но через несколько лет все будет хорошо, и ты окажешься в совершенно другой ситуации, решая другие проблемы. Твоя следующая работа может появиться внезапно, тебе просто нужно продолжать двигаться вперед, быть сильным и здоровым.
3 - Люди: просить о помощи — это не стыдно, люди любят помогать, а в будущем ты сможешь отплатить им тем же. Также попробуй снова обратиться в компании, которые уже тебя рассматривали, они уже знают тебя."
Надеюсь, у тебя все получится. Ты будешь вспоминать эти моменты как фундамент, который сделал тебя сильнее.

Если для улучшения нам нужны экстремальные ситуации, возможно, мы можем создавать их сами…"

Вот почему некоторые разработчики зарабатывают $400 000, в то время как большинство — нет

Автор: Давид Гудет
Старший инженер-программист из Венесуэлы, проживающий в Мадриде. Топовый автор в сфере ИИ и технологий. Выпускник Singularity University и программы Госдепартамента США.

🚀 Решайте свои задачи с помощью последних самых дорогих версий искусственного интеллекта!

🚀 Бот ChatGPT по-русски умеет:

📃 Писать рефераты, курсовые, дипломы.

📐 Решать задачи.

👨🏻‍💻 Программировать.

🖼 Рисовать изображения.

📝 Писать за вас любые тексты.

🧠 Предлагать идеи на любые темы.

Жмите ChatGPT по-русски

4747
11
13 комментариев

Тут еще чтобы зарабатывать такие большие деньги, играет не только фактор трудолюбия, но и везения, чтобы устроиться туда куда нужно

4
Ответить

Интересная статья, многое узнал. Сам недавно проходил собеседования в крупные компании, могу подтвердить - процесс действительно стандартизированный. Особенно запомнилось проектирование систем, это реально сложная тема. Посоветовали книгу "Clean Architecture", начал читать - очень помогает структурировать знания. А вот с поведенческими вопросами до сих пор туго, надо потренироваться отвечать по STAR. В целом, чтобы попасть в топовые компании, нужно реально много работать над собой.

2
Ответить

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

Ответить

на таких хлебных местах сидят программируют дети чиновников

4
Ответить

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

Ответить

Ну так собственно везде, в любой сфере, кто-то много зарабатывает, кто-то минимум.

Ответить

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

Ответить