Для чего начинающему разработчику нужны pet-проекты
Pet-проекты как ключ к карьерному успеху: гайд по созданию и советы
Кевин Систром в свободное от работы время разработал мобильное приложение Burbn, где пользователи могли чекиниться, планировать встречи и загружать фото. После переосмысления проекта с Майком Кригером появилась социальная сеть Instagram. Марк Цукерберг создал Facebook как pet-проект, будучи студентом Гарварда. Дрю Хьюстон начал Dropbox как личный проект, чтобы решить проблему с хранением и синхронизацией файлов, с которой он столкнулся.
Эти истории показывают, что небольшие личные проекты могут вырасти в глобальные компании, если они решают реальные проблемы людей.
В этой статье Вячеслав Легостин, тимлид backend-разработки Kolesa Group, расскажет про pet-проекты всё, что нужно знать начинающим.
Что такое pet-проект и зачем он нужен
Pet-проект — это личный проект разработчика, который он создаёт в свободное время. Такой проект нужен, в основном, для изучения новых технологий и получения опыта разработки проектов, близких к коммерческим. Также благодаря pet-проекту вы заинтересуете работодателя на собеседовании, показав, на что вы способны. Это может быть любая идея, которая вам интересна: приложение, сайт или даже игра.
Гайд по подготовке pet-проекта
- Идея проекта
Выберите тему, которая очень интересна лично вам. Я, например, выбрал своё хобби — пейзажную фотографию. Это позволит вам быть максимально вовлечёнными: сможете придумывать новые фишки и улучшения, находить единомышленников и реальных пользователей.
- Кейс
Приведу гайд через призму своего pet-проекта — веб-сайта для фотографов. Потратил на его создание два месяца, чтобы мне не было стыдно его показывать на собеседованиях.
Мы не выберем для гайда эту же самую идею: ей не меньше десяти лет. Мы расширим идею на другие направления и адаптируем проект под реалии 2024 года. Сайт должен включать в себя хабы, ленту постов, динамические блоки с полезной информацией, категории, рейтинги. Сайт будет в стиле Reddit.
1. Выбираем стек
Выбор технологий и языка программирования для проекта должен соответствовать вашим целям и рынку труда. Определите, какой стек используют в компаниях, куда планируете устроиться. Для backend-разработчиков рекомендую PHP, Python или Java.
Для сайта выбираем PHP — это относительно простой в освоении язык программирования с большим количеством учебных материалов и фреймворком Laravel. У Laravel мощное комьюнити и много материалов.
Для хранения данных всегда выбирайте бесплатные и популярные реляционные базы, такие как MySQL или PostgreSQL.
Backend-разработчикам важно знать, как работает frontend. Для быстрой и простой вёрстки советую Tailwind CSS.
2. Определяем базовый функционал для сайта
- регистрация и авторизация;
- создание хабов — аналогов сабреддита {cообщество внутри Reddit на любую тему};
- создание постов;
- ленты хабов;
- главная страница;
- лайки, дизлайки, комментарии.
На этом этапе вы освоите нужный язык программирования и фреймворк, научитесь работать с базами данных и формировать авторизацию веб-проектов. А также поймёте, как взаимодействуют между собой backend- и frontend.
3. Размещаем проект в интернете
Когда базовый функционал готов, пора разместить проект в интернете. Вам нужны будут виртуальный сервер VPS, операционная система (например, Ubuntu) и красивый домен.
На данном этапе вы научитесь:
- работать с SSH-доступом и SSH-ключами;
- настраивать SFTP-протокол и загружать файлы на сервер VPS;
- работать с терминалом и командами: cat, ls, nano, vim, history, grep, apt, cp, mv, chmod, chown, artisan и др.;
- разворачивать на сервере PHP, MySQL, PostgreSQL, NGINX.
Дополнительно можно внедрить систему контейнеризации приложения — Docker. Это популярная и лёгкая в освоении система контейнеризации приложений, содержит библиотеки, системные инструменты, код и среду выполнения.
4. Логи и оценка состояния продукта
Хороший специалист должен уметь собирать логи и анализировать их. Логи — это хранилище, куда автоматически записываются все события, которые происходили в компьютерной системе. Этим хранилищем могут служить текстовые файлы, собственная база или отдельная система. Необходимо знать, где и как искать логи NGINX, уметь анализировать логи PHP и самого приложения, применять утилиты, такие как Pail из Laravel.
5. Развиваем продукт
На этом этапе можно добавить дополнительные функции для улучшения проекта:
1) Кеширование с помощью Redis — для ускорения загрузки страниц.
2) Поиск на сайте с использованием Elasticsearch — для улучшения пользовательского опыта.
3) Настройка CI/CD-пайплайнов — для регулярной автоматизированной сборки кода.
4) Работа с очередями через RabbitMQ или Apache Kafka — для асинхронной обработки данных.
5) Перевод информации из реляционной базы MySQL в MongoDB — для удобного хранения данных.
6) Использование микросервисов на Go — для выделения отдельных функций, например, отправки уведомлений.
Рекомендации по подготовке к собеседованиям
1) Указывайте в резюме навыки, которые вы приобрели во время работы над проектом.
2) Показывайте проект реальным пользователям и учитывайте их отзывы.
3) Повторяйте теорию перед собеседованием и будьте честны: отметьте, что проект был создан для получения опыта.