{"id":14284,"url":"\/distributions\/14284\/click?bit=1&hash=82a231c769d1e10ea56c30ae286f090fbb4a445600cfa9e05037db7a74b1dda9","title":"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0430\u043d\u0446\u044b \u0441 \u0441\u043e\u0431\u0430\u043a\u0430\u043c\u0438","buttonText":"","imageUuid":""}

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

Привет! Меня зовут Антон Макаров. Вот мой VK, чтобы не потеряться. Я основатель и генеральный директор Creonit / digital production. На волне массовых уходов компаний и сервисов из России, ушел и таск-трекер Teamwork, которым мы пользовались 7 лет. За 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: показываем скрины из таск-трекера. Мы его назвали НЕБО.

0
86 комментариев
Написать комментарий...
Aleksandr Stikharev

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

Ответить
Развернуть ветку
Александр Саввин

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

Ответить
Развернуть ветку
Anton Makarov
Автор

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

Ответить
Развернуть ветку
1 комментарий
Ремонт Ноутбуков

Вы без маски

Ответить
Развернуть ветку
Иван Ярославцев

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

Ответить
Развернуть ветку
Anton Makarov
Автор

Да.

Ответить
Развернуть ветку
3 комментария
Alexey

В принципе, достаточно это процитировать в статью, чтобы люди не тратили время.

Ответить
Развернуть ветку
1 комментарий
Юлия Грызунова

С-скорость! Круто!
Жаль, что не со всеми иностранными решениями так можно быстро и безболезненно. Фигма, не бросай нас )

Ответить
Развернуть ветку
Виталий Тиханов

Есть open source проект Penpot, который можно развернуть на своих серверах или локально.

Ответить
Развернуть ветку
4 комментария
Anton Makarov
Автор

Спасибо!

Ответить
Развернуть ветку
Иван Ярославцев

уже видел, что кто-то пытается свою фигму написать, жаль в 96 часов не уложится

Ответить
Развернуть ветку
Konstantin T.

Хоть бы показали скрины.

Ответить
Развернуть ветку
Anton Makarov
Автор

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

Ответить
Развернуть ветку
Please be patient ihave autism

Д пиздец на мареал цсс, как обычно ну)

Ответить
Развернуть ветку
Anton Makarov
Автор

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

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

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

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Михаил Креветкин

согл. фичи крайне мощные

Ответить
Развернуть ветку
Антон Херсун

Planfix не пробовали?

Ответить
Развернуть ветку
Freezer

Поддерживаю. Вроде покрывает все потребности. Мы сидим на нем лет 5 наверно и менять ни на что не собираемся)

Ответить
Развернуть ветку
2 комментария
Иван Ярославцев

Поддерживаю, все хорошо, кроме API, там не хватает некоторых методов и ждем уже долго

Ответить
Развернуть ветку
2 комментария
vic smirnoff

Ждем-с публикацию "как нам пообещали отключить свифт, но мы подсуетились и за 4 дня заработали себе миллиард".

Ответить
Развернуть ветку
Иван Ярославцев

и за 4 дня сделали свой свифт

Ответить
Развернуть ветку
Leo Uvarov

"когда вы живете в своем доме на участке (обладаете своим кодом и базой данных), то никто не сможет вас оттуда выселить или изменить против вашей воли условия"

государство может

Ответить
Развернуть ветку
Звенислав Николаевич

А иногда даже и не своё

Ответить
Развернуть ветку
Mikhail Ivanov

Темная тема! Супер

Ответить
Развернуть ветку
Иван Ярославцев

А это правда дает преимущество? Кажется на 96 часах оверфичей?

Ответить
Развернуть ветку
2 комментария
Максим Панфилов

Антон, смелое и быстрое решение! 👍

Вопрос: почему не рассматривали self-hosted версию YouTrack? Там лицуху один раз можно оплатить.

Мы остались на облачном YouTrack, в марте оплатили на их российское юрлицо переводом, а сейчас они предоставили полгода бесплатного обслуживания (видимо, рассчитывают, что за это время общественное давление ослабнет и можно будет разкенселлить российских клиентов).

Ответить
Развернуть ветку
Anton Makarov
Автор

Спасибо)
YouTrack был фаворитом, но там тайм-трекинг не такой, какой нам необходим.

Ответить
Развернуть ветку
4 комментария
Rustam Mukhamedyanov

Круто!

Ответить
Развернуть ветку
China 4Russia

На чем написан? фронт, бэк..

Ответить
Развернуть ветку
Anton Makarov
Автор

Бэкенд на Symfony 5, фронтенд на Vue 3

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Коля Базин

Интересно, а проекты для заказчиков вы тоже так быстро пишете? Или быстро только себе, а для заказчиков "нууу эта фича пять месяцев будет делаться"?

Ответить
Развернуть ветку
Anton Makarov
Автор

Смотря что делать.
Мы знаем, как у нас работают все процессы в компании и что с чем связано. Поэтому разрабатывать какие-то простые вещи для себя, вроде таск-трекера, мы можем быстро. Мы точно знали, что нам нужно, у нас уже была спроектированная база данных, которую нам отдал Тимворк. У нас не было согласований, которые занимают часть времени на разработку. Мы использовали UI-фреймворк, что тоже ускорило процесс)

Ответить
Развернуть ветку
Grandmaster

А чего на опенсорс не выложили?

Ответить
Развернуть ветку
Anton Makarov
Автор

1. Очень сыро.
2. Выложить нормально — это тоже время. Написать, как разворачивать.
3. Сейчас всё привязано к нашей базе данных, которую мы забрали у Тимворка. Надо делать какое-то стартовое наполнение.
4. Мы еще не определились, будет это опенсорс или SaaS. Или только для нас.

Ответить
Развернуть ветку
2 комментария
Александр Алаев

А не пробовали https://moo.team/ в процессе поиска альтернатив?

Ответить
Развернуть ветку
Anton Makarov
Автор

Не пробовали. Информация про нужные нам API на сайте отсутствует. И нет трекинга времени в таком формате, в каком он нужен нам и описан в статье.

Ответить
Развернуть ветку
11 комментариев
Юрий Карпов

Слишком успешный успех. Не все так могут )

Ответить
Развернуть ветку
Anton Makarov
Автор

Нам просто повезло)

Ответить
Развернуть ветку
2 комментария
Илья Смирнов

Мужики, а зачем вам свой трекер, если судя по скринам всю его функциональность покрывает бесплатная версия Trello?)

Ответить
Развернуть ветку
Anton Makarov
Автор

Нет, не покрывается) Если бы покрывалось, мы бы уже давно сидели на Trello. Наши требования я перечислял в разделе “Требования к новому таск-трекеру”)

Ответить
Развернуть ветку
8 комментариев
Freezer

.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Anton Makarov
Автор

Там нет нужных API

Ответить
Развернуть ветку
Станислав Одинцов

Пользуюсь Tick Tick и не парюсь

Ответить
Развернуть ветку
Anton Makarov
Автор

Как это относится к теме статьи? Tick Tick не трекер для работы команды.

Ответить
Развернуть ветку
83 комментария
Раскрывать всегда