О своём pet-проекте при трудоустройстве
Всем привет! Меня зовут Алексей, и я работаю Java‑разработчиком с 2018 года. В свободное от работы время я три года разрабатывал свой pet‑проект. В статье расскажу, как трудился над этим проектом и почему в итоге всё бросил. А ещё поделюсь мнением о том, помогают ли pet‑проекты в поиске работы. Спойлер — не особо.Также эта статья может быть полезна тем, кто хочет написать свой первый pet‑проект, и тем, кто пилит свой проект слишком долго, но не знает, стоит ли его бросить.
Поиск идеи проекта
Было это в 2019 году, я тогда уже год работал Java‑разработчиком в аутсорс компании и решил сделать крутой проект в свободное от работы время, чтобы свои знания в Spring прокачать и, глядишь, стартап стрельнет он при трудоустройстве поможет.
Какую же идею выбрать? Хотелось прям что‑то одно сделать и потом этот проект развивать, а не делать кучу проектов‑«набросков».

Погуглив, пообщавшись с друзьями и насмотревшись видосов в интернете на тему: «какой проект сделать программисту?» нашёл советы, которые мне понравились:
1) пиши продукт, которым бы сам пользовался.
2) делай уникальный продукт, которого ещё нет на рынке, потому что бороться с существующими продуктами дорого.
На тот момент набирала популярность социальная сеть goodreads. Она позволяла оставлять отзывы на прочитанные книги и потом перечитывать эти отзывы спустя время. Вот подумайте, прочитали вы книжку «Чистая архитектура. Искусство разработки программного обеспечения», оставили на неё отзыв и через год перечитали его, чтобы вспомнить, о чём вообще книга была. Или можно книгу второй раз перечитать и сравнить свой первый отзыв и второй.

Ещё мне понравилось, что в goodreads была рейтинговая система. Сложно по какой‑то шкале оценить книгу, но мне показалась идея отзывов в данном случае лучшей из тех, что придумали. В отличие от отзывов на товары маркетплейсов отзывы на goodreads никто не накручивал, потому что они никому не были нужны там сидели порядочные и честные люди.
Воодушевившись данной платформой, решил сделать отзовик на курсы. Вот, допустим, прошёл кто‑то курс по обучению «Spring framework advanced» для работы и в конце в качестве отзыва прикрепил конспект, который можно перечитать. И тогда его коллега может сразу прочитать конспект, чтобы решить есть там что‑то интересное для тебя или нет?
Возникла даже идея монетизации отзовика через реферальные ссылки на те школы, которые рекламировали блогеры на тот момент. То есть взять реферальные ссылки у школ, если они их предоставляли. Тогда на часть курсов были бы обычные ссылки, а на часть — реферальные. Пользователь переходил бы по моей реферальной ссылке и покупал курс, а я бы получал денежку от образовательного учреждения за приведенного ученика.
Идея отзовика показалась мне очень привлекательной, потому что тут сошлось всё: простота проекта, собственный интерес к продукту как пользователя, потенциальная возможность монетизации.
И я решил запустить такой отзовик.
Мысли о подходах к реализации неизведанного
После того, как нашёл ответы на вопросы:
-
Что делать?
-
Зачем?
Дело осталось за малым, а именно реализовать.

