План
1) Введение
2) Имеющийся опыт разработки на момент прихода в Сбербанк;
3) Пониманию чего хочу достичь в дальнейшем и каким образом это можно сделать;
4) Опыт написания конструктора, ведение своего блога и более глубокое погружение в юай разработку;
5) Попытки ведения команды и управление ею;
6) Разговор с начальством, на котором заявил, что хочу идти на тимлида, закрепреление достигнутых результатов;
7) Первый неудачный опыт управление проектом;
8) Переход в другую команду и первые впечатления;
9) Выводы.
Введение
Всем привет, меня зовут Александр, я являюсь фронтенд разработчиком более 4-х лет. У меня давно была поставлена цель стать тим лидом. В этой статье хочу поделится историей пройденного пути к позиции и что меня от нее отделяет до сих пор. Таковых историй на просторах интернета очень мало и все в основном говорят в общих словах, а вот какие трудности были на пути и как их решали об этом мало кто говорит, а ведь из решения проблем можно примерно составить портрет картины, что нужно иметь, чтобы достичь своей цели. Давайте начинать)
Имеющийся опыт разработки на момент прихода в Сбербанк
На момент прихода в Сбербанк у меня были общие знания по react, redux, saga, thunk. Для уровня мидл разработчика этого было достаточно, но не для меня. По приходу на проект мне стало понятно, что не хватает знаний в построении архитектуры, как лучше организовать код, чтобы в дальнейшем этот код можно было поддерживать и расширять, переиспользовать. Также в разработке допускал очень много критических ошибок. В работе команды не было полного понимания между коллегами, что приводило к разногласию и не понимаю куда дальше расти.
Пониманию чего хочу достичь в дальнейшем и каким образом это можно сделать
Со временем понял, что хочу в следующем этапе своей карьеры занять позицию тим лида, чтобы руководить командой, понимать весь процесс разработки и принимать в нем непосредственное участие в решении ключевых вопросов. Также был выбор пойти на архитектора системы. От этого развития в условиях банка пришлось отказаться, потому что нет такой востребованности и эта позиция не так востребована, как тим лид. Соответственно возникает вопрос: под какие критерии подходит тим лид, что для этого требуется?
Критерии для тим лида, которые требуются в моем понимании:
- понимание общей разработки react, его оптимизацию, поддержание и расширение кода;
- умение настроить работу проекта: линтер, prettier, тесты, работа с хуками гита, докер и образ проекта по нему, автоматический деплой проекта на удаленный сервер;
- понимание, как решить большие задачи и их декомпозиция на более мелкие задачи;
- настроить работу коллектива таким образом, чтобы поддерживать требования кода в команде; решать спорные вопросы.
Опыт написания конструктора, ведение своего блога и более глубокое погружение в юай разработку
Для достижения вышеописанных целей мне было необходимо более глубокое понимание в работе react и не боятся проявлять инициативу и брать на себя ответственность. Одним из таких экзаменов для меня стала задача по написанию конструктора, на базе которого в последующем будут работать все документы. Реализовать ее не получилось по причине того, что у меня не было понимания того, как это будет реализовано в конце, плюс страдала коммуникация между командами. Все эти проблемы выражались в том, что при обсуждении задачи была одна реализация, а к концу она менялась и мне при этом никто ничего не говорил.
После этого мне стало очевидно, что не хватает знаний и наработки опыта, и чтобы форсировать события по части понимания и знания юай разработки решил, что необходимо завести свой блог. Он позволит тестировать мои идеи, наработки. На их основе можно написать статью и поделится через нее своими мыслями. С момента создания блога я уже не раз обращался к своим записям, чтобы освежить память по интересующим меня вопросам, также на базе блога сделал мини доклад (начинается на 32 минуте). Для меня это уже доказывает, что я не зря занимаюсь этим блогом.
Попытки ведения команды и управление ею
Также, для достижения цели позиции тимлида мне необходим был опыт руководства команды. В предыдущей команде не было возможности занять позицию по управлению командой, потому что был более опытный человек, он с этим справлялся лучше. Но когда он уходил в отпуск, то у меня появлялась возможность и нужно было по максимуму пользоваться таким шансом. Эти небольшие периоды дали мне понимание, что собой представляет общение между тимлидом и руководителем проекта/команды.
Разговор с начальством, на котором заявил, что хочу идти на тимлида, закрепреление достигнутых результатов
После того, как я попробовал руководить командой и подтянул знания, то я уже всерьез задумался стать тимлидом. С этой целью я поговорил с начальством. В результате разговора мне обещали проект, который даст возможность мне набраться опыта и перейти на позицию тимлида.
Первый неудачный опыт управление проектом
Первый проект, который мне дали, не получилось реализовать, потому что его дали в работу перед самым выходом в отпуск. Но код этого проекта помог мне в изучении более глубокого понимания юая. Из него у меня получилось сформировать сервис, в рамках которого можно вынести всю логику запросов из компонентов и сосредоточить все в одном месте. Также в рамках тестирования работы моей теории у меня получилось использовать два и более http клиента, либо функции для работы с апи.
Ближе к зиме мне дали еще один проект. В рамках работы над ним у меня получилось организовать хорошую структуру, решить проблему работы с монорепозиторием и другие сопутствующие проблемы. Однако, при передаче проекта выяснилось, что у меня были проблемы с пониманием ведения проекта. Это виденье держится на трех столбах: время, ресурсы, объем. Из-за того, что у меня не было этого понимания, то у меня не получилось нормально его передать, когда я вновь уходил в отпуск. Когда я вышел из отпуска, то узнал, что проект сдали нормально, проблем с кодом после перехода не возникло. Для меня это уже было большим облегчением, что переход прошел более-менее нормально.
Переход в другую команду и первые впечатления
После того, как сдал проект — меня перевели в другую команду. Мне озвучивали проблемы на проекте, но для полного понимания их решения мне необходимо было погрузится в проект.
Для этого в течении недели я решал дефекты на проекте; ввел практику ревью и начал писать общий гайд по написанию кода, чтобы у всех была одна картина; нарезал задачи, которые сначала необходимо решить, чтобы стабилизировать проект.
Из текущих вопросов у меня остались - это общий гайд по проекту и вопросы с пси, которые у себя закрепил, но побоялся задавать на общей встрече, потому что я не знаю общей картины по проекту.
Когда переходил в новую команду, то был озвучен вопрос, что необходимо будет поставить цели, по которым можно будет определить могу ли я претендовать на позицию тим лида или нет. Раз мне таких целей еще никто не ставил, но есть испытательный срок, то думаю, поставить следующие цели:
- организовать работу команды, чтобы повысить качество кода и уменьшить количество ошибок путем введения код ревью на основе стайгайда, тестов, линтера;
- настроить рабочее окружение, линтеры, prettier, тесты, хуки гита; решить проблему с конфликтами зависимостей;
- настроить работу с mui и работу с запросами по апи; протестировать работу с react hook form с mui;
- начать работу с по удалению старый юай китов.
Таким образом получается, если суммировать все вышеописанные цели, то к апрелю необходимо стабилизировать проект и начать удаление старых юай китов; при этом разработку новых фич необходимо будет делать на выбраном юай ките mui.
Выводы
Вот такая получается небольшая история, в которой я рассказал о том, как проходит мой путь к позиции тим лида. Это еще не конец, возможно дальше будет продолжение. На примере своей истории хотел показать, что путь к этой позиции не бывает прямым и что проблемы на нем — это нормально. Надеюсь эта история кому-то помогла. Спасибо за внимание и до встречи в следующих статьях.