> ## Content Index
> Fetch the complete content index at: https://www.rozhkov.me/llms.txt
> Use this file to discover other available public pages before exploring further.

# Пет-проект для портфолио джуниора. Идея
- URL: https://www.rozhkov.me/pet-project-for-junior-idea/
- Published: 2020-11-19T14:17:59.000Z
- Updated: 2020-11-19T23:45:02.000Z
- Author: Vova Rozhkov
- Tags: робота, кар'єра

Меня попросили предложить идею пет-проекта для портфолио джава джуна без опыта. Такой, цитирую, "чтобы при подаче заявки в резюме прикладывать гитхаб и это делало его интересным кандидатом?". *Дальше буду говорить о веб-разработке, но принципы применимы к чему угодно.*

Я [скептически отношусь к гитхабу в резюме](https://www.rozhkov.me/github-in-cv/). Не говорю за других нанимающих менеджеров, но я никогда не видел интересных проектов—обычно это круды типа [PetClinic](https://projects.spring.io/spring-petclinic/) из туториалов спринга.

Тем не менее, лучше хоть что-то, чем вообще ничего, поэтому давайте более четко очертим задачу. Наш пет-проект должен: 

1. Быть хоть самую чуточку полезным. PetClinic это хорошо, но что-то, что можно пощупать руками, будет куда интереснее.
2. Показывать что джун хорошо разобрался в базе языка, фреймворков, системы контроля версий, деплоймента. Голый исходный код, который нужно собирать и запускать, никуда не годится. Решение должно быть полноценным и законченым. Это должен быть продукт.

Под оба этих критерия отлично подходит телеграм-бот с квизами. Звучит просто? Как бы не так.

Проект будет полезен самому джуну. Вопросы и варианты ответов я предлагаю брать из того языка, который он изучает. Если это джава-прогаммист то там может быть что-то вроде "Какого метода нет в классе `java.lang.Object`?" и четыре варианта ответа. Для других языков придумайте сами.

Ссылка на бота в резюме и будет значительно более репрезентативной, нежели "вот мой гитхаб проект, там куча классов, разбирайтесь сами".

Технически бот—это вебсервер, который слушает события от мессенджера и как-то на них реагирует, отправляя запросы в ответ. Копнём глубже, для того чтобы все заработало, нашему джуну нужно разобраться:

1. Что такое HTTP, гет, пост, json, как его парсить и обрабатывать на выбранном языке.
2. Как поднять вебсервер, что такое роутинг.
3. Как настроить получение событий из телеграма, как прокидывать тоннель на свою машину чтобы разрабатывать локально ([ngrok](https://ngrok.com/)).
4. Как развернуть и подключить базу данных, локально и удалённо.
5. Как развернуть это на продакшн-окружении (например Heroku) с настоящей базой, как настроить CI/CD на GitHub Actions чтобы каждый коммит делал редеплой приложения. Тут же изучается контейнеризация и докер.

Сама логика бота—лишь 20% работы. Остальные 80%—инфраструктура и автоматизация вокруг.

Не факт, что все эти знания пригодятся вам на собеседовании, но то, что вы попадете в верхние 20% условного "рейтинга джунов"—это сто процентов. Завтра поговорим об этапах реализации на примере джава-разработчика, потому что уже на хероку и базе данных можно легко застрять на неделю.