Как писать задачи
Небольшой лайфхак. Разработчиками надо рулить, надо ставить таски.
Путь проджекта, ПМа, лида предполагает, что на входе у вас появляется что-то очень абстрактное вида "надо вот такую вундервафлю запилить и к нам привернуть, надо вчера«, а разработчик и конечный исполнитель (и вся команда) хочет что-то конкретное, вида копания от А до Б с предсказуемым результатом.
Надо как-то первое со вторым срастить.
Какие моменты следует помнить, на входе, чтобы проще жилось
- постановка задач — это тоже задача
- понимание неопределенностей — это тоже задача
- исследование решений, поиски ответов — это тоже задача
- оценка получившегося, интеграция — это тоже задача, и не одна
- на технические вопросы отвечают технические специалисты; ПМ, ПО и проджект просто не в состоянии выдумать все аспекты за них
Еще неплохо бы вспомнить про критерии постановки целей и задач — в технической среде больше любят https://ru.wikipedia.org/wiki/SMART (так-то подходов в избытке, см OODA, GROW, PDCA и даже ТРИЗ в малой части).
Технический путь от фантазий к реализациям
несложно логически разбить на 4 этапа:
- анализ (как вообще можно/следует нам это делать)
- декомпозиция (какие конкретные шаги следует предпринять)
- выполнение (прохождение шагов с прошлого этапа)
- интеграция/синтез (оценка результата и доступность реализации для вышестоящей задачи/цели)
Ключевым словом задачи является слово «надо». В вариантах «надо сделать», или «надо, чтобы». Не абстрактная «документация», не сборник KPI или OKR-целей, не наборы мокапов, и т. п. Перевод формализации в форму «надо» уже является первым и значительным шагом. Надо-то что?
Надо сделать (действия)
= вот сделано, было-стало, артефакт (код) = вот
Надо получить (целевое состояние)
= вот описание причин и следствий, влияет вот это, исправляется вот так, вот так исправили
Надо разобраться
= вот описание причин и следствий, влияет вот это, исправляется вот так (если надо)
Надо проверить/убедиться
= вот ход проверки, вот желаемое, вот действительное, вот шаги для приведения одного к другому
Надо предложить решение
= вот описанный выбранный ход решения, выбирали вот так, выбрали это (почему)
Надо придумать
= вот модель и гипотеза, проверять и делать будем так
Надо запустить
= вот запущено, щупать там, торчит сюда, описание вот
Надо померить/оценить
= вот так меряли, вот там, вот такое получили, критерии были такими, нас устраивает/нет
- Описываем, что нам надо получить (суть задачи)
- Описываем, зачем нам это надо
- Описываем, что для этого надо сделать
- Описываем, как мы будем это делать
- Описываем, как надо представить результат
Что здесь важно: на первые два вопроса вполне может дать ответ не самый технический человек — product owner, проджект, ПМ, заказчик, бизнес-аналитик (если есть). Первых двух пунктов достаточно для старта!
Остальные ответы технический исполнитель вполне может найти и предложить сам. Для разработчиков высокого уровня вполне корректный вопрос «предложи удобное решение, вот для таких вводных». Более того, хороших и дорогих разработчиков ценят и любят как раз за то, что у них есть ответы на вопросы «как сделать то или иное хорошо». Не надо изобретать в той сфере, где вы сами не разбираетесь, и подсказывать неоптимальные ходы, это иногда даже вредно и местами бесит людей.
В ситуации, когда ПМ нарезает задачи команде на дистанцию вперед, не надо стесняться описывать только начальные пункты. Аспекты реализации и их оценка на этом этапе не важна, не усложняйте процесс.
Когда придет время, для понимания недостающего можно выделить отдельные задачи на исследования и прототипы. Или наоборот, запустить исследования и прототипы заранее, в параллель, чтобы потенциальные грабли проанализировать — тут смотрите сами.
Важно: поскольку «задачи на поиск ответов» это тоже задачи, к ним такие же требования по результатам — результат должен быть представлен в объективной форме. Изучал варианты — дай сводную, что смотрел и почему. Выбрал подходящий — напиши кратко, почему. Собирал прототип или мокап — покажи прототип. Любой таск-трекер позволяет добавить материалы в задачу почти в любой форме.
1. Суть: сделать сбор и аналитику данных (вот этих)
2. Зачем: чтобы группа аналитики могла собирать выводы, а группа мониторинга настроить алерты
— на этом этапе задача уже поставлена, но не проанализирована, и не декомпозирована
3. Используем вот такой механизм, надо впихнуть его вот сюда и сюда
— мы провели анализ (возможно спросили у умного технического гуру)
4. Как сделать: привернуть вот эту либу вот туда, настроить подключение вот тут, написать прослойку вот здесь, и вон те операции тоже вот таким механизмом
— мы провели начальную декомпозицию. Этапы 3 и 4 можно, а иногда нужно, поручать самим исполнителям. Даже с защитой решения: а почему выбран именно такой механизм? а почему нам подходит именно это?
На корню исключает проблему «я так сделал, потому что мне так сказали».
Шаги 3 и 4 могут вырасти в отдельный пул более мелких подзадач, это нормально. В этом и состоит суть декомпоза.
Шаги этапа 4 могут прямо так и стать заголовками подзадач. И те, в свою очередь, тоже: проекты бывают сложными.
5. В итоге: что потребуется сделать, чтобы запустить решение? Проверить/протестировать вот так, включить в проект вот здесь, написать инструкцию для людей (см. п.2), включить, настроить, оценить.
— этот пункт (интеграция/синтез) проверочный. Никому обычно не нужны решения, которые сделаны, но не используются. Задача _не_ решена, пока решение нельзя потрогать, а заинтересованные стороны не получили результат.
- https://en.wikipedia.org/wiki/Problem_solving
- https://en.wikipedia.org/wiki/Problem_structuring_methods
- https://en.wikipedia.org/wiki/Category:Problem_solving_methods
PS. Логическому финту со «словом надо» меня научил один хороший человек примерно в 2009-м. Постановка задач людям — отдельный навык, который надо усердно качать. Я тогда был хоть и начальником, но молод и зелен. Так вот: различные «сделайте, пожалуйста» и «пойдите разберитесь» это вялая херня, которая таит в себе массу возможностей не сделать, сделать не то, не тогда, и просто пролюбить полимеры.
Либо ты можешь внятно сказать, что тебе надо (проверочное слово!) на данном уровне проработки, тогда просто скажи. Либо ты не можешь, тогда выплюнь морковку найди к задаче человека, который сюда скажет, что надо, и как надо лучше. Немножко армейский тон, но дело того стоит.
- обратите внимание на полезное отличие задачи от хотелки, которое дополнительно описывает путь от «хочу» до упомянутого «надо»