Разработчики ПО классифицируются по уровням опыта следующим образом:

· junior (2–3 года);

· senior (10+ лет);

· middle (период между junior и senior).

Однако многолетний опыт ничего не говорит о качестве разработки ПО. В результате этого возникают следующие вопросы:

В какой момент разработчик становится сеньором?

Превращает ли многолетний опыт джуниор-разработчика в сеньора автоматически?

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

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

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

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

· Самоанализ для повышения личной производительности.

· Анализ требований клиентов для улучшения качества результата.

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

Развив эти навыки анализа, вы сможете стать успешным сеньор-разработчиком, который известен своим мастерством, а не многолетним опытом.

Рассмотрим несколько способов, которые помогут вырасти из джуниора до сеньора.

Преодоление эффекта Даннинга-Крюгера

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

Для джуниор-разработчика это верный путь к провалу. Вы можете предположить, что знаете все, но в реальности вы далеки от достижения совершенства. Постарайтесь избежать этой ловушки.

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

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

Они предлагают следующие способы преодоления самоуверенности:

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

· Попросите мнения со стороны. Конструктивная критика предоставляет ценную информацию о том, как ваши способности воспринимаются другими.

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

Чувствовать себя мудрым — это приятно, однако не прекращайте повышать свои стандарты.

Умение определять то, что не нужно делать

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

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

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

Секрет не в том, чтобы избегать риска, а в правильном выборе полей сражений.

Будьте заинтересованы

Задумывались ли вы о том, что означает слово «приложение»?

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

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

Ошибки->выводы->заинтересованность->инновации->ошибки…

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

Есть несколько способов для пробуждения любопытства и создания собственного бренда:

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

· Сосредоточьтесь на основах. Убедитесь, что вы понимаете, как они работают, чтобы использовать их в качестве основ для своей работы.

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

· Найдите баланс между новыми и устоявшимися идеями. Не принимайте вслепую идеи о том, что вы «должны» знать. Бросайте вызов статусу-кво.

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

Все начинается с любопытства. Как сказал Альберт Эйнштейн:

«У меня нет особого таланта. Мне лишь ужасно интересно.»

Читайте также:


Перевод статьи Ravi Shankar Rajan: How to Go from Junior to Senior Programmer

Предыдущая статьяЛогирование в Python с помощью Logzero
Следующая статьяКросс-компиляция программ Rust для запуска на маршрутизаторе