Хекслет – лучшая школа программирования по версии пользователей Хабра. Наши выпускники уже 10 лет трудоустраиваются в топовые IT-компании. 80% выпускников находят работу в IT. Готовим разработчиков с учетом требований реальных работодателей и уверены в качестве образовательных программ, поэтому гарантируем трудоустройство.
Этот подкаст об IT, программировании, карьере и жизни разработчиков. Интервью с программистами, тимлидами, HR, вебинары об инструментах программирования, публичные собеседования, распаковки ИТ-компаний и многое другое.
Hexlet (00:00.046)
Если ты читаешь и ты можешь излагать, то я считаю, что дальше, в общем-то, ты можешь всё. Из твоей речи очень интересно было наблюдать за тем, как компании связываются бизнес-процессы, рейс-разработки. Почти полсотни контрибьюторов сделали более 50 тысяч комитов. Уважаемо, уважаемо, что могу сказать.
Hexlet (00:27.246)
Всем привет, на связи Хекслет, студия Александра Русков, и сегодня у нас в гостях Василий Коресников с сетей о компании BookMate. И об этой компании мы сегодня будем говорить. Здравствуй, Василий. Здравствуй, Саша, всем привет. Давайте для наших слушателей, я вам представлю не очень много о компании, но видел в нашем комьюнити Хекслет, есть люди, которые там работали, очень хорошо отзывались. Ву, слова для остальных. О чем вообще компания, о чем занимается? Компания BookMate – это компания, которая занимается разработкой одноименного продукта BookMate. Это мобильное приложение и веб-приложение для…
Чтение книг электронных для прослушивания аудиокниг, подкастов и также для просмотра комиксов. Ну и различного другого контента. Естественно, нас также есть очень много медиактивности вокруг этого продукта. То есть для аудитории, которые любят литературу самую-самую разную. У нас также есть периодические издания, BookMate Journal и тому подобные активности. Также мы с некоторое количество лет уже издаём и бумажные книги в...
дочерних и сестренских предприятиях, которые выросли внутри BookMate. В общем, это всё, что связано с книгами, электронными книгами и отчасти уже и печатными книгами. BookMate, как мы говорим, это лучший способ читать и слушать книги и находить их. На сколько за большая компания? По количеству сотрудников мы всегда ориентируемся, полностью считаем сотрудников во всех наших офисах, в том числе заграничных. Нас таки есть, могу про это подробнее рассказать. Около 150 человек.
То есть последние несколько лет это где-то 130-150 человек. И какая из них доля айтишная? Около 40 человек айтишная команда. Ну давай уже с про-офиса заговорили, где находится. Компания это юридически, иранскую юридикцию имеет. Разработка в основном это русскоязычные комьюнити. Работаем в целом как продукт мы по всему миру. Вот. Условно по всему миру, просто в некоторых странах у нас уже
Запущенные активности, запущенные партнерства с другими компаниями, которые как-то Cross-Proma где-то мы делаем, кто-то нас продвигает. Это такие, например, страны, которых мы очень активно присутствуем. А северная Европа — это Дания, большой рынок, очень нас там любят. Восточная Европа, Сербия, Черногория, Болгария. Осваиваем потихонечку дальше, продвигаемся по Европе. И Латинская Америка.
Hexlet (02:52.59)
Это Мексика, Аргентина, в Перу, есть потихонечку, вот мы последние годы там делаем экспансию. В Мексике у нас офис непосредственно есть, то там команда прямо есть, которые занимаются развитием продукта. В Восточной Европе есть офис, в Сербии есть офис, в Дании. То есть это там такие команды, сидят локальные менеджеры, которые занимаются развитием продукта. В Юго-Восточной Азии, в Сингапуре, в Индонезии.
Достаточно давно туда заходили мы, даже я еще не работал в компании. Но там не очень много именно людей, которые занимаются нашим продуктом. То есть мы там просто когда-то запустились, есть партнерство, и оно само по себе просто живет. К счастью, нас проект и продукт, он имеет такую природу, что если мы делаем начальное какое-то усилие, где-то запускаемся, то в целом оно может жить самостоятельно и развиваться самостоятельно. Просто на...
веральности, скажем так. Я правильно понимаю, что команда разработки при этом у вас, видимо, распределенная, да? То есть, ко офису на грибу не привязана? Сейчас, по сути, распределенная. Ну, или можно сказать, гибридно, потому что на самом деле сейчас есть офис в Москве, и периодически мы собираемся разными группами, полугруппами по необходимости. Я довольно часто работаю в офисе, не менее половины всего времени, даже последние пару лет.
Интересная история этого вопроса в нашей компании. Изначально компания имела очень плотную, я бы сказал, культуру офисной работы. есть компания началась примерно в 2009-2010 году. Там очень сложно выделить конкретный момент, когда именно началась компания, когда начался продукт. Я отсчитываю от 2009 года по одной простой причине.
У нас есть репозитории нашего проекта. как программист, я просто смотрю GitLog и комиты, они непрерывные, и нас история с 2009 года. есть, по сути, есть код, который написан в 2009 году и сейчас работает для пользователей в продакшен.
Hexlet (05:04.493)
Изначально была очень большая культура офисной работы. У нас всегда был офис в центре Москвы. Изначально в те годы 9, 10, 11 это даже были какие-то квартирки не очень большие, но всегда в центре Москвы. Это всегда была такая именно культурная составляющая. Квартирки. Квартирки, да. В самые первые годы это были именно квартиры. Типа как буткемпы? Нет.
Просто арендуется квартира в Москве где-то в историческом центре. На Китай-городе, по-моему, это эта квартира. И сейчас это делается. Даже я застал даже такие практики. Вот уже в последние годы, там, 18-19. Одним словом, нам нужно было выделить группу для работы над очень изолированным проектом, который был чистым экспериментом. И тоже мы просто, чтобы не смешивать людей внутри офиса, мы арендовали квартиры. И там сделали микроофис на несколько месяцев.
Это популярная практика. А тогда это вообще, есть, компания была еще очень маленькая, она только зарождалась. До ковида, есть почти 10 лет мы всегда работали в офисе. Не просто разработчики, а вот все сотрудники, которые относились, ну, все, кто были в России, по сути так получалось, что люди были местные, то есть люди были московские, и все находились в офисе. Вот у нас были офисы всегда в центре, вот на Арбате, на Тверской.
Вот такие, то есть мы путешествовали несколько раз, раз в несколько лет. И была очень такая культура. есть люди постоянно видели друг друга. Команды смешивались, перемешивались, всё время был микс. Было очень легко общаться, например, редакцией, то есть те, кто у нас занимается контентом, маркетингу, разработчиком. Люди просто знали, кто есть кто. Конечно, когда у нас изменилось…
Ситуация во всем мире одновременно. В 2020 году мы очень быстро среагировали. Мы даже, я помню, мы ушли полностью на карантин. Очень быстро у нас менеджерская команда приняла решение, и мы отправили всех на карантин в России, в московском офисе, еще до того, как всех принудительно отправили на государственном уровне. За несколько дней мы ушли до этого. И несколько месяцев у нас был полностью карантин.
Hexlet (07:20.621)
вообще никто туда не приходил. потом, естественно, мы не смогли уже позволить себе... нам оказалось бессмысленным содержать большой офис на 100 примерно человек московской команды. Ну, от 70 до 100 человек. Вот это очень большой офис у нас был. Мы переехали в офис поменьше, еще через несколько месяцев, и с тех пор вот нас есть офис поменьше, относительно не так близко совсем к центру, центру, потому что мы обычно привыкли...
По сути, у Красной площади работали много лет. Сейчас у нас офис на Белорусской. Уютный особнячок, полностью свое здание. два этажа. Очень такое приятное, комфортное место. Дворик собственный у нас там. Даже одним словом, активность сейчас, то очень можно проводить вечеринки. Очень приятное место. Когда ты говоришь о собнячок, ты имеешь в что это двухэтажный офис с кабинетами? Или это тоже как больше, ну, как жилое?
Как сказать? Желание в движимости, есть с комнатами, там залами. Не-не, это здание изначально коммерческое, то есть вот как офис организации. Оно изначально так построено было специально для того, чтобы его использовать таким образом. Вот там какие-то раньше были другие организации. Я почему-то спрашиваю, потому что ты сказал про квартирки, я подумал, что может это тоже часть культуры, потому что звучит для меня не совсем как офисная культура, это такая особая, как в рабочей культуре, создавать эти квартирники. А чем обусловлено вообще такой подход? Вот, представьте для аналогии, вы работаете в компании Microsoft?
очень большой, где офис, он просто пропитан культурой Microsoft или там вы работаете там программистом, который делает непосредственно Windows и все разговоры только про Windows и вдруг стратегическое решение давайте мы в качестве эксперимента попробуем нечто совершенно другое, давайте мы попробуем сделать исследование как мы можем адаптировать Linux для нужд компании Microsoft то есть компания, что в общем-то произошло ну спуститесь примерно на 10-15 лет назад
И это очень сложно было бы работать команде, которая бы дала такую задачу внутри атмосферы, где всё говорит, все говорят у Windows. И соответственно эту команду нужно изолировать. Вот у нас случилась примерно такая же ситуация. Мы там около 10 лет уже на тот момент было BookMate. У нас же подписочный сервис, то есть как Netflix, как YouTube, как Яндекс. Извините за рекламу, можно вырезать. Я думаю, это такие бренды, которые не дуждаются в рекламе. Это подписочный сервис и...
Hexlet (09:49.101)
представьте, что 10 лет развивая подписочный сервис, мы вдруг решаем, а давайте мы попробуем продавать книжки поштучно, ну то есть просто отдельный продукт, вот отдельную книжечку, и учитывая, что все мыслят в одном направлении, это, кстати, особенность команды и компании, вот в отличие, например, от другого типа компании, аутсорса, внутри компании все люди, мыслят в конечном счете в одну точку, вот сфокусированные в одно направление, мы все работаем над одним продуктом.
И в этом смысле очень легко общий язык находить с людьми. Очень понятно. Цели одни и те же. И вот когда все направлено на то, чтобы все мысли всего коллектива направлено на то, чтобы делать именно подписочный сервис, очень сложно в этой атмосфере думать о том, как построить сервис. Причем тем же самым людям. То какой-то группе, которые работали много лет над тем, чтобы делать подписочный сервис, как сделать сервис по продаже каждой книжке отдельно.
Просто было такое решение, я считаю, очень мудрое, изолировать эту группу физически. есть, я лично, два или три месяца я просто не виделся практически с ребятами, которыми я работал до этого уже полтора года над подписочным сервисом BookMate. Мы выделились, посидели там дня три, настроились на атмосферу, стали штормить, и за два месяца мы сделали группой в четыре человека отдельный продукт, который был совершенно другой бизнес-моделью. Интересно, да, я сейчас говорю.
Торючь никогда об этом не слышала, но звучит действительно в этом есть некой смысл. То есть это же жарская культура, которая в офисе физически олицетерина. Идея понятна, что вы переключите человека в другую парадигму, и чтобы его в предыдущей практике никак не отягощали. Раньше говорили про продукты, проекты. Чем можешь поделиться из того, что можно говорить, чем вы сейчас непосредственно занимаетесь, или, может, поговорить о техническом уровне, как все это устроено. Какие технологии используете? С удовольствием.
BookMate он просто громадный, он необъятный, в нем столько всего интересного технологически, столько разных направлений, большинство из которых вообще не видны конечному пользователю. Многие компании они категоризуются как B2B или B2C, то есть ваш бизнес он для других бизнесов для компании или для конечных пользователей для клиентов. И вот BookMate он на самом деле одновременно и B2P и B2C или точнее так он имеет два модуля.
Hexlet (12:06.477)
один B2B, другой B2C. Не в смысле одного и того же продукта, например, можно было бы подумать, что, ну, как чекс, да, то есть вы можете продавать подписку для пользователей, те, кто хочет научиться, можете продавать те же самые подписки, но компанием. А тут другое. Я не имею в виду, что мы можем продать какие-то корпоративные подписки, хотя такое тоже мы можем сделать. Вот я не это называю B2B бизнесом, а именно другую сторону. Нам ведь для того, чтобы клиентам предоставить каталог, предоставить книги,
нам необходимо эти книги где-то получить на них права, получить права на это распространение. А это уже отношение с другими юридическими лицами, с другими компаниями, издательствами, крупными интеграторами книг, авторами, частными лицами, физическими лицами. И это B2B составляющая, то есть нас отдельные команды работают именно как аккаунтинг, партнерское направление, которые занимаются взаимодействием с партнерами издательствами.
провайдерами контента, вот мы их так еще называем. И это же все нужно автоматизировать, это все нужно обслуживать. И когда я как пользователь думал о BookMate, я же вообще не задумывался о том, что там же нужно не только, допустим, тот же billing, платежная система, нужно же не только от пользователя деньги принять, но нужно еще и насчитать, например, деньги, которые заработал наш партнер. Это мы должны их посчитать, сделать для него billing, мы должны с ним расплатиться. А напоминаю, в самом начале я рассказал, что BookMate это...
Международная компания в том смысле, что она работает в самых разных регионах мира. мы, как так, мы в общем-то ничем неограниченны. Вот сколько у нас ресурсов и сил хватает, мы вот в такой степени и развиваемся. Мы бы, конечно, хотели вообще везде присутствовать, но постепенно делаем экспансию. Так вот, нас же, представьте себе, пользователи в самых разных странах мира. У них разные валюты, разные языки. У нас наши партнеры, издательства, они в самых разных странах мира.
У них тоже разные языки, разные налоговые законодательства, них разные, очевидно, валюты. И всё это, для всего этого нужно делать внутренние системы. то есть, что-то похожее на ERP, наверное, если классифицировать эти системы. Всё это нужно автоматизировать, всё это нужно программировать. Для наших коллег аккаунт-менеджеров нужно делать различную аналитику, отчёты, дэшборды.
Hexlet (14:33.613)
придумывать всякие механики управления аккаунтами, предсказывать наши финансовые траты, то есть насколько дорогие книги к нам поступают, потому что это тоже поступается в автоматизированном режиме. Кстати, нужно конструировать вот эти пайплайны автоматизированные, по которым мы получаем контент. Потому что, представляете, допустим, наши коллеги из бизнес-департамента, они выходят на связь с каким-то очень крупным издательством.
ну вот таким крупным мирового значения. Это очень большая победа для нас, на самом деле, как для компании. То есть мы с интегрировали с очень крупным издательством. И теперь нам нужно будет какое-то время, скорее всего, поработать очень плотно с технической командой нашей, с технической командой этого издательства, которой зачастую ее вообще не будет. То есть они там приглашают сторонники этой компании, они там работают, как правило, долго уже они будут, скорее всего, эти компании там. И мы должны построить пайплайн.
То есть каким образом мы ежедневно получаем книги. И если это крупные издательства, я специально сделал пример с крупным издательством. На момент интеграции нам могут вполне спокойно сказать там, окей, да, пожалуйста, забирайте. Вот лежит наши там 2-3 тирабайта книг. Вот представляете, то есть вот мы вроде делаем сервис, и у нас не то чтобы, вот, например, тот же high load, да, я бы не сказал, что у нас high load. У нас количество запросов именно к серверу API при сотнях тысяч активных пользователей.
при миллионах пользователей зарегистрированных. Я бы не сказал, что по трафику high load прям. Потому что пользовательский опыт, он как ни странно такой, что он не подразумевает именно очень активного использования сервера. Пользователь всего лишь скачивает книгу на телефон, и он ее читает. То есть, да, мы постоянно отправляем статистику, чтобы понимать, сколько пользователей прочитал, потому что для нас это важно. Эти цифры, они участвуют в расчете ревеню для правообладателей.
зависимости от того, чем больше пользователь читает, тем больше проводатель зарабатывает. Это мы периодически отправляем на сервер, но это не создает прям колоссально большой нагрузки. Но с точки зрения работы с теми же данными, я бы сказал, что проблемы гораздо больше и интереснее, потому что контент, медиаконтент, особенно аудиокниги, он просто очень тяжелый. И я даже... Я бы сказал, что мне нравится сравнивать нас с YouTube.
Hexlet (16:50.413)
просто потому что как программист еще много лет назад до того как я пришел в BookMate я часто думал, для меня это в голове было как проблема ютуба она для меня заключалась в том что в ютуб скорее всего загружают в единицу времени контента который по своему хронометражу больше чем вот это время которое потребовалось для его загрузки то есть условно говоря да, то в одну секунду загружают много-много-много секунд контента и получается и это
И этот объем он постоянно ведь еще растет. То появляется 4К, блогеров появляется все больше и больше, сказав, вот мы, например, с вами. И это проблема. Это же технологическая проблема, технологический вызов, но при этом YouTube никогда не останавливался. Ну, я, может быть, сейчас чуть-чуть преувеличил, какие-нибудь downtime у него были, но глобально он никогда не объявлял чего-то подобного из серии. Вы знаете, так много контента загружают, что мы больше не можем.
Постойте в очереди, чтобы посмотреть ваш контент. Да, а вот нас слушают сейчас разработчики, скорее всего русскоговорящие разработчики, очевидно. Все работают в компаниях. Ну, я уверен, что если вы работаете в этой сфере как разработчик, вообще как IT-шник хотя бы там 2-3 года, вы точно слышали внутри своей компании, внутри своего проекта поднималась проблематика серии. Ну вот, без downtime больше никак.
То есть вот надо что-то сделать, какую-то операцию произвести, поменять сервер под базой данных, как правило, что-нибудь в этом роде. Или просто мы вообще этого не планируем, такие оп, приехали, а у нас downtime. А вот у YouTube-а таких глобальных downtime-ов не было. Я сам просто об этом думал, и для меня это был как такой вызов, потому что мне всегда хотелось на самом деле делать вещи ну так хорошо, как это можно. И для меня YouTube-ом просто был примером. Вот когда я на своей работе встречался с какими-то проблемами, серия там, нам всего-то нужно обслужить там.
пару-тройку тысяч пользователей или там что-то сделают. Ну всего лишь там мы работаем с парой-тройкой десятками гигабайт данных. И вдруг кто-то говорит внутри команды типа ну нам вот тут надо даунтайм какой-то сделать или на какую-то еще уступку пойти. Я всегда это озвучил, а представь как YouTube. Вот, мне это было интересно. И вот в Bookmade он вообще очень сильно еще стал больше напоминать на YouTube, потому что это контент и контент именно загружается. Да, нас большей частью загружает контент конечно не конечные пользователи, как в YouTube, у нас загружают в основном это поставщики.
Hexlet (19:10.829)
которых, как мы их называем, интеграторы, как правило, какие-то другие компании, которые рядом с издательствами работают, потому что издательства, как ни странно, они... Ну, это же такой тип компании, которым технологический аспект им кажется, что не очень нужно развивать, и поэтому IT-отделов в издательствах их просто, правило, Ни в России, ни за рубежом. Да, это вообще, кстати, артистичный разговор, я думаю.
Вот его очень мало в интернете. Вот мои коллеги делают, периодически освещают эти вопросы, которые работают у нас компании, занимаются в том числе развитием книжного рынка в России в основном. Вот они бывают, периодически выступают в подкастах. Мне самому это интересно, я слушаю, но когда я это нахожу, я понимаю, как мало вообще людей интересуется этой темой, как мало вообще там людей. То есть вот, представляете, кому, кто развивает книжный рынок электронных книг?
Даже не то что в России, а на международном уровне. Наверняка все знаете, кто-то пользовался, читал его с электронной книги, есть такой формат EPUB. Собственно, это основной формат, которым работает BookMate. И вот EPUB – это спецификация. То есть, его развивают консорциум, такие же рабочие группы, какие развивают, например, формат HTML, которые работают над спецификациями веб-движков.
Ну потому что EPUB это чисто HTML на самом деле, HTML5 внутри. Вот просто еще надо множество, не в смысле тегов, а надо множество, которое описывает еще формат файла, как должен быть манифест выглядеть, XML файлик, как должен сам контейнер в конечном счете выглядеть. Вот такие аспекты. Так вот, можно просто зайти на репози... В GitHub есть открытый репозиторий с EPUB спецификацией. И есть одна всего лишь программа, всего лишь одна, которая...
пишется, ну программное обеспечение, которое пишется вот людьми, которые составляют эту группу или каким-то образом к ней относятся. Т.е. во всём мире есть всего лишь одна программа, работает с ЕПАБом, она называется ЕПАБ-Чек. Т.е. типа эталонная как бы, получается? Да, да. Ну т.е.
Hexlet (21:20.781)
Чтобы была понятна аналогия, есть вот как... Кто определяет, как должен выглядеть HTML, например, в браузере? Думаю, фронтендеров очень много нас слушает сегодня. То есть по сути этим занимаются там Apple, Google, Mozilla, да, то есть вот такие гиганты. Все остальные уже на каком-то следующем уровне. И вот епабом там занимается группа буквально в несколько человек во всем мире. При том, что это формат, которым пользуются... В котором книги, которые читают люди во всем мире. И я просто смотрю на комиты,
Там вот буквально один человек последние несколько лет, я как начал только работать в букмете, я просто сразу окунулся в эту тему полностью. Там буквально один человек, один молодой француз пишет этот епап-чек много лет. И очень тяжело, то есть я постоянно подписан там на ИШИ, смотрю полуреквесты, я смотрю как это все происходит, и я понимаю, что очень тяжело, очень мало ресурсов. Что уж говорить о цифровизации книг в России?
Да, то есть на локальном рынке. То даже на международном уровне, технологический, если аспект брать, это все еще предстоит много всего сделать, я бы так сказал. Достаточно подробно описание DAL ландшафта. Понятно, что сложный бизнес процесс требуется довольно сложных решений. Давай поговорим о том, организовано, как люди вообще побиты на команды, как они этим проектами взаимодействуют, как у вас построен процесс в общем и целом. Команды, они сформированы по образу продукта, я бы так сказал.
Дело в том, что продукт – это мобильное приложение, соответственно, на две основные платформы – Android и iOS. Хотя у нас очень много лет до 2018 года, если я не ошибаюсь, развивалась Windows Phone платформа. Напомню, Microsoft полностью закрыла поддержку платформы, и мы еще где-то через полгода остановили разработку на этой платформе. Только через полгода после закрытия.
А на самом деле приложение доступно до сих пор. И у нас есть живые пользователи, которые до сих пор пользуются Windows Phone. Мы также периодически нам очень сюда интересны. Технологической команде мы наблюдаем. У нас даже есть более старые платформы. Когда-то, я думаю, что там года до 14-го или 15-го, было даже приложение Bookmade для платформы Symbian, если кто-то из Old School помнит такую платформу. И мы до сих пор видим трафик с этой платформой.
Hexlet (23:43.053)
То есть есть клиенты, которые пользуются в основном в юго-восточной Азии, то есть там видно, ну, более простыми моделями телефонов пользуются и дольше, и оттуда до сих пор есть трафик. Соответственно, iOS, Android, и у нас есть одноименные команды. То есть есть команда, которая занимается мобильным приложением iOS, есть команда, которая занимается мобильным приложением Android, есть команда, которая, естественно, занимается сайтом.
сайта.me и всем, что связано с Web.com. Этого очень, на самом деле, много. Про это можно тоже отдельно дальше поговорить. И самая большая команда — это, конечно, Backend. Потому что все происходит на Backend. Стратегия о том, что клиент BookMate — это технологическая классификация, это так называемый тонкий клиент, она была принята очень давно, еще до того, как я пришел в команду. То есть...
Я не знаю, 7-8 лет назад, может быть, еще раньше. Потому что достаточно быстро ребята столкнулись с тем, что, вынося функциональность на клиенты, на клиентские устройства, мы очень быстро теряем управление, потому что однажды выпущенная версия, мы в ней не можем ничего изменить, то мы можем только выпустить следующую версию. А так как у нас сервис именно подписочный, именно подписочный, то для нас вот этот момент поддержки совместимости крайне важный.
Потому что мы хотим, выпустив версию единышды, знать, что если пользователь её установил и он купил на подписку, так как подписка привязывается уже через платёжные системы, мы понимаем, что может возникнуть ситуация, если мы будем им обновления постоянно или что-то ломать на сервере. Совместимость, я имею в ломать на сервере, а не сам сервер ломать. То мы можем допустить такую ситуацию, что клиент, который не может физически обновиться, а такое бывает, потому что иногда...
сама платформа, персональная система не позволяет поставить более новую версию нашего приложения. Он может попасть в ситуацию, когда он не может обновиться, но подписка, так как она немножко параллельно существует, у нее отдельный свой жизненный цикл, то есть она существует внутри банковской системы, платежного шлюза, она у него останется. И таким образом мы окажемся в ситуации, что пользователь продолжает платить деньги, но не может пользоваться продуктом.
Hexlet (26:00.493)
Это было понятно очень-очень давно, то есть опять же я даже не застал это время, потому что я работаю в компании достаточно долго. И была принята стратегия, мы всегда и всё делаем таким образом, чтобы обеспечивать максимальную совместимость. Поэтому наш API-сервер, написанный на Ruby, Ruby on Rails, мы немножечко начинаем подходить к бэкэнду, он прямо, я бы сказал, напичкан вещами, которые обеспечивают совместимость, и в этом смысле
можно просто получить колоссальный опыт, как это делать. там пользуетесь какими-то продуктами, интегрируетесь и часто сталкиваетесь с тем, что API просто меняется, ломается и нужно постоянно выполнять обслуживание своего собственного проекта, чтобы поддерживать новую версию API партнерского какого-то и вас это мучает, то...
Или наоборот, если вы пользуетесь какими-то замечательными системами, например, Stripe, который точно так же поддерживает, замечательно поддерживает, просто именно на технологическом уровне, я считаю, что это просто образец того, как необходимо выстраивать обратно совместимый API серверный. Вот мы многому напрямую у них учились, учимся, брали их руководство по тому, как это строить, и воплощали их у себя на проекте. Вот, самая большая команда — это Backend. Итого.
Напомню, перечислю iOS, Android, Frontend и Backend. Это четыре кита технологических, четыре команды, которые работают над всей инфраструктурой кодом. А, ну и, конечно же, инфраструктурная команда. То есть мы живем, как ни странно, не в облаках, как модно нынче сегодня. Из самого начала проекта мы живем на арендуемых серверах, то есть в дата-центрах на арендуемых серверах.
Мы просто покупаем голое железо и арендуем. И дальше делаем все самостоятельно. То начиная от установки операционной системы и дальше всю инфраструктуру. Все это автоматизировано и очень давно. есть, мне кажется, что еще до бума, есть, где-то года до 15-го, я бы сказал, что это бум, по крайней мере, в России, движение...
Hexlet (28:14.381)
которая пропагандировала популяризовывала Devops практики, Infrastructure и Zaccode практики. У нас на тот момент это уже было. Я пришел в компанию в 2017 году, у нас уже были контейнеры, оркестраторы, уже все это было.
И всё всегда было через инфраструкт, аккод, то что называется. Вся эта конфигурация, она закодирована, и всегда можно проследить историю. Нет у нас прямых доступов разработчиков, например, голому железу какому-то, это не практикуется. То есть, того. Backend — очень большая команда. Для нас большая, естественно, просто относительно других. Это нас порядка десяти человек бывает, да, то есть, ну, плюс-минус. Какие-то могут быть флуктуации, походы, да, там.
8 человек, да, может быть 12 человек. Конечно, мне, тем более как руководитель, мне, конечно, всегда хочется, был запас по ресурсам, по кадрам. Это, во-первых, для текущей команды всегда снижает какое-то напряжение, да, то есть люди могут чаще меняться, спокойнее отдыхать, потому что довольно трудно сбежать, я думаю, не кого не секрет, и в любой компании, в любого размера.
ситуации, когда какие-то части системы, какие-то компетенции, принадлежат компетенции, по каким-то частям системы, они принадлежат отдельным только людям и они просто физически иногда не могут полностью свободно отключиться, например, отпуск улететь на месяц и вообще чтобы не привлекаться к каким-то проблемам. Так или иначе могут возникать вопросы. Поэтому, конечно, мне как руководителю очень хотелось бы, по кадрам, по ресурсам всегда был
запас даже, я бы сказал. Так что 10 человек для нас, но я думаю, что даже на этот год нас планы, что мы вполне можем расширяться в полтора и даже до двух раз. Такая нас возможность. Это, кстати, опять же, важно, наверное, было сказать. Я не думал об этом, но вот сейчас подумал, что всё-таки для потенциальных слушателей наших, потому что мы же на площадке Хекслета сейчас общаемся, и здесь много людей, наверное, которые...
Hexlet (30:25.517)
планируют свою карьеру войти, ищут, ну, возможно, первое место в своей работе, кто-то кто-то, да, кто-то меняет место работы, кто-то хочет развиваться. В общем-то, не секрет, что мы поэтому, вы поэтому вот приглашаете гостей и рассказываете, освещаете, распаковываете компании для того, чтобы этому поколению было понятно, что происходит на рынке, какого рода компании есть. Так что я думаю, что это полезно было рассказать.
Да, Backend. Команда клиентов — это около 4, то есть от 3 до 5 человек. Android, iOS, Frontend. Хотя Frontend, явно уже... Так как Frontend — вообще очень широкая вещь, плюс мы последние годы сделали очень много статилитных продуктов. есть для нас Web — это не просто сайт BookMate, который предоставляет возможности в первую очередь управления покупки подписок, механики покупки подписки в подарки, то есть все, что связано с billing.
да, как мы это называем, и это промо-акции, это SEO, это экспозиция нашего каталога, в том числе для поисковиков экспозиция каталога, мы показываем его, чтобы эти книжки можно было найти так или иначе, потому что пользователи, наши читатели, в большинстве своем, они же вряд ли приходят к нам, потому что они знают про BookMate как бренд, то есть очевидно, что наш пользователь — это человек, который хочет почитать какое-то произведение.
потому что произведение зачастую является большим брендом, чем любая компания, которая предоставляет, ну любой продукт, который предоставляет возможность это произведение почитать, на запрос условно Пушкина Евгения Онегин мы, конечно, хотели бы, чтобы наши книги, страницы, они были в поисковой выдаче. Соответственно, сайт служит этому. Также на нем можно и читать книги. Там есть специальные, конечно, правила и механики, которые...
позволяют читать книги, но не все. То есть есть часть книг, например, которые эксклюзивные, то есть для того, чтобы пользователи приходили пользовались приложением, они доступны только в приложении. Ну плюс аудио. Когда-то мы запустили аудио, это для BookMate был очень большой проект. То есть на тот момент тоже уже было, наверное, 8 почти лет BookMate'у, и 8 лет был BookMate'у, и представляете, течение 8 лет мы делаем только электронные книги, и вдруг мы решаем, и мы очень быстро на самом деле это сделали.
Hexlet (32:49.197)
запустили в BookMate Audio. Это был очень удачный, очень успешный проект. Он очень много принес нам опыта. Я сейчас даже говорю не о технологической команде, хотя это был колоссальный прорыв, колоссальное движение вперед. Но я имею в в первую очередь для бизнеса, потому что резко выходим по сути на другой рынок. То есть те люди, которые слушают, любят слушать аудио, они не обязательно 100 % пересекаются.
То есть на 100 % они точно не пересекаются с теми, кто любит читать электронные книги, вообще читает электронные книги. Потому что аудио именно с точки зрения конечного использования — это несколько другой формат. особенно европейцы, особенно датчане. То есть для них это нормально передвигаться в городе на велосипеде. И слушать аудио двигаясь на велосипеде — это просто очень удачный симбиоз активностей. И как только мы это запустили, мы просто поняли, что
Люди любят, например, поехать утром на работу и слушать аудиокнигу. Почему бы и нет? Люди часто делают так, что ложатся спать и хотят просто засыпать под какую-то аудиокнигу, подключить телефон к какой-нибудь умной колонке. Кстати, у нас даже такие интеграции есть с колонками умными, именно BookMate. Упоминуты, что нас есть три ID-клиентов iOS, Android, Web. В Provocat поговорили, что сделано на Ruby. На чем сделаны клиенты?
На чем сделаны клиенты? Мобильные клиенты iOS и Android, сделаны на полностью нативных технологиях. То есть для iOS это приложение на... Сейчас, я думаю, спокойно можно говорить, что это приложение на Swift. Он появился относительно недавно. Он появился, когда приложение уже было, но тут при всей неоднозначности...
моего личного отношения к технологическим стратегиям компании Apple. Я не очень на самом деле, как разработчик, люблю язык Swift, и Objective-C вызывает вопросы, по многим аспектам, на мой взгляд, он даже лучше, чем Swift.
Hexlet (34:58.253)
Приложение уже существовало, но Swift, к счастью, создан образом, что интеграция его в существующий проект уже на Objective-C достаточно несложно делалась, поэтому очень быстро мы подключились и начали делать все новые функции на Swift. Я имею в пользовательские функции, функциональность продукта.
И на данный момент, я думаю, что Objective-C присутствует только в отдельных модулях, достаточно изолированных, ну, быть, процентов 15-20 в кодовой базе. А приложение Android, полностью написано на Kotlin. То есть там процент... Ну, процент за 95 точно. То есть он в какой-то момент именно Android... В ожидаемо, конечно. Ожидаемо, да. Ну, кстати...
Ожидаемо, но все-таки есть кейсы. Я думаю, что про это важно упомянуть, потому что сейчас есть движение в нашей сфере, в нашем сообществе айтишном, разработческом. Люди любят эксперименты. Я к этому позитивно в целом отношусь. Как инженер, как личность, мы должны любить эксперименты. Мы должны экспериментировать, мы должны что-то искать. Другой вопрос, как это аккуратно состыковать с...
нуждами производства, с нуждами компании, с нуждами бизнесов, внутри которых вы работаете и собственно за счет которых вы живете. Тут не нужно этим пренебрегать. Мы инженеры, мы зависим от этого. И эксперименты на производстве – это несколько другое. А я вижу достаточно часто ситуацию, когда мобильные клиенты пишут на флаттере, пишут на React Native.
успешных историй с большими, действительно технологически большими проектами. Я, подчеркиваю лично, я не слышал. Приходят часто люди на собеседования, рассказывают, как у них было в других проектах, в других компаниях. И если очень сильно хвалят опыт свой с подобными платформами, я имею в виду React Native, Flutter и тому подобные, то есть не Kotlin на Android и Swift Objective-C на iOS,
Hexlet (37:15.021)
то, как правило, выясняется, что это проекты из серии, ну, одна страничка. Ну вот, что-то несложное. Да. А какие еще используются нас клиентские платформы, библиотеки? Веб. Веб достаточно разношерстный, да, то есть это, естественно, JavaScript, Node.js. То есть наш сайт, он развивается последние... долгое время для того, чтобы, в общем-то, уже забыть о том, что когда-то это было иначе. То есть, я думал, это...
5, может быть даже 6, он развивается как совершенно отдельный модуль, потому что легко себе представить. Если мы начинали в 2009 году, то веб-сайт, учитывая тогдашнюю популярность фреймворка Ruby on Rails, веб-сайт был полностью внутри одного проекта с бэкэндом. И это разделение нас произошло где-то в районе, может быть, 15-16 года, то есть когда сайт был полностью выделен. Ну и, конечно, моменты совместимости всякие долго-долго еще...
давали о себе знать и вычищалась потихонечку с бэкэнда, вычищалась функциональность, которая относилась непосредственно только к вебу, чтобы букмейт был client agnostic, то есть неважно, кто посылает запрос в API сервер, вебсайт или мобильное приложение. есть вебсайт – это Node.js, непосредственно на клиентской части очень много реакто. Я лично думаю, что, конечно же, неизбежно это связано с веянием моды.
трудно от этого просто увернуться. Я не думаю, что кто-то один когда-либо смог бы даже на себя взять ответственность за то, чтобы... за то ответственность сказать, это я лично решил, что здесь будет реакт, и я могу это обосновать, и... ну, это очень большой проект, и над ним всегда работает команда, то есть есть коллективная ответственность, а команда, ее члены постоянно меняются, вот, поэтому... Да, много реакта.
У нас в последние годы появилось очень много сателлитных различных сайток, я о них кратко упоминал. То есть мы делаем периодические издания. Они... Сначала мы запустили, например, в России, так как мы мультиязычные, собственно, продукты, и у нас есть отдельные оригинальные офисы развития. Офисы развития продукта, то тут же за этим последовала, я бы сказал, франшиза. То есть мы начинали запускать эти периодические издания в Сербии, мы запустили в Дании их.
Hexlet (39:40.717)
И это всё отдельные сайтики. И вот уже для этого проекта большого, который сейчас уже можно рассматривать как большой проект, хотя когда он развивался, это казалось даже как отдельные маленькие проекты. Мы очень любим классические технологии. То есть не привлекать очень много JavaScript, не привлекать, на front-end я имею в виду, не привлекать какие-то комплексные фрейнворки, но использовать чистый CSS, чистый HTML, использовать статические генераторы сайтов.
Хьюго зачастую это... Ну, в принципе, они плюс-минус все похожи. Хьюго очень оптимальный, на мой взгляд, вариант. есть больших отличий функциональных между статическими генераторами сайтов развитыми я не вижу, хотя очень много я этим сам лично занимался. Ну, просто Хьюго имеет достаточно большую поддержку со стороны сообщества, со стороны разработчиков и в целом особых проблем не вызывает.
И такого контента мы последние годы делаем очень много. Вот эти сайты у нас просто вырастают как грибы. Поэтому, кстати, команда фронт-энда, она заметно нуждается в ресурсах, потому что в принципе все понятно и можно это делать, но учитывая наши амбициозные планы, я думаю, что фронт-энд, конечно, нас будет развиваться как команда быстрее всего в ближайшее время. Такие технологии. И если переходить к бэк-энду, наверное, да?
по очереди, какие технологии используются там. Ну давай, ну при немножко поговорим, давай, да, поглубже ковтём. Да, Ruby on Rails, я думаю, что это как раз букмейт – тот проект, который ровно попал в ту оригинальную, я бы сказал, волну, когда Ruby on Rails набирала обороты с максимальной скоростью, там, я не знаю, по сотне процентов в год прироста было проектов.
Уже, конечно, был GitHub, наверное, и Twitter, но они только-только появились и вот гремели вот этой славой. И неудивительно, что очень толковых, интересных, талантливых ребят, разработчиков, работающих тогда в Москве, уже работающих в том числе с этим фреймворком, их захлестнула идея Ruby on Rails. Фреймворк для получения удовольствия для людей. И они взяли...
Hexlet (41:56.557)
ту область, которую они любили. Это действительно, кстати, были ребята, которые очень любили книги. И они сделали... первоначально это был просто сайт-библиотека. То есть не было еще понятного момента про подписки, не было никакого бизнеса. Они просто написали код и сделали сайт. И это у Ruby on Rails. Я... даже где-то у нас, наверное, тексте вакансии я специально писал, как у нас непрерывно развивается вот кодовая база, бэкэнда Ruby on Rails.
По-моему, была версия даже то ли первой мажорной ветки, но скорее всего второй, потому что первая, по-моему, она была чуть ли не вообще закрытая, то есть ей пользовался Дэвид и давал её своим друзьям, но публичная была уже вторая. И вот Ruby on Rails у нас второй мажорной версией был. Какая версия Ruby? Ну, наверное, тоже версия Ruby была где-нибудь в районе 1.7-1.8, вот для тех, кто уже занимается и понимает, насколько это давно. Мы очень бодро, я бы сказал, как команда, особенно для такого большого проекта.
О, его объём их я отдельно скажу, потому что это интересно. Я считаю, что это большой проект. Мы достаточно быстро обновляемся и держим себя в тонусе по версиям. То есть на сегодняшний день на Ruby 3 переходить, в общем, довольно сложно. Я на меньшем проекте переходил, достаточно много усилий потратил. То есть на проекте до 30 тысяч строк кода. Вот, у меня это заняло несколько дней.
Но это относительно свежий проект. Ну 30 тысяч строк кода — уже близко к среднему, с меньшей стороны. То есть это от маленького до среднего по моей личной классификации, по моим ощущениям. В BookMate последняя версия ветки 2. То есть Ruby мы обновляем максимально быстро. есть нас прямо в чат прилетает уведомление о том, что вышла очередная версия Ruby или ключевых фреймворков. У нас на это настроены
и Ruby обновляется достаточно легко. Выделяется сразу человек какой-то из команды, который занимается, потому что нужно будет, скорее всего, сделать анализ со совместимости библиотек, всё это по отдельности обновить, возможно сделать полуреквесты в какие-то библиотеки публичные, дождаться их приёмом, если они, полуреквесты не принимаются, сделать форки, всё это соединить вместе и обновляться. Вот, поэтому по Ruby мы двигаемся очень быстро.
Hexlet (44:16.877)
плане мажорной версии. на третью версию вполне возможно, что в этом году перейдем. Тем более, что стабильная версия, то есть 3.1, она вышла буквально если мне не изменяет память в декабре. То есть это первая, я бы сказал, стабильная версия ветки 3. По Rails у нас, я считаю, что Rails обновлять в целом задача довольно сложная, особенно там где-то начиная пятая. Хотя, может быть, это просто мой личный опыт, то есть я начинал с четвертой версии Rails.
пятая, шестая, седьмая, а сейчас нас Rails 6. Я бы сказал, достаточно свежий. Я начинал писать на Ruby on Rails в 2015 году, я знаю проекты из того времени, которые до сих пор сидят на третьей и четвертой версии. Вот. 2021 году, в 2022 году уже непрерывно при этом развиваясь.
У нас Rails 6, к счастью, были у нас такие амбиции, я думаю, к счастью, мы обновились, были ребята, которые этим занимались. Это было не просто, и дальше объясню как раз почему я вещал рассказать, почему я считаю, что BookMet — это большой технологический проект для Rails проекта. Я не раз задавался вопросом, как измерять проект, по каким метрикам, для того, чтобы просто можно было говорить. Он большой, маленький, средний.
И я не знаю однозначного ответа до сих пор, несмотря на то, что я лично этим интересовался и размышлял на эту тему. Пока что я продерживаюсь версии о том, что нужно просто брать те характеристики, которые ты действительно считаешь важными, и измерять объём в совокупности. Такие характеристики использую я. Да, и уточнение. В отдельности каждая из них она никогда не скажет объективно, даже...
на субъективные мнения вряд ли будет протендовать, большой это проект или нет. Например, количество строк кода. То есть оно может быть искусственно большим, или искусственно маленьким, но при этом сложность будет большая. Но если рассматривать подобные характеристики в комплексе, то в принципе можно понимать. Так вот, количество строк кода в нашем Rails-проекте только самом большом, который мы считаем самым центральным, основным бэкендом, то есть пользовательский API.
Hexlet (46:33.485)
Вся основная бизнес-логика продукта для пользователя, это не считая Enterprise наших систем внутренних, это более 250, я думаю, сейчас уже примерно под 300 тысяч строк кода только библиотеки, то есть только продукта. И теперь внимание, такое же количество строк кода всегда приятное тестов этому же самому коду. То есть более полумиллиона строк кода это Ruby on Rails приложение версии 6, которое непрерывно развивается с 2009 года.
Более, ну почти полсотни контрибьюторов сделали более 50 тысяч коммитов за это время, за 10 лет. Непрерывно развиваемый продукт. Уважаемо, уважаемо, что могу сказать. Спасибо. А дальше характеристика, которой мы действительно гордимся, и наша команда, бэкенд-команда. Я тоже ее традиционно, у себя, естественно, причисляю к бэкенд-команде, потому что я не рассказывал о себе, и у нас это не повестка, я ее не планировал, но...
чтобы было понятно, я пришел в Букмейт как в команду Букмейт, Бэкэнда. Да, то есть и дальше уже возглавил сейчас полностью технологический департамент последние несколько лет. Соответственно, я это считаю как свою победу. Очень замечательные ребята, замечательные талантливые ребята были в этой команде и до сих пор, конечно, остаются, хотя поменялось очень многое за последние годы. Но вот это ощущение того, что
Когда работаешь над одним продуктом, я вижу, как люди действительно вкладываются в его качество. То есть они не считают там часы какие-то свои, количество закрытых задач в джира, а болеют за продукт, за проект. И как в продуктовом смысле, то есть о вещах, которые относятся к конечному пользователю, так и в технологическом смысле, есть чтобы придя на какую-то конференцию или участвовать в какой-то конференции онлайн или оффлайн, в том числе, я имею в виду там текстовые, то есть как вот секс-сообщество Хексельта.
чтобы не ударить в грязь лицом и действительно гордиться своим проектом. вот, о чем я хочу сказать? Характеристика. Это уровень покрытия тестами в этом большом проекте, где совокупное количество строк кода вместе с тестами превышает полмиллиона. 96 % на сегодняшний день. И при этом на моих глазах эта цифра увеличилась с 65 % вот только на моих глазах. На момент, когда я пришел в команду,
Hexlet (49:01.869)
Примерно в тот год, Team Lead команды, Саша, он, вместе как бы мы, я специально упоминаю его лично, потому что очень горжусь тем, что работал в его команде, он замечательный человек, замечательный Team Lead. И мы приняли большой набор правил по качеству кода, тому, как мы работаем, по тому, как мы проводим код-ревью, по тому, как мы коммуницируем.
и эти правила удивительно прочно вошли в команду, они закрепились. Я помню, как это происходило, я видел это в других проектах, в других компаниях, и везде, кроме BookMate, я видел сопротивление, то есть внутреннее сопротивление команды. Всегда находился как минимум один человек, который говорил, ну зачем, зачем правила? Я ведь и так пишу, я уверен, я знаю, ничего плохого не будет. Я так сто раз сделал. Наверняка все из вас, кто работает в хотя бы два-три года, встречались.
с таким мнением, с такими коллегами. В BookMain я не помню, может быть, я не видел, но я не помню натурально никакого сопротивления, эти правила у нас прижились и работают замечательно. И за три буквально года приняв правило, что весь новый код должен быть полностью покрыт тестами, под полностью покрыт тестами, естественно, я имею в полный каверч, и естественно, если вдруг кто-то уже
потянул руки к клавиатуре, чтобы написать комментарии о том, что тесты не могут сказать, что ваша программа работает правильно, но могут лишь сказать о том, что она работает неправильно и то не обязательно. Конечно же, мы это все знаем, и конечно же, мы прагматично относимся к тестам. Но для нас это автоматизированный тестовый стенд. Имея правила, новый код должен быть покрыт на 100%, во-первых, мы увеличили эту характеристику естественным образом. То есть мы не ставили никому задачу… Смотри, у нас вот есть там…
Тысяча строк кода, не покрыт тестами. На сегодняшний твой день твоя задача покрыть его тестами. Никогда. То есть ни одного дня и ни одной такой задачи никогда не было. Просто приняв, что новый код мы покрываем тестами, вот эти 30 % видимо за счет удаления и переработки старого кода, вот эти 30 % буквально за 2-3 года они наверстались. И все. То есть мы не акцентировали на этом внимание, просто стали делать хорошо, я бы так сказал, для новых своих вещей.
Hexlet (51:24.013)
И это автоматизированный стенд. есть, виде этого, имея опыт внутри команды, работая с таким проектом, с таким репетиторием, мы почувствовали, насколько легко вообще делать изменения. То есть, у меня такая ассоциация, как у скалолазов, да, то есть, ты двигаешься, но у тебя есть страховка. Ты можешь прийти в проект, у тебя есть какая-то задача, ты можешь менять здесь максимально смело всё. Если ты ошибёшься, тебе...
Тесты скажут об этом, то есть по сути тебе скажут об этом труд, когда-то потраченный тобой самим, твоими коллегами, твоими предшественниками. Мы все друг другу помогаем, мы все друг друга, по сути, прикрываем, да, то есть как в строю ты всегда можешь положиться на своего товарища слева, справа, сзади, спереди. Тесты для нас это инструмент, который позволяет нам чувствовать себя комфортно и двигаться быстро.
мнение о том, что это дольше, что тесты требуют времени, обслуживание. Я считаю, что это миф по своему собственному опыту, по опыту собственной команды. Вик, перешел на тему тестирования. Давай немножечко про бэкэнд добьем. Что используется там кроме языка, кроме RLS, понятно. Что у вас там по базам, какие вы используете, может быть, структурные решения?
Есть замечательная книга, Design Data Intensive Applications. очень отлично подходит к нам, к нашей работе, потому что у нас именно Data Intensive, приложение Data Intensive Service. Контента очень много, поэтому, естественно, у нас большие базы данных. В качестве основной базы данных, сразу пропуская всякие подробности, скажу, что, естественно, это SQL, это MySQL или, точнее, ее fork MariaDB.
который мы используем. Общий объем именно MySQL, SQL база данных, по сути OLTP база данных, то есть она содержит данные необходимые для жизни проекта, то есть для того, чтобы исполнять транзакции, которые поступают ежесекундно в сервис. Ее объем на сегодняшний день около 2 терабайт.
Hexlet (53:36.717)
То есть работа, если кто-то скучает на своих проектах, думая о том, что где бы мне с высокой нагрузкой, со сложными задачами поработать, у меня что, меня тут база данных, но табличка на 100 записей. принципе, файлик можно записать в ямле JSON, и разницы-то не будет никакой. У нас есть таблицы в базе данных. Это не тот аспект, которым мы гордимся, тут скорее...
различные аспекты, может быть, не самых удачных решений, но приходится работать с таблицами в сотни гигабайт. Вот даже такие у нас есть. Десятки за сотню гигабайт у нас есть. Только в MySQL есть много, представляете, каждый пользователь, который читает в BookMate, он постоянно там раз в несколько минут отправляет статистику. Вся эта статистика накапливается. Сотни тысяч активных пользователей ежечасно. Вы храните всю историю или вас как-то там...
Да, нас есть, ну естественно, есть ротация, есть есть переезды в холодные хранилища через прежнодутки времени. Да, архив, но она все равно хранится за всю историю, потому что я думаю, что это правило незыблемое для любой технологической компании, любого стартапа, данные это капитал, поэтому никто данные в здравом уме не выбрасывает, какими бы они не были. Тем более, что вот подумайте только вот аспект немножко в сторону. У нас всего лишь пару лет назад появился внутри компании отдел...
анализы данных, есть прям непосредственно отдельный департамент, который занимается анализом данных, data science, как у нас называется по общей терминологии внутри компании. И если компания 11 лет, а data science отдел появился два года назад, то очевидно, что мы для них должны дать какой-то материал и какая удача, что мы приняли правильное инженерное решение, что мы все эти данные оставляли.
Представляете, какой кладезь, когда приходит новая что у них много работы теперь. У них много работы интересной, насколько я знаю, я общаюсь, им это очень нравится вообще работать, исследовать. Там, как правило, которые уже до этого работали в BookMate, то есть в основном сформирована была командой из людей, которые уже работали в BookMate. И они в курсе там домена были. Да, это большая удача, что есть данные и есть над чем поработать.
Hexlet (55:47.309)
Да, данные мы все сохраняем. Соответственно, что касается данных, даже более интересно, чем какие-то вещи, связанные непосредственно с написанием бэкэнда, API, с балансировкой нагрузки, возможно. есть эти вопросы по сравнению с тем, какие сложные вопросы у нас в плане хранения данных, обработки данных, они уходят на второй план. То есть я уже сказал, что просто посмотрите на свои проекты, если не интересовались, кто-то может быть помнит, какого объема у вас SQL база данных в вашем сервисе.
Вот, нас два терабайта. Это я не посчитал всякую вот статистику, которая ежесекундно отправляется в телефон. Раз несколько минут я сейчас оговорился. А... Это не... не в SQL-базу данных попадает, это отдельные хранилища. То есть их объем я сейчас не смогу точно сказать. И все это вместе взято, оно рядом не стоит с объемом медиаданных. То есть количество...
каждый gpub файл, а особенно аудио, а представляете аудио нам все шлют в самых разных форматах, то есть ну тут очень сложно даже бесполезно я бы сказал тратить время на то чтобы каждому поставщику объяснять что как нужно мы принимаем разные, кто у кого-то сжатые, у кого-то не сжатые и естественно нам нужно где-то сохранить оригиналы то есть возможно мы что-то сделали как-то запроцессили неправильно, все-таки мы хотим чтобы оригиналы у нас оставались то есть это безусловно мы их должны сохранить хотя бы в холодное хранилище
мы должны все это переконвертировать в тот формат, который для нас универсальный. А представляете, еще аудио примерно там вот как раз вот в 21 году очень много 21 года был проект, я бы сказал на весь год, когда мы полностью перестроили, полностью переписали платформу аудио, причем на клиентах и на бэкэндах. И естественно мы всегда, как я говорил ранее, оставляем обратную совместимость. То есть нам нужно было полностью оставить совместимым сервис для клиентов, которые используют старый API.
предыдущего поколения и сделать новый. Новый API он требовал полностью переформатировать то, как мы храним аудио и как оно сконвертировано в смысле конкретно аудиоконтента. Я сейчас в ставтологию сказал, я имею в виду, что какая частота, есть какой битрейт... Каким образом хранится?
Hexlet (57:59.213)
Это файлы или это какое-то хранилище? Это файлы, но в конечном счёте это всегда файлы, даже если это хранилище. Ты, наверное, имеешь в виду что-то вроде S3, Это распределённые файловые системы. То есть наверняка кто-то работал с чем-то вроде NFS, а у нас очень активно используется такая файловая система, называется GlusterFS. Я напомню ещё раз, что мы же не в облаках живём, мы живём на собственном железе. То есть все эти квастера, рейт-массивы, физические рейт-массивы.
и виртуальную файловую систему сетевую распределенную. Это все делают наши инженеры внутри нашей команды. Готов спорить за всем этим еще системой репликации? Хитрая, наверное. Конечно, конечно. Причем междатацентровая. То есть мы специально, мы реплицируем это все ежедневно. То есть у нас там база данных ежедневно реплицируется. Не просто, а мы специально на протяжении многих лет делали это в отдельный датацентр. И это даже было в одной стране. Вот. А в какой-то момент мы даже...
другую страну. есть это Европа у нас дата центра, то есть мы даже в разных разных странах нас хранится оригиналы и бэкап на всякий случай, то есть чтобы это не было завязано на один дата центр. Команда инфраструктурная, я думаю после бэкэнза сразу можно плавно перейти, она крайне для нас важна и я всячески призываю и приглашаю также всех кто интересуется администрированием, инфраструктурными задачами, девопсом, построением современных собственных облаков, кластеров.
Мы всем этим занимаемся, занимаемся сами. У действительно талантливые ребята, которые работают с нами очень долго, параллельно имели и параллельно с букмейтом, работали там и до, и после, работали в крупнейших мировых компаниях. Не без гордости могу это сказать. То есть это инженеры высокого уровня, которые для нас, непосредственно для компании, делают эти решения, создают и обслуживают. Горжусь ими. Извините. Отличная, отличная ремарка. Это очень приятно быть частью...
Для подставли слушать, я думаю, представить себя частью компании, где так гордятся своими сотрудниками, которые действительно делают такой непростой труд. Что мне остается? Потому что ведь, это с иронией, конечно, я говорю, но и без иронии в то же самое время объясню. Я же развивался всегда как программист, но волею судьи мне пришлось возглавить вот всю разработку конкретно в BookMesa. И, же, я до сих пор, несмотря на то, что я этим занимаюсь уже более двух лет,
Hexlet (01:00:20.781)
по сути, чисто менеджерской работой. Но, конечно, меня до сих пор эта деформация, трансформация, она до сих пор происходит. И, конечно же, я завидую белой завистью всем, кто может работать непосредственно с кодом, с байтиками, битиками, кто может решать интересные агритмические, технологические задачи. И естественным образом я горжусь. Вот я люблю своих ребят, и я горжусь и завидую белой завистью, когда они...
рассказывают о своих успехах, том, как они смогли системы построить, обслужить, выйти из каких-то трудных ситуаций. Конечно, это есть. Вот потому что мне это близко. Изначально, конечно, я инженер, я до сих пор считаю себя инженером, а про менеджерство так сбоку говорю, хотя по факту оно по-другому. Я все-таки прошу тебя чуточку поверить про менеджерство. Интересно узнать, как вас устроен процесс движения задач. То есть, команд так было не очень много, они достаточно камерные, но в тоже время это описывало очень много разных задач и проектов. То есть, видимо...
Все это достаточно flexible должно быть. Как вы подходите к планированию, скажем так, к управлению? Я думаю, что планирование, оно достаточно типичное вообще для продуктовых IT-компаний, может быть даже непродуктовых IT-компаний. То есть у нас естественно есть task-трекеры, у нас естественно есть некоторые аспекты популярных методологий. Специально в таком виде говорю это, чтобы...
не напасть на критику из серии «а, у вас ненастоящий Agile, ненастоящий Scrum» и тому подобное. Да, он нас ненастоящий, мы в курсе. Но есть некоторые аспекты, то такие как спринты, задачи, воркфлоу. Интересные наблюдения, мое собственное, они вряд ли потому что плохие, какие-то или некачественные, но эти процессы, очень часто меняются, то есть в незначительной степени. Вот, я думаю об этом как об эволюции, то есть...
Мы можем работать, работать, работать, потом нас некоторые аспекты, быть, командные, может быть, какие-то, они поменялись, и мы таким образом оптимизируем или как-то меняем воркфлоу. То есть когда-то команда была маленькая, ну действительно маленькая, года до 15-16, и все помещалось в один проект в джиры, ну в один проект. В какой-то момент мы вырастаем, и нужно кому-то уловить этот тренд и понять, ребят, тут мы уже просто больше путаемся, то есть нас инструмент больше запутывать, чем помогает.
Hexlet (01:02:36.909)
Поэтому давайте здесь что-то разделим. Где-то мы применяем некоторую функциональность того же Task Tracker, то есть как он себя ведет, как он диктует нам, работать. есть доску использую или какой-то линейный список. Мы им пользуемся. В какой-то момент понимаем, особенно еще производитель может... Мы обычный сервис используем, поэтому производитель может что-то изменить обратно несовместимое. И для нас это изменит workflow, рабочий процесс. Мы его тоже оптимизируем. Поэтому я не могу сказать, что он постоянный, константный и никогда не меняется.
Но на протяжении последних 5 лет могу сказать, что это всегда было планирование в самых разных видах, но я бы так сказал сразу, чтобы обо всем планировании. У нас есть планирование примерно самых больших крупных проектов на год, нас есть планирование больших проектов на квартал, на предстоящий из предыдущего списка, и соответственно внутри квартала у нас уже планирование есть на каждый спринт, это две недели. Таким образом.
Но нужно понимать, что вот эта методология и этот рабочий процесс, хорошо работает, когда вы непосредственно делаете продукт, особенно когда новый или относительно свежий продукт вы делаете, потому что в него нужно постоянно поставлять новую функциональность. Но у нас же очень много обслуживания, у нас много технологических задач, которые вообще никак не связаны с продуктовыми спринтами, поэтому в этом режиме работают какие-то части этих команд. есть, я напомню, команд четыре, допустим, разработческих, но отдельные люди из них...
они могут в течение этих двух недель работать внутри этого двухнедельного спринта, при этом другие люди из этих же самых команд, они будут работать над долгоиграющими задачами, какими-то технологическими, например, там мы полностью обновляем платформу вслед за вендором, вышло iOS 13, и нужно поменять полностью все процессы на CI, CI-CD, все процессы связанные с инструментами разработчиков, потому что...
на бэкэнди и даже на фронтэнди это относительно легко по сравнению с мобильными платформами. есть, кто сталкивался, понимает меня. Особенно если кто сталкивался с собой мобильные платформы, в этом смысле обновляются гораздо сложнее. есть перейти с Ruby 2 на Ruby 3 — это одна задача. Перейти с одной версии Android или даже просто Android Studio версии языка на другую — это гораздо сложнее. Поэтому, да, такой режим, задача, джиры и двухнедельные спринты.
Hexlet (01:04:57.677)
У нас замечательная команда продукта есть, которые являются генераторами идей того, что нам нужно сделать в продукте, Product Lead. Очень тесно с ними интегрировано отдел, замечательный тоже технологический наш отдел, котором также отдельно горжусь очень сильно. Это отдел Quality Assurance, который занимается нас тестированием полностью. очень... Я уже говорил, что очень много автоматизированного тестирования, поэтому у нас есть замечательный отдел, который все руками это проверяет, и это совсем другое тестирование, оно...
другое, являются сотрудники этого отдела, являются кладезями знаний того, как работает продукт целиком. И я специально это анализировал, думал об этом, а никто другой вообще не может так хорошо знать продукт, потому что каждый пользователь, вот конечный потребитель, он тоже не знает так хорошо продукт. Не потому что он не глубоко копает, даже если он глубоко копает, но наш продукт он многоликий. Пользователь в Сингапуре видит наш продукт
достаточно сильно по-другому, в отличие от пользователей в Сербии или в Мексике, потому что у нас там специальные есть переключатели, брендированные экраны, которые подстраиваются под определенную локацию, мы по-разному. Вот момент локализации — это отдельная большая работа для нас в BookMate. Именно локализация, я не имею в виду просто язык-текст перевести, а локализовать местный продукт. Я уверен, что ты в курсе термина этого, но мы все-таки для молодого поколения в основном выступаем, поэтому это...
Я думаю, важное уточнение. И Quality Assurance — это люди, которые проверяют одновременно все кейсы, и они действительно имеют самую полную картину в отличие и от конечных пользователей, и в отличие от разработчиков, которые работают каждый над своим аспектом, частью системы. То есть это такой именно действительно отдел выходного качества. То есть они проверяют всё, и когда возникают какие-то моменты, они быстрее всего, по моему собственному опыту, всегда отвечают на вопрос.
как оно нас работает, как оно должно работать, просто потому что они это видели в разных ракурсах, с разных ракурсов, с разных точек зрения. И, соответственно, они очень активно применяют... Они очень активно принимают участие в процессе планирования совместно с командой продукта, совместно с следами команд. То есть мы прорабатываем задачи, что нам нужно сделать, исходя из текущей ситуации, текущих требований, бизнес-требований.
Hexlet (01:07:17.965)
Мы аккумулируем себе задачи в Backlog, мы аккумулируем их от разных отделов, потому что есть отдел развития бизнеса, который приходит и могут попросить, нам нужно для такого-то партнерства, чтобы вот такой инструмент был, чтобы такая-то механика была, такие-то данные нам нужно обязательно сохранять, чтобы потом партнеру передать какую-то статистику. Это все приходит в эту группу, такая... Это не отдельный департамент, но это группа людей из разных департаментов, которые всегда понимают, что у нас в Backlog.
То есть, в него входят лиды команд технологических, люди из продукта и люди из Quality Assurance в основном. Центральный комитет, Да, такой комитет, который занимается формированием спринтов и бэклогов. И задачи эти попадают, ну и соответственно, мы просто по приоритету примерно их планируем. Тут, в принципе, процесс, я думаю, понятный, несложный, предсказуемый, как в любой другой компании. Дальше по нему двигаемся. Из процедур еще таких, зачастую относят именно вот
потому что называется методологией, нас естественно есть синки, стендапы, стендапы каждый день. Некоторых людей это удивляет, вот, но это было всегда, это было когда мы работали в офисе, вот, и когда мы работали в офисе, это были стендапы, настоящие стендапы. Ну, то есть мы прям вставали все в кружочек командой утречком за кофе. Вот, всегда это было очень лампово, тепло, никогда я не видел внутри команды никакого там, никакой критики.
данной процедуре. Хотя вне, внешние наблюдатели, кандидаты часто когда приходят, спрашивают, а как у вас вот это происходит? И не раз я слышал мнение о том, что «не-не-не, я вот раз в неделю буду писать, что я сделал, вы мне задач на неделю накидайте, и всё». Я не против, я считаю, что на самом деле всё имеет Мне кажется, незрелый подход, нет? Ты понимаешь, трудно, я не очень хочу быть категоричным, понимаешь, потому что…
для разных людей, для разных проектов. То есть я знаю таких профессионалов-одиночек, которые действительно могут работать в таком режиме. Но тут баланс. Мы уже такая команда. Но если тебе так удобно, я уважаю, лично вот мое мнение, я уважаю твой подход. Наверное, ты профессионал так умеешь, но просто нам не подходит. То есть я не буду интегрировать в команду, пытаться интегрировать в команду человека, который ему просто не подходит наш формат. Зачем?
Hexlet (01:09:36.781)
когда есть возможность интегрировать тех, кого это устраивает, кому это нравится. Нам нравится на самом деле. есть люди... Отдельно тут можно тоже одной строкой сказать про время работы в команде, в наших командах, в бэкэнде, в мобильных командах. То есть есть люди, насчитывают стаж только в букмейте 5 и более лет. Я думаю, что там рекорд среди разработчиков тут около 8 лет. Причем это люди, как правило, все, кто работает очень долго, в основном это люди,
для которых BookMate был там не первой, не второй, не третьей работой, а у которых совокупный стаж сейчас около 20 лет. Вот просто чтобы вы понимали, то есть люди там уже 10-15 лет работали, пришли в BookMate и здесь уже работают столько, потому что они нашли это как остров спокойствия. К нам приходили, у нас в команде работают бывшие CTO, у нас в команде работали люди топ лиды из Яндекса приходили. Действительно талантливые люди, сейчас я говорю не просто ради лычки, а это действительно талантливые люди, с которыми я лично работал и очень сильно их уважаю.
как инженеров. Вот это были люди, которые занимали там позиции в крупных технологических наших компаниях в России и за рубежом, кстати, и до сих пор тоже на стати работают люди, которые за рубежом в очень крупных компаниях работали, всем известных, не буду называть имена, но в компаниях со штатами в десятки тысяч, наверное даже в пару сотен тысяч человек вот такого объема. Вот BookMate камерное место в этом смысле очень много людей я видел, которые одинаково выражали вот это мнение, что это такое островок спокойствия.
После всего сумбура в крупных корпораций ты приходишь и просто работаешь и получаешь удовольствие от коллектива и от продукта. Но мы сбились. Про планирование я должен рассказать. Не уходить с этой темы, я помню. Я уже описал процессы из этих деталей изнутри методик. У нас есть стендапы, нас есть звонки. Все построено внутри команды, внутри компании, построено на такой единой коммуникации. То есть у нас разные отделы.
Они совершенно... У них разный жизненный цикл, может быть, но при этом в плане инструментов мы очень все объединены. Мы используем сэк общий, причем этот сэк для всех регионов. То есть мы спокойно... Вот нам пишут наши коллеги из Мексики, например. То есть у них нет разработки отдельно своей, то есть там офис развития бизнеса. И они спокойно нам пишут, мы с ними созваниваемся, то разработчики, и мы все друг друга знаем. То есть, к счастью, там большинство все-таки команд, они еще...
Hexlet (01:12:02.221)
из времени, когда мы работали в офисе, и эти коллеги к нам приезжали периодически. Там раз в полгода у нас устраивалось такое большое собрание, куда мы приглашали всех наших коллег из разных стран и собирались, мы лично друг друга знаем. есть теперь, когда я созваниваюсь, например, с коллегами из Сербии, Мексики, Дании, я их знаю, то есть мы с ними там где-то общались, выпивали, может быть, дальше. Очень-очень приятно в этом смысле, и этот слэк, он у нас единый.
Все друг друга знают, все общаются, нет никакого вот этого. То есть у вас синхронная коммуникация, правильно понимаю? То есть нет такого, что здесь сейчас оттыдня, пожалуйста. Ну, не, это очень эффективно. И часовые ПСА, да, да, да. То есть те ребята, например, которые у нас работают, например, отсюда курируют, в том числе там, ну и взаимодействуют постоянно с офисом. Например, самый дальний у нас, как бы, же Латинская Америка, Мексика, центральная.
то да, у них чуть-чуть такой специфичный график, то есть им нужно вставать пораньше или ложиться попозже, потому что там максимальная разница. Ну а европейские они не очень сильно отстают, поэтому там очень легко договариваться. Google, нас G Suite, причем тоже, это все очень-очень я сказал, канонично, стабильно, и это не менялось, то даже при мне это все не менялось. То SEG у нас года с 14 примерно, как он появился 15 может быть. Jira и атласиновские там все сателлитные продукты Confluence. GitHub.
Google активно мы очень используем, то есть нас свой почтовый домен, естественно, вся переписка, почта, очень много почты и Google Meet. На самом деле для видеосвязи у нас, ну так как у нас G Suite аккаунт был уже, мы использовали Google Meet. Мне лично очень нравится. Вот за последние два года, естественно, мы все получили большой опыт использования видеоконференции, видеосвязи в самых разных форматах. Честно скажу, Google Meet при всех компромиссах я считаю максимально оптимальным и стабильным вариантом, самым простым, легким и быстрым.
вот в плане, к зуму специфично отношусь. Я очень люблю эту склозную интеграцию. У нас G Suite аккаунт, то есть гугловский, и календарь. И вот я натурально, вот моя работа складывается так, что я живу по календарю. Вот я утром просыпаюсь, открываю календарь, у меня встречи, и у меня постоянно вкладка есть с этими встречами, я просто кликую во встречу, и когда у нас появится там вот Google Middle линкуется автоматически. Я просто нажимаю, то есть зайти на эту встречу. Вот.
Hexlet (01:14:19.757)
Так у меня работа. Ну, это же сути система всего, да? есть там еще и хромость у тебя, там как бы туда подтягивается все, и почта синхронизируется, и там календарь, и все другие сервисы. Да. Удобно. По поводу еще методологии, у нас, нас, тем не менее остаемся молодой командой. Вот это важный, наверное, аспект. То есть у нас в менеджерство, в управление часто приходят люди, которые делают там...
первые большие шаги именно в этом направлении. Да, собственно, я, да, то есть я был разработчиком, вот сейчас занимаюсь вопросами управления координацией. Давай еще поговорим про Naim. Как вообще замечательную команду попасть? Наверняка тоже стоит отдельно говорить, да, как это раз за команду устроено, какой у процесс построен, сколько этапов, с кем, какого рода вообще интервью, к чему готовиться в первую очередь, если кто-то из зрителей захочет попробовать себя. Конечно, об этом стоит рассказать, потому что Naim – наверное, самая такая интересная тема для тех, кто… для тех, кому предыдущая вся часть понравилась.
Наем у нас складывается, я бы сказал, достаточно просто. У нас есть вакансии, они вывешены на разных сайтах, на наших в том числе сайтах. Их можно найти, как-то получить контакт и просто написать на почту и скинуть свое резюме. То есть у нас нет сложно формализованного пайплайна, знаете, как в крупных корпорациях, вот если там твое письмо где-то потерялось, то все, у тебя уже никаких шансов нет. Или там где-то кто-то галочку какую-то отметил, то ты уже никогда не пройдешь.
Здесь не так. У нас есть свой, естественно, департамент, который занимается ресурсами, и в том числе наймом, и HR-департамент. Все попадает в наших коллег, все заявки. И они попадают в основном Team Lead-ам. есть нас процесс... Именно технологически, говорить про программистов, в основном сейчас говорим, все вакансии попадают в Team Lead-ам и одновременно мне. То есть я, в принципе, успеваю до сих пор смотреть все резюме.
которые попадают. Ну где-то когда-то, тем более если особенно в отпуске, то я им также и доверяю при этом же одновременно на 100 % своим тимлидам. Они проводят первичное технологическое интервью, то есть где просто смотрят уровень технических знаний и также попутно они просто смотрят, насколько им кажется, что будет подходящим человек, как коллега в их команде.
Hexlet (01:16:41.549)
Есть свои минусы того, что у нас очень классный дружный коллектив, потому что когда весь коллектив очень классный и дружит, между собой общается, то каждого следующего человека, чтобы принять, то есть уже не будешь брать любого человека, то есть нужно, чтобы действительно показать его команде, и они скажут, ну да, хороший кандидат, парень, девушка, и нам понравилось по общению. Если человек будет очень специфично общаться, быть тем более токсичным, это случается крайне редко, но всегда феерично.
Вот когда такое встречаешь, мне кажется, с годами становится этого еще меньше. Хотя я застал еще людей, которые, ну, не знаю, они как будто бы еще из 90-х. Причем молодые ребята, но они вот очень специфично общаются и в коллективе просто как будто бы не могут работать, мое мнение. И потом, после того как я получаю обратную связь от ледов, то есть они приходят, рассказывают, ну, отписывается все это в чате, естественно, асинхронно, как мы уже сказали. Я говорю «приходят», потому что ну...
как будто бы приходит. Они пишут свой отзыв, что да, мы пособеседовали, уровень знаний нас в принципе устраивает примерно по такой-то градации, называют нашу внутреннюю градацию, не буду сейчас об этом акцентировать внимание на этом. То есть там, ну, понятно, что там средний, маленький, средний, большой, условно такая. То есть мы оцениваем вот так вот. Пообщайся, пожалуйста, допустим, кандидат понравился. Или, например...
Может быть, отзыв такой. Смотри, мы пообщались с кандидатом, него, например, уровень технических знаний в принципе хороший, но мы сомневаемся насчет его управляемости. Все-таки не секрет, Сотрудник, должен быть управляем. Это задача менеджера. Управленца. Дословный перевод с английского. Вот. Если человек неуправляемый, если он живет в абсолютно своем режиме, он не подчиняется никакой дисциплине, к сожалению, мы не можем с таким человеком работать, взаимодействовать. Вот.
Ребят, так как они больше все-таки на работе с кодом, с технологиями, они, конечно, таких аспектах могут попросить меня перепроверить, пообщаться, чтобы я уже пообщался с человеком, и тот понимал, что да, вот моим руководителем, руководителем департамента моего будет непосредственно вот этот человек, и, может быть, с ним я не смогу вести себя так, как я хотел бы вести себя в команде, да, там где-то какие-то аспекты. Для примера, вот там разные могут быть моменты.
Hexlet (01:18:58.253)
Я, соответственно, делаю ещё небольшое интервью после технологического собеседования. Это, как правило, там 20-30 минут не больше. То есть просто пообщаться, чтобы человек раскрылся, чтобы я для себя построил образ, как он может строиться в команду, что он там будет делать, и вообще, подходит он или нет. Иногда мы совмещаем. То есть когда есть такая возможность, когда, может быть, каким-то аспектом кандидата очень интересный.
кандидата, могу прямо сразу на технологическое собеседование приходить, есть, особенно если есть время кандидата. есть нету очень жестких правил в этом. Я не могу сказать, что, например, нас собеседование всегда одно или всегда два. Может быть одно, может быть два. Я не могу сказать, что у нас собеседование тоже техническое, всегда идет час по времени. Может час, а может больше. Меньше, кстати, очень редко. В том смысле, что, как ни странно, даже если мы понимаем заранее, что нам кандидат не подходит и не нравится, мы никогда не бросаем трубку.
Вот, то есть мы так не говорим. Вы знаете, вот всё достаточно, мы вам перезвоним или мы вам не перезвоним. Вообще никогда, я лично так никогда не делал. Не потому что я даже, даже не только потому что я считаю, что это просто неправильно. Я сам просто не могу так общаться. Ну, неудобно, неприятно. Я дам человеку высказаться, он, мне даже кажется, что если я полностью дам ему тайминг, он ещё лучше поймёт, почему мы ему отказали, потому что он сам будет вспоминать, как он отвечал и что он говорил.
у него будет материал для самоанализа, для понимания, что ну… Он, может быть, даже в процессе поймёт, что просто… Может быть, даже в процессе поймёт. Нет, людей, которые клали трубку с той стороны, было в моём опыте очень много. То есть, по разным причинам. То есть, кто-то там просто приходил… Да, типа «ребят, вопросы странные, я, пожалуй, пошёл». Может быть, и… Ну, чаще, конечно, это бывает, когда…
Да, понял, что я не потяну, я просто понимаю, что даже там вопросы не понимаю. Извините, ребят, мне нужна там вакансия другая, я пошел. Вот не то, чтобы это часто бывает. справедливо достаточно. Справедливо. А про вопросы давай уже разоговорили. К чему готовится собеседование, к чему вы уделяете внимание? На что как бы вот сделать фокус в вашей ключе? По-разному. Вот опять же, давай хотя бы мы сузим круг до разработчиков. Разработчиков в пять названных ранее команд. Вот.
Hexlet (01:21:14.349)
iOS, Android, backend, frontend инфраструктура. В первую очередь, опять же, думаю, что мы сегодня и говорим в первую очередь, опять же, на аудиторию начинающих разработчиков или там, тех, кто начинает именно работать. Мы прекрасно понимаем, что если человек начинающий, кандидат, то он, ну, от него мы не можем ждать именно опыта, то есть опыта использования каких-то вещей. И сразу же сюда...
в противовес. Если приходит человек с опытом, заявленным 4-5 лет или тем более больше, то самое главное, что мы ждем от него, не какие-то ключевые слова, а реальные проекты. То есть на это будет очень большой акцент. Если ты поработал уже 5-6 лет, нам интересно, что лично ты сделал, а ни в каких компаниях ты по резюме работал. То есть может прийти человек сказать, я работал в компании N, очень известная крупная компания, технологический бренд, все любим.
При этом может оказываться, что он просто был в коллективе, но никакой инициативы не проявлял, каких-то больших достижений у него нет. И рассказать не о чем. Задаешь интересные вопросы, а какая у проблема была? Мы очень любим задавать вопросы не в прямолинейной серии, там, сколько будет 2 плюс 2, там, напиши FizzBuzz, сколько кондолационных люков в городе Москва. Нет. Расскажи то, чем ты сам гордишься.
ту проблему, расскажи, над которой ты работал и нашел какое-то решение. Вот я вот лично, мне кажется, я заразил уже тоже своих темлядов, всегда акцентировал внимание на таких вопросах в беседе. Человеку свободнее, мне кажется, он легче начинает про это говорить, потому что это точно то, что он знает. Вот, натурально то, что он знает. Это с ним происходило. Если он не может знать... знать, по своему опыту у меня вот такой вопрос, расскажи, как на своих предыдущих проектах, были проблемы. Он, вроде, достаточно понятно и очевидный, но меня лично созбивает с толку, потому что
Если у тебя достаточно большой опыт, мне кажется, то эти проблемы решаешь достаточно много, а у тебя уже становится Daily Task, ты постоянно решаешь какие-то проблемы. Те, из них которые западают в памяти, не так часто бывают. Если там опыт по общению, большое внимание я лично уделяю, конечно, тоже на общение. То есть, человек просто внятно излагает мысли, у меня буквально вчера было такое собеседование, ну, скажем так, на днях, чтобы совсем не так не пались. Кандидат он чисто начинающий. То есть…
Hexlet (01:23:32.045)
вот совершенно только что, там буквально только курсы закончил, но он хорошо говорит, то есть он просто ясно излагает, и я понимаю, что он читает, потому что, ну ясно излагать можно только если ты читаешь много, вот, а это уже, это скилл, он сам по себе скилл, то есть вот как персонажа компьютерной игры, есть скилл он либо открыт, либо не открыт, да, он может его использовать, либо нет, если ты читаешь и ты можешь излагать, то я считаю, что дальше, в общем-то, ты можешь всё, то есть у тебя есть вот это открытое...
чакра для того, чтобы прокачиваться. Свидайон. Если… я вижу, что кандидат… ну, ему трудно выразить мысль свою, собственно. Мы программисты. Каждый день мы выражаем мысли в компьютер. Я не могу согласиться с тем, что может быть хороший программист, который плохо выражает свои мысли. Есть прям очень отдельные особые случаи, их видел, сам встречал, но…
она не на то и особый случай, там просто видно, там совсем другое, медицинские диагнозы, вот не будем этого касаться, это другое, мы сейчас говорим про в среднем здоровых людей. Вот не бывает просто здоровых, поэтому я говорю в среднем здоровых, бывают недообследованные. Вот, поэтому о опытных я, конечно, хотел бы услышать, что он уже делал, и, даже не только потому, чтобы он рассказал, а...
Что ты делал такое и как оно может быть матчится с тем, что мы делаем, то есть что ты можешь принести команде. Если у тебя какой-то опыт, не обязательно, что я захочу, чтобы ты это сделал, или мы захотим, чтобы ты это делал непосредственно, но ты сам можешь себя как-то презентовать. Многие наверняка знают известный документ, резюме Леонарда Дэвинчи, который он, кажется, Форсу презентовал для того, наняться к нему в услужение.
То есть он его писал, это очень известно, в массовой культуре, вот я помню, в интернете на хабре это обсуждалось часто. Не один раз я видел. То есть он его писал там, его приводит в пример того, что мы сейчас резюме пишем из серии, я там-то работал, я там-то делал, я вот там-то учился. А он его писал совсем в другом наклонении. Он говорил так, я могу для вас сделать вот это, я могу для вас сделать вот это, я могу для вас сделать вот это. То есть сама вот эта особенность, что ты приходишь и говоришь,
Hexlet (01:25:51.597)
вот этим, что я могу для вас сделать, одновременно и про то, что, то есть, у тебя есть этот опыт, и ты его действительно можешь сейчас реализовать, а не просто, что он у тебя есть. И это хочется услышать. То есть, я бэкэнд-разработчик, и у меня уже есть опыт, который я могу повторить у вас, создание отказа устойчивого API, я могу работать над совместимостью, я могу работать с тем, как мейнтейнить тяжелые базы данных. Пожалуйста. То есть, меня уже был опыт теоретики, я...
Зная ваш стэк, я могу предположить, что вот эти задачи могут быть мне интересны, и я знаю, что я умею подобного рода задачи решать. есть это от опытных разработчиков, от молодых разработчиков, от тех, кто начинает. Самое важное показать потенциал. У нас внутри BookMate происходит такая непрерывная школа. Особенно в разных командах она разная, немножко виды имеет, но вот больше всего я знаю, как это происходит в бекенде сам, потому что там участвую как ментор. То есть...
Каждую неделю мы встречаемся, и все наши молодые разработчики, то есть те кто там до уровня сеньор, они постоянно на фоне своей работы чем-то занимаются, свободное время что-то читают, и мы раз в неделю собираемся вместе, и каждый рассказывает о том направлении, в котором он занимается. Мы к этому пришли достаточно быстро, следом команды бэкэнда, и мне это нравится.
что мы достигли вот такого баланса. С одной стороны, ребята занимаются, с другой стороны, мы не заставляем изучать что-то конкретное. То есть мы не говорим, смотри, через неделю ты приди и про эту книжку, вот этот параграф расскажи. Потому что я думаю, что это дает всё-таки небольшую ментальную нагрузку или даже большую ментальную нагрузку. Человек будет каждый день работать, а при этом думать так, когда мне прочитать эту книжку, что мне сказать так, а мои лиды её уже читали, то есть они точно будут знать, что я буду говорить, ну так как мы её дали её. Мы сказали так, занимайтесь тем, что вам нравится, найдите те блоги.
те статьи, те видеоматериалы, конференции, онлайн-курсы. Занимайтесь, чем вы хотите. Приходите и рассказывайте. Чтобы и рассказы тоже были интересными. Ребята занимаются, это очень хорошая практика. Ну и всё это переменьшивается тем, что я и мои коллеги тоже им в обратную сторону какие-то темы рассказывают. И в основном тоже связаны очень близко с нашей работой. Поэтому для молодых специалистов, которые захотят попробовать поработать в BookMate.
Hexlet (01:28:12.845)
Для нас важно, чтобы мы увидели потенциал, что вы можете, что вы хотите, что вы любите учиться. И это показать можно просто тем, как вы говорите об этом, что вы изучали уже, промежуток времени, сколько всего вы сделали. Например, сколько ты прочел книг по программированию вообще? Три. За сколько? За десять лет. Или сколько ты прочел книг по программированию вообще? Три. За сколько? За последние... случай. За последние два месяца. книг, не важно, материалы.
Я очень удивляюсь, на самом деле, когда задаю вопрос, какие источники тебя подпитывают, то есть что для тебя стало какими-то ориентирами, за которыми ты следил, которые тебе понравились. Потому что у меня, например, свое время, я помню, когда закончил институт и вот совсем только начинал профессиональную деятельность свою, были люди, в которых я натурально был влюблен. То есть я читал книги там, читаешь книгу там, потом еще вторую книгу этого автора найдешь, третью книгу там, потом все, что можно про него найдешь, почитаешь.
другого какого-то автора, я мог спокойно называть вот этот человек, вот этот человек, его книга, вот тот подкаст, вот тот блог. И сейчас могу назвать. Это ж интересно, потому что если я прочитал интересную статью одного автора, сразу подписываюсь, я знаю, что у него следующая тоже будет скорее всего что-то интересное. В какой-то момент, когда прочитаешь там 5, 6, 7, 10 его материалов, тебе он покажется уже повторяющимся человеком, это очевидно, это нормально, вот ты уже перестаешь так сильно им интересоваться.
Но от молодых я бы в первую очередь ждал того, чтобы они четко могли сказать, мне вот это нравится, вот это я изучаю и за этим я слежу. Чтобы был потенциал, чтобы мы видели, что действительно можно дать вот эту нагрузку, человек сам занимается, нам как менторам рассказывать, что он делает, а мы просто его корректируем, направим. Кстати, очень похоже на то, я думаю, как менторство в Хекслите устроено. То студент ведь в основном сам занимается, ментор он именно...
как, знаете, как Гендальф, он же не всегда идёт вместе с братством. Он то появляется, то исчезает, но при этом он всё время как-то корректирует движение этой группы и в нужный момент помогает. Вот это ментом. Да, Василий, спасибо большое за такую подробную информацию. Я от себя отмечу, что из твоей речи очень интересно было наблюдать, как в твоей голове, ну, видимо, компании связываются бизнес-процессы, процесс разработки. Это не совсем как бы то, чём... Ну, не совсем тема...
Hexlet (01:30:27.725)
распаковки, но тем не менее, мне кажется, тоже интересно послушать, в том числе не только начинающие программистов. В остальном, что? Спасибо, было очень интересно. Ставьте лайк, если хотите еще таких видео. Приходите к учиться. Приходите учиться обязательно на Hexled, потом приходите в замечательные компании, где вы будете чувствовать себя хорошо и комфортно. Попробуйте, посмотрите BookMate как пользователи, попробуйте воспользоваться сервисом, купите подписку.
возможно, вот, попробуйте, если вам заинтересовало, приходить в компанию, вот, попробовать свои силы и работать в замечательно сплошенном коллективе. Вот, я в очередь тоже благодарю команду Хекслита за приглашение, за возможность рассказать о компании, о коллективе. Спасибо вам большое. Вот, всем добра и удачи. Всем хорошего вечера.