Привет, меня зовут Артём и я Frontend Team Lead в Surf. Я очень люблю две вещи: геймификацию и графики. Сейчас я работаю с людьми больше, чем с кодом, поэтому читаю много тематических статей. Вот так, тихим вечером, в одной из них я натолкнулся на идею объединения Moving Motivators и лепестковой диаграммы.

Moving Motivators — это игровой метод работы с командой из практик Management 3.0, почитать можно здесь

А статья, где я нашёл идею, здесь

Во время чтения в голове возникла картинка — красивое обзорное сравнение мотивации команды, с графиком, всяческими подсказками и аналитикой. Я подумал, что мне, как тимлиду, было бы крайне полезно иметь такой инструмент, чтобы понимать, что вдохновляет и огорчает, что важно, а что нет — для команды в среднем и каждого человека персонально. Быстро погуглив, я не нашёл ничего похожего. Что ж, решил я, все описано, надо просто взять и сделать.

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

Сначала я начал делать на привычном стеке (CRA, который к этому времени уже морально устарел, плюс Ant Design и MobX) — и застрял довольно быстро, уже не помню на чём, пытаясь сразу сделать хорошо. Бросил и какое-то время не трогал. А потом, другим тихим вечером (вообще в тихие вечера часто голова варит лучше всего) мою голову пронзила мысль: «раз уж это геймификация, то почему бы не сделать всё на GameMaker?» (не осилил я Unity и потому предпочитаю GM). Я снёс все наработки и начал с чистого листа.

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

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

Но не с методологиями. В третьем подходе зачем-то решил заодно внедрить Feature Sliced Design, не имея опыта в построении такой архитектуры с нуля. Оказалось, для такого проекта этот метод не подходит и я больше решал проблемы «а как правильно разбить по слоям», вместо того, чтобы заниматься самим приложением. К счастью, эта неудача уже не привела к очередному переворачиванию стола и длительному перерыву в разработке — когда осознал проблему, я тут же создал новую папку под проект.

В последней попытке решил, что буду делать максимально просто, максимально быстро и максимально работоспособно. Взял связку Typescript + Next.js + RSuite + Apache ECharts без всяких стейт-менеджеров и прочего усложнения и начал писать «как буква ляжет». Потом, конечно, пришлось это всё рефакторить и разносить, но мне такой подход принёс давно забытое удовольствие — скорость реализации фич, исправления ошибок и внедрения новых идей (которые, естественно, возникали на ходу) были невероятны, а на выходе красота по полочкам.

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

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

Например, Acceptance, которое помимо очевидного «принятия» подразумевает под собой ещё «принятие ответственности». Или неожиданно многогранное Honor. Или Relatedness, которое все равно потеряло часть своего смысла, превратившись в «связь». Потерянные значения я попытался закрыть блоком «Также известно как…»

Частично мне в этом помогал ChatGPT, но справился он не со всеми задачами, которые я перед ним ставил. Так что приходилось многое дорабатывать самому. В итоге результат мало напоминает оригинальные карточки — вышла не экранизация, а фильм «по мотивам произведения», да ещё и адаптированный. Этакая «Мотивационная братва». Но так как на тот момент приложение создавалось без прицела на широкую аудиторию, мне нравился результат.

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

Прямо сейчас я одной рукой пишу этот текст, а второй заканчиваю ту самую страницу из моего воображения, из-за которой я взялся реализовать этот проект — интерфейс для обработки результатов команд. Точнее, страница уже готова, но стало очевидно, что без инструкции пользоваться ей немного сложнее, чем базовой функциональностью. Поэтому, прежде чем я выложу новый билд, мне необходимо написать статью или записать видео с объяснением, как этим всем пользоваться. Чтобы не быть голословным — держите скрин.

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

Из стратегических же планов пока что только банальщина — бэкенд, регистрация и хранение данных на сервере. Может быть, когда наберётся большое количество данных и обратной связи, родится ещё что-нибудь. А пока продолжаю писать как буква ляжет. Попробовать web-версию приложения → можно здесь

Больше интересного контента для разработчиков → в телеграм-канале Surf Web Team 

П.с там публикуем кейсы, лучшие практики, новости и вакансии Surf, а также проводим прямые эфиры. 

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


  1. NeraDail
    04.08.2023 13:55
    +1

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


    1. markushevpro
      04.08.2023 13:55
      +1

      Результат в геймификации. Естественно, в эксельке быстрее. Но дело не только в данных, для их обработки есть много других инструментов


  1. proDan0
    04.08.2023 13:55

    1. Surf_Studio Автор
      04.08.2023 13:55

      Обновили ссылки, попробуйте еще раз)


      1. snaiper04ek
        04.08.2023 13:55

        Всё ещё не работает:

        "Despite having six eyes, Martie can't find the page you are looking for "


        1. Surf_Studio Автор
          04.08.2023 13:55

          Спасибо, что заметил. Поправили)


  1. Aquahawk
    04.08.2023 13:55
    +4

    Чет я ничерта не понял, я сам должен проставить карточки в нужные позиции а эта замечательная вещь выстоит оси из центра и нарисует мне многоугольник?


  1. Wan-Derer
    04.08.2023 13:55

    Немного оффтопа: а почему в итоге RSuite, а не Ant Design?


  1. Hokum
    04.08.2023 13:55

    Прикольно, но с мобильного устройства - не удобно. Если данные хранится будут, то было бы интересно иметь возможность наблюдать за изменением команды. Так как в конкретный момент времени приоритеты разные, то можно было бы следить за графиками в течении года, если проводить опросы команды переодически, например раз в месяц вместе с ретроспективой.
    Не знаю относительно источников, но кажется, что вместо возможности просто проставлять от 0 до 10 любые карточки, имело бы смысл ограничить их перемещение каким-то набором очков. Например, дать очков так чтобы все одновременно можно было поставить на уровень 7 или 5, будет повод задуматься, что более важно в конкретный момент, а не в целом по жизни. Так как ни один из этих параметров ниже 7 ставиться хотелось.
    Или еще можно не просто ограничить количество очков сверху, а сделать необходимость распределить их все. В общем, есть куда развивать инструмент, плюс, некоторый настрой на чуть меньшую формальность. Какую-то более расслабленную атмосферу. Если это сделать частью ретроспективы.