Украинский разработчик Владимир Агафонкин вылетел с четвертого курса КПИ, самостоятельно выучил JavaScript, написал продукт с мировым именем – библиотеку Leaflet, основал рок-группу, объездил полмира, и отказал Apple и Facebook, когда те звали его на работу.

Его проект – open source-библиотека Leaflet, которая позволяет быстро и просто создавать онлайн-карты – появилась только потому, что как-то раз Агафонкину неинтересно стало просто выполнять поставленное по работе задание. Он, игнорируя указания начальства, с нуля написал свой проект, а потом еще и добился от компании, чтобы код Leaflet открыли для сторонних разработчиков. Сейчас его сервисом пользуются такие проекты, как Foursquare, Pinterest, Flickr, GitHub, Facebook, Еврокомиссия и многие другие.

О том, как научиться программировать самостоятельно, почему opensource круче, чем проприетарные продукты, как найти работу мечты, а также о том, почему в украинской рок-музыке так много айтишников, Владимир рассказал в интервью AIN.UA.

Откуда интерес к математике и компьютерам?

Отец – инженер, мама – радиофизик, и я, сколько себя помню, компьютерами увлекался еще с садика, наверное. На курсы компьютерной грамотности пошел классе в 5-м, — эти курсы назывались “Борисфен” и находились на Харьковском шоссе. Через год начал учить Delphi, пытался писать простые игрушки-квесты.

Из-за этого интереса и пошел в КПИ?

Да, на прикладную математику: у ФПМ была очень хорошая репутация кафедры, где выращивают программистов, с другой стороны, сюда был ниже конкурс.

Но ты недолго проучился, почему ушел?

Где-то со второго курса уже начал подрабатывать программированием, сначала фрилансил, занимался html-версткой, а на четвертом курсе нашел в ящике письмо: Sonopia (позже стала Cogniance) звала на front-end-девелопера. Устроился на полный рабочий день, но в вузе еще продолжал числиться, пытался иногда ходить на зачеты. Но вообще, я никогда прилежным студентом не был, вместо пар приятнее было посидеть на поляне с единомышленниками и пивом, или заняться своими проектами. Так что со стационара я в конце-концов вылетел, решил, что опыт настоящей работы важнее. Доучился до магистра уже на заочном отделении.

Leaflet-1
Фото – Ольга Закревская

Хотя первые два курса были реально полезные. Настоящая школа выживания. Особенно матанализ и легендарный препод Чертов: у него половина курса вылетала на экзаменах, все сдавали с третьей пересдачи и на тройки, после жутких бессонных ночей. Бывало, что в обморок падали. У меня была стандартная практика: валять дурака весь семестр, а за последние пару дней все выучить. Но умение за несколько дней осваивать гигантские объемы суперсложной информации оказалось позже весьма полезным в работе.

JavaScript ты выучил самостоятельно?

Да. Если есть энтузиазм, учишься очень быстро. Сейчас в связи с экономической ситуацией очень многие решили, что хотят стать программистами. Если у человека есть талант к программированию, он с легкостью найдет способ научиться самому. Просто нужно придумать реальную задачу, связанную с тем, что вам интересно, и выполнять ее: например, создать фан-сайт любимой группы. С чего начать — можно легко найти в Google. Основной обучающий ресурс сейчас, как мне кажется – GitHub. Большую часть своего обучения я провел, пытаясь читать чужой код, понять, почему он написан именно так. Также полезными будут такие ресурсы, как “Хабрахабр», DOU

Единственное критически важное требование — знание английского, без него сейчас стать хорошим разработчиком невозможно. Так что если с английским плохо, начинайте с этого.

Расскажи, с чего начинался Leaflet?

Ой, это очень долгая история. Когда у  Cogniance, где я работал, появился новый клиент – CloudMade, специализирующийся на картографии, мне стало жутко интересно, с чем предстоит работать.

