Як я можу уникнути повзучості в сольному проекті?


12

Тож у мене є програма, над якою я працював ще в 2011 році і весь 2012 рік, але останній реліз був у грудні 2011 року . Я активно працював над цим, але функція повзучості заманювала його некрасиву голову, і тепер вона заповнена тонами на незакінчені функції.

Погана частина полягає в тому, що, коли я реалізую функцію, нова виповзає. Що я можу зробити, щоб уникнути повзування функції в майбутньому, щоб я міг реально отримати випуск протягом року ?

Проект базується на iOS і використовувався для випусків навколо кожного оновлення версії iOS, але останній був повернутий до 5.1 (2011). Мені б хотілося повернути цей цикл стійкого вивільнення, але це виявилося занадто складно.


8
Чи можете ви бути більш конкретними у вашому запитанні wrt, звідки беруться функції? Хто відповідає за повзучість функції? Ви? Бізнес-аналітики? Президент компанії? Потреби користувачів? Важко дати пораду, як керувати повзанням функції, не знаючи, що таке джерело. Також тому, що мені подобається Ділберт: search.dilbert.com/comic/Feature%20Creep ;)
FrustratedWithFormsDesigner

1
Ви єдиний розробник цього проекту? Для великих командних проектів важливо мати основні етапи, щоб зробити графіки доставки керованими, але ті, хто летить соло, також можуть скористатися такими методологіями, як розвиток, орієнтований на функції .
хардмат

@FrustratedWithFormsDesigner Я єдиний розробник
Cole Johnson

1
@FrustratedWithFormsDesigner ні. Я самотній. Якщо ви не рахуєте джерело кузні як людину, яка працює над проектом , я єдиний.
Коул Джонсон

4
Доставка також є особливістю ... Іноді це допомагає просто врахувати це на увазі, розглядаючи (ще) іншу особливість.
Мар'ян Венема

Відповіді:


21

На мій досвід, найпростіше, якщо ти можеш розвинути та випустити каденцію, яка не перешкоджає тому, що ти хочеш зробити. Ось як я це зробив:

  1. Запишіть функції та дайте їм оцінку, яка відображає, наскільки ви хочете працювати над цим і наскільки ви думаєте, що це принесе користь користувачеві (можливо, для цього можна залучати реальних користувачів). Потім запишіть їх у тому порядку.
  2. Перш ніж зареєструватися / натиснути функцію, переконайтеся, що у вас є стабільна розгорнута збірка (настійно розглядайте систему CI, щоб полегшити це).

Таким чином, ви можете просто натиснути реліз після кожної функції, якщо ви хочете ... або чекати збору, який пропонує значення, яке ви хочете мати.

Примітка:

  • Функції ніколи не можна надавати пріоритетніше, ніж тій, над якою ви працюєте (або вона може, але вона не може перервати ту, над якою ви працюєте). Він може прийти наступним, але ніколи зараз . Це означає, що, перейшовши з цього моменту на наступний, ви матимете можливість скоротити збірку версій, якщо хочете.

Дуже корисний! Мені подобається деяка суворість цього.
Коул Джонсон

Я додам: Не запускайте нову функцію, перш ніж закінчити нову. Інакше ви опинитесь із кодовою базою вільних кінців, яка нічого не може зробити.
Тяньна

@Tyanna: Ось що я мав на увазі під "функцією ніколи не можна надавати більш високого пріоритету, ніж той, над яким ти працюєш ... він не може перервати той, над яким ти працюєш ..."
Стівен Еверс

7

Відповідь банальна і часто неможлива: відмовтеся від додавання додаткових функцій.

Більш глибоко, відповідь дійсно зводиться до того, що робить нову функцію потраплянням у сміттєвий контейнер? Якщо припустити, що кричущі функції - це ті, які додаються до проекту, незважаючи на те, що їх функціональність є лише дотичною до передбачуваного використання проекту та що повзучі функції корисні, а не зайві, відповідь полягає в тому, щоб перемістити їх на окремі , але пов'язані інструменти. Використовуйте філософію Unix для побудови ортогональних інструментів та їх склеювання.

