Назад
Тех.статьи
9 сентября 2024

Для чего начинающему разработчику нужны 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) Повторяйте теорию перед собеседованием и будьте честны: отметьте, что проект был создан для получения опыта.

Поделиться