Разработчики с сапогами: как мы за 4 дня написали для себя таск-трекер

Привет! Меня зовут Антон Макаров. Вот мой VK, чтобы не потеряться. Я основатель и генеральный директор Creonit / digital production. На волне массовых уходов компаний и сервисов из России, ушел и таск-трекер Teamwork, которым мы пользовались 7 лет. За 4 дня нам нужно было найти ему замену. Не найдя лучших альтернатив, мы написали свой таск-трекер. Почему приняли такое решение — рассказываю в статье.

Разработчики с сапогами: как мы за 4 дня написали для себя таск-трекер

Почему использовали Teamwork

2014. Creonit только начинал свое существование, а человечество ещё не везде изобрело работу сайтов без перезагрузки страниц: SPA-приложения только начали появляться.

Первый таск-трекер выбирали по принципу «нужен быстрый и удобный». Наш бывший коллега с предыдущего места работы провёл ресерч и попробовал 50 таск-трекеров. В вариантах были мейнстримные Redmine, Jira, Битрикс24. Они функциональные, но у всех есть один большой минус: они очень медленно работали. В итоге нашли удобный и легковесный таск-трекер Teamwork, работающий без перезагрузки страниц (как SPA), которым мы пользовались до марта 2022 года.

Про рентабельность

Время шло. В 2020 году пришли к тому, что нам нужно считать рентабельность проектов, а в Teamwork уже всё было для этого: логирование времени и нужные API.

Мы разработали для себя внутренний инструмент «Панель», который полностью автоматизирует управленческий учёт, вытягивает часы сотрудников из таск-трекера, а деньги — из банковских выписок.

В «Панель» попадают все пользователи Teamwork. Мы создали справочник окладов сотрудников с бонусами и привязкой ко времени. В «Панели» пользователь Teamwork связывался со справочником сотрудника, то есть мы знали, какая у сотрудника была зарплата в любой момент времени, поэтому могли вытягивать через API его затраченные на задачу часы и считать, сколько потрачено на производство проекта и какая у него рентабельность.

О том, как мы научились считать деньги в разработке, подробно рассказываю в предыдущем выпуске.

Квест: перестроить бизнес-процессы компании за 4 дня

В марте 2022 года Teamwork остановил работу в России, предупредив нас всего за два дня до остановки сервиса. Мы сразу же выгрузили свою базу данных, чтобы не потерять прогресс проектов. Стали думать, что делать. Оставалось ровно 2 рабочих и 2 выходных дня, чтобы принять решение, потому что в понедельник новой недели нужно начать работу с новым таск-трекером, перестроить свои бизнес-процессы под него, перенести все проекты и научить сотрудников работать с новым инструментом.

Кстати, Teamwork всё ещё продолжал присылать нам письма и приглашать на вебинары, когда отменил нашу платную подписку))

Требования к новому таск-трекеру

Итак, каждая минута стала важна, поэтому стадия принятия пришла очень быстро и мы сформулировали пул требований для нового таск-трекера. Нам важны были возможности:

  • создавать пользователя;
  • создавать проекты, списки задач, задачи с подзадачами, комментарии к задачам;
  • оценки задач;
  • настраиваемые статусы задач для каждого проекта («принято в работу», «делается», «ждёт контроля», «прошло код-ревью», «прошло тестирование», «завершено»);
  • трекинг времени (логирование времени должно быть возможно много раз на одну и ту же задачу несколькими исполнителями и любыми людьми из проекта. Например, тестировщик проверяет задачу – он логирует в неё же время. Мы знаем, сколько стоит задача и из времени людей можем посчитать, сколько эта задача стоила для нас и для клиентов. Это удобно, если работаем по T&M);
  • расширенное API (нужно, чтобы «вытягивать» данные из залогированного времени, «вытягивать» данные о проектах. Также нам нужны вебхуки на создание проектов для «Панели»);
  • описание для проектов;

Teamwork идеально подходил под наши требования, поэтому мы сидели на нём так долго. Он стал частью наших внутренних бизнес-процессов. «Панель» завязана на Teamwork. Нам нужен трекинг времени, чтобы время можно было отмечать не один раз на задачу и не одним человеком. Нам нужна скорость работы, понятный и быстрый интерфейс, простой флоу работы. Почти все 7 лет Teamwork был почти единственным таск-трекером, который работал реактивно, как SPA. Также нам нужны различные интеграции, но далеко не во всех трекерах есть нужные нам API.

Между тем, как ты нажал кнопку и действие выполнилось, должно проходить минимальное количество времени

От планирования проекта вас никогда не должно отвлекать взаимодействие с инструментом, особенно, если вы работаете удалённо. Для Creonit это золотое правило. Задачи должны создаваться и обновляться максимально быстро, а интерфейс — работать реактивно. Наши мозги работают слишком быстро, чтобы ждать на планнингах, пока перезагрузится страница.

Поэтому теперь поговорим немного о том, как мы выбирали таск-трекер.

Успеть за 96 часов

