Жизненный цикл задачи — это процесс воплощения задумки в проекте. Хорошие задачи делают проект лучше и органично дополняют его. Сегодня речь пойдёт о том, как мы дополнили естественный жизненный цикл задачи важными точками. Они помогают нам делать хорошие задачи отличными, учиться друг у друга и рассказывать историю наших задач всем.
Постановка задачи
В самом начале описание задачи может быть очень грубым и состоять из пары слов, понятных лишь автору. На этом этапе формулировка задачи занимает не больше пары минут. За это время мы кратко описываем проблему и пути решения. Такую задачу мы называем новой (New).
Как правило, эта задача ещё не готова к исполнению, мы на время забываем о ней и возвращаемся к тому, от чего отвлеклись. Есть ещё сверхсрочные задачи, их мы делаем сразу. О них поговорим в другой раз.
Обсуждение задачи
Дальше переходим к обсуждению задачи и добавляем ей метку Discussion. Это очень важный шаг для развития общего видения проекта. Каждая новая возможность должна быть оправдана. Лучше не делать задачу совсем, чем делать её плохо.
Прежде чем перевести задачу в следующий статус, стоит рассказать о ней как можно большему количеству участников команды. В идеале, задачу должен одобрить каждый, но в реальной жизни — это не всегда возможно. И мы решаем эту проблему так: пишем о новой идее в чате Telegram, обсуждаем и формируем общее представление о задаче. Если кто-то не участвовал в этом обсуждении, автор идеи спрашивает мнение оставшихся участников лично. Задача переходит в следующий статус только спустя некоторое время после обсуждения (обычно на это уходят сутки).
После того, как задача получила описание она может:
- Получить статус Won’t Fix: мы закрываем задачу и не собираемся её делать. Это лучший исход для задачи, она не усложнит наш проект. Ради этой задачи не придётся идти на компромиссы, мы станем ближе к пользователям, даже если потеряем часть аудитории, оно того стоит. Вместе с этим лейблом нужно указать причину отказа от реализации, чтобы была возможность вернуться и пересмотреть своё решение.
- Стать замороженной (Freezed). Мы обсудили задачу, решили, что она реально важна нашему проекту и нашим пользователям, но её время ещё не пришло. Может быть, её реализация станет значительно проще после выполнения какой-то другой задачи. Может быть, это просто напоминание о том, как сделать проект лучше. При переводе в этот статус важно позаботиться о разморозке этой задачи (поставить напоминание и описать процесс разморозки).
- Получить статус To Do. В этом списке находятся задачи, которые будут реализованы командой. На данном этапе мы ставим лейблы к задаче, то есть решаем, каких областей она касается, а также оцениваем трудность выполнения и возможные проблемы, с которыми придётся столкнуться при реализации.
Выполнение задачи
Задачи в состоянии To Do присваиваются исполнителям и переходят в статус In Progress. В этом статусе происходит вся магия. Несмотря на то, что задача присвоена одному человеку, её реализация — это дело всей команды. Исполнитель — это человек, который будет писать историю этой задачи и у которого будут спрашивать, почему сделано так, а не иначе. Мы любим помогать друг другу и не боимся просить совета или помощи в реализации.
Долгий путь под названием Review
Из статуса In Progress задача попадает в In Review. Исполнитель создаёт Pull Request, то есть просьбу перенести коммиты (изменения) из ветки этой задачи в рабочую ветку, код из которой работает на сервере. Перед тем как одобрить одобрить пул реквест, нужно удостовериться в том, что задача сделана хорошо. Для этого, исполнитель назначает ревьюеров, ему нужно выбрать по крайней мере двух участников команды, которые имеют разное количество опыта в этом проекте. Часто бывает, что простые вопросы человека, плохо разбирающегося в технологии, сильно улучшают уровень исполнения.
Во время review происходит передача знаний, проверка качества и формирование общего видения проекта. В этом статусе задача может находиться дольше, чем в предыдущих. Исполнителю на этом этапе важно показать свою работу как можно большему количеству участников и получить одобрение от ревьюеров.
После Review задача попадает в статус Done.
Это ещё не всё
Done ещё не значит, что задача закрыта. Исполнитель продолжает следить за задачей до того момента, пока код не заработает на сервере, и им не начнут пользоваться люди. Чтобы извлечь максимальную пользу из проделанной работы, после выполнения задачи мы пишем статью о том, с какими проблемами столкнулась команда, какие решения были приняты и какие выводы сделаны. Любая задача достойна своей истории, и мы готовы её рассказать.
Почему так сложно?
Многие из наших решений направлены на развитие чувства ответственности и свободы у каждого из членов команды. Задачи структурированы так, что каждый может найти что-то себе по душе и узнать, чем занимаются коллеги. Таким образом, в любое время у нас есть список задач в состоянии To Do, которые с уверенностью можно присвоить себе, перевести в статус In Progress и начать делать. Задачи с меткой Discussion можно обсуждать в свободное время и предлагать свои идеи по реализации. А также постоянно есть пища для ума в виде задач, находящихся в In Review. Мы считаем, что анализ чужих работ и поиск идей по их улучшению — это отличный способ развития навыков и креативности.
Учтите, что наша история подойдёт не всем. Мы — команда разработчиков, которая работает не ради денег, нам важна каждая задача. Мы хотим тратить на них своё время и делать их по-настоящему круто. Мы хотим общаться и передавать знания. Нам важно общее видение проекта, поэтому мы подходим с таким вниманием к каждой задаче.
В следующей статье мы расскажем об инструментах для реализации этого жизненного цикла. Спасибо за внимание, подписывайтесь на нашу группу ВКонтакте, чтобы узнать о новых статьях и наборах в наш клуб.