История одной фичи или зачем хакатон программисту

Всем привет, я – программист и тимлид в компании разрабатывающей корпоративное ПО. В последнее время на Хабре активизировалась тема проведения хакатонов. Появляются посты, например, от компании Рамблер – Хакатон как источник улучшения жизни в компании. Вставлю и я свои пять копеек.

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

Расскажу свою историю и, возможно, она убедит вас в обратном.

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

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

Как мы не хотели участвовать в хакатоне


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

Сначала меня эта затея не очень впечатлила. Конечно же, я много читал про то, что хакатоны – это интересно, весело и полезно, но перспектива провести два выходных дня в офисе не радовала.

Работы тогда и так хватало, у нас начался первый спринт очередного релиза. Было очевидно, что кодить два выходных дня после интенсивной рабочей недели, и потом еще плавно начать следующую будет тяжело в физическом и моральном плане. Также было не понятно, что можно взять в качестве темы. Хотелось выбрать то, что будет интересно реализовать и при этом, чтобы результат не ушел в пустоту.

Первая проблема решилась сама собой – видимо других участников тоже смутил предлагаемый формат, и в план хакатона внесли изменения. Например, в понедельник разрешили прийти после обеда. Как показала практика все участники воспользовались правом на отдых.

Со второй проблемой было сложнее. Мне интересна тема работы с данными: эта задача остается актуальной, в ней можно реализовать крутые фичи, правда их еще надо было придумать.

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

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


А что если проложить аналогию с футбольным симулятором на реальный мир? В ЕСМ системах работают люди, мы можем собрать по ним статистику. Сейчас они больше похожи на черный ящик: все запоминают, но крайне неохотно выдают что-то для анализа. А в визуальном плане можно подсмотреть кое-какие наработки у того же самого симулятора.

На первый взгляд данных не так уж много: мы знаем какие задачи были поставлены человеку и знаем успел ли он их сделать в срок. Но что если попробовать собрать метрики «верхнего» уровня и дать возможность дойти до исходных данных. Должно быть интересно и с точки зрения результата, и с точки зрения разработки. Почему бы и нет?

Ну что ж, идея есть, отлично! Осталось найти команду.

Это, как ни странно, оказалось самой легкой частью. Мне повезло, что вместе со мной работают легкий на подъем программист Саша (@MonkAlex) и опытный, но все еще готовый к любому экшену, аналитик Владимир. Обсуждаем детали, решаем с чего будем начинать и в каком формате работаем. Придумываем название – «Мониторинг и анализ».


Поехали…

О том, как мы не победили в хакатоне


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

Работать решили гибко, главным и единственным критерием было сделать что-то работающее к концу хакатона. Первым делом мы нарисовали карту фич. Дальше отметили приоритетом [0] то, без чего вообще нет смысла идти на демонстрацию – в нашем случае это была стартовая страница с набором виджетов. Потом прикинули, что будем делать, если останется время (в итоге половину из этого сделали, а половину представили, как потенциальные пути развития). И начали «пилить».



Примерно час потратили на поиск готовых компонентов, параллельно развернули тестовую инфраструктуру.

Начали с «бублика» исполнительской дисциплины. Сделали его парно с Сашей – так было проще вникать в новую тему. Заодно накидали «скелет» для остальных виджетов. Форма с единственным виджетом, работающая на более-менее реальных данных была готова уже через три часа.

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

В воскресенье в 16:00 уже начиналась презентация и поэтому утром четко решили, что будем допиливать. Остановились на том, что важно успеть сделать интерактивный переход от виджетов стартовой страницы на их детализацию. За час до дедлайна решили «заморозить» код и пару раз прогнали основные сценарии, попутно отметив куда лучше не нажимать, чтобы все работало.

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



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

Мы уступили ребятам, которые сделали анализатор входящих сообщений с преобразованием в элементы ToDo-листа. Объективно, у них был более серьезный технологический стек, больше команда (7 человек) и идея, пожалуй, была интереснее.

Как из идеи вырастает фича


