Як ви розробляєте програмне забезпечення без критеріїв прийняття?


70

Як ви спільно розробляєте програмне забезпечення в команді 4-5 розробників без критеріїв прийняття, не знаючи, на що тестують тестери, і з кількома (2-3) людьми, які виступають власником продукту.

Все, що ми маємо, - це схематична «специфікація» з деякими знімками екрана та кількома кулевими точками.

Нам сказали, що це буде легко, тому такі речі не потрібно.

Я в збитку, як діяти далі.

Додаткова інформація

Нам дали жорсткий термін.

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

Власники товарів не можуть легко відповісти на запитання чи дати відгуки. Немає регулярних запланованих зустрічей або дзвінків з ними, і зворотній зв'язок може зайняти кілька днів.

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


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

10
В основному це автоматична розробка або "ковбойське кодування". Розробники заповнюють деталі. Розробники контролюють більшість. В основному у вас ніколи не буде формальних вимог. Розробляйте, демонструйте для власників акцій, збирайте відгуки, промивайте та повторюйте.
Джон Рейнор

11
Чи розуміє власник товару, що це відмінний спосіб забезпечити спіраль витрат і часу все вище і вище? Некомп'ютерні вчені часто не розуміють важливості чітко написаних чітких специфікацій. Наприклад, уряд США часто стикається з подібними проблемами, коли вони змінюють очікування щодо нового військового обладнання. Це одна з декількох причин, через які військова техніка часто перевищує бюджет і не відповідає графіку. joelonsoftware.com/2000/10/02/…
nickalh

35
"Нам сказали, що це буде легко, тому такі речі не потрібно. ... Нам дано жорсткий термін. ... Власники товарів не доступні для відповіді на запитання або надання відгуків. Є жодні регулярні заплановані зустрічі або дзвінки з ними та зворотній зв'язок не може зайняти днів ». Ви маєте моє співчуття. Це ознаки: "Не маю уявлення про те, як працює програмне забезпечення. Зокрема".
jpmc26

13
Ви були налаштовані на збій. Це та річ, яку потрібно передати на управління. Якщо у вас не було жорсткого терміну, ви можете переробити, поки вам це не вдалося. Якщо зацікавлені сторони були доступні для зворотного зв’язку, ви можете досить швидко переробити, щоб (можливо) досягти терміну. Дітто насправді має досить детальну характеристику. Але щось має дати . Це та частина, де ви дуже красиво попросите свого шефа витягнути ваш @ $$ з вогню.
Джаред Сміт

Відповіді:


130

Ітераційний процес буде досягти цього добре, без докладних специфікацій.

Просто створіть схематичний прототип, попросіть зворотного зв’язку у замовника, внесіть зміни на основі зворотного зв'язку та повторіть цей процес, поки заявка не буде завершена.

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

Само собою зрозуміло, що ви не збираєтесь працювати таким чином, щоб укласти контракт з фіксованою вартістю або з фіксованим часом.


114
Слід додати: «просто переконайтеся, що вам платять за годину», а не «платять лише тоді, коли у клієнта не вистачає ідей, чого не вистачає».
Док Браун

22
Також обов’язково задокументуйте те, що думає замовник, щоб воно було, принаймні, десь зафіксовано в примітках. Це можуть бути не формальними критеріями прийняття, але це доречно мати, коли ви намагаєтесь зробити наступні кроки ..
enderland

4
@Doc Brown: ОР відредаговано, щоб додати "Клієнт внутрішній" - так що, сподіваємось, оплата за годину не є проблемою.
sleske

8
+1 Дотримувались цього процесу для багатьох внутрішніх проектів і виявили, що він працює дуже добре і, крім того, загалом економить час. Одна порада - тримати ітерації короткими: тиждень чи два.
Боб Твей

13
Мій досвід полягає в тому, що це добре працює, коли причина відсутності формальних критеріїв прийняття полягає в тому, що ніхто ще не впевнений у тому, що вони насправді хочуть. Прототипи допомагають їм формувати думки, і ви приймаєте, що у вас є велика непевна задача. Але це працює досить погано, коли причина полягає в тому, що зацікавлені сторони не знаходять часу, щоб подумати / поговорити / написати про те, що вони хочуть, або коли зацікавлені сторони мають суперечливі вимоги, які з політичних причин вони не відчувають, що можуть чітко заявити. Тоді прототип просто вибиває банку по дорозі, і нічого не поліпшується, поки ви не знайдете міцну палицю.
Стів Джессоп

58

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

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

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

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


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

По-друге, я б запропонував вам написати лише технічні характеристики для розробника. В іншому випадку розробник не зміг би розпочати свою роботу. Таким чином, ви можете паралельно співпрацювати з бізнес-командою щодо природи роботи, яка буде розвиватися. Таким чином, як розробник, так і бізнес-команда синхронізуються між собою щодо вимог.
Каран

