Привет!
Вчера был мой последний рабочий день в компании 😢
В Артезио проработал почти 7 лет, а на проекте Партнёрского кабинета почти 6. Есть повод немного порефлексировать (интересно, скорее всего, не будет, но зафиксировать нужно).
В компанию пришел неокрепшим мидлом с заниженной самооценкой, т к на своем первом проекте прилично отхватывал от лида и получал фидбеки ниже среднего (в чем есть и моя вина, потому что качество кода было сомнительное 🙈).
В Артезио я попал на проект Партнёрского кабинета Альфа-Банка, который нужно было писать с нуля. Для меня это был интересный опыт, т к никогда еще я не был на начальных этапах проектов. Прикольно ощущать, что клиенты начинают пользоваться абсолютно новым продуктом, и ты приложил руку к тому, с чем они взаимодействуют. За время проекта у нас были ежегодные аттестации и сборы фидбека, на которых мне прилетали нормальные оценки (что сначала было странно для меня). Так я почувствовал немного больше уверенности в себе.
Здесь, конечно, скрывалась одна из проблем - я начал клепать код без критического взгляда на него. Не то чтобы я не думал над оптимизацией функций, но вот гибкости и чистоты не хватало. Был некий флоу по разработке фич в основе которого была react-redux архитектура. Есть компоненты, они вызывают экшены, в которых выполняются запросы к мидлу, результат кладется в стор и все работает. Бизнес логика размазана по всему приложению…
Вопросы архитектуры меня волновали и тогда, но ответов на них особо не находил (про выделение бизнес логики, clean и feature-sliced я узнал года 3-4 назад). Да и думать честно говоря было некогда - нужно было быстро наращивать функционал приложения. Работали мы без особого планирования и спринтов, просто брали приоритетные задачи в разработку и старались сделать быстро. Но, замечу, без овертаймов!
Здесь крылась вторая проблема - нет времени на тесты. При оценке задач я всегда ориентировался только на этап разработки (+ багфикс) и забывал про тесты. Точнее я все думал, что надо когда нибудь попросить времени на них, но времени не было. Только потом я понял/узнал что продать бизнесу тесты невозможно. Их нужно изначально закладывать в оценку.
Третья проблема близка ко второй - отсутствие документации. По тестам можно понять как должен работать тот или иной процесс. Но можно вести документацию в той же конфлюенс. Мы этого не делали. На тот момент, как и что должно работать знал наш ПО + тестировщик, ну и разрабы, которые имплементили фичи. В какой то момент ПО ушел и частенько у нас начали сыпаться вопросы "А это всегда так работало или это баг?", ответить на которые мы могли только покопавшись в коде.
В какой-то момент обороты по реализации фич поутихли и проблемы кодовой базы уже не списать на то, что тебя торопили. По мере возможности я старался привести очевидные WTF части к нормальному виду. Особенно после того, как подумал, что если буду уходить с проекта, передавать его в таком виде оч стыдно. Это прям стало реальным мотиватором к тому, чтобы писать лучше. Да и вообще пришло осознание (хотя и поздно), что если ты один фронт, то этот репозиторий чисто твой проект и ты за все в ответе. За то, что у проекта нет нормального
Read.me, за то что там до сих пор 4 версия react-router, древний redux без хуков и 4 вебпак.
▫️Многое удалось поправить, а то что не удалось - вроде работает и жалоб нет (надеюсь, кек)
▫️Начал вести документацию по разработке на конфлюенс.
▫️Попробовал подход чистой архитектуры для фронтенда (понял что на самом деле тяжело и долго и не всегда нужно), решил что выделение моделей, функций бизнес логики, прикладного слоя и адаптеров в принципе достаточно.
▫️Перестал забивать на линтер
А вообще, на проекте была классная отзывчивая команда и хорошо отлаженные процессы. За все время не овертаймили ни разу. Компетенции внутри команды хватало, чтобы решать почти все проблемы проекта. В банке за это время уже появились свои стандарты разработки по фронту, которые помогают не свернуть на скользкую дорожку "сделать побыстрее и в прод".
Короче, классный опыт. Что-то из него вынес. Посмотрим, что будет дальше 😅