Путем голосования внутри компании был разыгран приз профессиональных симпатий, который получили ребята занявшие 3-е место. Всех еще раз похвалили за участие и на этом хакатон закончился. Мы вернулись к проектированию фич релиза и на пару месяцев о хакатоне не вспоминали.

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

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

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

Начали с проектирования:

  • Выкинули фичу «Анализ согласования», так как с ней точно не успели бы закончить в срок.
  • Убрали лишнее с главной страницы.
  • Проработали страницы с детализацией.
  • Решили, что 5 самых загруженных сотрудников – это мало и увеличили их количество вдвое.

И мы в итоге успели. По факту могу сказать, что итоговая реализация стоила примерно в 10 раз дороже прототипа.

Так выглядела главная страница:


А так детализация по людям и временной шкале:


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

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

Казалось бы, простая вещь, но тем не менее с помощью нее можно отслеживать массу тенденций. Чтобы донести это до пользователей и с целью пиара новой темы, и чтобы пояснить что это такое и зачем написали статью Развитие интерактивных инструментов СЭД для анализа эффективности работы сотрудников.

Фидбек в целом был положительным, но фича не стала массовой и осталось ощущение незаконченности.

Как фича живет и развивается


В это самое время шло планирование новой версии. И одной из ее главных тем был рабочий стол пользователя системы как точка входа.

Проектированием и разработкой занималась наша команда. Цель была – объединить на рабочем столе и виджеты для оперативной работы и виджеты с статистикой работы в системе. Причем для каждого интересна своя статистика. Например, руководителю компании нужно видеть полную картину, а руководителю отдела важны только его подчиненные.

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


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


В таком виде это и вышло в новой версии. Сегодня, судя по статистике, можно сказать, что фича нашла своих пользователей. Мониторинг использования на примере боевого стенда с 200 пользователями показывает, что ежедневно более 20 пользователей запускают «Мониторинг и анализ» и более 100 раз в день виджеты на рабочем столе используются для перехода к детальным данным.

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

Почему вам стоит поучаствовать в хакатоне


В заключение хочу поделиться теми выводами, которые я сделал для себя за этот год:

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

2. Не надо стесняться своих идей
Большинство успешных продуктов и компаний не уникальны по своей сути и зачастую не были первооткрывателями. Успешными их сделал правильный подход к делу и желание сделать что-то по-настоящему полезное для своих потребителей. Идея может быть не новой, но если она интересна вам, то стоит попытаться заинтересовать других. К тому же хакатон – это отличный формат для получения фидбека, после него вы поймете, стоит развивать эту идею или нет.

3. Хакатон – отличный способ донести идею до руководства
Как правило решения о том, как будет развиваться продукт принимает руководство. Но заказчикам и product owner’ам тоже требуется помощь в выборе фич. В рамках ограниченных ресурсов всегда хочется выбрать фичи максимально полезные и для пользователей и для компании-разработчика. Убедить кого-то в своей правоте на словах не просто, но когда вы покажете реально работающий прототип — ваши шансы сильно возрастают.

4. Решения с хакатона могут быть успешно интегрированы в реальные продукты
Да, на это потребуется время не соизмеримое с тем, за сколько вы это сделали на хакатоне, и в результате от вашего прототипа останется только общее направление, но тем не менее это возможно.

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

Вместо заключения


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



Фича вызвала положительный фидбек у руководства и возможно она тоже когда-нибудь будет полноценно реализована в продукте.

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