Обычно когда я делаю что‑то новое, то у меня всего два варианта реализовать идею:
Вариант 1: написать проект с нуля, вникая в каждую строчку.
Плюсы:
-
Изучу глубже технологию, на которой пишу;
-
Получу более чистое или ясное итоговое решение.
Минусы:
-
Скорость реализации будет, скорее всего, не очень высокой;
-
Риск закопаться в архитектуре, так и не решив задачу.
Вариант 2: взять готовый шаблон и потом, как говорил Микеланджело: «… отсекая всё лишнее»
Плюсы:
-
Скорость запуска MVP проекта гораздо выше;
-
Не нужно писать много кода на старте проекта.
Минусы:
-
Сложнее развивать код шаблона проекта, который писал не сам.
Я остановился на втором варианте, а именно взять «рыбу» в виде рабочего проекта с минимальным функционалом и довести её до MVP в виде простого отзовика на курсы, где можно добавить текстовый отзыв на школу с указанием предмета, который изучали. Я предполагал, что все отзывы перед публикацией будут проходить модерацию, и пока админ не одобрит, отзыв опубликован не будет. Так я хотел избавиться от спама с рекламой.
Набиваю первые шишки
На своей первой работе мне давали время на обучение, когда задач от заказчиков не было. Я нашёл курс от udemy по Spring. В этом обучающем курсе был учебный проект публикации резюме, где была готовая авторизация и наполовину готовы функции: заполнения и публикации резюме.
Я начал переделывать проект публикации резюме в отзовик. Чтобы как‑то систематизировать задачи, которые предстояло решить, стал нарезать их в issue на github и закрывать по мере выполнения.

Приходилось составлять SQL таблицы для новых функций. И так как работал с проектом с разных компьютеров, то часто разворачивал базу с нуля. Тогда у меня был один SQL файл с dump‑ом всей базы, который накатывался во время первого запуска. Про liqbase я тогда не знал.
Фронт был реализован на JSP‑страницах с Bootstrap, поэтому и с JSP пришлось научиться работать, а с Bootstrap друг фронтендер помог.
С нуля пришлось делать деплой через travis‑ci на сервер heroku. Я тогда учился в магистратуре, и многие функции были для меня бесплатны как для студента. Поэтому на сервер денег не тратил. В дальнейшем в работе с этими сервисами не сталкивался, но для понимания, как выглядит сборка и доставка продукта, было полезно.
Получился следующий интерфейс:
Список курсов:

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

Если модератор одобряет добавленный курс, то он становится виден и на него можно оставлять отзывы:

Сайт крутился в бесплатном heroku на домене goodcourses.

Про отзывы
Как оценить качество образовательных курсов? По оценкам в отзывах, — подумал я. Ведь если в отзывах на книги люди не врут, то и в отзывах на образовательные курсы не будут. Я подумал, что добавлю хотя бы рейтинг курсов и начну агитировать друзей им пользоваться. Начинаю реализовывать этот рейтинг на основе оценки в отзывах от 1 до 5 и пока реализовываю, у меня ломается чайник. Иду на маркетплейс, заказываю электрический металлический чайник с отзывами 5.0 Приходит чайник без фильтрующей сетки. Я открываю инструкцию и понимаю, что сетка конструкцией не предусмотрена и вся накипь из чайника будет в кружке с чаем.

Думаю, ну как же так? Там же такие хорошие отзывы.
А оказалось, что продавец обещал всем пользователям прислать весы за положительный отзыв.

И люди вместо того, чтобы вернуть товар, писали хорошие отзывы.

