Разработчиков программного обеспечения можно классифицировать по уровню опыта. Нечто вроде:
- Джуниор: 2–3 года опыта
- Сеньор: 10+ лет опыта
- Миддл: между джуниором и сеньором
У этой классификации по опыту есть проблема. Она ничего не говорит о качестве разработки. О том, какой опыт и навыки вы приобрели за эти годы. Вот почему собеседования для разработчиков так сложны. Трудно измерить навык, поэтому во время интервью для разработчиков проводятся сложные тесты. Но эти тесты в лучшем случае приблизительны и не могут оценить проделанную работу или опыт, требуемый при выполнении следующих задач.
Это подводит нас к следующему вопросу.
Когда вы уже перестаете быть джуниором, когда вы становитесь сеньором?
Могут ли годы опыта автоматически сделать вас главным разработчиком? Скорее всего нет.
Возьмите мой случай, например. Когда я был молодым джуниор-программистом, я думал, что знаю все. Я был дерзким и независимым. Я считал себя «Богом кода». Мне не нравилось сотрудничать с другими, и я думал, что писать отличный код — это единственное, что имеет значение.
Я ошибался. Да, программирование важно. В конце дня программист должен сдать рабочий код. Но написание кода не единственное, что имеет значение.
Я научился этому непросто, еще когда работал на своего первого клиента. Я поговорил с клиентом 15 минут, собрал суть требований и предположил, что точно знаю, чего он хочет. Я начал яростно работать над кодом, как сумасшедший, получая удовольствие от написания чистого кода. Я сделал приложение за 3 дня, а затем клиент отклонил его. Это было не то, что он ожидал.
Излишне говорить, что мне было больно. Мое эго было ущемлено и я обвинял клиента в том, что он не предоставил достаточно информации. Это говорила моя незрелость. Клиент никогда не виноват. Если бы я посвятил больше времени анализу требований заказчика, ситуация могла бы быть совсем другой. Но я понял это на собственном опыте.
Программист не является программистом только потому, что он может писать код. Он программист, потому что его работа состоит анализе всего еще до начала проекта. И такой анализ должен быть сделан на нескольких уровнях.
- Самоанализ для лучшей работы.
- Анализ требований клиентов, чтобы сделать лучше.
- Анализ всего проекта, чтобы помочь ему работать лучше.
И если вы хотите перейти от младшего к старшему разработчику, вам нужно развить эти навыки анализа, чтобы превратиться в действительно хорошего сеньор-разработчика, который известен своим опытом, а не просто многолетней работой.
Хороший сеньор похож на того, кто вырос, стал взрослым и может позаботиться о себе. Его жизнь больше не беспорядочна, спонтанна и экспериментальна. Он выучился на своих ошибках и создал прочную основу, которой он может гордиться. Он может быть «молодым», но он обладает прагматизмом и эффективностью, которые будут гораздо более ценными, чем его фактический опыт работы.
И вот несколько способов перейти от джуниора к сеньору.
Преодолеть эффект Даннинга-Крюгера
Эффект Даннинга-Крюгера — это тип когнитивного искажения, при котором люди считают, что они умнее и способнее, чем они есть на самом деле. По сути, люди с низким уровнем квалификации не обладают навыками, необходимыми для распознавания собственной некомпетентности, и это заставляет их переоценивать свои собственные способности.
И для джуниор-программиста это верный путь к катастрофе. Вы можете предположить, что вы программист “рок-звезда” и знаете все, но реальность такова, что вы знаете очень мало и все еще далеки от достижения совершенства. Это ловушка, которую надо избежать.
Разница между джуниором и сеньором заключается в том, что младший думает, что он знает все, а старший знает, что ему еще предстоит многому научиться. Младшие программисты склонны переоценивать свои собственные знания и способности и не могут распознать уровни навыков и компетенций других людей, поэтому они постоянно считают себя более способными и более осведомленными, чем другие.
Как справедливо утверждает Дэвид Даннинг.
Во многих случаях некомпетентность не оставляет людей дезориентированными, озадаченными или осторожными. Вместо этого некомпетентные люди часто наделены неуместной уверенностью, поддерживаемой чем-то, что для них кажется знанием.
Даннинг и Крюгер предполагают, что с ростом опыта выполнения работы самоуверенность обычно снижается до более преемлемого уровня. Когда программисты начинают глубоко погружаться в свои области, они начинают осознавать, что им не хватает знаний и способностей. И по мере того, как они приобретают знания, их опыт возрастает, и уровень уверенности у них растет.
Есть следующие способы преодоления такого разрыва:
- Продолжайте учиться и практиковаться. Как только вы получите больше знаний по теме, вы с большей вероятностью поймете, сколько еще нужно выучить. Это может побороть тенденцию полагать, что вы являетесь экспертом, даже если это не так.
- Спросите других, как у вас дела. Конструктивная критика других разработчиков может дать ценную информацию о том, как другие воспринимают ваши способности.
- Спросите себя, что вы знаете. Продолжайте оспаривать свои убеждения и ожидания. Ищите информацию, которая бросает вызов вашим идеям. Чем больше вы спрашиваете, тем больше вы учитесь.
Помните, что чувство мудрости убаюкивает. Но вы должны всегда повышать свои стандарты. И для того, чтобы лучше понять конкретную тему, вам нужно копать глубже. Это позволяет вам узнать, сколько еще предстоит узнать.
Знайте, что не нужно делать
В книге «Тонкое искусство пофигизма» Марк Мэнсон говорит о важности сохранения идентичности, которая определяется как можно меньшим количеством факторов. Это следствие того, что вовлечение нашей идентичности происходит из-за определенных видов поведения или событий, которые представляют ценность для нас, как для человека.
Проще говоря, мы часто решаем сделать что-то, основываясь на том, насколько хорошо оно удовлетворяет наше эго или детское увлечение острыми ощущениями, а не на реальной необходимости сделать это. Мэнсон говорит нам, что лучшие решения принимаются, когда мы отдаляем себя от решения, потому что, скорее всего, речь идет не о “нас”. Просто спросите себя: «Это хорошая вещь?» Да? Тогда идите и делайте это.
Это относится и к программистам. На самом деле, большинство программистов по своей природе — сороки, которые всегда собирают блестящие вещи, хранят их и ищут связи. Если вы не знаете об этом явлении, то синдром блестящей игрушки, как правило, характеризуется желанием владеть самой последней игрушкой, часто независимо от практических или функциональных потребностей, или привязкой к интенсивному, но очень временному уровню владения, прежде чем перейти к чему-то другому.
Если вы стремитесь стать лучшим программистом, вам необходимо избежать этой болезни любой ценой. Лучшие сеньор-программисты точно знают, когда что-то не нужно делать. Они знают, что переписать библиотеку с нуля просто для того, чтобы сделать ее более читабельной, или перейти на новейшую среду со старой — не всегда хорошие решения. Код сам по себе должен быть достаточно ясным, чтобы его можно было понять в течение нескольких минут или даже секунд. Навигация по коду должна быть простой, даже без сложного волшебства.
Ключ не в том, чтобы избегать риска, а просто в выборе правильных сражений.
Быть безумно любопытным
Задумывались ли вы, что означает слово «приложение»?
Почему мы называем эти маленькие иконки в наших смартфонах приложениями? Это потому, что они применяют определенный рабочий процесс или алгоритм к нашей проблеме и помогают нам решать наши задачи.
Тем не менее, если вы что-то делаете, вы обязаны совершать ошибки. Размышление о своей работе и ее постоянное совершенствование ведет к инновациям, а в основе инноваций лежит любопытство, чтобы узнать, как все работает. Помните, что это важная часть во всем цикле самосовершенствования.
Ошибки -> Инсайты -> Любопытство -> Инновации -> Ошибки… Повторение…
Если вы хотите двигаться дальше и быть хорошим сеньором, вам должно быть безумно любопытно заниматься всем, что вы делаете. Любопытство — это инструмент, который становится тем лучше, чем больше вы его используете, и это именно то, что люди ожидают от превосходного сеньор-программиста. Хорошие ведущие разработчики направляют свое любопытство структурированным образом, чтобы они могли использовать информацию, накопленную в кризисных ситуациях.
И вот несколько способов, которыми вы можете пробудить ваше любопытство и создать свой бренд.
- Никогда не переставайте учиться. Подберите курс, книгу, онлайн-курс и используйте их, чтобы обогатить идеи, которые у вас уже есть, или получить новые идеи.
- Сосредоточьтесь на основах. Убедитесь, что вы понимаете, как они работают, чтобы вы могли использовать их в качестве фундамента для своей работы.
- Не рассказывайте свои идеи — показывайте свои проекты. Идеи в любом случае переоценены. Когда ваши идеи используются и распространяются, вы создаете свой бренд.
- Найдите баланс между новыми и устоявшимися идеями. Не принимайте вслепую идеи о том, что вы «должны» знать. Бросьте вызов статус-кво.
- Не просто заставляйте вещи работать. Сделайте их расширяемыми, многоразовыми и подключаемыми. Так вы улучшите свой опыт.
Все начинается с любопытства. Если вам не интересно, проще уйти. Как сказал Альберт Эйнштейн:
У меня нет особого таланта. Мне просто очень любопытно.