3
your draft specification will quickly illustrate the problem and communicate to them that they were wrong (....) since it will be right in front of them and obvious- Я хотів би зазначити, що клієнти, які усвідомлюють, наскільки це очевидно, це саме ті клієнти, з якими у вас ніколи не виникне такої проблеми. Або, якщо говорити коротше: рішення передбачає відсутність проблеми (що є парадокс, який я все частіше і частіше визнаю у всіх сферах життя) ...
Раду Мурзеа

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

18

Власник продукту передав вам прототип; поверніть йому кращих (поки ви не закінчите)

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

Ваші прототипи повинні починатися з паперу, переходити до цифрових макетів, а потім будуватися за допомогою «реальних» технологій.

Treehouse має чудовий посібник для цього, який робить висновок:

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

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

Зустріч свій термін

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

Ваш термін - найкраще визначена вимога. Майте щось повне і цілісне, що ви зможете доставити вчасно.

Співпрацюйте зі своїми тестерами

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

Дізнайтеся, чи є у тестувальників щось тверде, що їм потрібно надати, як-от документація про тестування, яку ви можете «повернути».

Спробуйте перший дизайн

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

Отримати собі швидкоплинне знайомство з Test First Design і / або тест - розробки на основі і дати вказівки ваших тестерів на процес по мірі необхідності. Для швидкого подібного проекту, вам не потрібно бути експертом у процесі. Але використання перевіреної методики добре відобразиться на вас та ваших тестерів.

Дотримуйтесь стандартів, особливо для інтерфейсу користувача

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

Виберіть стандартний інтерфейс користувача для свого веб-сайту і не налаштовуйте його, якщо / доки не буде доручено. Я не знаю, для якої платформи ви розробляєте, але Bootstrap або Google Material Design - два приклади.

Спілкуйтеся, але не домагайтесь

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

Якщо у вас є питання, опишіть, як ви будете діяти, якщо не отримаєте вказівки. Наприклад:

Чи потрібно користувачам цього додатку отримати доступ до нього за допомогою мобільних пристроїв? Зараз ми припускаємо, що це буде лише система для настільних ПК / ноутбуків.

Не панікуйте

Я брав участь у багатьох проектах для людей, які не знали поняття «вимога». Більшість були успішними. Власники рукотворних продуктів дають вам можливість створювати чудові рішення.

Зауважте, деяким власникам проектів у цих проектах було неможливо догодити і ховались за виправданням "Я занадто зайнятий ..." за їх некомпетентність. Але більшість були "в захваті" від кінцевих результатів.


Єдиний момент, який не згадується, - Жорсткий крайній термін: важливо буде, щоб щось було передано в цю дату, і щоб воно функціонувало (проходило через рухи), навіть якщо дзвони, свисти і швидкі смуги відсутні. Якщо це обмеження існує, усі інші моменти, які робить @Tim, повинні йти добре
Філіп Оуклі

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

це поліпшення. Можливо, навіть змінити «Зустріч» на «Зустрітися», щоб бути більш імперативним. Тоді, можливо, також додамо твердження, що якщо вони призначили дату без інших матеріалів, то це стане ключовою вимогою, так що наступна "Примітка" має контекст. (часто клієнтів хвилює лише час та вартість, інше - косметика та мода, як я впевнений, що ви знаєте ;-)
Філіп Оуклі

10

Проект - це акт зменшення невизначеності до досягнення визначеності :

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

Це принцип прогресивної розробки: вимоги, критерії та результати розробляються поетапно, як і розуміння замовником його власних очікувань та вимог завдяки його участі в процесі розробки.

Це проблема?

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

Відповідь на ці два питання повинна бути у договорі. Або буде предметом переговорів. І замовник повинен прийняти додаткову участь (головний аргумент - це "сміття, сміття поза", хоча я б радив вам настійно представити його більш дипломатично ;-))


1
Я люблю перше речення. Завданням цього є те, що замовник може: 1) не бути впевненим у тому, чого хоче, 2) змінити свою думку, коли йде, 3) захоче чогось недосяжного. Але якщо це насправді простий проект, то він має хороші шанси на успіх.

1
Цей - золото.
Бруно Гвардія

8

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

Крім того, я дуже, дуже, дуже рекомендую вам вести докладний журнал прийняття рішень . Як мінімум ви записуєте все, що хтось вирішив, з датою та списком людей, які були присутніми, коли було прийнято рішення. Ще краще, якщо ви зможете записати, ЧОМУ щось було вирішено таким, яким воно було. Не має значення, чи це файл на вашому ПК, сторінка у вашій інтранет-вікі чи ноутбук на вашому столі. Журнал захищає вас і проект: коли тестер каже, що якийсь предмет "провалюється", ви можете вказати, що таким чином було вирішено з цими людьми, і це не ваша проблема, а між ними та тестувальниками. Якщо це призведе до зміни технічних характеристик, то це добре, але в цей момент вони не можуть сподіватися на те, щоб виконати будь-який термін, який вони мали на увазі, - або вони повинні скоротити область десь в іншому місці.


