Привет! Ранее я начала рассказ о своем обучении в рамках менторской программы Women in Tech. Сегодня я хочу рассказать о том, как делала пет-проект — чего боялась, как планировала и что в итоге сказал мой ментор.
В предыдущих сериях: я - фронтенд-разработчица с 2+ годами опыта - поставила целью своего 3-месячного обучения прокачаться в мидловских компетенциях. В первом месяце я щелкала задачки с Codewars, учила теорию и занималась английским, а второй месяц провела, проходя курсы на Хекслете.
В одном из предыдущих постов я упоминала, что к пет-проекту подступаться мне было страшновато. Но почему? Ведь суть обучения с ментором именно в этом! Мой ментор, конечно, успел дать мне пару неплохих советов, что подучить, но самое ценное, что я могла от него получить — это код-ревью.
Во-первых, меня пугало отсутствие чёткой идеи. Говорят, что пет-проект нужно делать по любви, а не из-под палки, нужно хотеть показать его всем-всем-всем и рассказывать о нём с горящими глазами. А я даже не представляла, что это может быть. Хотелось сделать что-то не слишком сложное, но и очередной туду-лист пилить было стыдно. В общем, о вдохновении говорить не приходилось.
Во-вторых, меня напрягали временные рамки. По факту менторская программа длилась не ровно три месяца, а скорее два или два с половиной. Пет-проект мне нужно было подготовить к 1 марта, но половину февраля я проболела и пыталась занять себя чем-то полезным, но не слишком тяжелым (а именно, решала курсы на Хекслете - об этом в предыдущем посте). В итоге на выполнение пет-проекта у меня осталось дней десять.
В-третьих, сам вид пустой IDE. К этому моменту я успела написать сколько-то проектов - но практически все по каким-нибудь туториалам, по работе с нуля тоже давно ничего не писала. Я, конечно, могла взять какой-нибудь чужой (или собственный готовый) проект за основу, но мне хотелось быть честной и проверить, насколько хорошую архитектуру я могу создать сама.
Страх страхом, но у меня оставалось всего десять дней, и надо было начинать. Какие идеи у меня были на старте:
- Я хочу написать калькулятор (чего-нибудь). По моему изначальному замыслу, я должна была написать клон Тяжеловато — калькулятора бюджета на день. Выглядело не слишком просто, а еще в открытом доступе был блог разработчиков и даже готовые макеты.
- Писать я буду на Vue (с Composition API) и на TypeScript. В идеале когда-нибудь перепишу это на React — чтобы потренироваться.
- Вместо вебпака буду использовать Vite.
- Попробую отойти от структуры, предлагаемой при базовом разворачивании проекта, и вместо этого попробую модульную архитектуру (в идеале вообще хотела попрактиковаться с FSD, но вряд ли это подошло бы для маленького проекта)
- Т.к. я сильно ограничена по времени, сделаю совсем простой MVP с минимумом функционала, а позже буду его дорабатывать
С проблемой я столкнулась практически сразу же — я поняла, что моя изначальная идея мне не подходит. Калькулятор бюджета на день, в том виде, в котором я его представляла, должен был общаться с бэком и каждый новый день показывать новую сумму, записывать куда-то историю трат — на это все у меня не было времени (хотя возникла идея однажды вернуться к Firebase и накидать себе простую базу данных). Однако к тому моменту я уже начала верстать — т.е. у меня уже были заготовки для калькулятора (чего-нибудь). Надо было срочно придумывать что-то новое, но при этом не отходить от первой задумки слишком далеко.
И наконец меня осенило, какой проект я хочу сделать, которым можно будет действительно пользоваться — а не положить в стол. Приложение с делением счета на нескольких человек! Мы с моей компанией друзей пользовались различными аналогами (Splitwise, Tricount), но ни один из них не был удобным, с простым интерфейсом (а про использование на мобильных вообще молчу). Если что, здесь я имею в виду сложный калькулятор с возможностью вводить список покупок и отмечать, кто за что платил — и на этом основании рассчитывать долги.
После того, как я наконец определилась с идеей, разработка пошла куда быстрее, однако у меня оставалась всего неделя (к тому же, рабочая). Писать приходилось в первую очередь быстро, о качестве я не сильно задумывалась — плюс, я решила дать волю голове и рукам, чтобы ментор обратил внимание на вообще все возможные ошибки, которые я могу допустить.
Вот что бы я сделала по-другому, будь у меня больше времени:
- Я бы продумала все сущности до начала работы. Поначалу я вообще создала один общий store для всего подряд, и только в самом конце разделила его на несколько (с Pinia это конечно было делать гораздо удобнее, чем с Vuex). Однако во время работы я часто путалась, и на это тоже приходилось тратить время.
- Я бы не забивала на типизацию (даже временно) и не лепила
any
везде, где мне было лень создавать интерфейс. Это, опять же, только замедляло меня и открывало много возможностей для ошибок. - Я бы уделила больше времени организации стилей и вообще файлов.
- И в целом писала бы аккуратнее и рефакторила бы решения, которые приходят в голову первыми (чтобы не клепать алгоритмы чуть ли не с кубической сложностью)
Перед финальным созвоном с ментором я тревожилась, т.к. отправила ему очень сырой MVP с кучей ошибок. Однако разговор прошел хорошо — ментор похвалил в общих чертах архитектуру проекта и его внешнюю часть, а потом мы сели разбирать ошибки — прошлись по почти всему коду, и ментор предлагал другие варианты решения (или просто подхода к написанию — тоже было интересно узнать, на что обращают внимание в крупных компаниях). В итоге я получила большой план для работы над ошибками, и сейчас возвращаюсь к нему, когда получается найти время.
Вот и все. Хочется сказать себе прошлой «а ты боялась» — но, я думаю, от страха только через практику и можно избавиться. После этого мое обучение с ментором подошло к концу — но, конечно, я все еще продолжаю учиться самостоятельно. Необходимость раз в месяц отчитываться о своем прогрессе, конечно, помогала мне не расслабляться — но впереди у меня такое ответственное мероприятие, как поиск работы, а к нему тоже надо серьезно готовиться. Но за эти три месяца я точно отлично научилась планировать свое обучение и надеюсь продолжать в том же духе.
В общем, если вы боитесь пет-проектов — попробуйте, превозмогая страх, написать хоть что-нибудь, даже самое простенькое и кривое. Зато узнаете о своих слабых местах — а когда знаешь, над чем нужно работать, становится легче.
Успехов :)