Разработчики ПО классифицируются по уровням опыта следующим образом:
· junior (2–3 года);
· senior (10+ лет);
· middle (период между junior и senior).
Однако многолетний опыт ничего не говорит о качестве разработки ПО. В результате этого возникают следующие вопросы:
В какой момент разработчик становится сеньором?
Превращает ли многолетний опыт джуниор-разработчика в сеньора автоматически?
Будучи джуниор-разработчиком, я думал, что знаю абсолютно все. Я избегал сотрудничества с другими и считал, что писать отличный код — это единственное, что имеет значение. Однако это не так. Да, написание кода — это важная составляющая, но далеко не единственная.
Я приобрел этот опыт во время работы со своим первым клиентом. Я разговаривал с ним примерно 15 минут, уловил суть требований и предположил, что точно знаю, чего он хочет. Я увлекся написанием кода как сумасшедший, получая удовольствие от процесса. Я выполнил работу за 3 дня, а клиент неожиданно отклонил ее.
Я был невероятно расстроен и обвинил клиента в том, что он предоставил недостаточно информации. Однако он не виноват. Если бы я посвятил больше времени анализу требований заказчика, ситуация могла бы быть совсем другой.
Умение писать код не превращает человека в программиста, поскольку работа программиста заключается в том, чтобы проанализировать все детали, прежде чем приступить к выполнению. Анализ необходимо проводить на нескольких уровнях:
· Самоанализ для повышения личной производительности.
· Анализ требований клиентов для улучшения качества результата.
· Анализ всего проекта для улучшения качества работы всей команды.
Развив эти навыки анализа, вы сможете стать успешным сеньор-разработчиком, который известен своим мастерством, а не многолетним опытом.
Рассмотрим несколько способов, которые помогут вырасти из джуниора до сеньора.
Эффект Даннинга-Крюгера — это тип когнитивного искажения, при котором люди считают, что они умнее и способнее, чем есть на самом деле. Это означает, что люди с низкими способностями не обладают навыками, необходимыми для распознавания собственной некомпетентности, из-за чего переоценивают свои способности.
Для джуниор-разработчика это верный путь к провалу. Вы можете предположить, что знаете все, но в реальности вы далеки от достижения совершенства. Постарайтесь избежать этой ловушки.
Разница между джуниором и сеньором заключается в том, что первый считает, что он знает все, а второй знает, что ему предстоит еще многому научиться. Джуниоры не умеют определять уровни навыков и компетенции других людей, поэтому они считают себя более способными и более осведомленными, чем другие.
Даннинг и Крюгер предполагают, что с увеличением опыта работы самоуверенность обычно снижается до более реалистичных уровней. По мере погружения в изучаемую область программисты начинают замечать собственный недостаток знаний и способностей. С приобретением знаний их опыт возрастает, как и уровень уверенности.
Они предлагают следующие способы преодоления самоуверенности:
· Продолжайте учиться и практиковаться. Получив больше знаний по теме, вы с большей вероятностью поймете, сколько еще нужно выучить.
· Попросите мнения со стороны. Конструктивная критика предоставляет ценную информацию о том, как ваши способности воспринимаются другими.
· Подвергайте сомнению то, что вы знаете. Продолжайте оспаривать свои убеждения и ожидания. Ищите информацию, которая бросает вызов вашим идеям. Чем больше вы задаете вопросов, тем больше вы учитесь.
Чувствовать себя мудрым — это приятно, однако не прекращайте повышать свои стандарты.
Во многих случаях мы делаем что-либо, основываясь не на необходимости это сделать, а на том, насколько хорошо это действие удовлетворяет наше эго или увлечение острыми ощущениями. Однако лучшие решения принимаются, когда мы «убираем» себя из процесса, потому что в большинстве случаев это не касается лично нас. Просто спросите себя: «Стоит ли это делать?» Да? Тогда делайте.
Это относится и к программистам. Многие из них напоминают сорок, которые собирают блестящие вещи, хранят их и ищут связи. Синдром «блестящей игрушки», как правило, характеризуется желанием владеть новейшей игрушкой, независимо от ее практических или функциональных потребностей.
Если вы хотите стать сеньор-разработчиком, постарайтесь избежать этой болезни любой ценой. Лучшие сеньор-разработчики точно знают, что и когда не нужно делать. Они знают, что переписать библиотеку с нуля для улучшения читабельности или перейти на новейший фреймворк — не всегда хорошие решения. Предназначение кода должно быть достаточно ясным, чтобы его можно было понять в течение нескольких минут или даже секунд. Навигация по коду должна быть простой даже без современного волшебства.
Секрет не в том, чтобы избегать риска, а в правильном выборе полей сражений.
Задумывались ли вы о том, что означает слово «приложение»?
Почему мы называем эти маленькие значки в наших смартфонах приложениями? Причина в том, что они применяют определенный рабочий процесс или алгоритм, чтобы помочь нам в решении проблемы.
Однако при создании чего-либо, вы неизбежно будете совершать ошибки. Размышление о проделанной работе и ее постоянное совершенствование ведет к инновациям, а в основе инноваций лежит заинтересованность в принципах работы различных элементов. Помните, что это важный элемент в цикле самосовершенствования.
Ошибки->выводы->заинтересованность->инновации->ошибки…
Если вы хотите уверенно двигаться вперед и стать успешным сеньор-разработчиком, вы должны быть заинтересованы в том, чем занимаетесь.
Есть несколько способов для пробуждения любопытства и создания собственного бренда:
· Не прекращайте обучение. Выберите курс, книгу или онлайн-программу и используйте их для обогащения уже существующих идей и получения новых.
· Сосредоточьтесь на основах. Убедитесь, что вы понимаете, как они работают, чтобы использовать их в качестве основ для своей работы.
· Не рассказывайте о своих идеях. Показывайте готовые проекты. Идеи переоценены. Используя и распространяя свои идеи, вы сможете создать личный бренд.
· Найдите баланс между новыми и устоявшимися идеями. Не принимайте вслепую идеи о том, что вы «должны» знать. Бросайте вызов статусу-кво.
· Создавайте не просто рабочий продукт. Сделайте его расширяемым, пригодным для повторного использования и подключаемым. Таким образом вы создаете собственный опыт.
Все начинается с любопытства. Как сказал Альберт Эйнштейн:
«У меня нет особого таланта. Мне лишь ужасно интересно.»
Перевод статьи Ravi Shankar Rajan: How to Go from Junior to Senior Programmer
Комментарии