Знакомая ситуация: у вас в голове крутится десять идей для IT-пет-проекта. Одна - это сложный нейросетевой чат-бот, другая - простой агрегатор новостей. Вы тратите неделю на первую, бросаете её из-за багов с API, а вторая так и остается заметкой в Notion. Знакомо? Проблема не в лени, а в отсутствии системы отбора. Когда вы работаете один (или с командой из двух человек), ресурс времени критически ограничен. Нельзя просто делать «что хочется». Нужно делать то, что даст максимум результата при минимальных усилиях.
В этой статье разберем конкретный метод приоритизации, который используют продакт-менеджеры в стартапах, но адаптированный под реалии одиночного разработчика или небольшой команды. Мы не будем говорить абстрактно про «важность». Мы посчитаем баллы, построим матрицу и решим, что писать первым кодом сегодня вечером.
Почему интуиция часто подводит
Мозг программиста обожает сложные задачи. Нам нравится возиться с архитектурой, выбирать новые библиотеки, настраивать CI/CD. Это приятно. Но для пет-проекта, цель которого - портфолио, обучение или потенциальный заработок, эта «красота» часто становится ловушкой. Вы можете потратить месяц на создание собственной микросервисной архитектуры для приложения-калькулятора, которое могли бы написать за два вечера на Python.
Интуитивный подход игнорирует два ключевых параметра: реальную пользу для пользователя (ценность) и трудозатраты на реализацию (сложность). Без этих метрик вы рискуете построить «собор в пустыне» - технически совершенный продукт, который никому не нужен или который никогда не будет доведен до релиза.
Что такое ценность и сложность в контексте пет-проекта
Прежде чем считать, давайте определимся с терминами. В корпоративной разработке ценность измеряется деньгами или удержанием пользователей. В пет-проекте всё иначе.
Ценность (Value) для пет-проекта - это сумма трех компонентов:
- Обучение: Насколько сильно эта фича прокачает ваши навыки? Если вы джуниор, реализация авторизации через JWT ценнее, чем еще одна кнопка «Отправить».
- Демонстрация навыков: Как эта функция выглядит в резюме? Реализованный алгоритм поиска лучше демонстрирует понимание структур данных, чем готовый плагин.
- Польза пользователю: Решает ли она реальную боль? Даже если проект учебный, он должен быть полезным хотя бы вам самим или друзьям.
Сложность (Effort/Complexity) - это время и нервы, которые вы потратите на реализацию. Сюда входит:
- Количество строк кода и логических ветвлений.
- Необходимость изучать новый инструмент или язык.
- Зависимость от внешних сервисов (API, базы данных).
- Риск возникновения багов (чем сложнее система, тем выше риск).
Метод RICE для соло-разработчика
Классический фреймворк RICE (Reach, Impact, Confidence, Effort) слишком громоздок для одного человека. Мы упростим его до модели «Цель / Сложность», где каждая фича получает балл от 1 до 5 по двум шкалам.
| Балл | Ценность (V) | Сложность (S) |
|---|---|---|
| 1 | Низкая. Косметика, мелкие правки, не влияет на ядро продукта. | Очень низкая. Менее 1 часа работы, тривиальная задача. |
| 2 | Средняя. Улучшает UX, добавляет удобство, но не критично. | Низкая. 1-4 часа. Использование знакомых инструментов. |
| 3 | Высокая. Ключевая функциональность MVP, решает главную проблему. | Средняя. 1-3 дня. Требует немного новых знаний или интеграции. |
| 4 | Очень высокая. Главная «фишка», ради которой делают проект. Прокачка хард-скиллов. | Высокая. 3-7 дней. Архитектурные решения, сложные алгоритмы. |
| 5 | Максимальная. Дифференциатор рынка, уникальный алгоритм, AI-интеграция. | Очень высокая. Более недели. Неизвестность, высокие риски, много неизвестного. |
Формула приоритета проста: P = V / S. Чем выше отношение ценности к сложности, тем выше приоритет.
Практический пример: Агрегатор вакансий
Допустим, вы делаете сайт, который собирает вакансии с нескольких сайтов и фильтрует их по вашим критериям. Вот список возможных фич и их оценка:
- Фича А: Лента вакансий без фильтров.
- Ценность: 4 (без этого нет продукта).
- Сложность: 2 (вывод списка из БД).
- Приоритет: 4 / 2 = 2.0
- Фича Б: Фильтр по названию компании.
- Ценность: 3 (удобно, но можно найти вручную).
- Сложность: 1 (простой SQL запрос LIKE).
- Приоритет: 3 / 1 = 3.0
- Фича В: Уведомления на почту о новых вакансиях.
- Ценность: 5 (главная «продающая» фича, экономит время юзера).
- Сложность: 4 (нужен cron, настройка SMTP, тестирование доставки).
- Приоритет: 5 / 4 = 1.25
- Фича Г: Темная тема оформления.
- Ценность: 1 (приятно глазу, но не нужно).
- Сложность: 2 (CSS переменные).
- Приоритет: 1 / 2 = 0.5
Как видите, фильтр по названию (Фича Б) имеет самый высокий приоритет. Он дает ощутимую пользу почти бесплатно. Уведомления (Фича В) важны, но дороги. Их стоит делать после того, как базовая фильтрация заработает. Темная тема - последнее дело.
Ловушка «Технического долга» и перфекционизма
Частая ошибка новичков - пытаться сделать идеально сразу. Вы хотите, чтобы база данных была нормализована до третьей формы, код покрыт тестами на 90%, а интерфейс был адаптивным. Это убивает скорость.
Для пет-проекта правило такое: делайте ugly, но working. Сначала напишите костыль, который решает задачу. Потом, если фича оказалась нужной, рефакторьте. Приоритизация помогает понять, что можно оставить костылем навсегда. Например, если вы делаете внутренний инструмент для себя, вам не нужна красивая админка. Достаточно скрипта в консоли. Ценность админки для вас равна нулю, а сложность - единице. Приоритет стремится к нулю.
Как учитывать интерес и мотивацию
Есть скрытый фактор - ваш личный интерес. Если задача скучная (например, верстка форм), ее субъективная сложность растет. Вам тяжело начать. Поэтому добавьте модификатор Интерес (I).
Новая формула: P = (V * I) / S.
Если вам очень интересно делать парсер данных (I=5), то даже при средней сложности он может получить высокий приоритет. Наоборот, если задача полезная, но вызывает зевоту, понижайте коэффициент интереса. Это честно отражает вашу продуктивность.
Алгоритм действий на выходные
Чтобы внедрить этот подход прямо сейчас, выполните следующие шаги:
- Выпишите все идеи. Откройте таблицу в Excel, Notion или просто тетрадь. Запишите каждую мысль, даже глупую.
- Уберите мусор. Вычеркните то, что не соответствует цели проекта. Хотите портфолио? Убирайте функции, которые никто не увидит. Хотите заработать? Убирайте функции, за которые никто не заплатит.
- Оцените по шкале 1-5. Честно посмотрите на каждый пункт. Не хитрите со сложностью. Если вы никогда не работали с WebSocket, оцените сложность высоко.
- Посчитайте P. Разделите ценность на сложность.
- Отсортируйте по убыванию. Верхние строки - ваш план на ближайший спринт (например, на две недели).
- Заблокируйте остальное. Фичи с низким приоритетом отправляйте в бэклог. Не трогайте их, пока не закончите топ-3.
Пример из жизни: Мессенджер на Node.js
Я делал клон Telegram на Node.js и Socket.io. Хотелось сразу сделать групповые чаты, файлы, статусы «онлайн» и шифрование.
- Личные сообщения: V=5, S=3 -> P=1.6
- Групповые чаты: V=4, S=4 -> P=1.0
- Статусы онлайн: V=3, S=2 -> P=1.5
- Шифрование: V=4, S=5 -> P=0.8
Я начал с личных сообщений и статусов. Шифрование оставил на потом. В итоге через месяц у меня был рабочий прототип, который можно было показать на собеседовании. Если бы я взялся за шифрование первым, я бы застрял на криптографии и бросил проект через две недели.
Когда менять приоритеты
Приоритизация - не догма. Пересматривайте таблицу раз в месяц. Почему?
- Изменились знания. То, что казалось сложным (S=5), стало простым (S=2) после изучения документации. Приоритет вырос.
- Изменилась цель. Вы решили добавить монетизацию. Внезапно ценность функций оплаты выросла с 1 до 5.
- Появились внешние ограничения. API сервиса изменилось, и ваша задуманная фича стала невозможной или слишком дорогой.
Главное правило: не бойтесь удалять фичи. Если после расчета приоритет ниже 0.5, скорее всего, эта фича не нужна вашему MVP. Лучше выпустить маленький продукт, чем бесконечно полировать большой.
Что делать, если все фичи кажутся одинаково важными?
Это признак того, что вы плохо понимаете целевую аудиторию или цель проекта. Вернитесь к вопросу «Зачем я делаю этот проект?». Если цель - научиться React, то ценность всех UI-компонентов высока. Если цель - решить свою бытовую проблему, то ценность технических экспериментов падает. Попробуйте применить метод MoSCoW (Must have, Should have, Could have, Won't have) для жесткого отсева.
Стоит ли делать фичу с высокой ценностью и очень высокой сложностью?
Да, но только если она является ядром продукта и вы готовы инвестировать время. Однако в начале разработки таких фичей должно быть минимум. Начните с чего-то простого, чтобы создать импульс и рабочую среду. Сложную фичу разбейте на подзадачи и оцените их отдельно. Возможно, часть сложности уходит, если использовать готовые библиотеки.
Как оценить сложность, если я никогда не делал такую задачу?
Используйте принцип «спиральной оценки». Потратьте 1-2 часа на spike (исследовательскую задачу): попробуйте реализовать самое простое решение или найдите аналог в open source. После этого оценка станет точнее. Обычно первая оценка занижена в 2-3 раза. Заложите буфер времени.
Нужно ли учитывать мнение других людей при оценке ценности?
Для пет-проекта - да, но осторожно. Покажите прототип 5-10 людям из вашей целевой аудитории. Если они говорят «круто», но не хотят пользоваться - ценность низкая. Если они спрашивают «где ссылка?» - ценность высокая. Ваши друзья могут льстить, поэтому ищите отзывы в профильных чатах или на форумах.
Что важнее: ценность или сложность?
В начале проекта важнее низкая сложность. Быстрые победы (quick wins) поддерживают мотивацию. Если вы возьмете сложную задачу с низкой ценностью, вы быстро выгорите. Позже, когда продукт наберет обороты, ценность начинает перевешивать.