У них бизнес основан на OpenStreetMap – открытой картографической базе данных. Меня идея тогда настолько поразила, что захотелось написать что-то свое. Сделал очень простенькую JavaScript-библиотеку для просмотра карт, с минимальными возможностями. Это была программа, реально написанная “на коленке”, всего несколько сот строчек.

И когда компания приехала в Киев знакомиться с командой, я им показал эту библиотеку. Так меня назначили ответственным за разработку JavaScript API сервисов компании.

Leaflet-2
Фото – Ольга Закревская

Но в итоге, когда мне поставили реальную задачу по JavaScript API, запретили делать что-то “с нуля”, мол, много рисков, поэтому нужно использовать что-то уже существующее и стабильное. Распорядились, чтобы я написал обертку для OpenLayers. У меня тогда были очень наивные представления об интерактивных картах, я думал, что это должно быть очень просто. А в OpenLayers порядка 100 000 строк кода, несколько мегабайт весит финальная сборка, документация таких размеров и настолько запутанная, что хоть вешайся. Кроме того, та библиотека была жутко тормозной.

Я жутко расстроился, что придется работать с этой глючной и сложной штукой. Но у меня до дедлайна было несколько недель, так что я никому ничего не сказал, и вместо того, чтобы заниматься оберткой, решил довести до ума свою поделку.

Завершил ее за пару недель, и когда пришел дедлайн, представил команде свою библиотеку. Они были шокированы, не могли понять, как она получилась такой быстрой. Ну и мне пришлось признаться.

А кому принадлежат права на Leaflet сейчас?

Сейчас – мне, до 2011 года – CloudMade. Получилось так, что в компании со временем мне становилось все тяжелее ее поддерживать в одиночку — библиотека была закрытой, а в компании JavaScript API не была приоритетной задачей. Я понял, что такими темпами библиотека скоро сильно устареет.

Последней каплей стало письмо стороннего разработчика, который, чтобы исправить баг в библиотеке, провел реверс инжиниринг и выслал мне патч. Я понял, что код нужно открывать, если уж людям приходится так напрягаться, чтобы помочь библиотеке. Так что я написал письмо руководству на 20 пунктов о том, почему нужно открыть код и они со мной согласились.

В итоге, прежде чем опубликовать код библиотеки, я переписал ее фактически с нуля — хотелось, чтобы код был красивым, простым и понятным. Так в 2011 году родилась библиотека Leaflet.

Кто из известных компаний или брендов использует Leaflet?

Foursquare, Pinterest, Flickr, Craigslist, GitHub, OpenStreetMap, 500px, Etsy, Roadtrippers, The Washington Post, USA Today, Financial Times, The Guardian, Wall Street Journal, National Park Service, NPR, USGS, Data.gov, Energy.gov, Mozilla, Вконтакте, Facebook, Еврокомиссия… Их на самом деле больше, я просто уже не веду учет. Недавно узнал, что ее используют в карте сайта сиквела “Парка Юрского периода” со $150 млн бюджетом.

Leaflet-3

Каждый день что-то новое появляется.

Как получилось, что Leaflet стал популярной?

Очень хотелось сделать максимально простое и быстрое решение, и людям неожиданно понравилось, подхватили, стали присылать контрибьюшены. Получилось удачно занять пустующую нишу. Люди тянутся к решениям, которые легко понять и которыми просто пользоваться.

Визуализация нескольких лет совместной разработки:

Обычно все это происходит без моего ведома, просто в какой-то момент мне пишут, мол, чувак, посмотри, там Facebook твою библиотеку использовал.

Самой первой победой стал Foursquare: они перешли на Leaflet буквально через пару месяцев после первой открытой версии.

Над ней работало достаточно большое сообщество: всего людей, которые что-либо вносили в код – около 180, активных разработчиков – трое-четверо (канал на GitHub).

Признавайся, пользователи Leaflet часто тебя хвалят? Расскажи об отзывах.

