Часто, общаясь с широким кругом разработчиков, заметил, что среди программистов распространено мнение о бесполезности хакатонов и прочих подобных мероприятий. Многие считают, что это трата времени и поэтому не стоит даже пытаться.
Расскажу свою историю и, возможно, она убедит вас в обратном.
В июне этого года вышла в свет новая версия продукта, разработкой которого мы занимаемся. Одной из самых заметных фишек стал рабочий стол с графическими виджетами. Виджеты показывали статистику о работе в системе и выглядели понятно и современно. Фидбек от пользователей был положительным: они узнали о себе и подчиненных то, чего раньше не замечали.
Но этой фичи могло и не быть. Чтобы посмотреть всю историю от идеи до релиза нужно вернуться в прошлое.
Как мы не хотели участвовать в хакатоне
Примерно год назад на внутреннем блоге вышла новость о том, что через две недели состоится первый в истории компании хакатон. Можно выбрать любую тему, найти единомышленников и реализовать ее за время с вечера пятницы по воскресенье.
Сначала меня эта затея не очень впечатлила. Конечно же, я много читал про то, что хакатоны – это интересно, весело и полезно, но перспектива провести два выходных дня в офисе не радовала.
Работы тогда и так хватало, у нас начался первый спринт очередного релиза. Было очевидно, что кодить два выходных дня после интенсивной рабочей недели, и потом еще плавно начать следующую будет тяжело в физическом и моральном плане. Также было не понятно, что можно взять в качестве темы. Хотелось выбрать то, что будет интересно реализовать и при этом, чтобы результат не ушел в пустоту.
Первая проблема решилась сама собой – видимо других участников тоже смутил предлагаемый формат, и в план хакатона внесли изменения. Например, в понедельник разрешили прийти после обеда. Как показала практика все участники воспользовались правом на отдых.
Со второй проблемой было сложнее. Мне интересна тема работы с данными: эта задача остается актуальной, в ней можно реализовать крутые фичи, правда их еще надо было придумать.
Сделаю небольшую ремарку: незадолго до этого я открыл для себя одну популярную серию футбольных симуляторов и в них всегда особое внимание уделяется аналитике. Изучая статистику можно решить какого футболиста купить, какую тактику выбрать для матча. При этом всегда можно копнуть поглубже и провалиться от общей статистики к деталям конкретных матчей.
Цель проста: дать пищу для анализа, чтобы понять где кроются проблемы и какие есть точки улучшения.
А что если проложить аналогию с футбольным симулятором на реальный мир? В ЕСМ системах работают люди, мы можем собрать по ним статистику. Сейчас они больше похожи на черный ящик: все запоминают, но крайне неохотно выдают что-то для анализа. А в визуальном плане можно подсмотреть кое-какие наработки у того же самого симулятора.
На первый взгляд данных не так уж много: мы знаем какие задачи были поставлены человеку и знаем успел ли он их сделать в срок. Но что если попробовать собрать метрики «верхнего» уровня и дать возможность дойти до исходных данных. Должно быть интересно и с точки зрения результата, и с точки зрения разработки. Почему бы и нет?
Ну что ж, идея есть, отлично! Осталось найти команду.
Это, как ни странно, оказалось самой легкой частью. Мне повезло, что вместе со мной работают легкий на подъем программист Саша (@MonkAlex) и опытный, но все еще готовый к любому экшену, аналитик Владимир. Обсуждаем детали, решаем с чего будем начинать и в каком формате работаем. Придумываем название – «Мониторинг и анализ».
Поехали…
О том, как мы не победили в хакатоне
Хакатон начался в пятницу вечером с общей встречи участников, команды кратко рассказали, что будут делать и разбежались по кабинетам.
Работать решили гибко, главным и единственным критерием было сделать что-то работающее к концу хакатона. Первым делом мы нарисовали карту фич. Дальше отметили приоритетом [0] то, без чего вообще нет смысла идти на демонстрацию – в нашем случае это была стартовая страница с набором виджетов. Потом прикинули, что будем делать, если останется время (в итоге половину из этого сделали, а половину представили, как потенциальные пути развития). И начали «пилить».
Примерно час потратили на поиск готовых компонентов, параллельно развернули тестовую инфраструктуру.
Начали с «бублика» исполнительской дисциплины. Сделали его парно с Сашей – так было проще вникать в новую тему. Заодно накидали «скелет» для остальных виджетов. Форма с единственным виджетом, работающая на более-менее реальных данных была готова уже через три часа.
Потом разошлись по своим местам и накидали остальные виджеты стартовой страницы, прикрутили график и в целом облагородили интерфейс. Минимальная задача была выполнена, это уже можно было показывать. На этом и закончился первый день.
В воскресенье в 16:00 уже начиналась презентация и поэтому утром четко решили, что будем допиливать. Остановились на том, что важно успеть сделать интерактивный переход от виджетов стартовой страницы на их детализацию. За час до дедлайна решили «заморозить» код и пару раз прогнали основные сценарии, попутно отметив куда лучше не нажимать, чтобы все работало.
Презентацию проводил Владимир – он аналитик, у него больше опыта проведения летучек и семинаров. К тому же у него было время к ней подготовиться. Почти все время заняла живая демонстрация и ответы на вопросы. Несмотря на очень сжатые сроки разработки и отсутствие тестирования ничего не упало и получилось показать все, что сделали.
Кроме нас из 7 команд-участников только у двух получилось довести идею до работающего прототипа. В итоге все три команды и стали призерами, а нам досталось почетное второе место.
Мы уступили ребятам, которые сделали анализатор входящих сообщений с преобразованием в элементы ToDo-листа. Объективно, у них был более серьезный технологический стек, больше команда (7 человек) и идея, пожалуй, была интереснее.
Как из идеи вырастает фича
Путем голосования внутри компании был разыгран приз профессиональных симпатий, который получили ребята занявшие 3-е место. Всех еще раз похвалили за участие и на этом хакатон закончился. Мы вернулись к проектированию фич релиза и на пару месяцев о хакатоне не вспоминали.
Но уже в конце сентября в этой теме снова началось движение. Стало понятно, что мы опережаем график релиза и вроде как у нас остается несколько недель резерва. При этом перед завершением разработки делать что-то совсем крупное уже будет рискованно, а вот довести до ума прототип с хакатона реально.
Чуть позже, в первой декаде октября прошла внутренняя конференция для генерации идей по развитию продуктов компании, на которой в том числе анализировались конкуренты, и было заметно, что у них подобные решения встречаются. Это убедило нас и руководство в потенциальной привлекательности фичи и дало уверенность в правильности выбранного пути.
И в результате в конце октября мы закончили работы по основным фичам релиза и получили время на доведение решения до ума, с условием, что если мы не успеем закончить к релизу, оно просто не выйдет наружу.
Начали с проектирования:
- Выкинули фичу «Анализ согласования», так как с ней точно не успели бы закончить в срок.
- Убрали лишнее с главной страницы.
- Проработали страницы с детализацией.
- Решили, что 5 самых загруженных сотрудников – это мало и увеличили их количество вдвое.
И мы в итоге успели. По факту могу сказать, что итоговая реализация стоила примерно в 10 раз дороже прототипа.
Так выглядела главная страница:
А так детализация по людям и временной шкале:
Фича вошла в продукт и ей начали пользоваться. Не очень активно, но мы изначально понимали, что в таком виде это штука не массовая и ее целевая аудитория – это несколько людей в компании.
Но главное – от нее уже был бизнес-эффект. Даже на такой небольшой выборке нашлись проблемы: те, кто не выполнял задания; нашлись зависшие очень давно процессы и самые загруженные сотрудники.
Казалось бы, простая вещь, но тем не менее с помощью нее можно отслеживать массу тенденций. Чтобы донести это до пользователей и с целью пиара новой темы, и чтобы пояснить что это такое и зачем написали статью Развитие интерактивных инструментов СЭД для анализа эффективности работы сотрудников.
Фидбек в целом был положительным, но фича не стала массовой и осталось ощущение незаконченности.
Как фича живет и развивается
В это самое время шло планирование новой версии. И одной из ее главных тем был рабочий стол пользователя системы как точка входа.
Проектированием и разработкой занималась наша команда. Цель была – объединить на рабочем столе и виджеты для оперативной работы и виджеты с статистикой работы в системе. Причем для каждого интересна своя статистика. Например, руководителю компании нужно видеть полную картину, а руководителю отдела важны только его подчиненные.
Кроме этого «Мониторинг и анализ» открывался в отдельном окне и найти его было непросто. Поэтому его разделили на отдельные виджеты. Они были вынесены на рабочий стол с настроенными представлениями от ролей, которые в свою очередь вычислялись от должности сотрудника и выданных ему прав доступа. В результате все нужные конкретному человеку данные были на самом видном месте системы и показывались после запуска клиента.
Для большинства этого более чем достаточно. А для детализации пригодился «Мониторинг и анализ», мы сделали его открытие по клику на виджетах. К тому же получив фидбек мы его доработали: добавили печать, быстрый поиск и режим работы для топ-менеджера «от подразделений». В итоге в финальной версии стартовая страница выглядит так:
В таком виде это и вышло в новой версии. Сегодня, судя по статистике, можно сказать, что фича нашла своих пользователей. Мониторинг использования на примере боевого стенда с 200 пользователями показывает, что ежедневно более 20 пользователей запускают «Мониторинг и анализ» и более 100 раз в день виджеты на рабочем столе используются для перехода к детальным данным.
Помимо прочего это пригодилось и нам, как вендору. При внедрениях ЕСМ-систем часто встречается саботаж среди тех, кто противится новому. Сейчас их очень легко найти по низкому проценту выполнения заданий в срок.
Почему вам стоит поучаствовать в хакатоне
В заключение хочу поделиться теми выводами, которые я сделал для себя за этот год:
1. Вам определенно стоит поучаствовать в хакатоне
Вы можете реализовать свою идею. Вы можете хорошо провести время с интересными людьми. У вас будет шанс показать себя и посмотреть других. Конечно, чисто математически ваши шансы на победу невелики, но хакатон – это как раз тот случай, когда участие важнее победы.
2. Не надо стесняться своих идей
Большинство успешных продуктов и компаний не уникальны по своей сути и зачастую не были первооткрывателями. Успешными их сделал правильный подход к делу и желание сделать что-то по-настоящему полезное для своих потребителей. Идея может быть не новой, но если она интересна вам, то стоит попытаться заинтересовать других. К тому же хакатон – это отличный формат для получения фидбека, после него вы поймете, стоит развивать эту идею или нет.
3. Хакатон – отличный способ донести идею до руководства
Как правило решения о том, как будет развиваться продукт принимает руководство. Но заказчикам и product owner’ам тоже требуется помощь в выборе фич. В рамках ограниченных ресурсов всегда хочется выбрать фичи максимально полезные и для пользователей и для компании-разработчика. Убедить кого-то в своей правоте на словах не просто, но когда вы покажете реально работающий прототип — ваши шансы сильно возрастают.
4. Решения с хакатона могут быть успешно интегрированы в реальные продукты
Да, на это потребуется время не соизмеримое с тем, за сколько вы это сделали на хакатоне, и в результате от вашего прототипа останется только общее направление, но тем не менее это возможно.
5. Будьте готовы развивать вашу идею
Если у вас есть идея на хакатон лучше продумать ее потенциальное развитие. Возможно через некоторое время окажется, что изначальной задумки мало и хочется еще. Или вы поймете, что в таком виде это никому не нужно. Не поленитесь поставить себя на место пользователя и понять, что будет максимально удобно и полезно и к чему надо стремиться в идеале.
Вместо заключения
Буквально месяц назад мы снова поучаствовали в хакатоне, на этот раз удалось собрать команду побольше и сделать работающий прототип сервиса агрегации данных по разным открытым источникам и интегрировать его для существующих задач.
Фича вызвала положительный фидбек у руководства и возможно она тоже когда-нибудь будет полноценно реализована в продукте.
Для себя я твердо решил, что если предложат еще раз принять участие в хакатоне – обязательно соглашусь. А что по этому поводу думаете вы?
Комментарии (26)
RouR
25.09.2016 23:19+4Было бы справедливо предоставить два дня отгула участникам хакатона. А не полдня в обмен на работу в выходных.
MonkAlex
26.09.2016 08:35Для меня лично — нормально. Похакатонить в выходные выходили по собственному желанию, не по 12-20 часов, меньше.
Vjatcheslav3345
26.09.2016 13:27А из дома удалённо нельзя было как нибудь организовать хакатон. Да ёще подобрать день с мерзкой погодой — явка, наверное, была бы большой.
MonkAlex
26.09.2016 13:37Сложный вопрос. Из дому работать мне лично — не очень удобно. Слишком много потенциально отвлекающих факторов.
А хакатон — это же реальная возможность покодить и весело, и в компании, и полезно. Живое общение, имхо, удобнее удалённого в любом виде.
VastTheStampede
26.09.2016 13:48Теряется самое важное — личное общение. Не все можно передать текстом или по скайпу.
Хочется влиться в процесс полностью, а дома куча отвлекающих факторов: дети, еда, домашние и т.д.Vjatcheslav3345
26.09.2016 14:37Зато общение может длиться на выходных от рассвета, до заката, то заката до (утреннего) рассвета (скажем с вечера промозглой пятницы или буйствующей пургой субботы). Пока домашние спать не легли можно и голосом общаться а потом, обернув клаву одеялом, чтобы не гремела клавишами — текстом.
NeverGiveUp
26.09.2016 08:41+1Спасибо за интересный рассказ.
Похоже, что главное преимущество — это попробовать реализовать СВОЮ идею, чтобы потом презентовать ее миру, а возможно и «продать» ее руководству.
Поддерживаю идею дополнительных 2 дней отгула для героев, которые работали на выходных! Творчество и хорошая работа в выходные — это заслуживает похвалы, респекта и уважухи.
vz10
26.09.2016 10:52О, у нас на работе тоже есть традиция хакатонов, никто правда отгулов за них не дает, но фирма обеспечивает пиццей и пивом всех участников процесса. В сухом остатке, после, пока что. двух хакатонов две из шести разрабатываемых фич, более менее, выстрелили и медленно перешли в продакшен. Так что я обеими руками за хакатон — и весело и полезно :)
zxcabs
26.09.2016 11:47+3Мое мнение что хакатоны должны проходить в рабочее время. А так это выглядит так, что те кто участвую в хакатоне выкладываются в овер 200% и единицы из команд получают приз, а компания устраивавшая хакатон с минимальными издержками проверяет кучу идей и получает работающие прототипы. Если говорить проще, то хакатон это такая большая морковка перед глазами работника, которая привязана к его же спине на хитроустроенной телескопической палке.
Из личного опыта я сделал вывод, что те же овер 200% усилий лучше потратить в свои идеи и проекты, в итоге затраченные ресурсы те же (ну только пиццу за свой счет придется покупать), а профита больше.MonkAlex
26.09.2016 11:58Я слышал это мнение не раз. С одной стороны вы действительно правы.
Но вот чисто мое мнение в том, что я один нифига за пару дней не сделаю. Ни прототип, кому то интересный, ни даже проект какой-нибудь хорошей идеи. Другое дело — коллективная работа над идеей, полезной продукту и интересной коллективу. Тут можно и проработать поверхностно проект, накидать прототип и ещё и закрыть, хоть костылём, основные потребности в той или иной фиче.
Что я за это же время сделаю один над пет-проектом? В лучшем случае — прикручу пару команд\действий, да тест другой отлажу. Может и полезнее, но по визуальному выхлопу хакатон явно в плюсе, а значит и моя мораль выше.
ПС: вам кажется, что вас так бесплатно разводят на поработать? Хакатоны вроде везде необязательны и проводятся наоборот для желающих сотрудников, что за странный подход то, не участвовал, но осуждаю?
ПС2: а зачем пиццу за свой счет, если уж можно нормально пообедать? Ооzxcabs
26.09.2016 13:00+1Ну ни кто же вам не мешает, так же собрать людей в команду и запилить «пет-проект». Мы все исходим из своих жизненных опытов. Я вот сделал такой вывод и в хакатоне я вижу не отдушину для разработчиков, а возможность для бизнеса проверить максимальное кол-во идей за минимальные ресурсы. Как разработчик я с таким подходом не согласен и больше участвовать в этом не буду.
И вот убейте меня, я не понимаю почему люди должны тратить личное время на создание фич для рабочего проекта, а компания при этом вкладывается только на «пиццу и пиво». Хотите честный хакатон? Окей, оплачивайте мне время за эту работу. В общем я за равенство, ни кто не знает насколько те или иные фичи принесут пользу в конечном итоге, поэтому разделение вложений должно бытьо. Хакатанщики тратят личное время и силы, компания тратит деньги. Взлетело, хорошо, кто то потратил время и заработал почет и уважение, а кто то вложив немного денег, их приумножил. Не взлетело, ничего страшного.
Это все личное мнение, основанное на личном опыте со стороны разработчика.MonkAlex
26.09.2016 13:03Ну, если вы подскажете, где найти людей для написания парсера манги с онлайн-читалок — я буду рад =)
ПС: рабочее время вроде оплачивалось, лучше посмотреть коммент Денисаzxcabs
26.09.2016 14:46Ну сомневаюсь что в хакатанскую работу взяли бы парсер для манги :) хотя смотря чем бизнес занимается.
А про оплачиваемое время, это у кого как, у нас это время не оплачивалось, но была жирная морковка до которой не все дотягивались.
Sinatr
26.09.2016 12:10Хакатон в «обычных» условиях — это не хакатон. Изначально термин связан с тем, что нужно куда-то пойти/поехать: должна быть новая обстановка (не ежеденевная рутинная), ограниченость инструментария, импровизирование, случайные люди для кооперирования…
То, что вы делали — это маркетинговый ход руководства… «Бесплатные фичи» или как-то так. Я так и не понял разницы между обычным рабочим днем и описанными выходными в данном случае.MonkAlex
26.09.2016 12:13Я аж задумался над определением хакатона. Залез в Wiki —
Хакатон (англ. hackathon, от hack (см. хакер) и marathon — марафон) — форум разработчиков, во время которого специалисты из разных областей разработки программного обеспечения (программисты, дизайнеры, менеджеры) сообща работают над решением какой-либо проблемы.
Исходя из этого, ваши ограничения выглядят странными. Хакатон — это возможность просто что-то сделать. Что именно — целиком на ваше усмотрение. Главное собственное желание и по возможности — ещё и найти единомышленников. Можно подумать, руководство вас заставляет ходить на хакатоны, выдает пул тем и заставляет группироваться в команды в определенном размере\качестве.
Мы пришли, запилили крутую штуку, а потом ещё и прилепили её к продукту. И знаете что — в итоге мы занимались хакатоном и в рабочее время потом, получая от этого плюшки хакатона — удовольствие, пусть и небольшая — но смена деятельности и прочее прочее. Мне это нравится, черт возьми =)
dkiz
26.09.2016 12:52Одна из целей хакатонов — смена обстановки, в этом вы правы. При этом это очень свободный формат: мы сами выбрали что делать, как делать, где и каким составом. В следующий раз, например, мы скооперовались с ребятами, с которыми вообще раньше не пересекались и это тоже был новый опыт. Но все-таки самое главное в хакатоне на мой взгляд — «импровизирование», а именно возможность собрать свою команду и реализовать идею.
Относительно бесплатных фич — не знаю финансовых подробностей организации хакатона, естественно была бесплатная еда, и за эти выходные нам в итоге заплатили как за рабочие дни. Для руководства наверное это хороший способ увидеть новые идеи и получить прототипы. Я не вижу в этом ничего плохого, в этой ситуации выигрывают обе стороны.
С учетом того, что полезной и реализуемой оказывается примерно 1 идея из 10 и на доведение ее до ума нужно времени в 10 раз больше, чем на прототип я бы поспорил с тем, что это «бесплатные фичи».
А главная разница между обычными рабочими днями и хакатоном в том, что мы были абсолютно самостоятельны в выборе темы, формата работы, команды и т.д. Собственно в тот момент я получал фан и не думал о том, что эту фичу мы потом прикрутим к продукту уже в обычное рабочее время.
BarrelRoll
26.09.2016 13:03Согласен. Возможно автор и остальные участники действительно получили удовольствие, но со стороны это выглядит как будто руководство просто решило использовать модное слово, для того чтобы не оплачивать два трудовых дня разработчикам.
dkiz
26.09.2016 13:06Видимо я этот момент обошел стороной. Эти выходные для участников были оплачиваемыми.
Не поленился и нашел опрос, которой проводили как раз по итогам, на тему все ли устроило в бытовом плане. Вот типичные ответы:
Мне просто понравилось. Попилить что-то своё в хорошей компании — всегда весело
Я участвовал не ради «покушать» или «призов», а чтобы писать код — с этим было все ок
Я с ними согласен, сам факт того, что все собрались и потратили свои выходные вместе — это круто. А остальное хотя и важно, но второстепенно.
stalevar1990
26.09.2016 14:48Если человек не может придаваться своему любимому делу безвозмездно ради удовольствия, то скорее всего он вообще мало на что способен. Даже при наличии денежной мотивации. ИМХО
Vlad_fox
26.09.2016 16:57-2Выводов лучше иметь 3 — красивое число. Или в крайнем случае -7, как у Стивена Кови (у него всего по 7, если не хватает — то дублирует ранее встречавшийся под другими словами).
Stas911
28.09.2016 03:1210 лет проработав в режиме перманентного хакатона — хватило на всю оставшуюся. Свободное время провожу с семьей или делаю свои проекты. Но если кого-то прет, то ради бога.
MonkAlex
28.09.2016 07:26Могли бы вы раскрыть свою мысль — как это «в режиме перманентного хакатона»? Постоянно пилили что-то сырое и брались за новое, не допилив старое?
Stas911
28.09.2016 15:45Довелось по молодости поработать в стартапе-не-стартапе, а скорее просто в конторе, где, скажем так, были некоторые проблемы с управлением, в результате чего почти каждый контракт, демо продукта или выставка оборачивалась «хакатонами», часто ночами и по выходным :) Было интересно, очень классная команда, но всему свое время :)
MonkAlex
28.09.2016 15:55Ну, постоянно так работать явно невесело, пусть хороший коллектив и способен многие отрицательные моменты и нивелировать =)
benyamin
28.09.2016 08:34отличная история, на мой взгляд хакатон это фактически синоним мозгового штурма с одним, если что-то придумали, пошли проверим это на практике)
Я не давно со своими товарищами участвовал в хакатоне, несмотря на то, что мы не заняли призового места, мы были отмечены одним из партнеров и получили несколько интересных контактов, а также нам накидали различных материлов по нашей теме.
Так что очень полезно выходить из своей берлоги
TimsTims
У меня такое ощущение, что я постоянно на работе невольно участвую в хакатоне, занимаясь разными проектами, делая весьма рабочие прототипы, которые всем нравятся, работают, отживают своё и так по кругу…