Мало кто знает, но разработка ПО и приложений для Национальной хоккейной лиги ведётся из Минска — здесь находится один из трёх офисов компании ObjectStyle. dev.by посетил его, чтобы узнать подробности в разговоре сразу с тремя собеседниками.
Откуда взялось такое название — ObjectStyle?
Андрусь Адамчик, основатель и CEO: Название компании тоже связано с Cayenne. В начале 2000-х ещё не было Github, не было нормальных сайтов, где разработчики могли бы начать open-source проект. Всю инфраструктуру приходилось создавать самим. Для этого нужен был домен. Домен «cayenne» уже кому-то принадлежал. Устроили брейнсторминг, перебирали названия и остановились на ObjectStyle. Сейчас это кажется наивным, но 20 лет назад все только и говорили про объектное программирование. Но в итоге название прижилось.
Как живётся компании одновременно на три страны?
Андрусь Адамчик: Мы давно удалённо работаем с заказчиками, поэтому и коммуникация между офисами в разных странах не является проблемой. Пока распределение функций классическое: Америка — продажи, а Беларусь и Польша — разработка. Но мы сейчас в процессе создания в Польше sales-команды, которая будет работать с европейским рынком, так что ситуация может измениться.
«Нам нужно приложение с хоккейной статистикой — сможешь написать?»
Как и когда вы начали сотрудничать с НХЛ?
Андрусь Адамчик: Наше сотрудничество с НХЛ тоже связано с open-source. В 2001 году, когда начинался Cayenne, программисты лиги сидели на тех же форумах, что и я. Они искали похожее на Cayenne open-source решение. Конкурентов у нас в то время практически не было. Обратились ко мне: «Нам нужно запустить на сайте приложение с хоккейной статистикой — сможешь написать его с помощью Cayenne?». Естественно, я согласился.
Я не знал, будет ли работать Cayenne на таком активном сайте, как сайт НХЛ. У нас тогда не было даже официальных пресс-релизов Cayenne. Всё было очень сырое. За пару месяцев до начала сезона НХЛ-2002 я написал такое приложение, и оно работало успешно. После этого года четыре мы с НХЛ не общались. За это время они начали использовать Cayenne во всех внутренних продуктах — им понравился подход и возможность моделировать базу данных.
В 2006-м после очередного локаута лига серьёзно увеличивала команду, создавала новый сайт и снова обратилась ко мне. В то время я как раз переезжал в Беларусь.
Денис Койро, деливери менеджер хоккейных проектов: Когда я пришёл в ObjectStyle, компания уже сотрудничала с НХЛ. Около двух лет мы работали над репрезентативной частью НХЛ: сайт самой лиги на разных языках, сайты клубов. В 2013 году разработчики в лиге решили наращивать мощности и привлекли нас к созданию корпоративных решений. Мы с Андрусём поехали в США, встретились с представителями НХЛ — так началось активное сотрудничество по разработке корпоративных решений в разных сферах деятельности лиги.
Сколько сейчас хоккейных проектов в разработке?
Денис Койро: Много разных. Например, стандартные enterprise-решения: документооборот, статистика, финансы, учёт рабочего времени, работа с персоналом. Автоматизация этих процессов позволяет функционировать всему хоккею в Северной Америке.
Разработка скаутинговой системы. Буквально неделю назад была презентация нового функционала — интеграции в наш enterprise инструмента, который занимается поиском будущих хоккейных судей.
Приложения для организации матчей НХЛ. Это сложный процесс, потому что в лиге 31 команда, и огромный штат занимается подготовкой и проведением игр. Это и организация работы судей на играх, и поддержка всего технического оборудования на аренах, и планирование рекламных кампаний во время чемпионата. Каждый день порядка 10 игр проходит в регулярном сезоне.
Плюс автоматизация некоторых других хоккейных событий — драфта, например. Кстати, в этом году в третьем раунде моей любимой командой, «Столичными», был задрафтован белорус (в третьем раунде «Вашингтон» выбрал Алексея Протаса, а «Флорида» — Владислава Колячонка под 52-м номером драфта. — dev.by). В меньшей степени мы занимаемся автоматизацией, связанной с игроками: это зона ответственности Ассоциации игроков, а не НХЛ.
Вы занимаетесь разработкой полного цикла?
Денис Койро: Каждый проект — какая-то область автоматизации. Мы отвечаем за него от начала до конца. Это полный цикл вплоть до деливери на сторону заказчика.
Андрусь Адамчик: Практически весь бэкенд приложений НХЛ — это наш код.
Белорусские спортивные организации, пожалуй, с трудом можно назвать полноценными бизнес-проектами. Что из себя представляет НХЛ как заказчик?
Андрусь Адамчик: НХЛ — это ассоциация клубов, а клубы — это частные организации со своими владельцами. Можно сказать, что у комиссара НХЛ 31 начальник из числа владельцев команд. Клубы существуют сами по себе, но какие-то вещи делегируются лиге: организация чемпионата, трансляции матчей, часть маркетинга и практически вся ИТ-разработка. Но основная задача лиги, конечно — это проведение чемпионата. НХЛ — многофункциональная организация, как и любая профессиональная лига на Западе.
Вы же наверняка работаете и с классическими заказчиками разработки из бизнеса. Есть отличия в работе с ними и с НХЛ?
Андрусь Адамчик: Люди, с которыми мы работаем, — это фанаты хоккея. Они понимают хоккей, многие играют. Наверное, есть какой-то процент просто наёмных работников, которые интересуются только ИТ-системами, а не спортом. Но в основном это люди, фанатеющие от игры.
То есть с точки зрения коммуникации и бизнес-процессов большой разницы нет, с кем работать: с НХЛ или бизнес-компанией?
Андрусь Адамчик: Все организации стремятся работать по проверенным моделям. И в этом плане НХЛ — не исключение. Просто предметная область другая.
«До работы над проектом хоккей я смотрел только в детстве с отцом»
Вы как разработчики программ для НХЛ следите за хоккейными событиями?
Денис Койро: Сам я в хоккей не играл, но всегда любил его. Матчи НХЛ в Беларуси долгое время не показывали, поэтому приходилось смотреть только чемпионаты мира. Но, когда я пришёл в ObjectStyle, уже знал звёзд не только постсоветского пространства. Интересно, что в первый раз на хоккей я попал в Нью-Йорке. До этого смотрел только по телевизору или на сайте НХЛ (лига предоставляет нам такую возможность). Тогда с Андрусём мы пошли на матч в Madison Square Garden. Кажется, это была игра между «Нью-Йорк Рейнджерс» и «Флорида Пэнтерс». Это было круто. Через какое-то время я попал на хоккей в Минск-Арену. Она показалась мне гораздо больше, но атмосфера была не та.
Андрусь Адамчик: До работы над проектом хоккей я смотрел только в детстве с отцом. И когда брался за проект в 2002 году, меня больше интересовала возможность сделать архитектуру для системы с высокой нагрузкой и большим количеством пользователей. Но в процессе работы хоккей меня увлёк. Я даже научился кататься на коньках. Сейчас после встречи с представителями НХЛ в Америке мы часто идём на хоккейный матч.
Когда набираете новых людей на хоккейные проекты, ожидаете от них такого же интереса к спорту?
Денис Койро: Нет, но в команде всё равно все интересуются хоккеем — кто-то больше, кто-то — меньше. Просто люди с горящими глазами всегда вдохновляют сильнее.
Можете рассказать про команду, которая занимается разработкой для НХЛ?
Денис Койро: В моей команде 10 разработчиков (бэкенд и фронтенд) и три QA. Уже год как в минском офисе появилась новая команда системных администраторов и DevOps, которая закрывает вопросы с инфраструктурой НХЛ, разработкой серверных решений, помогает разработчикам в подготовке всяких сред для тестирования и презентаций, в том числе для разворачивания в продакшн-режиме. Плюс несколько специалистов в других офисах, которые также помогают с хоккейными проектами. Всего человек 18.
А в чём причина появления новой команды сисадминов?
Андрусь Адамчик: Со стороны НХЛ была необходимость в администрировании инфраструктуры. Создание новой команды, за это отвечающей, доверили нам, даже несмотря на то, что раньше в сфере DevOps мы не работали. После стольких лет совместной работы лига во многих вопросах рассматривает в первую очередь нас как исполнителей.
Планируете работать и с другими спортивными организациями? Возможно, с Континентальной хоккейной лигой?
Андрусь Адамчик: У нас периодически возникали контакты через третьих лиц с КХЛ. Мы делали демо для белорусской федерации хоккея. Интерес к таким решениям есть, но, наверное, никто не готов за них платить.
«Как получать доход от open-source, компании придумывают уже постфактум»
История компании крутится вокруг Apache. Почему Apache — это круто?
Никита Тимофеев, тимлид open-source команды: Open-source — явление неоднозначное. С одной стороны, все радуются бесплатным возможностям, с другой — бесплатные решения не дают никаких гарантий качества. Для крупного бизнеса это выглядит как непроверенная разработка каких-то людей. В этом смысле Apache крут, потому что это серьёзная организация с большим именем. Она берёт на себя риски с лицензированием продукта, что для бизнеса тоже критично: из-за продуктов с ворованным кодом можно попасть на штраф или в ситуацию, когда придётся свернуть работу. Apache как минимум защищает с юридической точки зрения и гарантирует, что open-source проект будет поддерживаться на приемлемом уровне (когда саппорт исчезает, активный проект переходит в разряд устаревших).
Но Apache — конечно, не единственный большой foundation, который обеспечивает open-source.
Отсутствие конкретного клиента накладывает на работу с Cayenne определенную специфику. Всё-таки и в аутсорсинговых, и в продуктовых компаниях есть видение продукта, есть заказчики, продукт-оунеры и прочее. У нас, по сути, нету конкретной цели. Есть только комьюнити. Иногда появляются клиенты из числа членов комьюнити, которые нуждаются в определенном функционале и готовы платить за него, но так бывает не часто. В целом мы сами определяем вектор развития продукта.
Тогда зачем вы продолжаете работать над Apache Cayenne?
Никита Тимофеев: Мы ведь не только над ним работаем. У нас open-source-решений несколько: Bootique (проект, тоже выросший из НХЛ), Agrest, DFLib и ещё несколько. В основном, они вырастают из потребностей и конкретных задач, которые нам надо было решить.
Например?
Например, Bootique. Была проблема — создание микросервисов. Нужно было сделать много небольших приложений, которые работают и развиваются независимо друг от друга и позволяют решать задачу быстрее, чем одно большое приложение. Есть готовый фреймворк для написания таких небольших микросервисов — Spring Boot. Проблема в том, что данный фреймворк не всегда быстр и понятен. Под нашу задачу он не до конца подходил. Таким образом, из потребности в ядре для написания небольших консольных приложений вырос Bootique, который позволяет соединять разные вещи между собой и быстро писать небольшое приложение. При этом в нём минимум непрозрачных внутренних механизмов и максимум ясности и контроля за процессами для программистов.
Насколько многочисленное и активное комьюнити вокруг проектов на основе Apache — в частности, Cayenne?
Никита Тимофеев: Apache — по сути, зонтичный проект, который предоставляет разработчикам общие инфраструктуру и механизмы. На основе Apache созданы уже сотни проектов, и каждый из них живёт собственной жизнью. Вокруг каждого собирается собственное независимое комьюнити.
Комьюнити Cayenne развивается. Оно далеко не самое многочисленное, зато дружное. Решения многих проблем члены комьюнити находят сами, даже не обращаясь за помощью к нам. Сложно назвать количество людей в Cayenne-сообществе. Мы не можем их посчитать, ведь у нас нет форумов или чатов — есть только мэйл-листы, которые пользователи читают, но не всегда в них пишут.
Сложно в Беларуси искать open-source разработчиков?
Андрусь Адамчик: Нельзя сказать, что мы специально ищем именно open-source разработчиков. Мы нанимаем тех же Java-программистов. Но работа эта всё-таки не такая, как на обычных проектах. В какой-то степени она требует большей дисциплины, потому что в написанном коде для такого проекта существует не один путь, а большое количество вариантов, которыми члены комьюнити могут пользоваться по-разному. Не так, как мы задумывали. Все косяки в коде сразу же вылезают. Поэтому программисты должны иметь скил в написании фреймворков и учитывать, что их кодом будут пользоваться в непредсказуемых условиях. Но я уверен, что хороший Java-разработчик может развить такие скилы.
Как получать доход от open-source?
Андрусь Адамчик: Хороший вопрос. На него вся индустрия пытается ответить. Open-source — это реалии и для больших компаний, им часто приходится выставлять свои продукты в открытый доступ. Как получать доходы, они придумывают уже постфактум.
Для нас важно, что open-source делает нам имя и привлекает заказчиков. Мы можем зарабатывать на клиентских проектах, которые пользуются нашими open-source разработками.
Существует также консалтинг вокруг, например, Cayenne. Я читал курсы в Канаде и Индии, обучал людей пользоваться фреймворком. Но основную часть прибыли приносят такие крупные клиенты, как НХЛ. А они появились благодаря имени и репутации, заработанным open-source решениями.
Популярность Cayenne растёт?
Андрусь Адамчик: Cayenne на рынке с 2001 года. Сейчас в плане роста пользователей он вышел на своеобразное плато.
Чем ещё занимается ObjectStyle?
Андрусь Адамчик: Мы делаем заказную разработку для нескольких клиентов. И целый ряд open-source проектов, про которые говорил Никита. Скажем, из коммерческой разработки у нас есть проекты в сфере образования, enterprise-поиска, всевозможные бизнес-автоматизации.
В плане open-source решений мы работаем над новым проектом — DFLib (Data Frame Library). DataFrame — это такая очень общая и удобная структура данных, представляющая собой двухмерную таблицу (почти как в Excel). Большая часть data science построена вокруг этой структуры.
На Python есть известный проект pandas. При этом в мире Java DataFrame практически не известен (за исключением Big Data и Apache Spark), хотя он чрезвычайно полезен для любых преобразований данных, даже если данных немного. DFLib — это наша попытка обратить внимание джавистов на DataFrame.
Основной проект компании — это всё же работа с НХЛ?
Андрусь Адамчик: Я бы так не сказал. Мы предоставляем ПО-сервисы с уклоном в open-source аспект. А сотрудничество c НХЛ и другими заказчиками — примеры успеха компании на данном направлении.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.