Володимир Агафонкін : « Написання коду схоже на поезію »

Володя Агафонкін - людина багатьох талантів. Він добре відомий і в IT-тусовці, як творець вельми популярною JS-бібліотеки для роботи з інтерактивними картами Leaflet , так і за її межами - як музикант, фронтмен і автор пісень київської групи "Обійми Дощу" . Про творчість, розробці та мистецтві - в нашому сьогоднішньому інтерв'ю.

- Розкажи, як все почалося, як ти став займатися розробкою.
- До того я захоплювався музикою - почалося з того, що мені захотілося зробити сайт для своєї рок-групи. І якось дуже вдало відразу пішов правильним шляхом - потрапив на сайти на зразок A List Apart , почав читати про веб- стандарти, бестаблічную верстку і т.д.


- У якому році це було?
- У 2003-2004, на перших курсах універу (ФПМ КПІ). У певному сенсі цей період був якраз переломним моментом у розвитку Web, тільки з'являлися прогресивні погляди на веб-розробку. Ну і, ймовірно, став собі прищеплювати з самого початку правильні звички.

Після того, як зробив перший сайт, подумав, що можна на цьому заробити і почав займатися фрілансом - шукати собі невеликі підробітки. На початку у мене не було портфоліо, і я знайшов тільки одну пропозицію, яке не вимагало досвіду роботи. Моя найперша зарплата, я пам'ятаю, була 125 гривень за п'ять верстаючих шаблонів. Верстав я їх, як виявилося, для якогось підприємливого студента КПІ, не маючи уявлення про те, скільки насправді коштують подібного роду послуги. Тим не менш, зверстав уважно і акуратно, і в мене з'явилося непогане портфоліо. Після цього я відразу зміг отримати замовлення за 50 доларів (а не за 5) за сторінку. Наявність портфоліо збільшило вартість робіт відразу в десять разів.

Так два роки я фріланс, а потім влаштувався віддалено в компанію XHTMLized , що займалася виключно версткою. На четвертому курсі мені прийшла пропозиція від Sonopia і я вирішив, що пора мені спробувати попрацювати повний робочий день. Влаштувався, через це майже відразу вилетів з університету (не зміг здати сесію на 4-му курсі), і перевівся на заочку. Продовжував працювати фултайм і дуже багато чому вчитися. Через два роки Sonopia, як стартап, закрився, але на основі команди, яка залишилася, з'явилася Cogniance , де я ось уже майже 5 років працюю на проекті CloudMade .

Коли вирішили створювати 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 і тепер збираєшся йти. Які причини? Чи це ще не офіційна інформація?
- Скоро стане офіційною. Йду в компанію на позицію 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, матан рулить!". У підсумку через якийсь час Коля купив собі бас-гітару і почав активно вчитися, врешті-решт присоед до нас в якості басиста - виявив завзятість і освоїв інструмент.




Поступово писалися пісні, почали виступати в клубах, приєднувалися інших учасники, дуже неспішно. У результаті у нас зібралася команда із семи осіб - фактично, сім'я, всі один одному хороші друзі, з дуже приємною атмосферою в колективі. Вже відчуваєш, що життя прожив не даремно, чогось домігся - випустив повноформатний альбом, торкнувся багатьох серця і в Україні, і за її межами. Тому хочеться викладатися далі.


- А ти ніколи не проводив якісь паралелі між музикою та іншими своїми заняттями?
- Для мене написання коду - це теж досить творча робота, тому що код ти по суті пишеш не стільки для машини, скільки для себе і для інших. У цьому проявляються ті ж таланти, ті ж принципи, які я можу використовувати, припустимо, для написання текстів пісень або віршів. Написання коду дуже схоже на поезію, тому що завдання полягає в тому, щоб короткими, ємними фразами виражати важливий, глибокий і разом з тим зрозумілий сенс. У коді я намагаюся керуватися тим же принципом.

В цілому, дуже добре, що в мене хобі і основна робота не перетинаються, тому що я можу продовжувати займатися музикою, не думаючи про фінансову сторону.

Опубліковано: 25/01/13 @ 08:39
Розділ Різне

Рекомендуємо:

Дайджест : інтерв'ю з 500px , Firefox Phone , « таємниця » київських сервісів таксі
True Launch Bar - супер панель швидкого запуску Windows для інтернетчиків
Дайджест цікавих вакансій № 69
5 незвичайних , але ефективних способів розміщення реклами в статтях
Успішні кейси просування в Яндексі . Частина 9 . Авто - дорвей , прийнятий в РМЯ