Почему иногда человек с 10–15-летним опытом работы в отрасли может быть всего лишь младшим инженером в компании FAANG

Некоторые считают, что наличие 10–15 лет опыта работы с программным обеспечением автоматически дает вам право на должность старшего инженера. Это не может быть дальше от истины. Не все годы опыта одинаковы. Например, 10 лет работы в развивающейся технологической компании, такой как Google или Amazon, гарантированно научат вас тому, что вы проработаете больше, чем 10 лет в компании, которая занимается технологиями во вторую очередь, как банк.

Настоящие старшие инженеры здесь не из-за того, как долго они работают в отрасли, они там благодаря своим навыкам и качествам. Откуда я это знаю? Потому что я стал старшим инженером через 2 года после окончания колледжа.

Что делает хорошего старшего инженера?

Позвольте мне начать с того, что за 2 года работы я едва ли имел квалификацию старшего инженера. Я отнюдь не был старшим инженером высшего уровня. Я просто развил навыки и качества, которые компания ищет в старшем инженере. По правде говоря, через 2 года после окончания колледжа я на самом деле программировал около 10 лет, я получил преимущество перед большинством людей, прошедших стажировку в средней школе в IBM. Подробнее об этом можно прочитать в моем Пути к тому, чтобы стать Amazon SDE.

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

Хорошие старшие инженеры согласовывают программное обеспечение с потребностями бизнеса

Я знаю, я знаю, это смущает многих младших разработчиков. Разве менеджеры обычно не диктуют потребности бизнеса? Да, в идеальном мире. К сожалению, мы живем в несовершенном мире, и менеджеры не всегда так делают. На самом деле, в хорошей технологической компании вы не хотите, чтобы этим занимались менеджеры (если только эти менеджеры на самом деле не являются инженерами и руководителями групп, просто менеджерами по имени).

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

Хорошие старшие инженеры могут помочь другим или направить их к тем, кто может

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

Хорошие старшие инженеры задают хорошие вопросы о кодовой базе

Хорошо, я понимаю, что название этого раздела кажется очевидным, но давайте рассмотрим его суть. Что такое хороший вопрос? Хорошие вопросы обычно относятся к категории «почему». Прежде чем я приведу несколько примеров хороших вопросов, давайте рассмотрим некоторые плохие вопросы, на которые вам следует потратить как минимум час на изучение базы кода, прежде чем подумать о том, чтобы задавать их, или, возможно, НИКОГДА не задавать.

  1. Все, что вы можете найти в Google или через трассировку (например, что делает эта строка)
  2. Где я могу найти функцию x? Если ваша кодовая база ужасно спроектирована и/или поддерживается, или вы живете в 1980-х, вы можете легко найти это.
  3. Где объявляется/инициализируется/передается переменная x? То же, что №2.

Теперь давайте перейдем к хорошей части, какие вопросы вы ДОЛЖНЫ задавать?

  1. Покажите мне проектную документацию
  2. Почему вы выбрали технологию x?
  3. Как вы выбрали этот дизайн?
  4. Какова основная функция модуля x?
  5. Какие внешние модули/библиотеки мне нужно знать?

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

Хорошие старшие инженеры думают, проектируют, а затем кодируют

Есть неисчислимое количество младших инженеров и будущих инженеров-программистов, которые хотят просто прыгнуть и написать код. Я понимаю! Кодирование может быть забавным. Кажется, что программирование — это вся работа. Это не. Я с трудом могу поверить, сколько раз мне приходилось подчеркивать это людям. Кодирование — последняя часть. Вы не можете создать хорошее программное обеспечение, не зная сначала, как вы собираетесь его создавать. Да, разработка через тестирование — это хорошо, но у вас должна быть цель, ради которой вы тестируете.

Чтобы создать хорошее программное обеспечение и написать хороший код, нужно все настроить. Как настроиться на успех? Ты должен сначала подумать! Хорошие старшие инженеры думают о цели при проектировании. Лучшие старшие инженеры также учат младших инженеров, как делать дизайн. Только после разработки проекта вы можете выполнить его.

Хорошие старшие инженеры знают, что они не все знают

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

Вот и все. Спасибо за прочтение! Если вы нашли это полезным, поделитесь им с друзьями в Twitter или LinkedIn! Чтобы получить неограниченный доступ к сокровищнице информации на Medium, подпишитесь на Medium Membership Today! Для получения дополнительных советов по Python, руководств по обработке естественного языка и других постов, связанных с технологиями, не забудьте подписаться на меня, Yujian Tang!

Дальнейшее чтение

Узнайте больше об инженерии программного обеспечения:

Больше контента на blog.devgenius.io.