Ещё в юности Дорофей Пролесковский увлёкся OpenStreetMap и сделал карты своей работой. Мы поговорили с известным белорусским разработчиком-картографом о том, как развивалась его карьера в MapsWithMe, Wargaming и Juno. Не так давно он ушёл из такси-стартапа «в никуда» — и, возможно, уедет жить в Бостон.
Читать далее…
SPACE+ dev.by рассказывают про белорусские ИТ-сообщества
Старый советский клон IBM PC/XT
Начиналось всё как у многих ребят, чьё детство пришлось на 90-е годы: у меня была приставка и комп — и друзья приходили в наш дом поиграть. Но в какой-то момент всё сломалось. Я решил: «Сам сделаю!» — и пошёл в комиссионку недалеко от дома: там как раз появился учебник по информатике для пятого класса. Я был ещё второклашкой.
Этот учебник я прочёл, порадовался, как много всего есть в моем компе — и текстовый редактор, и графический. Но починить его так и не смог. Позже кто-то подарил мне ЕС-1840 — старый советский клон IBM PC/XT, на котором были кнопки «рус» и «лат», а ещё 512 Кбайт оперативки — круто! Ну, мне так казалось. Потом-то я узнал, что у всех вокруг Windows 98, а у меня DOS 3.30. Но зато я читал книгу Фигурнова по MS-DOS, что-то делал — и у меня получалось.
Об увлечении Linux и картами в 8-м классе: «костяк состоял из тех же людей»
Со временем я познакомился с FidoNet — так в моей жизни возникло первое сообщество. Тогда же я узнал об Ubuntu и Linux. И стал частью тусовки линуксоидов: оказалось, что они сидят на forum.linux.by и частенько собираются в разных местах в Минске. Основной костяк составляли студенты. Я же учился в 8-м классе, но это никого не смущало.
Несколько раз такие «линуксовки» собирал и я. Правда бывало и так, что приходил в парк Янки Купалы и ждал под проливным дождём: ну хоть кто-то подойдёт ли. Потом видел — в конце аллеи ещё один такой же энтузиаст стоял. И мы шли с ним, прикрывая головы какими-то пакетами и бумажками, в ближайшее кафе и писали потом на форуме: «Линуксовка состоялась! Нас было двое».
Примерно в это же время я заинтересовался картами. Всё началось с того, что я попытался поставить на компьютер CityInfo. Программа нормально работала на Windows, но «ложилась», если её запускали на Linux. Разработчик CityInfo — человек специфический, не веривший в Linux — специально добавил в программу проверку.
В общем, когда CityInfo отказалась работать на моём компьютере, я решил, что нужно же найти какую-то замену картам. Пошёл искать. В результате узнал о проекте OpenStreetMap. Он только стартовал, карт почти не было — чистый лист. Мы рисовали их сами. Оказалось, что тусовка линуксоидов пересекается с тусовкой OpenStreetMap: костяк состоял из тех же людей.
Некоторые из этих ребят пришли в сообщество byGIS, лидером которого меня называют сегодня. Чтобы не вариться в собственном соку, мы с коллегой Львом Драгуновым решили пригласить в сообщество и других профессионалов: позвать кого-то из кадастрового агентства, а ещё выпускников геофака. Они обычно сидят в своих застенках и сетуют, что «зарплаты маленькие, податься бы в тестировщики». В то же время куча компаний говорит: «Программисты у нас есть, нам географа бы!»
Сейчас нас около 200 человек, время от времени мы собираемся в SPACE. Многие компании, например OneSoil, нашли у нас сотрудников, решили разные мелкие проблемы.
Аттестат об окончании 9 классов как альтернатива диплому
У меня нет высшего образования: я ушёл из БГУИР после 3 курса, так и не окончив вуз. В тот момент у меня умер отец — было совсем не до сессии. К тому же один из преподавателей почему-то меня невзлюбил настолько, что не отмечал весь год на парах. А последней каплей стало услышанное от другого преподавателя: «Вы все ничтожества! На работу вас никто не возьмёт…». Я к тому времени уже работал part time. Ещё немного посидел на лекции, послушал, встал и ушёл. Документы из БГУИР до сих пор не забрал — даже аттестат об окончании школы лежит там.
В общем, у меня на руках только аттестат, который дают после 9 классов. С ним на работу и оформляюсь обычно. К примеру, когда я пришёл в Wargaming, в отделе кадров сперва погрустнели. Потом полистали трудовую книжку, насчитали у меня несколько лет стажа и повеселели. С тех пор я знаю, что не обязательно учиться, чтобы стать инженером в Беларуси.
Как Дорофей меняет работу
Работать я начал ещё на первом курсе. Отец сказал: «Тебе пора работать» — и с тех пор у меня никогда не было летних каникул. О том, как я менял места работы, даже есть анекдот:
— Знаете, Дорофей меняет работу.
— В самом деле? И какой ещё компании понадобился OpenStreetMap?
В 2009 году в Беларусь пришёл NAVITEL и начал уничтожать открытую картографию: представители этой компании запугивали участников комьюнити, натравливали на них госнадзор. Позвали на «разговор» и меня. Обещали неприятности, намекали: сотрите OpenStreetMap — и вас, может быть, простят.
Я понимал, что угроза реальная: они уже «закрыли» почти все проекты, кроме OpenStreetMap — остальные ребята удаляли свои сайты. Но сдаваться не собирался. Я узнал, какие большие компании у них в партнёрах. Пришёл в «СканЭкс», чтобы попросить разрешения использовать данные от kosmosnimki.ru для OpenStreetMap — и получил предложение о работе.
Даже те проекты с моим участием, которые в своё время не были завершены, сегодня частично доступны пользователям: я выложил их код в открытый доступ. Например, карты для аналога Google в одной азиатской стране, которые мы делали с «Акавiта». Это было главным, чему меня научил легендарный Джон Росмэн во время работы в RovarSoft: делать всё, что возможно, open source. С этим правилом я и пошёл дальше по жизни. Поэтому часто бывает так: я прихожу в новую компанию и понимаю, что многие здесь уже видели мой код. Мне говорят: «Мы хотим сделать, как здесь, и как здесь» А я смотрю: так это же я делал, и вот это тоже.
«Беларусь — родина всех мобильных приложений на базе OpenStreetMap»
Картографии, как таковой, в нашей стране долгое время не было. За существовавшие на тот момент карты (в основном бумажные) требовали большие деньги. Поэтому в Беларуси появилось сразу несколько любительских проектов, связанных с составлением карт. Мы делали это просто так, потому что это прикольно. Только потом выяснилось, что за это могут ещё и деньги платить.
Как только у нас появились первые смартфоны, многие начали делать «что-то похожее на Google Maps». Поэтому Беларусь — родина всех мобильных приложений на базе OpenStreetMap: Galileo, Maps.Me, OsmAnd и др. В каждом из них мне чего-то не хватало.
Меня иногда спрашивают, почему в Беларуси картографические компании в основном разрабатывают софт. Дело в том, что в нашей стране очень сложно получить лицензию на составление карт. По закону, если ты взял бумажку, ручку и просто нарисовал путь от проспекта Независимости до своего дома, — ты уже произвёл картографическую продукцию без лицензии. А также нарушил копирайт Белгеодезии. Потому что все карты в Беларуси принадлежат именно ей. Физлица, кстати, вообще не имеют право получить лицензию.
С другой стороны, частные лица и ответственности за свои действия не несут, в законе она не предусмотрена. Поэтому карты OpenStreetMap заполняют энтузиасты.
И при этом карта Беларуси — одна из лучших в СНГ: истребив все свободные сообщества, кроме одного, NAVITEL создал «тепличные условия» для развития нашего комьюнити. У нас не было официальных карт и карт Google, долгое время сюда не приходили карты Yandex. Но поскольку всем было «очень надо», мы по чуть-чуть что-то сделали — вплоть до того, что даже Национальное кадастровое агентство сегодня использует OpenStreetMap.
«Yandex выкатил новую фичу, но она уже была в Maps.Me больше 5 лет назад»
Потом была работа в MapsWithMe — я пришёл к ним в том числе потому, что у меня появился смартфон, и меня не устраивало ни одно из тогдашних приложений с картами. Хотелось улучшить.
Там я занимался стилем карт. Это итеративный процесс: карты нужно постоянно улучшать. Поскольку понятие о том, что такое хорошо и что такое плохо, у всех разное, я пилил их «под себя». К примеру, мне непонятно, с какой стороны можно спуститься в подземный переход — и я его обозначаю. Или я не понимаю, где подъезды в этом здании — и я их выношу. Плюс я всегда ориентируюсь на объёмные справочники и книги по картографии — а Yandex и Google принятые нормы часто игнорируют.
Часть из того, что я сделал «для себя», потом из Maps.Me выпилили, равняясь на условных лидеров — Yandex и Google. Очень жаль! Сейчас Yandex выкатил новую фичу — они показывают, где в здании расположены какие подъезды. Но эта же фича уже была в Maps.Me больше 5 лет назад. Причём мы показывали не только номера подъездов, но даже нумерацию квартир. Сегодняшняя команда, может, и не знает об этом.
Сегодня я пользуюсь этим приложением, потому что в нём часть меня. Почти всё устраивает, разве что рекламы слишком много. К сожалению, когда Maps.Me купила Mail.Ru Group, от платной версии — без рекламы — отказались.
«Ругались матом, рвали одежду на сотрудниках ОМОН»: из Питера на Окрестина
Уволившись из Maps.Me, я переехал в Санкт-Петербург. Думал, что надолго, но спустя полгода пришлось вернуться по личным обстоятельствам.
По приезду в Беларусь я сразу же…загремел в «кутузку». Мы с друзьями решили нарисовать звёздное небо на серой панельке на станции метро «Петровщина» — там как раз было много других несложных граффити. Закупили баллончики с краской, приехали, и только распаковались и приступили к работе, как появился ОМОН. В итоге нас забрали в отделение и написали, что мы… «ругались матом и рвали одежду на сотрудниках ОМОН». За это мне дали 5 суток. Это было самое спокойное время в моей жизни. Я ведь вернулся в Минск с мыслью, что жизнь не удалась, всё плохо. А потом посмотрел на людей в изоляторе на Окрестина, послушал их истории (вроде такой: жена не даёт бывшему мужу видеться с ребёнком, он вышел с плакатом в знак протеста), и понял: а у меня-то всё хорошо.
Выпав на неделю из жизни, я так и не попал на назначенные в разных компаниях собеседования. Но работу нашёл очень быстро — позвали в Wargaming делать глобальную карту.
«Конфликтные регионы пришлось спрятать»: как в Wargaming стёрли с карты Северную Корею
Глобальная карта Wargaming — это fantasy-мир, она не совсем совпадает с реальной: там есть провинции, у каждой из которых от 3 до 6 соседей, границы, естественно, совсем другие, поскольку всё ограничено требованиями, которые мне приходилось вытаскивать чуть ли не клещами из коллег. Постоянно случались диалоги вроде этого:
— А здесь тебе что не нравится? — спрашиваю я.
— Слишком большая!
— Ну как «слишком большая» — это же Россия, она не может быть маленькой.
В какой-то момент оказалось, что карту нужно сделать такой, чтобы на ней не было конфликтов, чтобы не было видно, например, к какой стране относится Крым, потому что в компании хотят, чтобы играли и россияне, и украинцы. В общем мы решили дать возможность игрокам в честной борьбе выяснить, как в этом мире будет.
С десяток конфликтных регионов (если не больше) нам пришлось спрятать. Например, мы убрали Северную Корею: такие бизнес-требования выдвинул нам южнокорейский офис. Что делать — взяли ластик и стёрли целую страну с карты мира.
Наша карта резалась на кусочки, которые потом соединялись воедино, и иногда не так, как в реальном мире — надо было следить за границами и исправлять алгоритмические «ляпы». Так, к примеру, Брест у меня самовольно присоединился к Польше, а Люксембург вошёл в состав Бельгии.
Серьёзным челленджем стала необходимость перевести все 40 тысяч игровых объектов, а также не менее 700 тысяч надписей на 16 языков (причём 2 из них — китайских). К счастью, я как раз нашёл paper, который написал Дмитрий Богданов, с неделю пытался всё завести, наконец сделал, обучил нейросеть делать перевод — в итоге получилось неплохо. Хотя в моём fantasy-мире по аналогии с Moscow reservoir, то есть Московским водохранилищем, и появились Мадридские и прочие водохранилища, а Flag mountain превратился во Флажную гору.
Работа в Juno: «Никто не хотел выпускать эту фичу, а потом её сделал Uber»
Карта была готова, когда люди с которыми я работал в Wargaming, стали по одному уходить в Juno. Постепенно туда сманили весь скелет нашей команды. В какой-то момент предложили и мне.
Менеджеры Juno рисовали чудесные перспективы, говорили о том, что скоро логистическая платформа, над которой мы работали, станет всемирной. Прошло какое-то время, и риторика начала меняться. Ну давайте будем хотя бы N2. Ну не в мире, но хотя бы в США. Ну ладно, хотя бы в Нью-Йорке.
Как это обычно бывает: на старте проекта ты просто по-быстрому делаешь карты, чтобы было хоть что-то, что потом можно улучшать. Дальше, когда всё уже работает, твоя задача как специалиста — пойти и доказать всем, что местами система не идеальна и нуждается в доработке. Это очень сложно, потому что главный аргумент менеджеров: «Всё и так работает!» И тебе нужно «представить аналитику, доказать».
Спустя полгода работы в Juno я придумал одну фичу, пришёл к руководству, сказал, что это решит наши проблемы с позиционированием. Да-да, покивали все. А потом началось: «Нет, не нужно — у нас другие приоритеты». Никто не хотел выпускать эту фичу, поскольку ничего похожего до этого никто не делал: это же большая ответственность. А потом её сделал Uber. И все начали говорить: «О, так у нас же это было. Почему не сделали?» Но дальше вопросов дело опять не пошло. Потом Juno купил Gett, мы съездили в Тель-Авив и между делом представили это решение в беседе с менеджерами Gett. И в итоге в Gett его внедрили, а в Juno — нет. Оно стояло в приоритете на июнь. Но потом мне сказали, что команда загружена на июнь–август. Словом, как обычно: в сентябре, если будет время, сделаем.
«Yandex-карты в приложении Uber сделали в стилистике Google-карт. Удивительно!»
Меня нередко просят прокомментировать ситуацию с объединением Yandex и Uber. Я не работал ни там, ни там — могу лишь представить «взгляд со стороны». Мне кажется, было бы правильно, если бы Uber просто перестал работать, а пользователей пригласили в Yandex. Тогда у них не было бы ощущения, что «сломали Uber». Ведь в новом приложении всегда всё по-новому.
После того как произошло объединение Juno и Gett, сервис Gett, к примеру, стал писать: «Пожалуйста, воспользуйтесь услугами Juno», а его «можно поставить по этой кнопке». В таком случае, мне кажется, жалоб было бы меньше, и не было нареканий на Uber, были бы только претензии, что Yandex — это неравноценная замена полюбившемуся сервису. Или «равноценная», если бы Yandex взял больше времени и успел всё отполировать.
Главная проблема Yandex: там нет толковых людей, ответственных за коммуникацию. У водителей удалили приложение — так скажите им, что делать! Напишите пассажирам: «Извините, у нас переходный период. Дайте нам немного времени — вот вам скидка».
Кстати, меня во всей этой истории поразило даже не это, а другое — разработчики сделали Yandex-карты в приложении Uber в стилистике Google-карт. Мне это кажется невообразимым: все картографические компании стараются придерживаться своей стилистики. Компания Mapbox наезжала на других разработчиков, когда они пытались копировать их фирменный стиль. И тут Yandex копирует стиль Google, а также всё то плохое, что было в Google. Удивительно!
Уход из Juno: «Терпели выходки Кириленко и ругали за глаза в курилке»
Чтобы объяснить, почему я ушёл из Juno, стоит вспомнить последний откровенный разговор с менеджером в Wargaming, когда сообщил ему, что ухожу и рассказал обо всех проблемах на проекте. Он спросил: «Что же ты раньше ко мне не пришёл?» И я решил, что в Juno я не умолчу ни о чём, что тревожит и меня, и команду. Буду ходить. И в какой-то момент это сформировало в глазах руководства мой имидж «всегда чем-то недовольного» сотрудника, которому «больше всех надо».
Есть вещи, которые задевают всех, но остальные ребята в команде лишь грустно отшучиваются — никто не готов сказать: да задолбало! И «только Дорофей всё ходит и жалуется». Нам всем было некомфортно работать с Андреем Кириленко: он нередко позволял себе мат в адрес коллег, был несдержан. Я и ещё один сотрудник в какой-то момент буквально взмолились о том, чтобы на Андрея как-то повлияли, — и нас перевели в другой отдел. Остальные молча терпели и ругали за глаза в курилке.
История с высказыванием, которое позволил себе Кириленко в адрес собравшихся у оперного театра, думаю, задела за живое не только меня. Да, я понимаю, что Juno «не вмешивается в личные дела своих сотрудников», но мне кажется, это не очень хорошая позиция для международной компании. Человек опорочил её репутацию, а затем представил всё так, словно это «журналисты виноваты». Мы ждали, что он принёсет извинения, скажет что-то вроде: «Я всё осознал, нехорошо так писать…» Но он лишь написал в общем чатике о том, что ему «жаль, что СМИ набросились на нашу компанию. Не думал, что будет такой бэклэш». И в компании решили: «Каждый имеет право на ошибку». Но если бы она была первой.
Мои слова интерпретировались как нытьё. В последнее время мои разговоры тет-а-тет с директором и менеджерами рассматривались не как попытка сообщить о проблеме, чтобы вместе её решить, а как выпад в духе: «Мне тут не нравится, я увольняюсь!» Раз за разом я уверялся в том, что эти разговоры ни к чему не ведут. Когда я пошёл прощаться с ребятами, один из менеджеров другой команды стал кричать: «Он у нас уже не работает, следите, чтобы на кухне ничего не съел». Надеюсь, хоть матерных анекдотов обо мне сейчас не рассказывают, как это было с некоторыми уволившимися.
На каникулы в никуда
Я ушёл в никуда. Твит о том, что я закончил работать в Juno, запостил в пятницу вечером. И к полуночи получил первый комментарий: «Давай к нам!» Были и другие предложения.
Прошлой осенью ребята из некоммерческого проекта PostGIS сказали мне: «Ты репортишь нам много багов… Давай, ты их будешь чинить!» Так что многие вещи, которые омрачали мне жизнь и в «СканЭкс», и в Wargaming, и в Juno, я аккуратно «допилил».
В сентябре они пригласили меня меня в Бостон — так что посмотрим. Можно считать, что сейчас у меня долгожданные каникулы.
Фото: Андрей Давыдчик
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.