Кто работает за всех? Визуальный лидерборд для команды разработки ИТ
без комментариев
В статье описан пример простой визуализации динамики и объема выполнения задач в команде разработки ИТ-продукта. Будет небольшая вводная часть про методологию и инструменты управления разработкой, которые используются в нашей команде. Далее, описание идеи лидерборда и ее техническая реализация, включая визуальное оформление. Сразу оговорюсь, что это был проект, сделанный за один человеко-день, и к результатам прошу относиться соответствующе.
Про методологию и инструменты управления разработкой
(Можно пролистать, если вас интересует только техническая часть)
Зачем вообще нужна методология разработки?
Представьте, у вас есть цель — выпустить программный продукт, например приложение управления личными финансами. Разработчики собрались, распределили кто какую часть делает и начали работать. Время идет, и вот уже есть что показать (даже инвесторам). Но клиенту приложение пока нельзя передать — нужно доделать авторизацию, формирование отчетов, фильтры, подумать как приложение будет обновляться и т.д. Это как дом, построенный для съемок фильма. Он есть, выглядит как настоящий. Но чтобы в нем жить, нужны вентиляция, канализация, может быть газ и многое другое. Время идет, сроки вышли, каждый разработчик что-то делает, но продукт все еще не готов к комерческому выпуску.
Оказывается между демонстрационной версией приложения (PoC — proof of concept) и готовым продуктом огромная пропасть. Иногда доведению программного продукта до финала мешает третий закон Паркинсона, который гласит: «Рост приводит к усложнённости, а усложнённость — это конец пути». Поэтому один из вопросов, которые задаю на собеседовании кандидатам, позиционирующим себя опытными разработчиками: «Сколько человек пользуются результатами вашей разработки?». Ведь польза возникает тогда, когда тем, что вы разработали, пользуются, а не когда вы просто потратили время на разработку чего-то, что можно показать.
Методология решает проблемы управления процессом разработки и контроля качества, помогает структурировать работу команды, отслеживать прогресс проекта. Позволяет минимизировать риски, сократить сроки выполнения и обеспечить соответствие продукта требованиям.
Не буду описывать современные методологии и их отличия, на эту тему написано достаточно материала, например Куда ведут все эти пути? Путеводитель по базовым методологиям. В нашей команде используются стандартные подходы:
Распределение ролей и недельные спринты по agile-методологии scrum
Визуализация процесса на досках канбан: формируется бэклог, из него декомпозиция на доску «новые задачи», потом доска «в работе» и «выполнено».
Для коллективной разработки используется локальный git. В качестве трекера задач используем сервис yougile.com.
Почему используем yougile? Когда появился отдел ИТ, стали набирать сотрудников, а задачи начали сыпаться как из рога изобилия, возникла ИТ стратегия, бэклог, встал вопрос трекера задач. Нужен был инструмен, который не надо долго настраивать и простой в администрировании. Шел 2022 г. Под руку попалась статья на vc (ссылку уже не найду, но такие подборки легко гуглятся) про российские аналоги для jira и т.п. Так узнал про yougile. По своей мощи это конечно не совсем jira. Но по простоте администрирования и удобству нас этот сервис более чем устроил.
Идея лидерборда и техническая реализация
Как то попалась на глаза инфографика из штаб квартиры гитхаб. Тогда появилась идея визуализировать наши задачи, чтобы наблюдать за динамикой.
Рабочие задачи никто не отменял, поэтому лидерборд надо было сделать минимальными усилиями и за минимум времени. Делал без крутых визуальных эффектов, хотя работать с графикой люблю.
Идея заключается в следующем:
Каждый сотрудник на лидерборде — «грузовик»
В кузове «груз» — это задачи, которые находятся в работе
Положение грузовика зависит от скорости закрытия задач
В конце пути груз, показывающий общее количество закрытых задач
В начале пути — новые задачи закрепленные за сотрудником, но еще не в работе
Теперь про реализацию
Скрипт 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: Размещать в публичный доступ актуальное состояние разработки не могу, поэтому по ссылке не сам сервис, а одно из сгенерированных изображений.
Спасибо, что дочитали статью до конца.