Кто работает за всех? Визуальный лидерборд для команды разработки ИТ

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

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

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

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

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

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

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

Оказывается между демонстрационной версией приложения (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: Размещать в публичный доступ актуальное состояние разработки не могу, поэтому по ссылке не сам сервис, а одно из сгенерированных изображений.

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

© Habrahabr.ru