Итак, у меня есть программа, над которой я работал в 2011 году и до 2012 года, но последний выпуск был в декабре 2011 года . Я активно работал над этим, но функция creep заманила его уродливую голову, и теперь он заполнен тоннами незаконченных функций.
Плохая часть заключается в том, что, когда я реализую функцию, появляется новая. Что я могу сделать, чтобы в будущем не сползать, чтобы я мог выпустить релиз через год ?
Проект основан на iOS и имел обыкновение выпускать релизы по каждому обновлению версии iOS, но последний вернулся с 5.1 (2011). Я хотел бы иметь возможность вернуть этот устойчивый цикл выпуска, но он оказался слишком сложным.
programming-practices
release-management
scope-creep
Коул Джонсон
источник
источник
Ответы:
По моему опыту, проще всего, если у вас есть ритм разработки и выпуска, который не мешает тому, что вы хотите сделать. Вот как я это сделал:
Таким образом, вы можете просто нажать релиз после каждой функции, если хотите ... или дождаться накопительного пакета, который предлагает значение, которое вы хотите, чтобы релиз был.
Замечания:
источник
Ответ банален и часто невозможен: откажитесь от добавления дополнительных функций.
Более подробно, ответ на самом деле сводится к тому, что заставляет новую функцию попасть в корзину для ползучести функций? Если мы предполагаем, что ползучие функции - это те, которые добавляются в проект, несмотря на тот факт, что их функциональные возможности касаются только предполагаемого использования проекта и что ползучие функции полезны, а не излишни, ответ состоит в том, чтобы переместить их в отдельные элементы. , но связанные инструменты. Используйте философию Unix по созданию ортогональных инструментов и их склейке.
С точки зрения управления проектами ответ сопоставим. Решите, сколько времени вы хотите посвятить следующему выпуску и установите крайний срок. Оцените особенности и обрежьте достаточно, чтобы сделать крайний срок. Если есть заинтересованные стороны, кроме вас, заставьте их выбирать, что для них важнее всего.
Хороший обзор по планированию можно найти на сайте Joel on Software:
http://www.joelonsoftware.com/articles/fog0000000245.html
источник
Один из самых важных уроков в развитии - это знать, когда пора остановиться.
Как правило, разработчик добавляет функции. Это, в свою очередь, вдохновляет больше идей. Таким образом, добавляются дополнительные функции. Это, как вы сказали, один из способов, которым проект становится программным обеспечением. Разработчик никогда не видит проект как «законченный», поэтому он никогда не будет выпущен.
Привычка, в которую вы хотите войти, - перестать думать о выпуске / версии как о «законченном» проекте. Скорее, рассматривайте развитие как долгосрочный процесс. Думайте о релизах как о вехах на пути к тому, что вы когда-нибудь надеетесь, что программа будет. Таким образом, релиз / версия - это просто снимок того, где вы находитесь в долгосрочном процессе ... снимок, который был хорошо округлен и протестирован.
С практической точки зрения вы можете сесть и указать свой следующий релиз. Это не должно быть ужасно тщательно. Запишите 3-5 новых основных функций, которые, по вашему мнению, необходимы для следующего выпуска. ( фактическое количество функций может варьироваться в зависимости от типа приложения, не считая исправлений ошибок или незначительных изменений графического интерфейса ). Работайте над ними. Если у вас есть другие идеи, это нормально ... просто делайте заметки и воплощайте их в следующем выпуске. Когда вы закончите 3-5 пунктов, ваш релиз готов к бета-тестированию.
Когда я запускаю новое приложение, я обычно думаю об окончательном «видении» приложения. Это то, что я хочу в версии 3 приложения. С этим тестом у меня есть представление о том, что сделает основную версию 1 - только основы.
Резюме:
Каждый релиз не обязательно должен быть законченным «видением» проекта. Просто веха к этому видению.
источник
Используйте систему управления версиями, в которой дешево создать ветку для какой-либо идеи, и не пускайте ее в путь выпуска. Например
git
, вы можете «подкрасться» к какой-то идее, а потомgit stash
ее убрать. Позже вы можете просмотреть эти тайники и выбрать их в любом порядке.Для более крупных функций создайте реальную ветвь (чтобы вы могли выполнять несколько коммитов). Показательный пример: когда я хотел добавить поддержку поколений в сборщик мусора, я сделал ветку. Тайники очень хорошо улавливают отвлекающие мелочи. Большие объекты могут начинаться как хранилища, затем превращаться в ветви и, наконец, сливаться, когда они будут готовы.
С помощью тайников и веток вы можете подвести итоги своих идей, расставить их приоритеты и установить рамки для выпусков вашего сольного проекта, подобно управляемому командному проекту.
Послушайте, когда у вас появляется идея, она должна куда-то идти , а лучшим где-то является код : репо. Сползать черты лучше, чем забывать хорошие идеи. Но, конечно, если вы добавите все свои функции в одну и ту же главную линию, это будет задерживать выпуск, если вы не урежете неопрятные выпуски, полные недоделанного материала, о котором пользователи должны быть предупреждены, чтобы не использовать.
источник