На самом деле, ответ на этот вопрос прост - как и с любым другим делом в жизни, вы должны ответить себе на четыре вопроса:
Что я делаю?
Зачем я это делаю?
Какой результат я хочу получить?
Какие шаги нужно предпринять, чтобы добиться этого результата?
И если с первыми тремя вопросами в большинстве случаев проблем не возникает, то последний вопрос ставит в тупик, особенно, когда не так много опыта в том, чем вы занимаетесь.
Самое главное, это правильно распланировать всю работу над проектом в целом. Когда у вас уже есть список фич и функций, котоыре вы хотите реализовать в проекте, разбейте их на категории важности. Понятно, что проект - это цельная работа и все функции важны, но я попробую объяснить на примере игр. Совершенно понятно, что кастомизацию оружия надо делать после того, как вы сделаете боевую систему, а боевую систему после того, как будет добавлена возможность ходьбы. Очень подробно о старте игрового проекта я писала в этой статье, но это можно переложить и на любой другой проект в вашей жизни.
Структурирование проекта
Разделите все ваши фичи на:
Начальные — фичи, без которых невозможно вообще представить себе ваш проект. Это может быть простейший прототип с загрузкой экранов и возможностью нажимать на кнопки. Если ваш проект - похудеть к лету, то нужнонайти список подходящих вам упражнений или купить абонемент в зал.
Основная функциональность — в геймдеве мы называем ее Core gameplay. Фактически, это основные фичи, без которых ваш проект является просто техническим прототипом из предыдущего шага. Напримервозможность создать задачу в приложении таск-трекере, или фактическая ходьба на беговой дорожке в зале.
Углубленные — это функциональность, которая будет усложнять базовые фичи и делать проект более интересным. Например, вы теперь можете ставить повторяющиеся задачи в таск-трекере. Если вернуться к примеру с похудением, то здесь уже можно нанять тренера и чередовать ваши кардио-тренировки с силовыми.
Фичи развития — это вещи, которые хотелось бы реализовать, но они будут сделаны в последнюю очередь, потому что являются дополнением к уже существющей концепции проекта. Например, вы добавляете в таск-трекер напоминаня, которые срабатывают по местоположению, а для еще более качественного похудения вы теперь заказываете готовую еду со сбалансированными БЖУ.
Грубая оценка сроков реализации
Теперь, когда вы разделили все фичи по приоритету и определили их место в системе ценностей проекта, можно оценить каждую конкретную фичу с точки зрения количества человеко-месяцев на ее разработку. Сделайте очень грубую оценку временных затрат на полный цикл разработки и имплементации конкретной фичи и снова вернитесь на этап планирования фич.
Почему? Дело в том, что после оценки некоторых фич, вы можете захотеть перетасовать элементы игры и настроить вашу концепцию иначе. Например, какая-то из фич развития может оказаться настолько легкой в производстве, что вы сдвинете ее в основной контент. И наоборот: разработка одной из базовых фич может занять целый год, и при таком раскладе она, наверное, нуждается в изменении, упрощении или замене.
Таким образом у вас появятся даты, которые будут ориентирами для выбора задач в спринт и оценки собственных результатов.
Немного про спринты
Когда мы беремся за какую-то работу, все о чем мы можем думать - это конечный результат. И чем больше проект, тем дальше находится этот конечный результат. Ученые проводили эксперимент, в котором предлагали людям получить 10$ сейчас, либо прийти за 50$ через неделю и большинство выбирали потерять в выгоде, но получить деньги здесь и сейчас. Так работают наши головы.
Поэтому нужно строить себе достижимые краткосрочные цели. Это поможет вам и контролировать результаты вашей работы, и получать удовлетворение от преодоленного этапа разработки.
Здесь имеет смысл обратиться к одной из Agile систем планирования - к Scrum. Подробно об этом я писала в этой статье, так что здесь просто дам краткую выжимку.
Scrum представляет собой гибкую систему, в основе которой лежит итеративная работа над проектом и ведение доски с задачами и последующим анализом проделанной работы с целью выявления проблем и недочетов разработки. Работа в Scrum представлена в виде цепочки спринтов.
Спринт, или Sprint — это и есть та самая итерация работы над проектом. Как правило это отрезок времени длиной в неделю, или две — длина спринта определяется каждой конкретной командой отдельно. Список задач для спринта — это самые приоритетные задачи, которые нужно сделать в ближайшее время.
У каждого спринта есть определенная цель: например, «собрать стабильный билд для инвестора», «оптимизировать размер приложения» или «убрать 1 сантиметр в талии». Таких целей может быть несколько по разным аспектам игры, главное, чтобы все вместе они образовывали какую-то новую ступень по закономерному развитию проекта. В спринт отбираются те задачи, которые отвечают текущим целям разработки.
Нет ничего важнее, чем планирование и структурирование работы над проектом - эти процессы являются фундаментом вашей разработки, и если фундамент заложен плохо, весь дом в последствии поедет и рухнет еще до конца строительства.