Главная | Все статьи | Дневник студента

Каким был мой первый месяц после Хекслета: получение продакшен-опыта

Время чтения статьи ~6 минут
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Каким был мой первый месяц после Хекслета: получение продакшен-опыта  главное изображение

1 апреля автотесты Хекслета к моему «Менеджеру задач», по сути дипломному проекту профессии «PHP-разработчик», успешно прошли, и в профиле появилась долгожданная и радующая глаз метка «Закончена» напротив профессии PHP.

В апреле по семейным обстоятельствам мне пришлось львиную часть времени проводить с близкими, на программирование оставалось часа полтора в день. Что, кстати, положительно сказалось на длинной дистанции — все-таки уровень «горящих глаз» не удается поддерживать при занятиях от шести часов каждый день на протяжении более двух месяцев. Эти полтора часа я посвящал прохождению первого модуля профессии «Фронтенд-разработчик». Даже смог успешно выполнить первый ее проект «Игры разума» и удивился, насколько легко это далось по сравнению с аналогичным проектом в PHP, который я делал в августе прошлого года.

В конце апреля обстоятельства вновь изменились, и я снова смог посвящать программированию столько времени, сколько мне вздумается :) Могу себе позволить, как говорится. В планах было выходить на рынок труда, однако первые пару недель я отдал под закрепление слегка заржавевших за месяц неиспользования навыков. Сначала сделал локализацию для своего «Менеджера задач» (русский и английский языки). Потом решил сделать какое-то тестовое задание из специального репозитория Хекслета, в который реальные компании добавляют свои задания для кандидатов.

Выбрал задание от Hicaliber, которое, с одной стороны, показалось довольно небольшим и компактным. А с другой — позволяло прокачать навык работы с API, который на самом деле слабовато представлен в пройденной программе на Хекслете (на заметку составителям курса). Чувствовал, что «плаваю» в этой теме. Что ж, решено — сделано. Разобрался с этой темой основательно, Postman стал моим лучшим другом, API в соответствии с заданием построен и даже снабжен документацией OpenAPI и покрыт тестами.

И тут я замечаю, что в задании есть вторая часть — динамическая страница на Vue.js, отправляющая запросы к моему API и на лету рендерящая получаемый ответ. Фронтенд-морда, как говорит один мой знакомый джун. В общем, аппетит приходит во время еды, и я решил, а почему бы, собственно, и нет? И методом гугления, тыка и Stack Overflow вполне себе разобрался в основах Vue.js и реализовал поставленную задачу (и даже с бонусом — мой SPA может еще и добавлять новую сущность в БД). Кайфанул от результата нехило, реактивность — это, конечно, круто.

Слегка расстраивало, что в 'estimated time' к этому заданию значилось '3 часа', а у меня ушло на это четыре полных дня. Но я понимал, что это нормально, поскольку, во-первых, этой был мой первый практический нырок в построение API и построение SPA на фронтенд-фреймворке. А во-вторых, я сделал заметно больше, чем было в задании.

После этого я решил — пора. Сделал себе страницы на всех актуальных площадках по поиску работы (Linkedin — приглашаю всех хекслетчан законнектиться. И начал откликаться на вакансии. Реакции в основном не было. Я понимал, что таких, как я — десятки, с типовыми учебными проектами с курсов. Чтобы как-то выделиться на их фоне, нужно самостоятельно запилить что-то более-менее масштабное.

Еще раз прошерстил репо тестовых заданий по ключевому слову 'Laravel' (мой главный рабочий инструмент), и остановился на показавшемся самым трудным — интернет-магазин, задачка от компании 'House'.

Работа над этим проектом, названным 'Manul shop' в честь любимого животного дочки, заняла у меня три недели. По сути, можно рассматривать как пятый учебный проект на Хекслете :) Делал я все, как представляется, весьма основательно. Все контроллеры API я обильно покрывал тестами, причем дополнительно проверял (с помощью сторонней библиотеки) возвращаемый ответ на соответствие файлу дефиниций OpenAPI.yaml, также самостоятельно написанному. Получил удовольствие от того, что написание тестов вошло у меня в рутину, и, хоть и отнимало солидное количество времени, на дистанции, безусловно, окупалось.

