Как быть хорошим Senior Developer?
Модели поведения и особенности успешных разработчиков.
Для того, чтобы стать хорошим Senior девелопером, вам нужно делать несколько вещей: совершать ошибки, исправлять ошибки, учиться на ошибках, делиться решением ошибок.
Совершенные ошибки — это ваш опыт. Постижение этого опыта — ваш ключ к успеху. Не так уже и сложно, правда?
Обычно, когда кто-то начинает карьеру программиста в качестве Junior разработчика, он начинает думать о том, как можно продвинуться по карьерной лестнице. В голову сразу же приходят мысли о получении каких-то дополнительных сертификатов или дипломов. Но стоит ли тратить на это свое время?
По правде говоря, чтобы стать хорошим специалистом, вам достаточно формального образования. Я знаком со многими senior девелоперами, у которых за плечами лишь оконченный колледж.
Не следует также забывать, что senior разработчик - это не просто человек, который пишет качественный код, он обладает рядом других полезных навыков. Senior девелопер — это человек, который может значительно увеличить прибыль компании и принести огромную ценность клиенту.
Senior разработчик не задается вопросом, что делать, он нацелен на то, как делать? И путь к должности senior один — опыт. Вы не получите эту должность на вашей первой работе. Сперва вам нужно совершить практически все возможные ошибки в данной области и конвертировать их в опыт.
Вот несколько качеств, которые отличают senior девелопера от новичка.
Любопытство
Альберт Эйнтштейн как-то сказал: «У меня нет никакого таланта. Только страстное любопытство»
Исследования говорят, что ваша способность учиться и обрабатывать информацию улучшается, когда ваше любопытство повышено. Когда вы пребываете в состоянии любопытства, активируется система поощрений вашего мозга. Когда система вознаграждения активирована, наш мозг вырабатывает дофамин, который значительно упрощает процесс нашего обучения, а также повышает настроение.
Senior разработчики идут далее и стараются концентрировать свое любопытство. Например, они глубоко уходят в какой-то один язык программирования, прежде чем распыляться.
Изучение с ног до головы.
На самом деле, очень мало оригинальных задач в программировании. Существует ничтожное количество компаний, занимающихся разработкой технологий, которые еще не были реализованы прежде. Большинство задач и проблем уже были решены. Например, однажды я модульно скомпоновал огромные 30 000 строк кода SAP ABAP в класс из 200 строк, используя готовые объектно-ориентированные классы SAP. Я смог добавить ценность к проекту лишь потому, что прежде всего хорошо освоил ABAP, прежде чем углубляться в любой другой модуль SAP. Я знаю, что освоение нового языка программирования занимает уйму времени, но оно того стоит.
Хороший ментор
Джон Кросби сказал: «Наставничество — это пинок в правильном направлении»
В 2008 году компания Google провела целое исследование, посвящённое вопросу менторства. Команда Project Oxygen в Google People Innovation Lab на протяжении целого года исследовала разницу между менеджерами с самым высоким и самым низким рейтингом. Их статистики провели более 10000 опросов по ста категориям.
Опрос позволил выявить удивительные факты:
1. Самым важным качеством успешного менеджмента является менторство. Успешные менеджеры знают, как правильно наставлять людей на успех.
2. Наименее важными являются технические навыки. Это еще раз доказывает, что хороший разработчик не обязательно хороший менеджер.
В результате проведенного исследования, Google изменили концепцию своих опросов. Вместо того, чтобы просто измерять, какого результата достигает менеджер, все внимание теперь сфокусировано на том, сколько времени менеджер уделяет тренировке своей команды, демонстрирует ли он четкое видение. Также были разработаны новые программы обучения менеджменту, основанные на этих навыках.
Ключевым ожиданием от senior девелопера является правильная коммуникация и четкое видение. Технический жаргон явно будет препятствовать общению с людьми не из технической сферы. Вот почему зачастую senior разработчики — это не обязательно IT-гении.
Senior девелопер должен уметь объяснять сложные технические понятия простым языком, используя при этом примеры из реальной жизни, и быстро определять степень понимания собеседника.
Менторство — это мощная связь между новичком и кем-то более опытным. Делитесь знаниями, делитесь опытом и это будет двигать вас вперед.
Отсутствие синдрома «блестящей игрушки»
«Лучшее — враг хорошего, поэтому компаниям нельзя быть идеальными длительное времени»(с) Джефф Безос
Это касается также и разработчиков. На самом деле, большинство разработчиков по своей природе — сороки, которые всегда собирают блестящие вещи и хранят их. Синдром блестящей игрушки, как правило, характеризуется желанием владеть самой новой игрушкой несмотря на отсутствие практических или функциональных потребностей. Хорошие разработчики контролируют эту болезнь. Они точно знают, когда не нужно что-то делать. Они понимают, что переписать библиотеку с нуля просто для того, чтобы сделать ее более читабельной, или перейти на новейший фреймворк — не всегда хорошее решения. Senior разработчики очень осторожны в принятии решений. В итоге, все сводится к коду и поставленным задачам. Код должен делать именно то, что он должен делать — и ничего более. Назначение кода должно быть достаточно ясным, чтобы его можно было понять в течение нескольких минут или даже секунд. Навигация по коду должна быть простой и ясной.
Простота есть основа утонченности.
Знаю, что не знаю
Три слова, которые труднее всего произнести вовсе не «Я люблю тебя». Три самых трудных слова к произношению — «Я не знаю». Таково мнение Стивена Дж. Дубнера и Стивена Д. Левитта, авторов бестселлера поведенческой экономики Freakonomics.
Что вы будете говорить, когда понятия не имеете о чем идет речь? Допустим вы 20 минут рассказывали о своих достижениях и навыках, а теперь бах… и разговор зашел в ту область, в которой вы не разбираетесь. Каков будет ваш ответ?
Для многих людей в такой ситуации будет очень трудно произнести слова «Я не знаю», но действительно хороший разработчик всегда скажет об этом. Намного лучше сказать это сразу, чем скрывать недостаток знаний или навыков.
Senior разработчика определяет его подход к вещам. Быть senior — это не знать абсолютно все. Быть senior — это уметь искать решения для сложных задач.
Запах плохого кода
Проблема программистов состоит в том, что вы никогда не поймете, что делает программист, пока это не приведет к необратимым последствиям(с) Сеймур Крей
У хороших разработчиков аллергия на плохой код. Они нутром чувствуют, когда что-то идет не так.
Поскольку мы строим решения на основе прошлых решений, мы должны стремиться улучшить код, а не ухудшать его. Когда senior разработчик задает вопрос: «Кто, черт возьми, это написал?», он одновременно думает:«Что я могу сделать, чтобы сделать его лучше?»
Также следует понимать, каким образом можно что-то улучшить, прежде чем начать что-то делать. Senior сразу же отличит хороший код от плохого. Лучшие футболисты тратят гораздо больше времени на изучение игры других игроков. Я уверен, что это применимо и к разработчикам.
Плохой код — это код, который нельзя четко описать. Его следует удалить либо заменить. Задача senior разработчика распознать и «починить» такой код.
Делай правильные вещи, даже если это сложно!
Дональд Крут сказал: «Повседневная жизнь — это как программирование. Если действительно любишь что-то, ты приносишь в это красоту и гармонию»