Подробнее
Реклама
Комментарии 26
  • +8
    У меня такое ощущение, что я постоянно на работе невольно участвую в хакатоне, занимаясь разными проектами, делая весьма рабочие прототипы, которые всем нравятся, работают, отживают своё и так по кругу…
    • +4
      Было бы справедливо предоставить два дня отгула участникам хакатона. А не полдня в обмен на работу в выходных.
      • 0
        Для меня лично — нормально. Похакатонить в выходные выходили по собственному желанию, не по 12-20 часов, меньше.
        • 0

          А из дома удалённо нельзя было как нибудь организовать хакатон. Да ёще подобрать день с мерзкой погодой — явка, наверное, была бы большой.

          • 0
            Сложный вопрос. Из дому работать мне лично — не очень удобно. Слишком много потенциально отвлекающих факторов.

            А хакатон — это же реальная возможность покодить и весело, и в компании, и полезно. Живое общение, имхо, удобнее удалённого в любом виде.
            • 0
              Теряется самое важное — личное общение. Не все можно передать текстом или по скайпу.
              Хочется влиться в процесс полностью, а дома куча отвлекающих факторов: дети, еда, домашние и т.д.
              • 0

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

        • +1
          Спасибо за интересный рассказ.
          Похоже, что главное преимущество — это попробовать реализовать СВОЮ идею, чтобы потом презентовать ее миру, а возможно и «продать» ее руководству.
          Поддерживаю идею дополнительных 2 дней отгула для героев, которые работали на выходных! Творчество и хорошая работа в выходные — это заслуживает похвалы, респекта и уважухи.
          • 0
            О, у нас на работе тоже есть традиция хакатонов, никто правда отгулов за них не дает, но фирма обеспечивает пиццей и пивом всех участников процесса. В сухом остатке, после, пока что. двух хакатонов две из шести разрабатываемых фич, более менее, выстрелили и медленно перешли в продакшен. Так что я обеими руками за хакатон — и весело и полезно :)
            • +3
              Мое мнение что хакатоны должны проходить в рабочее время. А так это выглядит так, что те кто участвую в хакатоне выкладываются в овер 200% и единицы из команд получают приз, а компания устраивавшая хакатон с минимальными издержками проверяет кучу идей и получает работающие прототипы. Если говорить проще, то хакатон это такая большая морковка перед глазами работника, которая привязана к его же спине на хитроустроенной телескопической палке.
              Из личного опыта я сделал вывод, что те же овер 200% усилий лучше потратить в свои идеи и проекты, в итоге затраченные ресурсы те же (ну только пиццу за свой счет придется покупать), а профита больше.
              • 0
                Я слышал это мнение не раз. С одной стороны вы действительно правы.

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

                Что я за это же время сделаю один над пет-проектом? В лучшем случае — прикручу пару команд\действий, да тест другой отлажу. Может и полезнее, но по визуальному выхлопу хакатон явно в плюсе, а значит и моя мораль выше.

                ПС: вам кажется, что вас так бесплатно разводят на поработать? Хакатоны вроде везде необязательны и проводятся наоборот для желающих сотрудников, что за странный подход то, не участвовал, но осуждаю?
                ПС2: а зачем пиццу за свой счет, если уж можно нормально пообедать? Оо
                • +1
                  Ну ни кто же вам не мешает, так же собрать людей в команду и запилить «пет-проект». Мы все исходим из своих жизненных опытов. Я вот сделал такой вывод и в хакатоне я вижу не отдушину для разработчиков, а возможность для бизнеса проверить максимальное кол-во идей за минимальные ресурсы. Как разработчик я с таким подходом не согласен и больше участвовать в этом не буду.

                  И вот убейте меня, я не понимаю почему люди должны тратить личное время на создание фич для рабочего проекта, а компания при этом вкладывается только на «пиццу и пиво». Хотите честный хакатон? Окей, оплачивайте мне время за эту работу. В общем я за равенство, ни кто не знает насколько те или иные фичи принесут пользу в конечном итоге, поэтому разделение вложений должно бытьо. Хакатанщики тратят личное время и силы, компания тратит деньги. Взлетело, хорошо, кто то потратил время и заработал почет и уважение, а кто то вложив немного денег, их приумножил. Не взлетело, ничего страшного.

                  Это все личное мнение, основанное на личном опыте со стороны разработчика.
                  • 0
                    Ну, если вы подскажете, где найти людей для написания парсера манги с онлайн-читалок — я буду рад =)

                    ПС: рабочее время вроде оплачивалось, лучше посмотреть коммент Дениса
                    • 0
                      Ну сомневаюсь что в хакатанскую работу взяли бы парсер для манги :) хотя смотря чем бизнес занимается.
                      А про оплачиваемое время, это у кого как, у нас это время не оплачивалось, но была жирная морковка до которой не все дотягивались.
              • 0
                Хакатон в «обычных» условиях — это не хакатон. Изначально термин связан с тем, что нужно куда-то пойти/поехать: должна быть новая обстановка (не ежеденевная рутинная), ограниченость инструментария, импровизирование, случайные люди для кооперирования…

                То, что вы делали — это маркетинговый ход руководства… «Бесплатные фичи» или как-то так. Я так и не понял разницы между обычным рабочим днем и описанными выходными в данном случае.
                • 0
                  Я аж задумался над определением хакатона. Залез в Wiki —
                  Хакатон (англ. hackathon, от hack (см. хакер) и marathon — марафон) — форум разработчиков, во время которого специалисты из разных областей разработки программного обеспечения (программисты, дизайнеры, менеджеры) сообща работают над решением какой-либо проблемы.

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

                  Мы пришли, запилили крутую штуку, а потом ещё и прилепили её к продукту. И знаете что — в итоге мы занимались хакатоном и в рабочее время потом, получая от этого плюшки хакатона — удовольствие, пусть и небольшая — но смена деятельности и прочее прочее. Мне это нравится, черт возьми =)
                  • 0
                    Одна из целей хакатонов — смена обстановки, в этом вы правы. При этом это очень свободный формат: мы сами выбрали что делать, как делать, где и каким составом. В следующий раз, например, мы скооперовались с ребятами, с которыми вообще раньше не пересекались и это тоже был новый опыт. Но все-таки самое главное в хакатоне на мой взгляд — «импровизирование», а именно возможность собрать свою команду и реализовать идею.

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

                    С учетом того, что полезной и реализуемой оказывается примерно 1 идея из 10 и на доведение ее до ума нужно времени в 10 раз больше, чем на прототип я бы поспорил с тем, что это «бесплатные фичи».

                    А главная разница между обычными рабочими днями и хакатоном в том, что мы были абсолютно самостоятельны в выборе темы, формата работы, команды и т.д. Собственно в тот момент я получал фан и не думал о том, что эту фичу мы потом прикрутим к продукту уже в обычное рабочее время.
                    • 0

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

                      • 0
                        Видимо я этот момент обошел стороной. Эти выходные для участников были оплачиваемыми.

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

                        Я участвовал не ради «покушать» или «призов», а чтобы писать код — с этим было все ок

                        Я с ними согласен, сам факт того, что все собрались и потратили свои выходные вместе — это круто. А остальное хотя и важно, но второстепенно.
                    • 0
                      Если человек не может придаваться своему любимому делу безвозмездно ради удовольствия, то скорее всего он вообще мало на что способен. Даже при наличии денежной мотивации. ИМХО
                      • –2
                        Выводов лучше иметь 3 — красивое число. Или в крайнем случае -7, как у Стивена Кови (у него всего по 7, если не хватает — то дублирует ранее встречавшийся под другими словами).
                        • 0
                          10 лет проработав в режиме перманентного хакатона — хватило на всю оставшуюся. Свободное время провожу с семьей или делаю свои проекты. Но если кого-то прет, то ради бога.
                          • 0
                            Могли бы вы раскрыть свою мысль — как это «в режиме перманентного хакатона»? Постоянно пилили что-то сырое и брались за новое, не допилив старое?
                            • 0
                              Довелось по молодости поработать в стартапе-не-стартапе, а скорее просто в конторе, где, скажем так, были некоторые проблемы с управлением, в результате чего почти каждый контракт, демо продукта или выставка оборачивалась «хакатонами», часто ночами и по выходным :) Было интересно, очень классная команда, но всему свое время :)
                              • 0
                                Ну, постоянно так работать явно невесело, пусть хороший коллектив и способен многие отрицательные моменты и нивелировать =)
                          • 0
                            отличная история, на мой взгляд хакатон это фактически синоним мозгового штурма с одним, если что-то придумали, пошли проверим это на практике)
                            Я не давно со своими товарищами участвовал в хакатоне, несмотря на то, что мы не заняли призового места, мы были отмечены одним из партнеров и получили несколько интересных контактов, а также нам накидали различных материлов по нашей теме.
                            Так что очень полезно выходить из своей берлоги

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.