Я в проектній групі, що складається з 4-х дев. У нас тривалий час обговорювались, як впоратися з додатковою роботою, яка з’являється в ході одного робочого предмета.
Ця додаткова робота, як правило, є дещо пов'язаними із завданням, але не завжди необхідними для досягнення мети пункту (це може бути думка). Приклади включають, але не обмежуються ними:
- рефакторинг коду, зміненого робочим елементом
- код рефакторингу, сусідній з кодом, зміненим елементом
- реконструювати більшу кодову зону навколо квитка. Наприклад, якщо для елемента ви змінюєте одну функцію, ви усвідомлюєте, що весь клас тепер може бути перероблений, щоб краще змінити цю зміну.
- удосконалення інтерфейсу користувача, який ви тільки що змінили
Коли ця зайва робота мала, ми не проти. Проблема полягає в тому, коли ця додаткова робота спричиняє істотне розширення елемента за межі початкової оцінки точок функції. Іноді предмет на 5 балів дійсно займе 13 балів часу. В одному випадку у нас був предмет з 13 пунктів, який в ретроспективі міг би становити 80 балів і більше.
У нашій дискусії є два варіанти, як впоратися з цим.
Ми можемо прийняти додаткову роботу в тому ж робочому пункті і списати її як неправильну оцінку. Аргументи для цього включали:
- Ми плануємо "набивання" в кінці спринту для обліку такого роду речей.
- Завжди залишайте код у кращій формі, ніж ви знайшли. Не перевіряйте в роботі на півроку.
- Якщо ми залишимо рефакторинг на пізніше, це складно запланувати і, можливо, ніколи цього не зробити.
- Ви зараз в найкращому розумовому "контексті", щоб впоратися з цією роботою зараз, оскільки ви вже в глибині коду. Краще вимкнути це зараз і бути ефективнішим, ніж втрачати цей контекст, коли повернешся пізніше.
Ми малюємо лінію для поточного робочого пункту і кажемо, що додаткова робота йде в окремий квиток. Аргументи включають:
- Окремий квиток дозволяє отримати нову оцінку, тому ми не брешемо собі про те, скільки балів насправді є, або ми маємо визнати, що всі наші оцінки жахливі.
- Спринт "набивання" призначений для несподіваних технічних проблем, які є прямими перешкодами для виконання вимог до квитка. Він не призначений для бічних предметів, які є просто "приємними".
- Якщо ви хочете запланувати рефакторинг, просто поставте його у верхній частині відставання.
- Немає можливості нам належним чином враховувати цей матеріал, оскільки він здається дещо довільним, коли він з'являється. Переглядач коду може сказати, що "ті елементи управління користувальницьким інтерфейсом (які ви насправді не змінювали в цьому робочому елементі) трохи заплутані, чи можете це виправити?" це як година, але вони можуть сказати: "Ну, якщо цей елемент керування тепер успадковується від того ж базового класу, що й інші, чому б вам не перемістити весь цей (сотні рядків) код у базу та перемотувати все це , каскадні зміни тощо? " А це займає тиждень.
- Він "забруднює місце злочину", додаючи в квиток неспоріднену роботу, роблячи наші оригінальні оцінки функції безглуздими.
- У деяких випадках додаткова робота відкладає реєстрацію, викликаючи блокування між розробниками.
Деякі з нас зараз кажуть, що ми повинні вирішити якусь відсічку, наприклад, якщо додаткові речі менші ніж 2 FP, вони йдуть у тому ж самому квитку, якщо його більше, зробити його новим квитком.
Оскільки ми користуємось Agile лише декілька місяців, що думаєш з більш досвідченими ветеранами Agile тут, як з цим впоратися?