Мы попробовали много коробочных и облачных таск-трекеров и не нашли сочетания всего, что нам было нужно. Есть быстрые, которые бы нас устраивали, но они под санкциями (Jira, YouTrack). Были таск-трекеры, в которых не хватает какой-то важной функциональности. Например, создание задач быстрое и удобное, но не хватает нужных API. Или структура управления проектами идеально нам подходит, но нет логирования времени. Логирование времени для нас — критически важная функциональность, потому что нам нужно видеть, кто зафиксировал время, сколько, в какой день и месяц, чтобы понимать, сколько стоил проект.

Мог бы подойти Битрикс24, но он работает очень медленно. Нам нужно, чтобы всё быстро и реактивно работало, потому что задач ставится очень много и мы постоянно работаем в таск-трекере.

Ещё был неплохой таск-трекер от МТС, но там не было необходимого набора API. В целом можно было бы подстроиться под их структуру проектов, но невозможность вытягивать часы всё перечеркнула.

Мы тестировали разные сервисы и сравнивали их между собой. К чему в итоге пришли?

Создать, нельзя взять готовый

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

Приступили к сапогам

Это не первый сервис, который мы разрабатываем для себя (не будем говорить, сколько уже сделали их для клиентов): «Панель» (система управленческого учёта), множество внутренних автоматизаций (интеграции с CRM и корпоративным мессенджером, триггер-ссылки в КП, различные автоматические отчёты и т.д.).

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

Выгрузили из Teamwork свою базу данных за последние 7 лет и принялись пилить API. Бэкенд нового таск-трекера был полностью готов за 2 рабочих и 2 выходных дня.

За два выходных сделали фронтенд для просмотра задач и комментариев к задачам в режиме «readonly», чтобы иметь доступ к скопившейся информации, потому что задач было поставлено много. Фронтенд работает с API нашего таск-трекера, как и «Панель», которая получает от него данные о сотрудниках, зарплатах и затреканном времени. Итак, новый таск-трекер готов. Конечно, мы его уже совершенствуем и всячески развиваем. Главное, что он сейчас есть, он работает и нам не нужно больше переживать, что кто-то заберёт наш сервис или с ним случится что-то ещё.

Итого

Последний месяц дал всем ясно понять, что компаниям на самом деле ничего не принадлежит. Зарубежные партнеры могут ограничить или отменить работу сервисов, поэтому нужно надеяться в первую очередь на себя. Серверы в других странах могут отключить в любой момент, российские подписки и лицензии могут существенно вырасти в цене, компании — закрыться, а поставщики могут изменять условия пользования сервисом: рисков много.

Это повлияло на наше решение в пользу разработки кастомного таск-трекера под наши задачи и бизнес-процессы. Мы не хотим ни от кого зависеть и перестраивать бизнес-процессы под другие сервисы: лучше адаптируем всё под себя, чтобы нам было комфортно и просто работать.

На решение повлияло и наличие у нас огромного опыта в разработке кастомных сервисов для нас и наших клиентов (различные CRM, ERP, PIM-системы, CMS, OMS (системы управления заказами), WMS (системы управления складом) и многое другое), поэтому мы знали, что сможем написать сервис очень быстро. Со знанием дела разделили проект на этапы, зашили риски и возможности. Теперь будем в безопасности со своей базой данных и своим кодом. Никакие отключения не смогут остановить нашу работу или запороть бизнес-процессы. Урок выучили.

В итоге варианта всегда два. Это можно сравнить с недвижимостью: когда вы снимаете квартиру, то есть много рисков. Вам могут поднять арендную плату (как сейчас делают некоторые российские сервисы), внезапно выселить (как сервисы, которые внезапно уходят из России), попросить изменить условия договора. Но когда вы живете в своем доме на участке (обладаете своим кодом и базой данных), то никто не сможет вас оттуда выселить или изменить против вашей воли условия. Но ухаживать за домом (техническая поддержка) всё равно будет нужно.

Мы бы с удовольствием пользовались готовым таск-трекером, но мы не нашли тот, на который мы можем перейти без потерь и который бы давал нам те же гарантии, что и кастомный. В 2014 мы нашли свой идеальный таск-трекер, но в 2022 нам пришлось адаптироваться к условиям и создавать свой.

Если у вас появились вопросы, буду рад ответить на них в комментариях. Или добавляйтесь в VK.

UPD: показываем скрины из таск-трекера. Мы его назвали НЕБО.

6060
86 комментариев
100 ₽

Поступает множество вопросов про тот или иной сервис.

Да, можно было найти что-то, что подойдёт «из коробки». Но если мы не выбрали что-то, то:
1. Не хватало API;
2. Не подходил трекинг времени;
3. Не понравился интерфейс;
4. Не устроила скорость работы.

В статье про это написано :)

3
Ответить

Написали таск-трекер за 4 дня, но вам не покажем.

16
Ответить

Потому что у вас документов нет.

11
Ответить

Добавил скрины таск-трекера в статью)

4
Ответить

Вы без маски

2
Ответить

Краткий сюжет комментариев: все пытаются убедить автора, что он изобрел велосипед, а он доказывает, что каждый велосипед разный

7
Ответить

Да.

2
Ответить