Когда люди говорят о постановке задач — они очень любят вспоминать про SMART.
Ну, дескать, цель должна быть Specific, Measurable, Attainable, Relevant, Time-bound.
И есть даже удивительные люди, которые пытаются это пихать программистам.
Но есть задачи, а есть задачи. И между ними большая разница!
Разработчик — существо потоковое, драйвовое. В отличие от проджект-менеджеров, тимлидов и прочих замечательных людей, которым неизбежно приходится переключать фокус внимания раз в 10 минут.
И здорово, если процессы позволяют разработчику находиться в этом потоке и создавать код без отвлечения на точки согласований и ошибки коммуникации.
Для этого есть модель TOTE. И есть мнение, что именно от неё нужно отталкиваться при формулировке таска разработчику. Поясню сначала, что за модель, а потом — как её применить.
TOTE
T1 — Test — желаемое состояние, к которому мы стремимся, какое оно?
О — Operation — какие действия мы должны делать, чтобы достигнуть результата?
T2 — Test2 — по каким признакам мы поймём, что продвинулись в сторону результата?
E — Exit — по каким критериям мы поймём, что результат окончательно достигнут?
Эта модель очень алгоритмична и хорошо подходит для задач до 20 часов (я надеюсь, вам не нужно объяснять, почему линейным разработчикам не нужно ставить задачи больше 4..8 часов? :) ).
Приведу пример, как это ложится на постановку тасков при плановой разработке. Конечно, приведённый рецепт не подходит в случае работы в стиле Research and Development, организации работ по эксплуатации или работы по срочному затыканию дыр.
Сперва (T1) идёт краткое описание, что мы делаем (не путайте с заголовком задачи!). Одно предложение, обобщающее, что и зачем мы делаем.
Вообще говоря нет смысла браться за задачу, если вы не можете это сформулировать.
Это может выглядеть вот так: «Сделать стандартное REST API профиля пользователя, чтобы с ним работали фронтэнд приложения», «Учим метод создания брони принимать параметр sex и сохранять его», «Необходимо написать миграции, которые расставят ключи в соответствии со схемами из merge request (uml диаграммы таблиц)»
В качестве Operation и чуть-чуть T2 выступает глава «какие действия нужно сделать для достижения результата».
Это нумерованный список тех конкретных действий, что нужно сделать линейному разработчику. Возможно с оценкой по времени. Например:
1. Создать миграцию (10 минут)
2. Прописать модель с валидацией (20 минут)
3. Прописать контроллер (40 минут)
Важно, что он нумерованный и вы понимаете, сколько времени должно занять выполнение каждого шага. Особенно это важно — если вы работаете с джуниорами и миддлами. Ибо как только ваш разработчик «закопается», данный список — хороший способ быстро понять, на чём он застопорился и какие дальнейшие у него должны быть шаги.
Ну и в завершение глава «Ожидаемый результат» выступает в качестве правил Exit и немножко T2. «Ожидаемый результат» — это ненумерованный чек-лист проверки задачи. Фактически мы формулируем сценарии тестирования задачи, языком QA. То есть, они в идеале должны содержать как позитивные, так и негативные сценарии и не должны содержать отсылок к коду в стиле «написан класс такой-то». Только функциональные проверки.
Например:
— При создании пользователя через API, он появляется в БД
— Ответы API при создании пользователя соответствуют документации
— Пользователя можно создать только администратору
— Не-администратор при попытке создания пользователя получает 403 ошибку
К слову, высокий процент багов в сделанных задачах — это как раз повод уделить больше внимания «ожидаемому результату» при формулировке, чего вы хотите от разработчиков.
А не слишком ли много буков?
Конечно, на практике может быть не рентабельно прописывать все задачи таким образом. Нужно найти баланс, и об этом тоже хочется немного сказать.
Постановка задач через TOTE полезна как временная мера при подключении новичков, джуниоров и миддлов, пока они не освоятся с новой для них системой и подходами, принятыми в коллективе.
Можно смело упрощать постановку задач квалифицированным, проактивным и продвинутым сотрудникам.
Можно смело урезать формулировки, если у вас один человек берёт один блок работ и безотрывно, без отпусков и болезней решает его с гарантированным результатом.
Если с людьми приходится «играть в шашечки», перекидывать с задачи на задачу и тасовать их между командами, если блоки работ «ставятся на холд» — ТОТЕ необходим.
На что ещё обратить внимание
У вас могут быть ошибки в том, как нарезаются большие блоки работ на задачи.
Может быть ошибка с целеполаганием блока работ в целом, с требованиями к блокам работ, с процессами в компании и банально, с компетенциями.
ТОТЕ подход не решит этих проблем. И это совсем другая история.
Автор: may-cat