К концу работы над проектом выполнение команды 'make test' стало занимать более минуты, общее покрытие тестами составляет 92% (причем большая часть остатка — это непротестированные почему-то встроенные модули Laravel). Сейчас в проекте 129 тестов с 634 assertions. Солидные цифры, правда? И есть что-то медитативное в наблюдении за бегущими вверх строчками с зеленым значком «PASS».

Впрочем, писать тесты 'in advance' впрок я не научился. Обычно это выглядит так (пример для тестов к API как более сложных): сначала пишу экшен к контроллеру, обрабатывающему запрос к какому-то эндпойнту, потом отправляю через Postman на него запрос и смотрю, приходит ли ожидаемый ответ. После этого добавляю в файл OpenAPI.yaml описание соответствующего пути, возможных ответов и схему возвращаемого объекта и пишу уже на основе этого тесты, с учетом всех возможных сценариев.

Из новых технологий, которые пришлось освоить:

  • Авторизация запросов к API, основанная на выдаче токенов (Laravel Sanctum)
  • Установка ролей и разрешений на определённые действия (сторонняя библиотека)
  • Работа с корзиной, сохраняющей в сессию выбранные товары (сторонняя библиотека)
  • Работа с файловым хранилищем на сервере (возможность для юзеров-админов загружать/удалять изображения)
  • Vue Router.

Настроенный со старта проекта CI/CD (Github Actions), мгновенно деплоящий каждый коммит на хостинг, вошел уже в привычку — спасибо Хекслету за воспитание хороших манер :)

Вот, кстати, результат проделанной работы — manul-shop-production.up.railway.app. За каждый найденный баг — с меня пиво при личной встрече (район обитания — Бишкек-Алматы). Зайти под админом и получить доступ к функционалу управления контентом магазина можно так: email — 'a@a', пароль — 'aaaaaa'. Хоть в верстке я и не особо, но в целом, по-моему, получилось приемлемо с точки зрения дизайна. В целом мне понравилось ковыряться со стилями CSS, настраивая все эти аккордеоны и дропдауны, тем более что пользуясь темами Bootswatch делать это — проще пареной репы. В итоге даже на экранах смартфонов сайт смотрится более-менее.

Одновременно с началом работы над Manul Shop я начал пользоваться ChatGPT. И, конечно, он стал очень ценным помощником, экономящим кучу времени. Причем я бы не сказал, что он сделал какую-то важную часть работы за меня, и что я как бы читерствовал. Все архитектурные, комплексные решения я принимал сам, к чат-боту обращался лишь для быстрого поиска ответа на какой-то небольшой локальный технический вопрос, как сделать то-то. Ранее я бы для этого использовал гугление, и правильное решение было бы найдено минут за 20-30. Сейчас же это занимает одну-две минуты (в сложных случаях до 10).

Подводя итог — результатом проделанной работы доволен. В начале июня зарелизил готовое веб-приложение, дополнил им резюме и пошел на второй виток активного поиска работы. Прям почувствовал положительные изменения в интересе работодателей — уже получил четыре отклика с приглашением к первому этапу отбора. Правда, два из них из сомнительных маленьких шаражек. А другие два выслали тестовые задания — и я их сделал буквально за вечер каждое (раз, два, зайти под 'a@a', пароль — 'a'), и получил оценку «отлично» (потом, правда, застопорилось. Видимо, другие кандидаты тоже справились и по другим параметрам были оценены выше). Но после моего интернет-магазина типовые тестовые для джунов на Laravel — семечки :)

Аватар пользователя Артем Похилюк
Артем Похилюк 20 июня 2023
2
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 28 ноября
профессия
от 14 960 ₸ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 28 ноября
профессия
от 24 542 ₸ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 28 ноября
профессия
от 28 908 ₸ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
от 39 525 ₸ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
Старт 28 ноября