без комментариев
без комментариев

В статье описан пример простой визуализации динамики и объема выполнения задач в команде разработки ИТ-продукта. Будет небольшая вводная часть про методологию и инструменты управления разработкой, которые используются в нашей команде. Далее, описание идеи лидерборда и ее техническая реализация, включая визуальное оформление. Сразу оговорюсь, что это был проект, сделанный за один человеко-день, и к результатам прошу относиться соответствующе.

Про методологию и инструменты управления разработкой

(Можно пролистать, если вас интересует только техническая часть)

Зачем вообще нужна методология разработки?

Представьте, у вас есть цель — выпустить программный продукт, например приложение управления личными финансами. Разработчики собрались, распределили кто какую часть делает и начали работать. Время идет, и вот уже есть что показать (даже инвесторам). Но клиенту приложение пока нельзя передать — нужно доделать авторизацию, формирование отчетов, фильтры, подумать как приложение будет обновляться и т.д. Это как дом, построенный для съемок фильма. Он есть, выглядит как настоящий. Но чтобы в нем жить, нужны вентиляция, канализация, может быть газ и многое другое. Время идет, сроки вышли, каждый разработчик что-то делает, но продукт все еще не готов к комерческому выпуску.

Оказывается между демонстрационной версией приложения (PoC - proof of concept) и готовым продуктом огромная пропасть. Иногда доведению программного продукта до финала мешает третий закон Паркинсона, который гласит: "Рост приводит к усложнённости, а усложнённость — это конец пути". Поэтому один из вопросов, которые задаю на собеседовании кандидатам, позиционирующим себя опытными разработчиками: "Сколько человек пользуются результатами вашей разработки?". Ведь польза возникает тогда, когда тем, что вы разработали, пользуются, а не когда вы просто потратили время на разработку чего-то, что можно показать.

Методология решает проблемы управления процессом разработки и контроля качества, помогает структурировать работу команды, отслеживать прогресс проекта. Позволяет минимизировать риски, сократить сроки выполнения и обеспечить соответствие продукта требованиям.

Не буду описывать современные методологии и их отличия, на эту тему написано достаточно материала, например Куда ведут все эти пути? Путеводитель по базовым методологиям. В нашей команде используются стандартные подходы:

  • Распределение ролей и недельные спринты по agile-методологии scrum

  • Визуализация процесса на досках канбан: формируется бэклог, из него декомпозиция на доску "новые задачи", потом доска "в работе" и "выполнено".

Для коллективной разработки используется локальный git. В качестве трекера задач используем сервис yougile.com.

Почему используем yougile? Когда появился отдел ИТ, стали набирать сотрудников, а задачи начали сыпаться как из рога изобилия, возникла ИТ стратегия, бэклог, встал вопрос трекера задач. Нужен был инструмен, который не надо долго настраивать и простой в администрировании. Шел 2022г. Под руку попалась статья на vc (ссылку уже не найду, но такие подборки легко гуглятся) про российские аналоги для jira и т.п. Так узнал про yougile. По своей мощи это конечно не совсем jira. Но по простоте администрирования и удобству нас этот сервис более чем устроил.

Идея лидерборда и техническая реализация

Как то попалась на глаза инфографика из штаб квартиры гитхаб. Тогда появилась идея визуализировать наши задачи, чтобы наблюдать за динамикой.

Этот экран висит в штаб-квартире GitHub и в прямом эфире отображает статистику по форкам, реквестам и написанным строкам кода
Этот экран висит в штаб-квартире GitHub и в прямом эфире отображает статистику по форкам, реквестам и написанным строкам кода

Рабочие задачи никто не отменял, поэтому лидерборд надо было сделать минимальными усилиями и за минимум времени. Делал без крутых визуальных эффектов, хотя работать с графикой люблю.

Идея заключается в следующем:

  • Каждый сотрудник на лидерборде - "грузовик"

  • В кузове "груз" - это задачи, которые находятся в работе

  • Положение грузовика зависит от скорости закрытия задач

  • В конце пути груз, показывающий общее количество закрытых задач

  • В начале пути - новые задачи закрепленные за сотрудником, но еще не в работе

Теперь про реализацию

Скрипт python каждые 30 мин получает нужные данные с сервера yougile и формирует файл изображения на веб сервере. Одностроничный сайт при загрузке показывает изображение и автоматически обновляет его, если картинка изменилась.

