Оценка — количествена преценка на трудовите разходи, необходими за изпълнение на задача, разработване на функционалност или реализиране на проект като цяло. В мобилната разработка оценките се използват за планиране на спринтове, определяне на разходи и управление на очакванията на клиента. Според данни на Project Management Institute, 2024, грешката при оценка в ранните етапи на проекта може да достигне 100%, което прави оценката една от най-трудните дисциплини в разработката.
Основни точки
Оценка (от англ. estimate — оценка) — прогнозиране на количеството време или усилия, необходими за изпълнение на задача. В мобилната разработка оценките се изразяват в часове, дни, story point-ове или паричен еквивалент. Целта на оценката не е точно предвиждане, а намаляване на несигурността за вземане на решения.
Оценка — прогноза с марж на грешка. Ангажимент (commitment) — обещание да се изпълни задача до определена дата. Разликата е критична: оценката казва „вероятно 5 дни„, ангажиментът — „ще го направим за 5 дни„. Мениджърите често бъркат тези понятия, превръщайки оценката в краен срок без право на грешка.
Процесът на оценяване е също толкова важен, колкото и резултатът от него. Когато екипът обсъжда оценката на задача, се разкриват скрити изисквания, зависимости и рискове. Дори ако крайната цифра е неточна, дискусията дава на всички участници разбиране за задачата. Затова колективните методи за оценка (Planning Poker) са по-ефективни от индивидуалните.
Съществуват няколко метода за оценка, всеки подходящ за различни етапи на проекта и нива на детайлност. Изборът на метод зависи от наличните данни и необходимата точност.
| Метод | Тип | Точност | Кога да се използва |
|---|---|---|---|
| Planning Poker | Експертен, колективен | Висока (в спринт) | Оценка на задачи за спринт |
| T-Shirt sizing | Експертен, бърз | Средна | Предварителна оценка на епици |
| Аналогова оценка | На база история | Средна | Подобни задачи в миналото |
| Three-point (PERT) | Вероятностен | Над средната | Задачи с висока несигурност |
| Параметрична | Формулен | Зависи от данни | Еднотипни измерими задачи |
Planning Poker — най-популярният метод за оценка в Agile. Всеки разработчик получава тесте карти с числа на Фибоначи (1, 2, 3, 5, 8, 13, 21). След обсъждане на задачата всички едновременно показват картата си. Ако оценките се разминават — разработчиците с минимална и максимална оценка обясняват своята логика, след което следва повторно гласуване. Методът елиминира влиянието на авторитетите и дава по-точна оценка.
T-Shirt sizing — груба оценка по размер на тениска: XS, S, M, L, XL, XXL. Методът се използва за бърза оценка на големи задачи (епици) в ранни етапи, когато детайлите не са известни. По-късно всяка такава задача се декомпозира и оценява в Planning Poker. T-Shirt sizing отнема 5-10 минути на задача, но дава само порядък на големината.
PERT използва три оценки: оптимистична (O), песимистична (P) и най-вероятна (M). Крайната оценка се изчислява по формулата: (O + 4M + P) / 6. Методът отчита несигурността и дава по-реалистичен резултат от единична оценка. PERT е особено полезен за задачи с високи рискове или нови технологии.
Точността на оценката зависи от етапа на проекта и количеството известна информация. Колкото по-рано се прави оценката, толкова по-голям е маржът на грешка — това е нормално и трябва да се взема предвид в планирането.
Конус на несигурността (Cone of Uncertainty) — модел, който описва как маржът на грешка на оценката намалява с напредването на проекта. На етапа на концепция маржът на грешка е 400% (задачата може да отнеме от 1 до 4 месеца). В момента на спринта — 20% (1-1.2 месеца). Осъзнаването на този модел помага да не се изискват точни оценки в ранните етапи.
Относителната оценка (в story point-ове) е по-точна от абсолютната (в часове), защото хората сравняват задачи по-добре, отколкото оценяват време. „Тази задача е два пъти по-сложна от онази„ — по-надеждна преценка от „тази задача ще отнеме 8 часа„. Относителните оценки не зависят от конкретния разработчик и запазват точността си при смяна на изпълнителя.
Точността на оценката може да се подобри чрез систематичен подход, колективно обсъждане и анализ на минали грешки. Съществуват няколко доказани практики.
Всяка задача, оценена на повече от 2 дни, трябва да бъде декомпозирана на подзадачи. Принцип: ако задачата не може да бъде оценена с 50% точност, значи е твърде голяма. Разделете я на стъпки, които са разбираеми и оценими. След декомпозиция общата оценка често е 1.5-2 пъти по-голяма от първоначалната.
Водете история на оценките и сравнявайте с действителните разходи. Например: „задачите, оценени на 3 story point-а, средно отнемат 4 дни, а не 2„. Използвайте velocity на екипа за прогнозиране: ако екипът затваря 20 story point-а на спринт, не планирайте 30. Анализът на точността на предишни оценки е най-доброто обучение за умението за оценяване.
Закотвяне — психологически ефект, при който първата изказана оценка влияе на всички участници. За да избегнете закотвяне, в Planning Poker всички показват картите едновременно, а не последователно. Калибриране — редовна сверка на оценките с реалността: след 10-20 спринта екипът се научава да оценява по-точно благодарение на обратната връзка.
Всяка задача съдържа скрити рискове: заболяване на разработчик, проблем с API, промяна на изискванията. Добавете коригиран спрямо риска фактор към оценката: за задачи с висок риск — множител 1.5-2, с нисък — 1.1-1.2. Прозрачно покажете на клиента какви рискове са отчетени и как те влияят на сроковете.
Грешките при оценяване се повтарят в повечето екипи, независимо от тяхната зрялост. Познаването на тези грешки е първата стъпка за тяхното коригиране.
Най-честата грешка — оценка по най-добрия сценарий: „ако всичко върви идеално, ще го направим за 3 дни„. В действителност нищо не върви идеално: грешки, въпроси относно изискванията, зависими задачи. Решение: оценявайте по най-вероятния сценарий, а не по оптимистичния. Използвайте PERT за отчитане на вариативността.
Когато мениджърът каже „трябва до петък„, разработчикът подсъзнателно коригира оценката спрямо този срок. Оценката под натиск винаги е занижена и води до забавяне. Решение: оценката трябва да предхожда крайния срок, а не обратното. Първо екипът оценява, след това страните се договарят за сроковете.
Сложност на задачата (колко да мислим) и време (колко да правим) — различни метрики. Една задача може да бъде проста, но времеемка (кодиране на 10 екрана). Или сложна, но бърза (намиране на грешка в legacy). В story point-овете обикновено се оценява сложността, а времето се извлича от velocity-то на екипа.
Разработчикът не работи 8 часа непрекъснато по една задача: срещи, code review, помощ на колеги, административни задачи отнемат 30-50% от работното време. Контекстните превключвания трябва да бъдат отчетени в оценката: реално разработчикът пише код 3-4 часа на ден.
Често задавани въпроси
Разработката — творчески процес с висока несигурност. За разлика от строителството или производството, където всяка стъпка е известна, в IT всяка задача е уникална. Неизвестните неизвестни (unknown unknowns) — основната причина за неточност. Дори опитен екип греши в 30-50% от оценките. Това е нормално и трябва да се взема предвид в планирането.
Story point-овете са по-добри за планиране на спринтове, защото са относителни и не зависят от изпълнителя. Часовете са нужни за договори и външно отчитане, но са по-малко точни. Оптимална комбинация: задачите се оценяват в story point-ове, а сроковете се конвертират чрез velocity-то на екипа в календарни дни.
За задачи с непознати технологии първо използвайте Spiko (изследване с ограничено време). След изследването екипът разбира сложността и може да даде реалистична оценка. Добавете множител 2-3 към обичайната оценка и заложете 50% буфер за непредвидени трудности.
Покажете декомпозицията — разделете задачата на подзадачи с оценка на всяка. Обяснете от какво се състои времето: разработка, тестване, code review, документация. Предложете алтернативи: намаляване на обхвата, опростяване на функционалността или разделяне на етапи. Никога не намалявайте оценката без промяна на изискванията.
Преоценка е необходима, когато се появи нова информация за задачата: разкрити са допълнителни изисквания, открити са технически ограничения или се е променил приоритетът. В рамките на спринта задачите не се преоценяват — фокусът е върху завършването. Между спринтовете backlog-ът се преоценява в рамките на grooming.
Обобщение
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също