Про библиотеку не могу выделить конкретные отзывы, но пишут и говорят постоянно, и не только о ней. У меня есть один из сайтов, простенький – SunCalc.net, там можно указать свое местоположение, и сайт нарисует график движения солнца и освещения. Я уже года четыре вообще им не занимаюсь, но по поводу этого сайта мне пишут чуть ли не каждый день. Например, прислал благодарность тибетский монах – им в монастыре пригодился сервис для вычисления времени обеда.

А недавно написал 77-летний мужчина, о том, что его вдохновил мой энтузиазм по поводу JavaScript и он решил изучать программирование.

agafonkin1

Даже поделился со мной первым результатом работы: страничкой, которая вычисляет налоги для граждан США.

Пишешь какие-то еще библиотеки?

Сейчас стараюсь писать какие-то маленькие проекты, чтобы работали быстро и решали какую-то конкретную задачу. Из последних разработок – алгоритм триангуляции полигонов (задача, критически важная для 3D-приложений). Отъела очень много времени, очень стрессовая, очень тяжелая задача. Но получилась библиотека Earcut, которая весит в разы меньше, а вычисляет местами в 20 раз быстрее, чем аналоги Earcut.

IMG_9923
Фото – Ольга Закревская
Leaflet

Другой пример — библиотека для пространственной индексации RBush — самая быстрая и легковесная в своем роде, критически важная для некоторых задач в картографии.

Мобильной разработкой никогда не занимался?

Ой, это смешная история. Как-то мне на почту написали очередное письмо – гневный отзыв о том, что мое мобильное приложение на App Store не работает. Я не мог понять, о чем речь, ведь никогда мобильных приложений не писал. Оказалось, что какой-то вьетнамец по имени Huy взял SunCalc, заменил копирайт и продавал как платное приложение в App Store. Я полгода переписывался с Apple и в конце-концов его убрали.

Где работаешь сейчас, пытаются ли переманить на работу куда-то еще?

Когда увидел, что делает Mapbox, понял, что это компания моей мечты: они создают прекрасные вещи в области карт, у них работает суперклассная команда инженеров и дизайнеров, да и в целом – очень талантливые люди. В какой-то момент Mapbox решили перейти на Leaflet, и пригласили меня на спринт (поездку в штаты на две недели для работы над Leaflet вместе с их командой), а потом сразу предложили работу.

Зовут на работу более-менее постоянно. Были предложения от Facebook, Google, пару месяцев назад звали в Apple, но я всегда отказываюсь.

Leaflet-6
Пиво с менеджером Google Maps
Leaflet

Зачем мне покидать работу, где я делаю все, что хочу? Сейчас в компании flat structure, т.е. у тебя нет непосредственного начальника, никто не говорит, что надо делать. Компания просто собирает в одном месте большое количество талантливых людей c одной миссией — сделать лучшие в мире инструменты для карт — и смотрит, что из этого получится.

Кроме того, мне очень нравится, что мы пишем opensource, т.е. например, не нужно спрашивать разрешения выкладывать код в общий доступ.

Я так понимаю, тебя можно назвать адептом идеи opensource и в проприетарную компанию тебе не хотелось бы идти работать?

Да, я большой фанат опенсорса, эта работа всегда на виду, любой может пользоваться результатами твоего труда, есть ощущение комьюнити: ведь тебе пытаются помочь люди со всей планеты…

Leaflet-4
Фото – Ольга Закревская

В проприетарной компании мне было бы неинтересно. У меня есть знакомый разработчик, который был opensource-контрибьютором с очень активным графиком на GitHub. Когда ушел в Google, как отрезало: в графике полная пустота.

Тебе приходится часто летать в США. Устраивает ли тебя жизнь на две страны, думаешь ли о переезде?

Летаю в Вашингтон или Сан-Франциско четыре раза в год, по две недели. Жена жутко завидует: у нас две маленькие дочки-близняшки, так что даже такая командировка, когда можно хоть ночь поспать, считается за отпуск.

