я хочу измерить свой рост!
два слоненка
пять мартышек
38 попугаев и одно попугайское крылышко
Иногда прям хочется угодить менеджерам, высказав более-менее точные эстимейты. Сделать это бывает приятно типа, братух, все под контролем, мы сделаем правда после этого приходится сжать покрепче и педалить, педалить, педалить.
Что ж, чтоб не горело, там где сидело, предлагаю разработать некую систему оценок
Дано:
- многие менеджеры не любят диапазоны в оценках
- [ходят слухи] на задачу тратится все отведенное время
- слишком много вариантов для оценки (1 час, 2 часа, 3, 4, 5, n)
- роль тимлида не учтена
Один известный дизайнер* как-то ввел термин единица смысла, уточнив при этом: " а именно, выписать их на листочек Листочек в редких случаях окажется заполненным до середины, даже если писать крупным почерком." Ecли предположить, что середина листочка это приблизительно десять пунктов, путем нехитрых вычислений постановим (почему, собственно, и не постановить :): любая задача это два дня. Точка.
На любую задачу менеджера смело называйте оценку в два дня если задача большая, всегда можно показать, что уже сделано (за два дня), если небольшая дописать тесты, написать документацию, почистить код. Тут идея в том, что за два дня нужно обязательно сделать что-то законченное, что-то самостоятельное (какой бы смысл вы ни вкладывали в это слово). За два дня можно делать таски, которые, как сказал один известный румын** на одной известной однобуквенной conf [перевод мой]: хочется видеть пул-реквесты, которые огонь, которые прям хочется вмержить. Двухдневные таски хороший инструмент. Но что делать, если хочется запланировать 153.75 часов, а писать слишком длинный список лень? Все верно та-дам, создать большую задачу.
Большая задача это задача, которая терпима к ошибке (к одной большОй ошибке или к нескольким маленьким ошибочкам :) То есть мы делаем таску, поняли, что ошиблись, откатились к нулевому дню, делаем таску заново. Итого, просуммировав: два дня + ошибка + два дня = равно четыре дня. Большая задача это четыре дня. (Другими словами, на большую таску можно смотреть как на таску с большим кол-вом неизвестных при старте). Все это прекрасно, скажете вы, но что делать, если хочется пофиксить багу сегодня, сейчас (ну, то есть, вчера)? Та-ДАм маленькая задача.
Берем рабочий день разработчика, это где-то 8 (7,6,5...) часов и делим на кол-во задач, которые стандартный (он же средний) разработчик может сделать (тут важно не забыть время на все pr change requests). Путем медитации и калькулятора получаем 3 часа, менеджеру говорим 4 часа, так как это полдня работы. Итого, маленькая задача это 4 часа.
Мне кажется, роль тимлида как-то потеряна, как-то тупо не учитывается при эстимейтах (банально, вы скажете ну в принципе да :) Менеджерам мы сообщаем оценки в терминах трех задач, но тимлиду говорим, что мальнькая задача это 0-4 часов, задача (она же таска) это 0.5-2 дня, большая задача 2-4 дня. И тут открывается дзен тимлида, капитана судна, главного-преглавного. Если разработчик постоянно выполняет таски по верхней границе эстимейта командный дух похерен.
Что же делать? Да *** его знает, наверно, смотреть Что? Где? Когда? и учиться-учиться-учиться.
* www.artlebedev.ru/kovodstvo/sections/148
** Andrei Alexandrescu, DConf