


Хорошая идея для пет-проекта позволяет показать конкретный навык и закончить первую версию. Начинайте с одного пользовательского сценария и заранее запишите, как убедиться, что он работает. «Сделать большой сервис» слишком расплывчато; «загрузить CSV, найти неверные строки и получить отчёт» уже можно реализовать и проверить.
В подборке Mentoring.digital восемь учебных заданий для разных направлений. Это идеи, а не готовые продукты или истории трудоустройства. Для каждой указаны минимальный объём, признаки готовности и одно возможное расширение. Выберите одну задачу, которая отвечает вашему текущему пробелу.
Откройте интересующую вакансию или свой план обучения. Выберите один навык, который пока трудно доказать: обработка данных, API, состояние интерфейса, SQL, тест-дизайн или требования. Проект должен дать наблюдаемый результат именно по нему.
Заранее ответьте на три вопроса: кто пользуется результатом, какие входные данные нужны и что входит в первую версию. Не добавляйте оплату, чат и рекомендации только потому, что они встречаются в больших продуктах. Законченный небольшой сценарий проще проверить и объяснить.
Задача: принять CSV с датой, категорией и суммой, проверить формат и построить итог по категориям. Используйте вымышленные расходы, а не чужие финансовые данные.
Первая версия: один входной формат, отдельный список ошибочных строк, итоговый CSV. Заранее решите, прекращает ли ошибка весь импорт или строка пропускается с отчётом.
Готово, когда: итог на контрольном файле совпадает с ручным расчётом; ошибка содержит номер строки и причину; пустой файл обработан понятно; повторный запуск даёт тот же результат. В README объяснено, как воспроизвести проверки.
Следующий шаг: добавить новый формат даты и тесты, которые показывают, что старый формат продолжает работать.
Задача: распределять файлы по папкам по заданному правилу. Работайте только с отдельной папкой учебных копий.
Первая версия: программа сначала выводит план перемещения без изменений. Выполнение включается отдельным явным параметром; одинаковые имена не перезаписываются молча.
Готово, когда: режим просмотра не меняет файлы; конфликт имён объяснён; неизвестное расширение обрабатывается по записанному правилу; тесты используют временную папку; результат каждого перемещения записан в журнал.
Следующий шаг: обратная операция по журналу с проверкой, что после перемещения файл не был изменён.
Если сложно разбить идею на функции и проверки, на курсе Python с личным планом можно согласовать работу над одним из этих сценариев.
Задача: хранить книги, отдельные экземпляры и выдачи читателям. Навык, который можно показать: связь модели данных с правилами сервера.
Первая версия: создание читателя, просмотр доступных экземпляров, выдача и возврат. Один экземпляр не может одновременно числиться выданным двум людям.
Готово, когда: повторная выдача занятого экземпляра отклоняется; возврат освобождает его; несуществующие идентификаторы дают понятную ошибку; конкурентная проверка не создаёт две активные выдачи; запуск с пустой учебной базой описан. Не объявляйте защиту от гонки реализованной без соответствующего теста.
Следующий шаг: добавить очередь ожидания и явно описать правила её изменения.
Задача: показать мероприятия, фильтровать их по городу, дате и формату. Используйте подготовленный набор вымышленных событий.
Первая версия: список, несколько фильтров, сортировка и пустое состояние. Выбранные параметры отражаются в адресе страницы.
Готово, когда: скопированная ссылка восстанавливает выбор; «Назад» возвращает прежние параметры; сброс убирает фильтры; при переходе между страницами нет повторов; длинное название не ломает мобильную карточку. Проверьте управление клавиатурой и подписи полей.
Следующий шаг: подключить API и отдельно показать загрузку и ошибку запроса. Для проверки архитектуры состояния можно обратиться к наставнику по frontend.
Задача: посчитать попытки, лучшие результаты и долю выполненных заданий. Набор данных подготовьте самостоятельно; определение каждой метрики запишите до запроса.
Первая версия: схема таблиц, небольшой набор входных данных, несколько запросов и ожидаемые строки результата.
Готово, когда: учтены пользователь без попыток, повторная попытка, отсутствие оценки и равные лучшие результаты; объяснён знаменатель доли; запросы запускаются в указанной СУБД. Красивый график не заменяет правильный расчёт.
Следующий шаг: добавить индекс и сравнить план запроса на большем учебном наборе. Вывод об ускорении делайте только после измерения.
Задача: показать, как вы выбираете проверки и оформляете дефекты. Возьмите собственное учебное приложение или разрешённый учебный стенд.
Первая версия: описание области тестирования, приоритетные риски, чек-лист, несколько подробных кейсов и отчёт о фактическом прогоне.
Готово, когда: у каждой проверки есть ожидаемый результат; реальные наблюдения отделены от придуманных учебных дефектов; баг-репорт содержит воспроизводимые шаги; ограничения проверки видны. Если ошибка не найдена, не выдумывайте её ради наполнения портфолио.
Следующий шаг: автоматизировать один устойчивый сценарий и описать подготовку тестовых данных.
Задача: спроектировать выдачу ноутбуков или проекторов внутри учебной организации. Здесь результатом является согласованное описание, а не обязательное приложение.
Первая версия: роли, состояния заявки, правила выдачи и возврата, сущности, одна диаграмма взаимодействия и контракт основной операции.
Готово, когда: каждый сценарий связан с критерием приёмки; один предмет нельзя выдать двум людям; описаны отказ, просрочка и отмена; термины одинаковы во всех документах. Нерешённые вопросы оформлены отдельно, не скрыты за предположениями.
Следующий шаг: дать другому человеку написать тесты по спецификации и исправить места, которые он понял иначе.
Задача: создать задачу, назначить срок, изменить статус и увидеть историю. Подойдёт, если хотите связать интерфейс, сервер и хранение данных.
Первая версия: один тип задачи, фиксированные статусы и простое разграничение доступа. Не начинайте с полноценной системы управления командой.
Готово, когда: недопустимый переход статуса отклоняется; изменение сохраняется после обновления; автор и время действия видны в истории; чужая закрытая задача недоступна; отменённый запрос не рисует ложный успех в интерфейсе.
Следующий шаг: добавить поиск и проверить, что он соблюдает те же правила доступа. Для последовательной практики интерфейса подойдёт обучение frontend на собственном проекте.
Попробуйте запустить проект по своей инструкции в чистом окружении. Если без личных подсказок не получается, улучшите README. Не записывайте в репозиторий пароли, токены и чужие данные.
Для разбора Python-проекта можно выбрать ментора для проверки кода Python. Принесите рабочую минимальную версию и конкретный вопрос. Ценность пет-проекта видна в решениях, проверках и способности объяснить ограничения; сам факт наличия репозитория не гарантирует приглашения на интервью.