По поводу переезда вспоминается анекдот про “не путайте туризм с эмиграцией”. Когда устраивался в MapBox, сразу сказал, что переезд мне не интересен. Хотелось бы жить и растить детей в Киеве. У меня здесь друзья, родные, люди, которых я хорошо понимаю, своя музыкальная группа. Мне комфортно жить в родной стране, но, конечно, если появится опасность для семьи, придется переехать, и Mapbox обещали помочь с этим.

Расскажи о своей группе “Обійми дощу”: как заинтересовался музыкой, как удается совмещать занятия рок-музыкой и работу?

Никак не удается. Если бы удавалось, мы бы давно уже выпустили второй альбом. В Украине, если ты не “Бумбокс” и не “Океан Эльзы”, заниматься рок-музыкой невыгодно, одной музыкой не выживешь. Если ты музыкант, ты постоянно в минусе, концерт, которому удалось выйти почти в ноль, считается суперуспешным. Кстати, именно поэтому в Украине особенно активно музыкой занимаются айтишники: могут себе позволить.

Формально музыке меня никогда не учили, помню, что на уроках музыки в школе мне одноклассники говорили, что я пою как раненный лось. Мне всегда была интересна гитара, так что с 14 лет, когда стал фидошником, нашел эху, где выкладывали табулатуры “Металлики”, других любимых групп. Упорство победило и я понемногу выучился играть, а позже – петь.

Leaflet-7

Когда заканчивал школу и поступил в вуз, считал себя очень мрачным и депрессивным типом, начал писать стихи о смерти и любви, а уже в вузе попробовал положить стихи на музыку и что-то начало получаться. Единомышленников, из которых сейчас состоит группа, нашел частью в фидо, частью в вузе: наш басист – мой бывший одногруппник.

Как придумали название?

Изначально это было Rain’s Embrace. Когда решил, что буду писать песни на украинском,  – перевел название. Оно хорошо отражает мелодичность, поэтичность, атмосферу нашей музыки.

Чем еще увлекаешься?

Фитнес и силовые тренировки, тренировки с весом собственного тела. Я в какой-то момент осознал, что чтобы стать сильным и привести себя в хорошую форму, нужно просто хорошо изучить этот вопрос и систематически заниматься. У инженеров, программистов, вообще есть такая фишка: если нужно добиться чего-то нового, человек проведет глубокий анализ, прочитает сотню книг и статей о вопросе и всесторонне его изучит.

Со спортом у меня получилось точно также, как с программированием и с музыкой. Дело в том, что в школе я был очень замкнутым, молчаливым. Обычно в классе люди делятся на популярных и тех, над которыми все смеются, унижают. Вот я был во второй категории, и наверное, поэтому много лет внутри росло желание показать всем, что я чего-то стою. И бессознательно пытался добиваться высоких результатов во всем, за что бы не взялся.

agafonkin4

Примерно так я подошел и к силовым тренировкам, через какое-то время подсел на них как на наркотик, появилась зависимость от чувства прогресса, да и просто эйфория от занятий на свежем воздухе. Мне кажется, что занятия здоровьем, спортом – важная часть жизни, особенно учитывая, как мы проводим большую часть времени, скрючившись с утра до ночи за компьютером.

Из других увлечений — боевые искусства (карате), сноуборд, фотография, путешествия.

Расскажи, чем планируешь заниматься – профессионально и просто в жизни?

Планирую заниматься разработкой в Mapbox, это и правда компания моей мечты. Планирую с группой выпустить новый альбом и дальше заниматься музыкой. В личном плане мое главное дело – дочки-близняшки. Они полностью изменили мою жизнь, распорядок дня, мироощущение…

Будешь дочек мотивировать заниматься математикой или музыкой?

Буду мотивировать заниматься тем, что их увлекает, чем бы они не увлекались. Если увлекутся программированием, я им всецело помогу. Главное, чтобы росли счастливыми.