Кто такой разработчик-сеньор и как им стать

0
840
views

Перевод статьи «What Is a Senior Developer and How Can I Become One?».

Photo by Fotis Fotopoulos on Unsplash

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

Но для начала давайте озвучим, что точно не является определяющим фактором

Вопреки тому, что вы видите в 95% объявлений о вакансиях, тайтл Senior Developer не имеет жесткой привязки к стажу работы.

Как правило, чем дольше человек работает, тем больше у него опыта. Во многих компаниях при определении уровня специалиста ориентируются на стаж. Но количество отработанных лет это не единственное, что определяет сеньора. (Здесь вспоминается поговорка-анекдот: «Мудрость не всегда приходит с возрастом: иногда возраст приходит один» — прим. ред.).

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

Что же делает разработчика сеньором?

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

  • опыт,
  • лидерские качества,
  • наставничество,
  • технические знания и умения.

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

Давайте рассмотрим каждый пункт подробнее.

Опыт

Опыт работы обычно исчисляется в годах стажа, но это не слишком точный метод.

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

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

Как же определять опыт?

Распознавание шаблонов на основе опыта

У вас, как и любого разработчика, наверняка был случай, когда вы столкнулись с какой-то странной ошибкой. Она могла быть связана с JavaScript, webpack или даже операционной системой — это не важно, главное, что она была совершенно непонятная.

Но затем с помощью коллег или Google вам удалось решить возникшую проблему. А три месяца спустя вы занимались уже другим проектом, и вдруг столкнулись с точно такой же ошибкой. И вам уже не пришлось гуглить, чтобы разобраться с ней (как вариант — вы уже точно знали, что именно нужно гуглить). Вы просто уже были знакомы с этой задачей, поэтому быстро ее решили и двинулись дальше.

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

Распознавание незнакомых вещей

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

Но это не должно пугать. Напротив, это должно вдохновлять, ведь в вашей сфере деятельности столько всяких крутых штук, которые можно (и нужно) изучить!

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

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

Старайтесь объективно оценивать свое положение и свои знания: это принесет много пользы.

Лидерство

У старших разработчиков склонность к лидерству появляется природным образом. Это не значит, что вы должны непременно быть техлидом или именно за вами будет последнее слово при принятии решений. Просто вы должны быть способны (хотя бы на базовом уровне) толкать проект вперед.

Понимание всей картины

Если вам приходилось работать над проектами в команде, вы знаете, что каждый проект или отдельный функционал обычно имеют целый список историй (stories), которые нужно обработать, чтобы завершить этот проект. И каждая такая история — отдельный шажок на пути к большой цели.

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

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

Photo by Wonderlane on Unsplash

Прямая помощь менее опытным членам команды

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

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

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

Наставничество

Зачастую для разработчика удобнее просто заниматься своим делом, не отвлекаясь на то, чем занимаются другие. Но принесет ли такой подход пользу команде?

Способствуйте развитию товарищей по команде

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

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

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

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

Распространение знаний

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

Возьмите за правило (личное) делиться тем, что знаете. Вы только что переделали бизнес-логику? Уделите 30 минут на то, чтобы провести всех по новому коду. Если кому-то сложно в нем разобраться, поработайте с этим человеком в паре, расшарьте свой экран.

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

Технические знания и умения

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

Photo by Sigmund on Unsplash

Способность быстро продвигаться вперед

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

Но если вспомнить о том, как важно уметь распознавать неизвестные тебе вещи, не слишком разумно ожидать, что каждый сеньор непременно разбирается во всем. То есть, я не сочту эксперта по Ruby меньше достойным тайтла сеньора, если он не знает JavaScript. Но я все же буду ожидать, что он умеет применять свои знания для изучения другого языка и написания кода на другом языке.

Продвижение шаблонов

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

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

Шаблоны вроде MVC (Model View Controller) стали популярными не без причины. Разработчики постоянно учатся на обобщенном опыте прошлого и на опыте коллег, которым случалось решать сложные задачи. Полученные знания они могут применять в собственной работе. Ведь задача не в том, чтобы каждый раз заново изобретать велосипед, а в том, чтобы решить возникшие проблемы и создать хороший продукт.

У нас у всех свой путь

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

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

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here