Владимир Агафонкин: «Написание кода похоже на поэзию»
Володя Агафонкин — человек многих талантов. Он хорошо известен и в IT-тусовке, как создатель весьма популярной JS-библиотеки для работы с интерактивными картами Leaflet, так и за её пределами — как музыкант, фронтмен и автор песен киевской группы «Обійми Дощу». О творчестве, разработке и искусстве — в нашем сегодняшнем интервью.
— Расскажи, как все началось, как ты стал заниматься разработкой.
— До того я увлекался музыкой — началось с того, что мне захотелось сделать сайт для своей рок-группы. И как-то очень удачно сразу пошёл правильным путём — попал на сайты вроде A List Apart, начал читать про веб-стандарты, бестабличную вёрстку и т.д.
— В
После того, как сделал первый сайт, подумал, что можно на этом заработать и начал заниматься фрилансом — искать себе небольшие подработки. В начале у меня не было портфолио, и я нашёл только одно предложение, которое не требовало опыта работы. Моя самая первая зарплата, я помню, была 125 гривен за пять свёрстанных шаблонов. Верстал я их, как оказалось, для какого-то предприимчивого студента КПИ, не имея представления о том, сколько на самом деле стоят подобного рода услуги. Тем не менее, сверстал внимательно и аккуратно, и у меня появилось неплохое портфолио. После этого я сразу смог получить заказ за 50 долларов (а не за 5) за страничку. Наличие портфолио увеличило стоимость работ сразу в десять раз.
Так два года я фрилансил, а затем устроился удалённо в компанию XHTMLized, занимавшуюся исключительно вёрсткой. На четвертом курсе мне пришло предложение от Sonopia и я решил, что пора мне попробовать поработать полный рабочий день. Устроился, из-за этого почти сразу вылетел из университета (не смог сдать сессию на
Когда решили создавать Cogniance и ещё оставалось буквально пару недель до того, как приедут заказчики из будущего клиента — CloudMade — и начнётся знакомство, я решил проявить инициативу и начал изучать то, чем они занимаются, что им могло бы пригодиться. И к их приезду написал прототип библиотеки для карт на JavaScript. Это их приятно удивило, и с самого начала хорошо заладились отношения.
Фактически этот прототип со временем превратился в CloudMade JavaScript API, который был изначально закрытым кодом. И спустя несколько лет, уже будучи вовлечённым и в другие проекты, я понял, что в таком виде API не сможет дальше развиваться должным образом и конкурировать с другими решениями, главным образом из-за отсутствия поддержки сообщества — работал я над ним фактически один. И в итоге предрожил топ-менеджменту CloudMade идею выпустить на основе этого API open-source-библиотеку, тщательно ее аргументировав. Они предложение рассмотрели, подумали и согласились.
Сначала я собирался просто выделить ядро из существующего JS API и выпустить, но получилось так, что практически все с нуля переписал. Так родилась библиотека Leaflet, которая вот уже два с половиной года разрабатывается и, фактически, стала лучшим open-source решением для карт в интернете, и используется такими гигантами, как Foursquare, Flickr, Craigslist, IGN, Washington Post и множеством других компаний по всему миру. Я и сам не ожидал, что будет такой сильный отклик.
— Ты на чистом JS писал или использовал фреймворки?
— Фреймворки я, конечно, изучал постоянно. Но мне в первую очередь было интересно, как они внутри устроены. И везде, где можно было обойтись без них, я старался обходиться. Это поддерживало меня в «тонусе». Понятное дело, что когда ты работаешь над каким-то серьёзным проектом не один, то имеет смысл применять инструменты, которыми все умеют пользоваться, чтобы всем было удобно. Поэтому такие вещи, как jQuery, очень помогают. А если это более индивидуальные проекты или проекты, в которых не предполагается большого количества работников, то можно поэкспериментировать, применить какие-то другие подходы. В прошлом мне всегда нравился MooTools, потому что был более объектно-ориентированный, в отличие от других. Но мне приходилось работать практически со всеми популярными фреймворками — jQuery и jQuery UI, Prototype/Scriptaculous, YUI, Dojo...
Когда начинаешь понимать их основные принципы и устройство, то совершенно не важно, какой фреймворк используешь. Все хорошие специалисты намного менее ревностно относятся к выбору фреймворков, чем начинающие.
— Ты, насколько знаю, имеешь опыт выступлений на различных конференциях, можешь поделиться?
— Я проводил как-то раз шестичасовой мастер-класс по JavaScript. Это был для меня очень классный опыт — одно дело, когда ты просто применяешь технологию, а другое, когда ты думаешь о том, как её объяснить другим. В эти моменты ты начинаешь глубже ее понимать.
Я слышал один хороший совет, что на конференциях очень полезно выступать с темой доклада, которая тебе известна, но не досконально. Это, во-первых, даёт возможность тебе самому в этом глубоко разобраться, а во-вторых, ты не настолько предубеждён, чтобы рассказывать то, что для тебя очень естественно и понятно, а для аудитории может быть непонятно. Поэтому конференции и вообще выступления в роли спикера — это очень полезно именно для докладчика.
Ну и тема должна вызывать у тебя самого энтузиазм. Если ты увлечён чем-то, тебе хочется поделиться своими открытиями, то это всегда видно со стороны и такие доклады вызывают очень положительную реакцию. А в плане общего участия — мне всегда было более ценно именно общение с аудиторией, чем сами доклады. На таких мероприятиях собирается очень много хороших людей и всегда интересно с ними пересечься, опыт у них перенять, ну и вообще узнать, как дела.
— Какие доклады ты читал в последнее время?
— Последний мой доклад был впервые на английском языке. Я делал онлайн-презентацию Leaflet для Eclipse Foundation. Просто рассказывать о возможностях библиотеки было бы скучно и банально, поэтому я решил вместо этого рассказать, почему, по моему мнению, библиотека стала настолько популярной за такое короткое время, поделиться базовыми идеями и принципами, которые я заложил в неё, и которые отличают ее от подобных решений. Это дало мне возможность как-то переосмыслить ценности, получить более чёткое понимание того, как я библиотеку разрабатываю и для кого, и это было очень полезно. С этим же докладом, но на русском, выступал перед этим в Киеве (KyivJS) и Москве (GisConf).
Еще в прошлом году делал доклад на конференции Яндекса (YaС 2012) о Progressive Enhancement. Это подход к разработке, когда ты не пытаешься сделать во всех браузерах одинаково, а разрабатываешь приложения и веб-сайты исходя из того, что этот браузер может. Базовый принцип в том, что ты сначала реализуешь совсем просто, как это все браузеры понимают, даже старые, потом добавляешь какие-то вещи, которые понимает менее узкий круг браузеров, чтобы улучшить experience пользователя, потом добавляешь совсем передовые возможности или украшательства. И таким образом строишь приложение, чтобы оно оставалось полностью доступным для любого браузера, но при этом ты мог использовать любые возможности, даже самые экспериментальные, без каких либо опасений.
— А как же совместимость, соmpatibility?
Требование абсолютной совместимости исходит из ложного предположения, что приложения должны работать одинаково во всех браузерах. На самом деле, если базовая функциональность обеспечена, то одинаковость уже не имеет значения. Нужно думать о том, как улучшить experience пользователя в зависимости от того, какой у него браузер, а не о том, как сделать, чтобы было одинаково. Пользователю всё равно. Скажем, если у него IE6, ему будет неважно, как это сделано в других браузерах. Если там не будет закругленых уголков, каких-то красивых анимаций, то он все равно получит информацию, за которой пришел.
Зато работать всё будет быстро и стабильно — fall-back’и для старых браузеров имеют свою цену. И разработчикам намного проще. Это, конечно, идея, с которой согласны не все компании. Но платформ становится всё больше, появляются новые мобильные гаджеты, планшеты, даже интернет на телевизорах и холодильниках — чем больше у нас различных устройств, которые употребляют контент, тем больше нужно отходить от устаревших пониманий того, как нужно разрабатывать приложения и приходить к новым концепциям.
— Но это выходит путь в сторону от унификаций?
— Да, конечно. Какая может быть унификация, если у нас такое разнообразие девайсов, которые созданы совершенно для разных задач, и у которых разные возможности? Подводить всех под одну гребёнку не имеет смысла. Унификация тут происходит в области используемых технологий, а не внешнего вида сайта.
— Ты чуть ли не шесть лет проработал в Cogniance и теперь собираешься уходить. Каковы причины? Или это еще не официальная информация?
— Скоро станет официальной. Ухожу в компанию Universal Mind на позицию Principal Architect. И дело не в каких-то проблемах Cogniance — я безмерно ценю весь тот опыт, который получил здесь и всех людей, с которыми мне довелось работать и общаться. Я бы с радостью продолжал там работать и дальше, но иногда в жизни появляются такие предложения, от которых трудно отказаться и возможности, упустив которые, будешь жалеть. А как известно, лучше сделать и жалеть, чем не сделать и жалеть.
Кроме этого у меня ещё в жизни ни разу не было опыта смены работы. Я как устроился на полный рабочий день, так по сути шесть лет и работал в одном месте. В этом случае нет возможности получить какую-то другую перспективу на разработку продуктов, посмотреть на эти вещи с другой стороны.
Не исключено, что я когда-нибудь вернусь, потому что по-прежнему считаю, что Cogniance — это, наверное, лучшая IT-компания в Украине и тут работают самые лучшие люди. И я по-прежнему буду с ними связан, буду поддерживать отношения, консультировать и при необходимости помогать с какими-то задачами.
Зато у меня наконец-то появилась возможность работать над своей библиотекой. Т.е. то, что было для меня в последние годы очень большим увлечениям, то, чем я занимался в основном в нерабочее время, превращается для меня в основную работу и это невероятно здорово.
— То есть ты будешь заниматься open-source за деньги?
— Да. Получается, что когда компания нанимает человека, который сделал очень большой вклад в open-source или создал какую-то важную библиотеку, им интересен прежде всего его опыт. Они видят, что этот опыт им очень сильно пригодится в каких-то проектах. В данном случае в той компании, в которой я буду работать, есть ряд проектов, которые либо уже используют мою библиотеку, либо заинтересованы в переходе на неё, и соотвественно компания готова вкладывать ресурсы в ее развитие.
Очень часто у людей возникает вопрос: «Зачем заниматься open-source, тратить своё свободное время, силы?». Вот так случилось, что у меня вышел очень хороший пример того, как благодаря open-source вывести свою карьеру на совершенно новый уровень.
Сейчас хорошие компании, когда нанимают сотрудников, в первую очередь смотрят не на то, что ты написал в LinkedIn, — они просят ссылку на твой GitHub-профиль и смотрят, что ты делаешь для себя и какой код пишешь. В этом плане очень показательным был случай, когда у меня было собеседование с представителем одной из компаний, который сказал примерно следующее — «Обычно на собеседованиях я задаю какие-то технические вопросы. Но в данном случае я совершенно растерян, не знаю, что тебя спрашивать, потому что настолько начитался твоего кода, что очень хорошо понимаю, какими ты принципами и идеями руководствуешься, как ты пишешь код, какими ты владеешь технологиями. Создается ощущение, что я с тобой уже год проработал.».
Сейчас GitHub — ключевой инструмент в плане карьеры. Он публичный, каждый может видеть, как и что ты делаешь, при этом не только конечный результат, но и процесс: как ты пишешь код, реагируешь на баг-репорты, как общаешься с людьми, которые вовлечены в проект, как комментируешь код контрибьюторов. Это тоже даёт очень хорошее понимание того, какой ты человек и специалист.
А если получается создать действительно что-то значимое, то это выводит тебя на мировой уровень. Когда тебя признают и уважают профессионалы со всех уголков мира, это очень приятно, это вдохновляет. К тому же это возможность перенять опыт совершенно разных людей, не быть замкнутым в кругу своей компании, а постоянно расширять горизонт.
К тому же, когда ты постоянно занимаешься open-source, то у тебя совершенно нет каких-либо ограничений: какие технологии применять, что выгодно для компании по финансовым соображениям, что невыгодно, есть ли технические ограничения. Ты исходишь из того, что тебе интересно, во что готов вкладываться, экспериментировать, использовать самые новые технологии, делать всё, что угодно. Это сразу ставит твое техническое развитие на совершенно новый уровень. Ты получаешь такой опыт, который, не занимаясь open-source, не мог бы получать. Поэтому сейчас практически все специалисты высокого профиля, которых я знаю, занимаются open-source разработкой, либо контрибьютят в какие-то проекты, либо ведут свои. Всегда может случиться так, что в какой-то момент тебя наймут делать то, что ты изначально делал для себя из чистого интереса.
— Ты в самом начале упомянул, что разработкой начал заниматься позже, чем музыкой. А музыкой-то когда?
— Я рано увлёкся гитарой, лет в 12 примерно. Базовым аккордам меня научила мама, которая тоже поёт под гитару. Дальше я уже взял обучение в свои руки, находил на просторах Фидо табулатуры своей любимой Металлики, целыми днями их учил, играл. Позже я заинтересовался написанием музыки. Начал писать в MIDI на компьютере, покупал на Петровке диски с программами типа Cakewalk и т.д. Но, к стыду признаться, даже несмотря на то, что я автор большинства песен в своей группе, я практически не знаю нот. Сейчас мне уже приходится их осваивать, потому что в группе семь человек и нужно иметь с ними какой-то общий язык. Но на самом деле для написания музыки это не важно — это всего лишь форма записи. Музыка пишется в голове, а не на бумаге.
Группа оформляться начала где-то в 2004 году, когда я нашёл единомышленников. Сначала через Фидо познакомился с человеком, который решил мне помочь сделать домашнюю запись моих первых песен — ему очень понравилась эта музыка. Сейчас это наш гитарист — Лёша Катрук. А в КПИ я познакомился с нашим будущим басистом, тоже соавтором песен, Колей Кривоносом, который изначально вообще не был музыкантом, и группой заинтересовался ввиду того, что хотел снять любительский клип на одну из песен. Он увлекался любительским видеомонтажом и решил попробовать свои силы. Мы сняли клип на песню «Мертве дерево і вітер», который до сих пор гуляет по просторам КПИ — его все помнят за мелькнувшую в кадре надпись на заборе «XYZ, матан рулит!». В итоге через какое-то время Коля купил себе бас-гитару и начал активно учиться, в конце концов присоедившись к нам в качестве басиста — проявил упорство и освоил инструмент.
— А ты никогда не проводил некие параллели между музыкой и другими своими занятиями?
— Для меня написание кода — это тоже достаточно творческая работа, потому что код ты по сути пишешь не столько для машины, сколько для себя и для других. В этом проявляются те же таланты, те же принципы, которые я могу использовать, допустим, для написания текстов песен или стихов.
Написание кода очень похоже на поэзию, потому что задача состоит в том, чтобы короткими, ёмкими фразами выражать важный, глубокий и вместе с тем понятный смысл. В коде я стараюсь руководствоваться тем же принципом.
В целом, очень хорошо, что у меня хобби и основная работа не пересекаются, потому что я могу продолжать заниматься музыкой, не думая о финансовой стороне. Заработать в Украине музыкой невероятно тяжело, это под силу только единицам. Для этого нужно совсем по-другому подходить к музыке, а я могу заниматься этим просто из вдохновения, ради удовольствия. В то время как основная работа — это программирование, то, что приносит заработок.
— И как ты умудряешься все это совмещать — основную работу, работу над open-source проектом, репетиции, выступления и так далее?
— На самом деле, когда это интересно, когда это увлекает, то это не так уж и тяжело. У каждого человека есть увлечения, но разные приоритеты. Кому-то интересно целыми вечерами просто валяться на диване и пить пиво. Я, допустим, трачу несколько вечеров в неделю для того, чтобы поиграть со своей группой. Это всегда интересно, увлекает, и я жду такого дня. Наверное, я по натуре своей увлекающийся человек — не могу просто так сидеть и ничего не делать, мне хочется всегда что-то создавать, чем-то заниматься, экспериментировать с чем-то, поэтому мне это даётся естественно.
Но в целом, если ты действительно нашёл для себя то, что ты любишь, что тебя увлекает, и ты готов вкладывать силы, то вопрос времени не стоит — здесь более важна расстановка приоритетов.
Для меня приоритет музыки выше, чем каких-то более мелких задач. Конечно, иногда настолько устаёшь, что хочется просто два дня проваляться до вечера и вообще ничего не делать, просто тупить, смотреть сериалы и все. Но в целом, времени хватает.
— Спасибо!
Все про українське ІТ в телеграмі — підписуйтеся на канал DOU
46 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.