У сервиса yougile есть API, который позволяет реализовать все задуманное. Документация понятная, есть примеры на python. Пару раз задавал уточняющие вопросы в поддержку, реагировали оперативно.

Для подключения сначала получаем ключ API. Ключ API не имеет ограничений по времени и по количеству запросов с его использованием. Есть только ограничение на их частоту - не более 50 в минуту на компанию. Запрос к API – это HTTPS запрос к адресу.

Скрытый текст
import http.client

# Создаем соединение с сервером
conn = http.client.HTTPSConnection("ru.yougile.com")

# Заголовки запроса
headers = {
    'Content-Type': "application/json",
    'Authorization': "Bearer ключ API"
}

# Отправляем GET запрос к API
conn.request("GET", "/api-v2/tasks", headers=headers)

# Получаем ответ от сервера
res = conn.getresponse()

# Читаем и декодируем содержимое ответа
data = res.read().decode("utf-8")

# Выводим данные
print(data)

Обработку результата делаю в pandas, мне так просто удобнее

import json
import pandas as pd

# Загружаем JSON в pandas DataFrame
dictionary = json.loads(data)
df = pd.DataFrame(dictionary['content'])

# Смотрим, какие данные есть в ответе
print(df.columns)
Index(['title', 'timestamp', 'columnId', 'archived', 'completed',
       'completedTimestamp', 'assigned', 'createdBy', 'deadline', 'id',
       'subtasks', 'stickers'],
      dtype='object')

columnId - доска (id), в которой находится задача
assigned - список пользователей (id), за которыми закреплена задача
completed - выполнена или нет задача
completedTimestamp - время, когда задача выполнена

Для каждого сотрудника ведется подсчет общего количества задач, сколько в работе, сколько выполнено всего и за 2 недели.

Визуальное оформление

Для фона наших грузовичков можно найти картинку в интернете или использовать любой из популярных генераторов изображений на базе ИИ (Midjoney, Stable diffusion, Gigachat, Шедевриум яндекса и т.д.). Сгенерировал изображение в бесплатном KREA. Мне он нравится тем, что можно вносить изменения на ходу и сразу смотреть результат. Также в нем похоже отсутствуют фильтры (умеет генерировать эротику).

Фоновое изображение
Фоновое изображение
Грузовичок
Грузовичок

Изображение грузовичка и ящиков сгенерировал в сервисе Recraft.

Размер ящика в кузове зависит от количества задач.

Количество ящиков на старте и финише также зависит от количества задач
Количество ящиков на старте и финише также зависит от количества задач

Получившийся результат можно посмотреть здесь. PS: Размещать в публичный доступ актуальное состояние разработки не могу, поэтому по ссылке не сам сервис, а одно из сгенерированных изображений.

Спасибо, что дочитали статью до конца.

Комментарии (8)


  1. Targo01
    26.08.2024 07:04

    Вау. Очень понятно все расписано, в будущем буду применять, спасибо.


    1. Mdm3 Автор
      26.08.2024 07:04

      спасибо за положительный отзыв


  1. Kdg88
    26.08.2024 07:04
    +1

    У нас с такими грузовичками компания скатилась к сюжету голодных игр, где участники пытаются всеми силами хантить легкие тикеты для статистики) условно я за полторы недели сделал ПР на 4к строк позволяющий не создавать лишних 30 тикетов. А наш стаф за 3 дня закрыл 6 спайк тикетов отписав в каждом по 3 строчки. Угадайте у какой машинки будут более о///шие фары при подсчете ящичков :D


    1. Mdm3 Автор
      26.08.2024 07:04

      Хороший комментарий. Тоже думал об этом, когда делал. В моем случае сервис больше для мотивации пользоваться трекером, а не для оценки KPI. Т.к. есть проблема, что часть задач не заводятся в трекер.
      Еще хотел привязать дедлайны задач, чтобы "груз" краснел-перезревал, если сроки вышли. В итоге не стал заморачиваться. У нас небольшая команда, и вклад каждого в общий прогресс у всех на виду.


      1. Kdg88
        26.08.2024 07:04
        +2

        Это уже оффтоп, но на своем опыте могу сказать - ничто так не мотивирует пользоваться трекером, как злонамеренно укороченные дедлайны, когда приходится трекать свои активности просто чтоб показать что дурак тут не ты, но в маленькой команде за такое могут и темную устроить. К стати, можно кол-во / вес ящичков привязывать к стори поинтам если таковые есть.


  1. Kdg88
    26.08.2024 07:04

    _