После покупки чайника я передумал делать рейтинг образовательных курсов на основе отзывов. Стало понятно, что даже если модерировать все отзывы перед публикацией, то это проблему купленных отзывов не решит.
Как выбирают образовательные курсы
После первой неудачной попытки реализовать рейтинг образовательных курсов, задумался над тем, как вообще обычно выбирал курсы для обучения.
Вот такие получились варианты:
1) Отзыв знакомого, которому доверяю.
2) Реклама в поиске, в роликах у блогеров.
3) Случайным образом, когда в соцсетях наткнулся на платформу «Открытое образование» где ВУЗы публикуют курсы.
И перебрав эти варианты, понял, что они не особо системны и слабо масштабируемы.
Тогда решил подсмотреть методы оценки курсов у коммерческих компаний.
В основном компании проводят опросы после обучения и измеряют метрики в работе специалиста. Но если у компаний есть сотрудники, которым они могут в какой‑то мере доверять, и у них есть бюджет на закупку курсов, то для pet‑проекта это большие расходы.
Проблемы с рейтингом забили первый гвоздь в крышку гроба проекта. Но я решил, что пока проект бесплатно крутится на heroku, буду сам им пользоваться и, может, при поиске работы он пригодится.
Про pet-проекты при трудоустройстве и финал проекта
За свой 6-летний опыт работы в компаниях я смогу назвать лишь одну положительную историю с pet‑проектом. Все остальные, увы, оказались неудачными.
Начну с положительной. Когда я был студентом, к нам в универ пришла уже несуществующая компания «Экстракод», которая предложила следующие условия: «Экстракод» оплачивала нам факультатив по Java в универе и брала нас на работу. Факультатив проводился в самом универе после основных занятий для всех желающих студентов. На работу брали после прохождения факультатива. Если прошёл отбор, то нужно было год отработать в компании или вернуть деньги за обучение при досрочном расторжении трудового договора. Отбор проводился так: с нас собрали резюме и потом дали тест. У меня были сомнения что правильно ответил на вопросы о сервлетах из теста, но как будто ссылка на github с maven сборкой на тестовом проекте типа TODO лист сыграла в мою пользу. Потому что на факультативе maven и git не обучали, а в работе без них никуда.
Теперь о неудачных историях. У меня в резюме всегда висит ссылка на свой github. HR‑специалисты иногда пишут, что их очень заинтересовал мой github.

HR звонит, задаёт стандартные вопросы, назначает техническое интервью. Интервьюер задаёт вопросы по резюме, и порой приходится голосом повторить то, что и так написано в резюме. И при этом никто никогда не спрашивает про pet‑проекты. Дальше идут технические вопросы. Если у меня есть опыт настройки git‑ci только для pet‑проекта, а на работе это делал DEVOPS или старший разраб, то так и говорю. В интервью я не проявляю инициативу рассказать про pet‑проект. Но был один случай с банком. Я довольно успешно прошёл техническое интервью. Идёт уже финальный созвон с проджект менеджером. Отвечаю на вопросы, рассказываю, как у нас устроены процессы разработки и какие у меня обязанности. Параллельно упоминаю свой pet‑проект, поскольку мой отзовик похож на их продукт. Этот банк как раз разрабатывал площадку для курсов, которая ещё не вышла в прод на тот момент. Мы заканчиваем собеседование, а потом — долгая пауза со стороны компании. И где‑то спустя неделю приходит отказ без указания причины, просто сообщили о том, что не готовы сделать вам предложение.

Отказ на собеседовании в проект, который на коммерческой основе занимается тем, чем я занимаюсь бесплатно, забивает второй гвоздь в крышку гроба проекта.
После начала СВО heroku перестал бесплатно давать доступ для развертывания pet‑проектов и забил третий гвоздь в крышку гроба проекта. Теперь уже и сам перестаю пользоваться отзовиком. Желания развёртывать его где‑то в другом месте никакого нет.
Выводы
Размышляя об опыте работы над своим проектом, я понял, что сейчас я бы делал или коммерческий проект с ясной финансовой выгодой или просто делал бы TODO лист, чтобы протестировать рабочие вопросы или задачи собеседований. Делать полноценный проект, на мой взгляд, есть смысл только когда вы ищите первую работу. А вот после того, как нашли первую работу, смысла в pet‑проекте я не вижу. Из плюсов отмечу, что узнал и углубил свои знания, пока работал над pet‑проектом:
-
цикле жизни самого продукта;
-
написанию yml‑сценариев для деплоя;
-
поработал со Spring без автоконфигураций;
-
попробовал анализаторы коды;
-
с JSP‑страницами поработал, на работе они почти не попадались.
Мне крайне интересен опыт читателей.
Помог ли вам в трудоустройстве pet-проект?
Есть ли среди ваших pet-проектов долгожители?
Пользуетесь ли вы сами своим детищем и как долго?
Ссылка на заброшенный pet-проект
https://github.com/AlexeyOs/GoodCourses
Автор: AlexeyOs