Интервью
Джесси Уилсон (Square): Никакой магии, только код
Джесси Уилсон — один из авторитетнейших евангелистов в опенсорс-среде. Бывший сотрудник Google, а ныне — программист в Square, Уилсон приложил руку к созданию ряда крайне полезных инструментов для Android-разработчиков.
Джесси Уилсон — один из авторитетнейших евангелистов в опенсорс-среде. Бывший сотрудник Google, а ныне — программист в Square, Уилсон приложил руку к созданию ряда крайне полезных инструментов для Android-разработчиков, среди которых Java-библиотеки Dagger, Gson, OkHttp, Okio, Retrofit, Moshi, фреймворк Google Guice, а так же многие другие. Роль напарника Уилсона по выступлениям с докладами часто выполняет его единомышленник и коллега по Square Джейк Уортон — так часто, что оба уже ассоциируются друг с другом.
Компания Live Typing, Android-отдел которой регулярно пользуется плодами трудов Уилсона, связалась с евангелистом и немного поговорила с ним о том, на чём стоит опенсорс-сообщество, как без особых усилий наладить свой тайм-менеджмент и что ему хочется увидеть от Android в ближайшие годы.
Когда вы поняли, что свяжете свою жизнь с программированием?
Ещё в старшей школе. Свою первую программу я написал в кабинете информатики. Это был ужасный кабинет, в котором ужасный учитель преподавал QBasic на ужасных компьютерах. Всего этого, впрочем, мне хватило для того, чтобы влюбиться в код. Помню, как я пытался написать карточную игру «Червы» до того, как нам рассказали про массивы, сортировку или перемешивание элементов массива. Можете себе представить попытки сделать колоду безо всякой структуры данных? Довольно трудно это, скажу я вам.
Как вы оказались в Android?
Я присоединился к Google Android team в 2009 году, когда они разрабатывали версию Cupcake. Я работал над Guice (фреймворк для Java-платформы), вместе с Бобом Ли (программный инженер в Google, бывший технический директор в Square), который и взял меня в команду Android. Мы трудились над библиотеками ядра Dalvik, включающими в себя всё — от таких фундаментальных вещей, как класс java.lang.String, до сложных компонентов вроде HttpURLConnection.
Работа в Square была следующим шагом?
Не сразу. С Бобом было здорово работать, но он ушёл из Google, чтобы развивать Square. Я остался работать в Google, но уже не в штаб-квартире, а в их офисе в Уотерлу в Канаде (родной город Уилсона). С Бобом мы, тем не менее, контакт не теряли.
Он вас и порекомендовал?
Точно. Когда Square решили открыть в Уотерлу офис, Боб обратился ко мне. Что тут говорить, это была невероятная возможность, за которую было грех не ухватиться.
Можете перечислить тех, кто давал вам знания и мотивировал вас? Тех, кому вы обязаны как профессионал.
Я избалован вниманием лучших программистов в мире! Джеймс Лемью, эксперт по Java UI, поддерживал меня на первых шагах в индустрии. Джошуа Блох (инженер и писатель, бывший сотрудник Sun Microsystems и Google и со-разработчик языка Java) научил меня конструировать API. Уже будучи в Google я работал с Кевином Буриллионом (программист, ведущий разработчик библиотек Google Guava, соавтор фреймворка Guice), который упорядочил мои знания о коде, а Эллиот Хьюз (программный инженер Google) показал мне, что в этом нет никакой магии, только код.
А Джейк Уортон?
О, да. Он буквально толкал меня на подвиги, добиваясь от меня лучшего кода, на который я способен.
Как вы познакомились?
Джейк и я вместе работали в Square. Начав общаться в рабочем канале #android, мы поняли, что оба восхищаемся опенсорсом и Android. В рамках Seven Days of Open Source мы вдвоём представили такие проекты, как OkHttp, Dagger, Retrofit и Picasso.
Каково быть локомотивом опенсорс-среды?
Построить здоровую опенсорс-культуру — адова работа. Ты должен собирать правильных людей, поддерживать их и вдохновлять на лучшую работу. Я не во всём согласен с другими разработчиками. Скажем, там, где одни опенсорс-проекты создаются с упором на эффективность, я предпочёл бы простоту. В таких расхождениях рождается дух соперничества, который провоцирует людей на лучшие результаты.
А что сложнее — писать программы или общаться с другими программистами?
От ситуации зависит. Иногда весело писать сложные программы, но невыносимо общаться со сложными программистами. Иногда работа над классным софтом вгоняет в тоску, а вот классные люди, наоборот, бесподобны в общении. А если им интересно что-то помимо работы — динозавры там, или технологии, или хорошие шутки, то и вовсе замечательно.
Самый трудный аспект совместной работы — это…
Слушать. Говорить — легко, писать код — легко, слушать — сложно. Знаю это по себе и борюсь с этим.
Вас не посещает мысль о том, что ваш труд стоит больше, чем просто уважение среди членов Android Open Source Project?
Делиться с другими — это самая ценная награда.
Но как можно раздавать что-то бесплатно в мире, где царят неолиберальные порядки, а поэтому всё должно приносить деньги?
Знаете, я люблю слова о деньгах, которые сказал Тим О`Райли:
Деньги — как бензин в машине: вам нужно следить за ним, иначе вы окажетесь на обочине, однако нормальная жизнь — это не путешествие по заправкам.
Я занимаюсь опенсорсом, потому что мне это нравится.
Сколько времени вы тратите на него?
Не больше, чем большинство тратит на PlayStation или Netflix: несколько часов по вечерам, когда основная работа на сегодня сделана.
Как вы распоряжаетесь рабочим временем? Я имею в виду, сколько уходит на работу, сколько — на перерывы, и т.п. И какие советы по поддержанию работоспособности вы могли бы дать?
Когда я занят кодом, я люблю нырять в него с головой на полтора часа или больше и ловить поток. По ходу дня эти погружения разбавляются всякими отвлекающими факторами, кофе-брейками, встречами и прочими мелочами, из которых состоит жизнь программного инженера. Мой отдых — в смене состояния крайней сосредоточенности на состояние крайней несосредоточенности.
В чём заключается самая сложная часть вашей работы?
Чаще всего это правильная оценка задачи. Простые на первый взгляд проекты оказываются сложными, неразрешимые проблемы — разрешимыми. Так много сил и времени порой уходит на поиски неверной проблемы! Когда мы работали над OkHttp, пришлось год боролись с потоками и буферизацией, прежде чем дойти до мысли, что нам нужно придумать Okio. Мы не видели одной проблемы, но увидев её, разом лишились всех прочих.
На что вы тратите своё свободное время?
В Super Mario Maker гоняю. Ещё играю с собаками.
А какие любимые книги, подкасты и ресурсы по программированию вообще вы могли бы посоветовать?
Есть подкаст Wait But Why, очень классный. Вообще же, на всё, что мне нравится, я скидываю ссылки в твиттер.
Не будь вы программистом и Android-евангелистом, кем бы вы были?
Мне было бы приятно заняться графическим дизайном. Я в нём не преуспел, но удовольствие от него получаю.
И последний вопрос. Чего вы ждёте от Android в следующие три года?
Только лучшего — как в плане железа, так и в плане софта. Жду аккумуляторов, с которыми я не буду беспокоиться о подзарядке; дешёвого мобильного интернета, с которым я мог бы спокойно смотреть видео, где угодно; приложений, экономящих моё время и помогающих мне стать лучше, в конце концов.
Спасибо, хороших вам проектов!