З точки зору управління проектом, відповідь порівнянна. Вирішіть, скільки часу ви готові присвятити наступному випуску та встановіть термін. Оцініть функції та скоротіть достатньо, щоб скласти термін. Якщо є інші зацікавлені сторони, крім вас, змусіть їх вибрати те, що їм найбільше важливо.

Хороший огляд планування можна знайти в Joel on Software:

http://www.joelonsoftware.com/articles/fog0000000245.html


9
Оскільки він повністю сольний у проекті, йому може знадобитися аутсорсинг роботи, коли ляпає запитувач функції.
Філіп

2

Одне з найважливіших уроків розвитку - це знати, коли настав час зупинитися.

Зазвичай розробник додає функції. Що в свою чергу надихає більше ідей. Так що додаткові функції додаються. Це, як ви сказали, один із способів того, як проект стає паровим. Розробник ніколи не сприймає проект як "закінчений", тому він ніколи не виходить.

Звичка, яку ви хочете ввійти, - це перестати думати про випуск / версію як про "готовий" проект. Швидше розгляньте розвиток як довготривалий процес. Подумайте про випуски як віхи на шляху до того, до чого ви одного дня сподіваєтесь, що програма. Таким чином, випуск / версія - це лише огляд того, де ви знаходитесь у довгостроковому процесі ... знімок, який був добре закруглений і протестований.

Що ви можете зробити, з практичної сторони, - сісти і проаналізувати наступний реліз. Це не повинно бути надзвичайно ретельним. Запишіть 3-5 нових основних фрагментів функціональності, які, на вашу думку, є важливими для наступного випуску. ( фактична кількість функцій може змінюватися залежно від типу програми, не враховуючи виправлень помилок чи незначних змін у gui ). Робота над ними. Якщо ви придумали інші ідеї, це чудово ... просто робіть нотатки та впроваджуйте їх у наступному випуску. Коли ви закінчите ці 3-5 предметів, ваш реліз готовий до бета-версії.

Коли я запускаю нову програму, я зазвичай замислююся про остаточне «бачення» програми. Мені це хочеться у версії 3 додатка. З цим орієнтиром я маю уявлення про те, що дозволить зробити тверду версію 1 - лише основи.

Підсумок:

Кожен випуск не повинен бути готовим «баченням» проекту. Просто віха до цього бачення.


2

Використовуйте систему контролю версій, в якій дешево створити гілку для якоїсь ідеї, і не допускайте її до шляху випуску. Наприклад у git, ви можете "повзати" якусь ідею, а потім git stashїї пропустити. Пізніше ви можете переглянути ці пюре і зібрати їх у вишні в будь-якому порядку, який здається цікавим.

Для більших можливостей створіть справжню гілку (щоб ви могли робити кілька комісій). Справа в суті: коли я хотів додати генераційну підтримку до сміттєзбірника, я зробив гілку. Stashes дуже добре захоплюють відволікаючі дрібниці. Великі функції можуть починатися як схованки, потім перетворюватися на гілки, а потім, нарешті, зливатися, коли вони будуть готові.

Маючи сховища та гілки, ви можете проаналізувати свої ідеї, встановити їх пріоритет та встановити рамки для випусків вашого сольного проекту, як і керований проект команди.

Подивіться, коли ви отримаєте ідею, вона повинна кудись піти , а найкраще десь - код : репо. Повзучі риси краще, ніж забувати хороші ідеї. Але, звичайно, якщо ви перекладете всі свої функції в одну і ту ж основну лінію, вона продовжуватиме зволікати з випуском, якщо тільки ви не скоротите неохайні випуски, наповнені напівфабрикатами, які користувачі повинні попередити не використовувати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.