Хакатон как способ расширения кодерского сознания. Фото-корреспондентский отчет
Проснувшись однажды утром… (нет). Проснувшись как-то вечером… (нет!). Короче, проснувшись однажды на работе солнечным утром (вот уже провокационно звучит), и протерев глаза от производственной рутины, подумал я о том, что команда наша — конечно великолепная, но технологически несколько узковата… «И надо бы покодить на чем нибудь другом!» — блеснул я оригинальной мыслью. И вот мы сделали собственный хакатон, который заточили не по тематике, а по технологии. Получилось, сразу скажу… неплохо.
После короткого анализа нашей текучки, условия были поставлены следующие:
3 полных дня на выезде с ночевками (не отвлекаться!); Обязательно в полном составе; Формат — стандартный (от естественных идей, через естественный их отбор, и вперед — к реализации); Идеи проектов — ограничили веб-сервисами (десктопы категорически не хотим), да и само по себе «программирование для людей» — в целом приятное дело. Технологические условия:
кодим на чем угодно, только не на нашем «рутинном» стеке (php / java / python / mongodb / *sql / мобильники / пайка микросхем / программирование микроконтроллеров); что означало: [node.js] [go] [erlang] [redis] и любые базы [кроме sql] и поднадоевшей уже [mongodb]; Фронтенда у нас совсем нет, поэтому приглашали друзей/знакомых, но они почему то не присоединились (выходных пожалели — и зря!) — поэтому на фронтенд-ные технологии не ориентировались вовсе; Подготовка по стеку минимум на уровне «hello world» для всех участников; Алкогольные мотивирующие напитки за свой счет. Первое — надо было выбрать идею для реализации. Несмотря на предстоящие объяснения и прочее умное агитирующее бла-бла, выражения кодерских лиц на 97,43% было тождественно с «WTF, что я здесь делаю?».
Но уже через несколько минут первые набросы на вентилятор сделали свое дело — поток дружественного троллинга различной толщины активировал творческие доли мозга и идей набросали на несколько листов флипчарта. Выглядят они не особо интересно, весь цимус был в живом обсуждении:
Идеи были разные, лишенные какого либо бизнес-смысла (не для бизнеса мы все это затеяли).Но все они — из области нанесения добра и улучшения (с дальнейшим покорением) интернет-ойкумены:
оптимизация продаж билетов ржд; несколько вариантов гениальных замен для ужасных форм обратной связи на сайтах; социальные сети на звуковых сообщениях; несколько онлайн-много-человек-игр (мафии/покеры/etc со значительно улучшенными для онлайна правилами с видео-перепиской и системами распознавания мимики); муравьиные баталии (http://habrahabr.ru/post/135287/) с переносом действия на онлайн-карты Москвы (исключительная идея зла и разрушения); создание неангажированного и грамотного агрегатора новостей с правильным анализом популярности/распространенности; космически оперативная курьерская служба, по аналогии с яндекс.такси и механизмами защиты от преступных намерений Пришло время выбора. На вторых местах — конечно же «эРЖэДэ» (самый толстый троллинг был именно тут). На первых — злые муравьиные сражения и добрый напоминательный сервис. Для разработки выбрали сначала добро, а зло (если успеем) отложили на потом :-)
Идея очень простая, но участникам интересная — сервис с открытым API, через который можно оставить заявку-напоминалку себе, или фолловеру, или группе друзей или корпоративно-административной группе, которую можно сделать периодической или назначить на какое-то время, а также механизмы защиты от использования сервиса в качестве спама, и т.п. кучка связанных фич.
Приступили к архитектурному холивару проектированию. Разумеется, каждый совершенно точно знал, «как это надо делать», причем самые опытные скромно отмалчивались, «поглощая попкорн с колой» и наслаждаясь действием:
Схемы и варианты реализации размножались со скоростью 27 флипчартов в час:
Режиссура процесса: визуализация провайдерского масштаба доставок для напоминалок:
Команда R&D уже придумала бренд, зарегистрировала домен и приступила к расчету прибылей :-)
К обеду все было готово, а именно:
Запротоколирована предметная область и архитектурные слои; Команда «ERLANG» — делает фронтовую часть и разбрасывание заявок-напоминалок по предметной области (людям/группам/фолловерам) задуманного сервиса; Команда «GO» — реализует многопотоковое считывание данных из предметной области и архи-нагрузочное разбрасывание напоминалок по провайдерам доставки; В качестве базы взяли Redis; Команда «СИСАДМИН» — готовит софт на боевых серверах и бездельничает в ожидании задач по деплою; Команда «R&D» уехала искать большие чемоданы для денег :-) Осмысленности в выборе технологий под задачи — не было никакой — участники хакатона на данных языках раньше ничего не делали и с Redis-ом не работали. Но именно в таком развитии событий и был задуман хакатон :-) После обеда — полезные для продуктивной работы серых клеток — моционы.Табличка «для детей до 14 лет» никого не смутила, тем более что ни одного человека в заданном диапазоне в округе не наблюдалось :-)
Команды сформированы, задачи ясны — за работу!
Команда «GO». Тот, кто подготовился чуть больше чем «hello world» — закономерно популярен и величественен :-)
В команде «ERLANG» весело. Они еще не подозревают о всей тяжести последствий их выбора :-)
Периодически пытались вспомнить все то, что было нагенерено в идею на старте и ввиду разницы пониманий, приходилось собирать все «в реальную для реализации конкретную кучку»:
В фоновом режиме общий скайп-чат затягивает на темную сторону силы:
Вечерняя программа.Футбол в нынешнем сезоне лучше играть, чем смотреть:
Реактивные испытания:
Второй и третий день. Только кодинг, только хардкор: для чего меняем помещение и обустраиваемся с комфортом:
Затылки команды «ERLANG» умны и сосредоточенны:
Вероятно, кодят API для фронта:
Робкая история коммитов «от новичков в жанре»:
Команда «GO» ищет коннект в Redis:
… и найдя, сочиняет романтические японские стихи, в которых каждая строка начинается с волшебного «go», наделяется ведомым только автору смыслом, посвящая их прекрасным и доступным горутинам :-)
По ходу дела — парочка ноу-хау.Например, «nosql-paper-database», версия «flomaster».
скорость записи — 4 фломика в час скорость чтения — световая скорость понимания — нулевая :-)
А теперь всем бояться… ОНО компилируется:
ОНО что-то делает:
При этом Асинхронно и Параллельно!
И достаточно быстро…
Итоги:
Придумали и сделали сервис (даже слегка работающий), на ЯП-ах, ранее нам неведомых. Жалейте те, кого мы звали, но вы не пришли :-) Как нибудь повторим.