Методології життєвого циклу програмного забезпечення для команд однієї людини [закрито]


15

Я будую програмну систему для свого магістерського проекту і шукаю поради щодо конкретних методологій, які б відповідали "команді одного чоловіка" ...


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

Відповіді:


11

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

Ось декілька речей, які я вважаю важливими:

  • Як каже Денис, контроль над джерелами є життєво важливим, але SVN - не єдиний варіант. Я в основному використовую Perforce, і git - хороша альтернатива. Мені подобається «основна» модель розвитку; що дозволяє мені робити експерименти в гілках коду, об'єднувати їх в основну лінію, коли вони працюють, і бачити їх, якщо вони не відповідають цьому.
  • Я використовую зошит для нотаток і програму для відстеження завдань. В даний час я використовую Redmine для останнього; до цього я використовував Fogbugz. Мені також подобається Redmine, оскільки він має дійсно гарну вбудовану вікі, яку я можу використовувати для постійних приміток та посилань на важливі сайти.
  • Також важливо відстежувати те, що я роблю, і встановлювати собі якісь розумні межі, щоб я міг зробити досить, не вигоряючи - див. Нижче.

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

  • Один з моїх теперішніх клієнтів, як правило, перекладає на мене великі функції, щоб не реалізовувати, і не клопоче мене, поки вони не закінчать. Тож я вважаю, що робота над спринтами Scrum - це чудово. Я здогадуюсь, що це може працювати для магістерського проекту, якщо ваш радник з досліджень не є контролем.
  • Мій інший поточний клієнт, як правило, має більше надзвичайних ситуацій типу "припинити роботу над цим і виправити це". Я спробував це зробити з Scrum і здався після одного спринту. Тому я роблю це за допомогою Kanban, і це працює набагато краще.

Інша проблема, що ви працюєте самостійно - у вас немає нікого, щоб сказати вам, що робити або коли, або якщо ви достатньо закінчилися, або коли кинете роботу, тому що ви зробили достатньо - так що ви повинні зробити що для себе. Я особисто віддаю перевагу Scrum, тому що можу відстежувати, як я роблю по відношенню до своїх спринт-цілей. Для проектів Kanban я можу просто відстежити, скільки часу я вкладаю, але мені це не подобається, а також щось більш орієнтоване на цілі.

Деякі мої друзі клянуться Помодоро як спосіб, щоб вони зосереджені на завданнях і відстежують особисту ефективність, і я думаю про те, щоб спробувати це.

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


3

Використовуйте SVN вище за інше, версія все. Для відстеження ноутбук буде робити для більш простих проектів, якщо потрібно, у вас є багато безкоштовних програм для відстеження завдань / помилок (Redmine - це круто). Agile / XP / Безперервна інтеграція / інші, на мою думку, будуть трохи зайвими.


3

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

Я думаю, що найкращим способом дій було б просто слідувати деяким належним чином обраним (виходячи з ваших потреб та проекту) широко прийнятим кращим практичним досвідом з ряду моделей процесів. Погляньте на методи відстеження виконаної роботи / роботи, що залишилася, керування вимогами, контроль версій, тестування (особливо тестування одиниць та прийняття), постійну інтеграцію, стандарти кодування, You Ain't Gonna Need It тощо. Якщо ви цього не зробили, я пропоную прочитати програму Code Complete і «Прагматичний програміст» і виконувати їхні поради.

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


1

Хлопець запитує про конкретні методології, і люди відповідають "використовувати програмне забезпечення X / Y". НЕ є питанням інструментів, насправді існує багато методологій, і, схоже, для них ще немає звіту про перевірку: Agile, Iterative, Spiral, Waterfall, XP, V-Model, TDD.


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