<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Пет-Проект Вместо Последнего Места Работы on Путь к офферу</title>
    <link>https://offerroad.ru/tags/%D0%BF%D0%B5%D1%82-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82-%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%BE-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE-%D0%BC%D0%B5%D1%81%D1%82%D0%B0-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B/</link>
    <description>Recent content in Пет-Проект Вместо Последнего Места Работы on Путь к офферу</description>
    <generator>Hugo</generator>
    <language>ru-RU</language>
    <lastBuildDate>Sun, 26 Jul 2026 12:00:00 +0500</lastBuildDate>
    <atom:link href="https://offerroad.ru/tags/%D0%BF%D0%B5%D1%82-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82-%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%BE-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE-%D0%BC%D0%B5%D1%81%D1%82%D0%B0-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Пет-проект после отказа: как закрыть разрыв в резюме</title>
      <link>https://offerroad.ru/posts/pet-proekt-posle-otkaza-na-sobesedovanii/</link>
      <pubDate>Sun, 26 Jul 2026 12:00:00 +0500</pubDate>
      <guid>https://offerroad.ru/posts/pet-proekt-posle-otkaza-na-sobesedovanii/</guid>
      <description>Как пет-проект во время поиска работы наращивает актуальный стек и закрывает разрыв в резюме - на примере ИИ-тренера для бегунов, сделанного одним разработчиком.</description>
      <content:encoded><![CDATA[<h2 id="после-проваленного-собеседования-почему-пет-проект-а-не-ещё-одно-резюме">После проваленного собеседования: почему пет-проект, а не ещё одно резюме</h2>
<p>Собеседование я тогда завалил. Не буду врать, что отнёсся к этому спокойно, любой отказ немного выбивает из колеи. Вместо того чтобы продолжать долбить hh и рассылать резюме дальше, я сел за код (хотя и отклики совсем на 0 тоже не ставил). Как раз незадолго до этого перешёл на Claude Code, и первое, что придумал сделать - не тестовое задание и не учебный туториал, а настоящее приложение.</p>
<p>Почему не ещё одно резюме? Потому что резюме и так у меня было, а вот пробел в опыте - нет. И заполнить его текстом про &ldquo;ищу работу и развиваюсь&rdquo; как-то не хотелось. Я решил, что лучше потратить это время на что-то, что реально можно будет показать. Не эксперт по карьерным стратегиям, но логика простая: пока ты ищешь работу, время всё равно идёт, и вопрос только в том, чем ты его заполнишь =)</p>
<h2 id="пет-проект-который-решает-вашу-собственную-проблему-убедительнее-абстрактного">Пет-проект, который решает вашу собственную проблему, убедительнее абстрактного</h2>
<p>Идея пришла не из головы, а из личной боли. Я бегаю с 2023 года, старался делать это постоянно. А в этом году что-то сломалось: начал часто болеть, и этой зимой бег пришлось совсем забросить. Весной попробовал вернуться, даже получалось какое-то время, но без плана регулярность быстро разваливалась. Болезни всё ещё мешали, график скакал туда-сюда, и я понял, что мне очень не хватает взгляда со стороны на мои тренировки.</p>
<p>Логичным решением был бы тренер. Но платить 2000 рублей или больше каждый месяц за план тренировок, когда у меня есть навыки программирования и опыт работы с нейросетями, показалось странным. Зачем платить за то, что можно попробовать сделать самому? Так родилась идея объединить бег и код в один SaaS-проект.</p>
<p>Тут, мне кажется, и есть главное отличие пет-проекта &ldquo;для портфолио&rdquo; от пет-проекта, который реально доводишь до конца. Когда ты сам - целевая аудитория, ты не выдумываешь фичи, а решаешь конкретную проблему конкретного человека, то есть себя. Мне не нужно было гадать, что важно бегуну, я сам бегун, у меня непостоянный график и разбитые зимой планы.</p>
<h2 id="что-внутри-airunningcoach-ии-тренер-импорт-тренировок-игровая-часть">Что внутри AIRunningCoach: ИИ-тренер, импорт тренировок, игровая часть</h2>
<p>Так появился AIRunningCoach - беговой ИИ-тренер. Вместо готового шаблонного плана на 12 недель вперёд, который надо просто выполнять, он строит план под конкретного человека и разбирает каждую пробежку отдельно. Делаю его один: бэкенд, фронтенд, AI-часть, деплой - всё сам.</p>
<p>Ядро сервиса - AI-тренер, с которым можно переписываться примерно как с человеком. Он видит всю историю тренировок пользователя и разбирает каждую новую пробежку: где темп поехал не туда, стоит ли наращивать объём, не пора ли отдохнуть. План тоже строит сам - по возрасту, весу, росту и цели - а дальше подстраивает его под то, как тренировки реально проходят, а не держит жёсткий шаблон несмотря ни на что.</p>
<p>Тренировки загружаются из GPX и FIT файлов с Garmin, Coros, Suunto. Недавно добавил ещё импорт по прямой ссылке на экспорт с часов - оказалось, не все модели дают файл для скачивания, некоторые просто отдают ссылку, и раньше приходилось сначала качать файл руками, а потом заново грузить его на сайт. Мелочь, а раздражала меня самого каждый раз.</p>
<p>Есть и игровая часть: личные рекорды на дистанциях от километра до марафона, бейджи за объём, серии тренировок без пропусков, набор высоты. Отдельно считается спортивный разряд по официальной таблице ЕВСК, если результат подходит под норматив - что приятно, за один финишированный марафон, даже не самый быстрый, уже присваивается третий разряд.</p>
<p>Для тех, кто не хочет регистрироваться, оставил бесплатные калькуляторы: разбор GPX/FIT-файла, расчёт темпа, прогноз результата на дистанции по одному забегу, пульсовые зоны, разряды.</p>
<p><figure>
    <img loading="lazy" src="images/screenshot-1-chat.png"
         alt="Чат с ИИ-тренером — разбор недели восстановления после травмы"/> <figcaption>
            <p>Чат с ИИ-тренером — разбор недели восстановления после травмы</p>
        </figcaption>
</figure>

<figure>
    <img loading="lazy" src="images/screenshot-2-plan.png"
         alt="План тренировок на неделю, привязанный к пользователю"/> <figcaption>
            <p>План тренировок на неделю, привязанный к пользователю</p>
        </figcaption>
</figure>

<figure>
    <img loading="lazy" src="images/screenshot-3-badges.png"
         alt="Личные рекорды, бейджи и разряд по ЕВСК"/> <figcaption>
            <p>Личные рекорды, бейджи и разряд по ЕВСК</p>
        </figcaption>
</figure>

<figure>
    <img loading="lazy" src="images/screenshot-4-calculators.png"
         alt="Бесплатные калькуляторы для бегунов без регистрации"/> <figcaption>
            <p>Бесплатные калькуляторы для бегунов без регистрации</p>
        </figcaption>
</figure>
</p>
<h2 id="стек-который-реально-видно-в-резюме-vue-3-fastapi-postgres-deepseek-api">Стек, который реально видно в резюме: Vue 3, FastAPI, Postgres, DeepSeek API</h2>
<p>Отдельно хочу сказать про технологии, потому что именно это в итоге и попало в резюме. Фронтенд на Vue 3, бэкенд на FastAPI, база на Postgres, всё упаковано в докер-контейнеры и крутится на собственном VPS с nginx. За AI-часть отвечает DeepSeek. Сервис двуязычный, есть русская и английская версии.</p>
<p>Ничего сверхъестественного тут нет, но это живой, актуальный стек, а не набор технологий из учебника трёхлетней давности. Когда на собеседовании спрашивают &ldquo;с чем вы работали&rdquo;, гораздо приятнее отвечать не &ldquo;проходил курс&rdquo;, а &ldquo;вот, делал на этом продакшен-сервис, вот ссылка, можете сами потыкать&rdquo;.</p>
<p><figure>
    <img loading="lazy" src="images/screenshot-5-import.png"
         alt="Импорт тренировок — загрузка файла или вставка ссылки с часов"/> <figcaption>
            <p>Импорт тренировок — загрузка файла или вставка ссылки с часов</p>
        </figcaption>
</figure>

<figure>
    <img loading="lazy" src="images/screenshot-6-lang.png"
         alt="Главный дашборд сервиса"/> <figcaption>
            <p>Главный дашборд сервиса</p>
        </figcaption>
</figure>
</p>
<h2 id="довести-до-продакшена---это-не-только-код-самозанятость-юkassa-документы">Довести до продакшена - это не только код: самозанятость, ЮKassa, документы</h2>
<p>Вот тут началась часть, которую я как программист совсем не планировал, но которая, кажется, дала мне не меньше, чем сам код. Я самозанятый, оплата идёт через ЮKassa, чек на каждый платёж формируется автоматически через приложение &ldquo;Мой налог&rdquo; - и это не опция, а обязательное требование, чек нужно пробивать не позднее дня получения денег, иначе штраф 20% от суммы, а при повторном нарушении в течение полугода - все 100%. Так что тут расслабляться нельзя.</p>
<p>Я не бухгалтер и не юрист, поэтому разбираться в налоговом режиме пришлось с нуля: какой лимит дохода у самозанятых (сейчас это 2,4 млн рублей в год), как правильно подключить приём платежей, какие документы обязательны для сайта, который берёт деньги с людей - политика конфиденциальности, условия использования. Оказалось, что это отдельная, довольно объёмная работа, никак не связанная с кодом напрямую, но без неё проект просто нельзя было бы легально запустить.</p>
<p>Именно этот кусок, мне кажется, и отличает &ldquo;поделку на github, которую никто не видел&rdquo; от настоящего продакшен-проекта. Написать код - это половина дела. Довести его до состояния, где реальный человек может реально заплатить и получить чек, это совсем другой уровень ответственности =)</p>
<h2 id="как-указать-пет-проект-в-резюме-чтобы-закрыть-разрыв-и-не-соврать">Как указать пет-проект в резюме, чтобы закрыть разрыв и не соврать</h2>
<p>Тут я не эксперт по подбору персонала, поэтому опираюсь на то, что советуют карьерные консультанты, а мнения там, честно говоря, расходятся в деталях. Но в одном все сходятся: период в резюме лучше не оставлять пустым и не размывать невнятными формулировками вроде &ldquo;занимался частной практикой&rdquo; - это выглядит подозрительно, и рекрутеры такое подмечают. Последнее место работы вообще проверяют внимательнее всего, и если что-то приукрасить, это довольно быстро всплывает на созвоне или техническом собеседовании.</p>
<p>Я решил не маскировать этот период под штатную должность, а написать честно: что-то вроде &ldquo;Самозанятый разработчик&rdquo; или &ldquo;Основатель AIRunningCoach&rdquo; в качестве последнего места. Это правда, и это не стыдно. Указал те технологии, которые начал реально применять за это время, а не те, что были в резюме &ldquo;для галочки&rdquo; ещё с прошлой работы.</p>
<p>Есть и другой подход - вообще не расписывать перерыв подробно, а просто подготовить честное объяснение на словах, если спросят. Оба варианта имеют право на жизнь, тут я бы советовал смотреть по себе: если про проект приятно рассказывать и есть что показать, писать его прямо в резюме, наверное, выигрышнее.</p>
<h2 id="что-это-дало-в-итоге-и-как-решить-нужен-ли-вам-такой-проект">Что это дало в итоге и как решить, нужен ли вам такой проект</h2>
<p>Если подытожить, пет-проект в моём случае не сработал как красивая строчка в портфолио. Он сработал как способ не терять время между собеседованиями и честно закрыть разрыв в резюме, вместо того чтобы делать вид, будто его нет. Плюс дал актуальный стек, который приятно обсуждать, а не отмалчиваться.</p>
<p>Но если бы я делал только код без доведения до продакшена, ценность, кажется, была бы намного меньше. Незавершённые проекты не особо впечатляют, а вот доведённый до конца, работающий, документированный проект - это уже весомый аргумент на собеседовании, даже без коммерческого опыта за плечами. Платежи, документы, самозанятость - это как раз то, что показывает не только &ldquo;умею писать код&rdquo;, но и &ldquo;умею доводить дело до конца и брать на себя ответственность&rdquo;, а это работодателю обычно важнее любой строчки про фреймворки.</p>
<p>Так что если вы сейчас думаете, стоит ли делать такой проект после отказа - я бы спросил себя не &ldquo;выглядит ли это солидно&rdquo;, а &ldquo;решает ли это мою собственную проблему&rdquo;. Если да, дальше уже проще: код рано или поздно напишется, а мотивация не иссякнет, потому что вы делаете это в первую очередь для себя, а не для чужого HR. А у вас был свой пет-проект, который вырос из личной боли, а не из желания что-то добавить в резюме?</p>
<p>По традиции, всем дочитавшим - лёгких пробежек и планов, которые реально получается выполнять. Как-то так. 😌</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
