Разработка
Быть хорошим инженером-программистом сейчас сложнее, чем когда-либо
Работа в стартапах на протяжении почти десяти лет дала мне привилегированный доступ к быстро развивающейся культуре инноваций, исследований и fail-fast подхода. Я следовал стандартной карьерной лестнице — стажер, junior, middle, senior и в конце концов перешел на позицию инженерного руководителя. Со временем многие люди, с которыми я рос, перешли работать в другие компании, став там очень уважаемыми сотрудниками. Будет справедливо сказать, что они хорошие инженеры.
Оглядываясь на путь моих сверстников, подопечных и свой собственный, можно сказать, что сейчас стать хорошим инженером сложнее, чем когда-либо.
Определение понятия «хороший инженер
Что значит быть инженером? Как инженеры-программисты, мы:
- Отвечаем за преобразование сложных проблем в эффективные и масштабируемые решения.
- Задачей является анализ требований пользователей, проектирование архитектуры программного обеспечения, написание кода, тестирование и отладка программного обеспечения.
- Мы должны быть в курсе всех тенденций, искать новые возможности для бизнеса и способы улучшения существующих продуктов.
Так что нет — инженерное дело не равно программированию. Иногда это самая незначительная часть. Она становится таковой по мере приобретения опыта, как показано на рисунке ниже.
Что значит быть хорошим инженером? Проводя многочисленные интервью и следя за успехами своих подопечных, я заметил, что люди с разным уровнем знаний могут давать разные ответы.
Тот, кто только начинает работать, может думать, что дело в количестве языков и фреймворков, которые знает разработчик. Более опытному инженеру может быть безразлично, какой язык он использует, вместо этого он делает акцент на качестве кода — соблюдении всех принципов кодирования и проведении QA, при этом работая быстро.
Опытные инженеры уделяют огромное внимание тому, чтобы приносить пользу. Иногда мы быстро пишем мусорный код, который нарушает все правила, чтобы доказать гипотезу; иногда мы тратим дни на написание пары строк критически важного кода. Но чаще всего мы принимаем архитектурные решения, обсуждаем критически важные вопросы, улучшаем процессы и т.д. Почему? Потому что зачастую это приносит наибольшую пользу.
Хотя всегда есть исключения из правил, мы можем сказать, что хороший инженер — это тот, кто эффективно фокусирует свои усилия, чтобы принести максимальную пользу в достижении цели.
Растущие рынки и конкуренция
Рынок технологий постоянно развивается. За прошедшие годы мы все стали свидетелями масштабных успехов: от WhatsApp до Uber, Airbnb и TikTok. Хотя это могут быть исключения, такие примеры часто становятся для людей путеводной звездой — тем, к чему они должны стремиться. Такой образ мышления оказывает дополнительное давление на инженеров. Они испытывают стресс изнутри, думая, что делают что-то не так, и извне, когда люди сравнивают их компанию с многочисленными конкурентами.
Чтобы преуспеть в такой среде, компаниям нужно было «двигаться быстро и ломать вещи», как гласит знаменитый девиз Facebook*. Сегодня это очевидно как никогда — почти каждая компания становится «ИИ-компанией». Все интегрируют ChatGPT, часто без реальной причины, без стратегии того, как это принесет пользу.
Отходя от основного принципа — как мы можем принести больше пользы нашим клиентам — и стремясь обогнать конкурентов на «поезде хайпа», мы получаем инженеров, создающих функциональность, которая обречена на провал.
Мир запутанный
Что должен делать такой энтузиаст, как я, чтобы стать лучшим инженером? Помимо очевидного выбора — совершенствовать навыки программирования, улучшая чистый код и философию архитектуры, — в наше время существует множество соблазнов. Изучение TypeScript и того самого нового фреймворка, который изменит все, погружение в мир блокчейна и криптовалют, эксперименты с огромным количеством AI-продуктов… Варианты бесконечны.
Честно говоря, после стольких лет работы в индустрии я все еще чувствовал угрозу со стороны новой волны изменений, которую несли ChatGPT, GitHub Copilot и другие новые технологии. Мой мозг начал представлять себе сценарии, в которых я не в курсе многих вещей. Сосредотачиваюсь ли я на правильных вещах, чтобы принести пользу? Использую ли я свой потенциал на максимум?
Через некоторое время стало ясно, что мы находимся в состоянии хайпа. Это тоже пройдет, и останутся только те ИИ-компании, которые создают долгосрочную ценность. За последние 5 лет в США количество ИИ-компаний удвоилось, при этом многие стартапы просто добавляли функции поверх только что вышедшего GPT-3. Позже они умирали с выходом ChatGPT или GPT-4, которые могли делать то же самое, но лучше. Но это не мешает шумихе в Twitter и на других платформах провозглашать новый мировой порядок.
Даже имея за плечами столько лет работы в сфере технологий, я втянулся в эту шумиху. Ошибка новичка!
Языки программирования и постоянные выпуски новых фреймворков также вносят путаницу. Tailwind, TypeScript, Haskell и Rust — все они прекрасны. У каждого из них есть своя особенность, которая делает их лучше конкурентов. Однако люди часто принимают их изучение из-за того, что они дадут им преимущество. Это не так, или, по крайней мере, не должно быть так. Это просто инструменты, которые приятно знать, но они не могут заменить опыт. Именно поэтому мы никогда не указываем требования к языку/фреймворку в наших должностных инструкциях. Я был бы глупцом, если бы упустил талантливого инженера из-за того, что он не знает TypeScript, промпт-инжиниринг или микросервисы.
Мой совет — не увлекайтесь новыми тенденциями и шумихой до такой степени, чтобы потерять фокус на создании ценности.
Быстрый темп и высокие ожидания
В поисках новых вызовов бывает трудно стремиться к позитивному стрессу, избегая при этом негативного. Положительный стресс — это стресс, при котором мы воспринимаем стрессовую ситуацию как возможность, ведущую к хорошему результату, а отрицательный стресс — это стресс, который может иметь пагубные последствия для физического и психического здоровья, как показано на рисунке ниже. Постоянное достижение результатов в сжатые сроки — это стресс, а создание функций по неправильным причинам приводит к негативным последствиям.
И как наставник, и как трудяга я видел, как стресс приводит к выгоранию. Все без исключения люди, переживающие выгорание, дают меньший результат, чем снижение нагрузки, перерыв и оптимизация в долгосрочной перспективе. Именно поэтому мы всегда стараемся максимально упростить процесс выявления «красных флажков» — периодически обновляем командные процессы, проводим индивидуальные встречи и поддерживаем культуру воспитания.
Тем не менее, все может пойти не так. Когда это происходит, мы сокращаем объем работ, привлекаем людей, которые могут помочь, или сообщаем нашим клиентам, чтобы они отложили запуск.
Давление сейчас как никогда велико, оно исходит как изнутри, так и извне. Не отвлекайтесь и окружите себя поддерживающей командой, оптимизирующей работу в долгосрочной перспективе.
Как мы можем добиться большего?
У каждого из нас бывают моменты, когда мы чувствуем себя неполноценными инженерами, неполноценными менторами или коллегами. Никогда всё не будет идеально и легко, да и не должно быть. Не совершая ошибок и не испытывая трудностей, мы не учимся. Но есть некоторые вещи, которые, как мне кажется, могут повысить эффективность.
Вы лично оставайтесь верными тому, что действительно важно. Технологии приходят и уходят, но ценность, которую вы привносите в мир, — вот что имеет значение. Трудно подделать тяжелую работу и опыт.
Как компания, принимая решения, исходите из того, зачем это делать. Это лучший способ реализовать функциональные возможности, которые принесут пользу. Кроме того, убедитесь, что сотрудники так же знают зачем. По моему опыту, они будут принимать более правильные решения, давать ценную обратную связь и будут более счастливы.
В культурном плане установите процессы, которые будут поддерживать сотрудников, оптимизируя долгосрочную работу. Вместе с коллегами создайте культуру доверия, поддержки и заботы. Таким образом, вы все будете получать лучшее друг от друга.
-
Интегрированные среды разработки2 недели назад
Лучшая работа с Android Studio: 5 советов
-
Новости4 недели назад
Видео и подкасты о мобильной разработке 2024.43
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2024.44
-
Исследования2 недели назад
Поможет ли новая архитектура React Native отобрать лидерство у Flutter в кроссплатформенной разработке?