8

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

Ітеративна розробка не є поганою пропозицією, але вона потребує тісної співпраці власників продукту та розробників. Спробуйте зав'язати когось на гачок, сказавши: "Ми знаємо, що у нас виникнуть запитання. Хто може регулярно бути доступним, щоб переконатися, що на них надійде відповідь, щоб реалізація проекту не затягувалася?" Заплануйте регулярний час, щоб хтось переглядав прогрес і усував перешкоди. Якщо вони не з’являться або не відмовляються, то слідкуйте за ввічливою письмовою кореспонденцією та затримкою документів або невідповіддю. Якщо власники продуктів не можуть бути доступними, попросіть їх представити свого представника.

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

Не вірте нікому, коли вони скажуть вам, що це буде легко . Іноді це справді так просто, як це звучить, і я можу повірити в це, якщо (і тільки якщо ) я знаю власників продуктів досить добре, щоб повністю вірити, що вимоги дійсно такі ж прості, як вони кажуть, і те, що я був надаються роз'яснення (якщо ні, я запланую сеанс запитань та записів і документую його) Я був у занадто багатьох ситуаціях, коли легко з точки зору операцій надзвичайно важкоз точки зору розвитку, або ви думаєте, що ви повністю зробили, і чуєте слова відчаю («О, до речі, ми про це забули ...»). Приклад ... "Все, що вам потрібно зробити, - це прочитати ці файли PDF із сховища документів", яке під час тестування прийняття перетворюється на "О, ми забули, що деякі з них були прочитані збоку абсолютно непослідовно, і деякі мають неправильний розмір сторінки, а деякі потребують додавання цих трьох сторінок, і нам потрібні всі вони для того, щоб відображати однакові. Це дуже просто виправити, правда? ".

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


3

Без специфікації у вас командна робота. Іди спритний.

Сядьте з PO та виведіть тіло / кілька невеликих початкових історій. "Ми збираємося доставити саме цей екран, із лише цією кнопкою, яка переходить на" bing! "". Встановіться на деяких змінного струму. Розкажіть історію. Продемонструйте історію. Виходить кнопки повинні бути червоного кольору. Підняти помилку чи нову історію. Доставте ґудзики, котрі гулять і нахиляються. І так далі.

Спільно вказуйте та доставляйте невеликі вертикальні фрагменти, які часто демонструються.

Якщо клієнт не буде працювати з вами таким чином, шукайте вихід.


-1

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


-2

Вам потрібна детальна, перевірена специфікація, перш ніж ви зможете почати писати код. Це факт, і цього не обійти.

Якщо ніхто інший не бажає писати цю специфікацію, тоді розробники повинні її написати. Так ви отримуєте неповну специфікацію. Ви перетворите це на повну специфікацію (що означає "це те, що я збираюся реалізувати, якщо хтось інший не скаже мені цього робити"). Ви передаєте цю специфікацію зацікавленим особам і даєте їм можливість змінити специфікацію. Є лише шанс змінити специфікацію - не визначивши її, наприклад, сказавши: "Мені це не подобається". У цей момент це ваша специфікація, або вони можуть надати іншу специфікацію, але не видаляти її.

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


6
"Вам потрібна детальна, перевірена специфікація, перш ніж ви зможете почати писати код. Це факт, і цього не обійти". Мої колеги та я зробили це на багатьох проектах, і ми мали багато успіхів і дуже мало невдач. Ваша претензія не є абсолютною.
whatsisname

1
@whatsisname погодився. Я теж написав код таким чином. Це відбувається, коли завдання має до нього дослідницький аспект. Зараз є недоліки кодування без специфікації, але іноді вони є більш прийнятними, ніж твердження, що ви не можете досягти мети.
Корт Аммон

1
@whatsisname, фразування можна було б покращити, але основна правда полягає в тому, що ви не можете виконати запит, не розуміючи, що це таке. Якщо я просто скажу: "Напишіть мені програму на Java", вам неможливо написати цю програму. Ви можете скласти власне уявлення про те, що повинна робити програма - іншими словами, вигадати власну ціль, а потім виконати її, - але це є чистою неможливістю досягти мети, про яку ніколи, крім вас, не було заявлено . Це стосується будь-яких запитів, великих чи малих; потреби та бажання повинні бути зрозумілі, перш ніж ви зможете їх зробити, виготовити та / або представити.
Wildcard

Це сказало ... рівень деталізації, який вимагає насправді запит, щоб його зрозуміти та виконати, можна суттєво переоцінити. Вона також може бути під оцінками. Єдине рішення цього - спілкування.
Wildcard

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