О своём 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 и закрывать по мере выполнения.

Часть списка issue, которые закрыл

Часть списка issue, которые закрыл

Приходилось составлять SQL таблицы для новых функций. И так как работал с проектом с разных компьютеров, то часто разворачивал базу с нуля. Тогда у меня был один SQL файл с dump‑ом всей базы, который накатывался во время первого запуска. Про liqbase я тогда не знал.

Фронт был реализован на JSP‑страницах с Bootstrap, поэтому и с JSP пришлось научиться работать, а с Bootstrap друг фронтендер помог.

С нуля пришлось делать деплой через travis‑ci на сервер heroku. Я тогда учился в магистратуре, и многие функции были для меня бесплатны как для студента. Поэтому на сервер денег не тратил. В дальнейшем в работе с этими сервисами не сталкивался, но для понимания, как выглядит сборка и доставка продукта, было полезно.

Получился следующий интерфейс:

Список курсов:

О своём pet-проекте при трудоустройстве - 5

Список курсов для неавторизованного пользователя

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

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

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

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

О своём pet-проекте при трудоустройстве - 7

Пример двух отзывов к тестовому курсу

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

Интерфейс приложения делал имея год опыта и для MVP считай его нормальным

Интерфейс приложения делал имея год опыта и для MVP считай его нормальным

Про отзывы

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

Фото чайник без ситечка для фильтрации накипи

Фото чайник без ситечка для фильтрации накипи

Думаю, ну как же так? Там же такие хорошие отзывы.

А оказалось, что продавец обещал всем пользователям прислать весы за положительный отзыв.

Листовка, которая шла в комплекте с чайником

Листовка, которая шла в комплекте с чайником

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

Разочарование в системе отзывов

Разочарование в системе отзывов

После покупки чайника я передумал делать рейтинг образовательных курсов на основе отзывов. Стало понятно, что даже если модерировать все отзывы перед публикацией, то это проблему купленных отзывов не решит.

Как выбирают образовательные курсы

После первой неудачной попытки реализовать рейтинг образовательных курсов, задумался над тем, как вообще обычно выбирал курсы для обучения.
Вот такие получились варианты:
1) Отзыв знакомого, которому доверяю.
2) Реклама в поиске, в роликах у блогеров.
3) Случайным образом, когда в соцсетях наткнулся на платформу «Открытое образование» где ВУЗы публикуют курсы.

И перебрав эти варианты, понял, что они не особо системны и слабо масштабируемы.
Тогда решил подсмотреть методы оценки курсов у коммерческих компаний.

В основном компании проводят опросы после обучения и измеряют метрики в работе специалиста. Но если у компаний есть сотрудники, которым они могут в какой‑то мере доверять, и у них есть бюджет на закупку курсов, то для pet‑проекта это большие расходы.
Проблемы с рейтингом забили первый гвоздь в крышку гроба проекта. Но я решил, что пока проект бесплатно крутится на heroku, буду сам им пользоваться и, может, при поиске работы он пригодится.

Про pet-проекты при трудоустройстве и финал проекта

За свой 6-летний опыт работы в компаниях я смогу назвать лишь одну положительную историю с pet‑проектом. Все остальные, увы, оказались неудачными.

Начну с положительной. Когда я был студентом, к нам в универ пришла уже несуществующая компания «Экстракод», которая предложила следующие условия: «Экстракод» оплачивала нам факультатив по Java в универе и брала нас на работу. Факультатив проводился в самом универе после основных занятий для всех желающих студентов. На работу брали после прохождения факультатива. Если прошёл отбор, то нужно было год отработать в компании или вернуть деньги за обучение при досрочном расторжении трудового договора. Отбор проводился так: с нас собрали резюме и потом дали тест. У меня были сомнения что правильно ответил на вопросы о сервлетах из теста, но как будто ссылка на github с maven сборкой на тестовом проекте типа TODO лист сыграла в мою пользу. Потому что на факультативе maven и git не обучали, а в работе без них никуда.

Теперь о неудачных историях. У меня в резюме всегда висит ссылка на свой github. HR‑специалисты иногда пишут, что их очень заинтересовал мой github.

Комментарии HR к github

Комментарии HR к github

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

Печаль от того что pet-проект никак не повлиял на решение проджект менеджера

Печаль от того что pet-проект никак не повлиял на решение проджект менеджера

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

После начала СВО heroku перестал бесплатно давать доступ для развертывания pet‑проектов и забил третий гвоздь в крышку гроба проекта. Теперь уже и сам перестаю пользоваться отзовиком. Желания развёртывать его где‑то в другом месте никакого нет.

Выводы

Размышляя об опыте работы над своим проектом, я понял, что сейчас я бы делал или коммерческий проект с ясной финансовой выгодой или просто делал бы TODO лист, чтобы протестировать рабочие вопросы или задачи собеседований. Делать полноценный проект, на мой взгляд, есть смысл только когда вы ищите первую работу. А вот после того, как нашли первую работу, смысла в pet‑проекте я не вижу. Из плюсов отмечу, что узнал и углубил свои знания, пока работал над pet‑проектом:

  • цикле жизни самого продукта;

  • написанию yml‑сценариев для деплоя;

  • поработал со Spring без автоконфигураций;

  • попробовал анализаторы коды;

  • с JSP‑страницами поработал, на работе они почти не попадались.

Мне крайне интересен опыт читателей. 

Помог ли вам в трудоустройстве pet-проект? 

Есть ли среди ваших pet-проектов долгожители? 

Пользуетесь ли вы сами своим детищем и как долго?

Ссылка на заброшенный pet-проект
https://github.com/AlexeyOs/GoodCourses

Автор: AlexeyOs

Источник

Обсуждение закрыто.