Как стать сеньором?

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

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

1. Сохраняй фокус

Быть сфокусированным значит совершать осознанный выбор: отказываться от менее значимых аспектов ради важных. Говорить “нет” всему, что отвлекает, чтобы быстрее достигать своих целей. Это требует признания своих ограничений и понимания, что не все возможности одинаково ценны. Не стремиться охватить всё: новые фреймворки, продукты, статьи, развлечения. Ресурсы — время и энергия – ограничены. Профессионал это хорошо понимает и распоряжается ими с умом.

Люди думают, что сосредоточиться – это сказать «да» тому, на чем нужно сосредоточиться. Но это совсем не то, что это значит. Это значит сказать «нет» сотне других хороших идей, которые существуют.

Стив Джобс

2. Думай наперед

Одна из черт, выдающих “джуна” – это подход “построим сейчас, а разберемся потом”. У новичков есть склонность к написанию кода в первую очередь и размышлениям, если повезёт, во вторую.

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

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

Кстати, шахматы прекрасно развивают эту способность. И я вот вам рекомендую. Шахматы форево ❤️
В первом приближении хорошо помогает техника "пяти почему", только наоборот. П при попытке понять верность решения. Обязательный расчет потенциальных возможных недостатков решения - маск хев. Идеально - оценка независмого эксперта.

3. Будь прагматичным

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

Отличный пример этого правила – тестирование. Когда я узнал о разработке через тестирование (TDD), я начал пытаться тестировать все подряд, стремясь к полному покрытию кода тестами. На самом деле, полное покрытие кода тестами разработку сильно затратной и часто оказывается пустой тратой времени.

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

Быстрая “хакатон” разработка приводит к появлению ошибок и техническим долгам. Тотальное следование правилам, буквально парализует проект и контекст вашего кода меняется, приведет к еще более плохим решениям.

Способоность находить баланс – черта профессионала.

4. Прекрати спорить

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

Гепарду не нужно проявлять себя в гонках, он бегает только на охоту.

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

5. Получи фундаментальные знания

Каждый раз, когда я вижу в резюме разработчика, что он описывает себя как “Laravel разработчик” или “React разработчик”, я понимаю, что он не сеньор. Он может быть крут в рамках этого фреймворка, но не в общем смысле.

Разработчик, специализирующийся на фреймворке, никогда не будут сеньорами. Фреймворки не сделают вас профессионалом, потому что фреймворки – это лишь глазурь на торте, а не сам торт. Вершина айсберга, а не его основание.

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

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

Чтобы стать профессиональным разработчиком, вы должны понимать не только “Что”, но и “Почему” за вещами с которыми вы работаете.

Старший разработчик, например, не только сможет построить приложение на React. Но он также поймет, почему React был создан определенным образом. И как он сочетается с языком, на котором он написан, и платформой, на которой он работает.

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

6. Освойся вокруг своего кода

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

Младшие разработчики считаются «дорогими», потому что они не могут работать самостоятельно. Младший разработчик часто не видит дальше его кода.

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

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

7. Поднимись на уровень над кодом

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

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

Как разработчики могут создавать качественные ментальные модели?

Изучая фреймворки и библиотеки и изучая лежащие в их основе шаблоны проектирования. В зависимости от вашего технологического стека существует много шума. Такие вещи, как принципы SOLID или MVC…

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

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

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

8. Прокачай коммуникацию

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

Они делают это, используя сочетание напористости, технических знаний и коммуникативных навыков. 

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

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

У меня не существует пошагового руководства, как стать более коммуникативным разработчиком. Это требует повторения и практики. Но есть первый шаг — перестать все время говорить «Да».

9. Совершенство — это привычка

Привычки важны, потому что они выдерживают испытание временем. 

Потому что любые ваши знания о фреймворке JavaScript рано или поздно устареют. Технологии меняются. Но ваши привычки останутся с вами навсегда. 

Хорошая новость в том, что люди — существа привычек.

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

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

Например, если вы хотите стать лучше в тестировании, пишите по одному модульному тесту каждый день. 

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

Выработайте новые привычки, и ваш прогресс будет постоянным и устойчивым.