«Server-side Swift недооценён»: интервью с Полом Хадсоном
Глядя на признанных IT-экспертов — с их подробными книгами, уверенными докладами и стройными блог-постами — можно ощутить их какими-то особенными существами, которые знают в своей области вообще всё, никогда не волнуются перед выходом на сцену и родились с клавиатурой в руках. Но стоит поговорить с таким человеком, как обнаруживаешь, что при своих огромных знаниях он вполне себе живой.
Пол Хадсон известен как эксперт в Swift и iOS. Сайт Hacking with Swift, целый ряд книг, доклады на конференциях вроде dotSwift и SwiftConf, твиттер-аккаунт с 17 000 фолловеров, YouTube-канал — это всё он. И мы с ним поговорили: от того, с чего он начинал, до советов, которые он может дать начинающим спикерам/блогерам.
— Вы широко известны в iOS-сообществе, но со стороны может быть неочевидно, чем именно занимаетесь. Работаете ли вы на себя или в какой-либо компании?
— Моя основная работа — написание книг. Таких людей, как мне кажется, становится всё меньше и меньше. Всё моё рабочее время занимает Swift: я либо пишу на нём, либо пишу о нём. И я в восторге от этого, мне очень нравится учиться новым вещам, экспериментировать, чинить последствия своих экспериментов, а потом писать о том, чему я научился.
— Как вы начали заниматься разработкой под iOS?
— В то время iOS ещё называлась iPhone OS. У меня было приложение Flashzilla, соответствующее моим тогдашним личным интересам: оно показывало карточки на разны языках, и вы видели слово на английском, а потом запоминали перевод на другие (французский, испанский, японский и латынь). Apple тогда не приняли это приложение в App Store из-за того, что в его названии было слово «Flash», а они тогда ещё нервничали из-за Adobe Flash — ощущаете, как давно это было!
— Если взглянуть на ваши книги или темы ваших докладов, возникнет ощущение, что вы знаете о разработке под iOS вообще всё. Остались ли ещё темы, в которые вы хотели бы углубиться?
— Я не думаю, что есть хоть один человек, который знал бы всё о разработке под iOS. Сомневаюсь, что есть кто-либо, кто знает хотя бы 25% — я точно столького не знаю. Благодаря тому, что написание книг — моё основное занятие, я могу исследовать любые технологии, которые мне интересны. Например, когда появились Siri Shortcuts, я настолько был ими захвачен, что быстро стал большим активистом этой технологии. Это воодушевление неизбежно проникает в мои книги, потому что мне хочется делиться им с другими. Есть много тем, которые я хотел бы глубже изучить, и я надеюсь, что через месяц-другой я смогу об этом рассказать.
— На сайте Hacking with Swift написано, что вы участвовали в разработке более 100 мобильных приложений. Это впечатляющее число —, а можете рассказать о каком-то конкретном проекте, ставшем для вас особо интересным и ценным?
— На самом деле число выше: в том подсчёте учитываются только мои личные проекты, над которыми я работал в свободное время. А вообще самой интересной была моя работа с UBS в Швейцарии. Мне нравилось, насколько внимательно они относились к деталям: они хотели, чтобы всё функционировало гладко, и исходили в первую очередь из качества, а не бюджетных соображений. Соответствовать их ожиданиям зачастую было очень непросто, но мне это только нравилось: такое требовательное отношение помогает расти.
— Также на сайте сказано, что в течение восьми лет вы занимались компьютерной журналистикой. А о чём вы тогда писали и где можно найти ваши статьи?
— Я писал о многих темах и публиковался во многих журналах, но в основном мои статьи выходили в одном очень специализированном и гиковом журнале под названием Linux Format. Вначале я редактировал обзоры, затем меня сделали заместителем редактора и, наконец, редактором. Мне очень нравилась моя работа: я знакомился с самыми передовыми компьютерными технологиями, отбирал самое яркое и рассказывал читателям во всём мире. Кстати говоря, у этого журнала есть русскоязычная версия, и она по-прежнему выходит.
— Сегодня многие считают, что разработчику может быть полезно для карьеры писать статьи или вести блог. Однако есть и противоположное мнение, что это никак не помогает профессиональному росту. А вы как считаете? Когда разработчику становится важно стать автором?
— Я думаю, что писать и говорить о своей работе может быть очень полезно.
Во-первых, это помогает многое для себя прояснить. Если вы решили написать в блоге (или рассказать со сцены) о GCD, Core ML, Siri Shortcuts или чём-либо ещё, вы должны быть уверены, что действительно изучили проблему во всей её полноте. Это мотивирует вас провести дополнительные исследования, поэкспериментировать, чтобы разобраться как можно лучше.
Во-вторых, те статьи, которые вы напишете, послужат прекрасной документацией для вас самих в будущем, когда вы перейдёте к другой проблеме и забудете всё о том, чем столь усердно занимаетесь сейчас. Мы способны поддерживать свою специализацию лишь непродолжительное время, а когда мы перестаём посвящать чему-либо всё своё время, у нас быстро возникает ощущение, что мы уже не квалифицированы в этом вопросе. В этом нет ничего страшного, это вполне естественно, и здесь вам как раз может помочь ваш блог — прочитав свою статью, вы быстро вспомните то, над чем уже работали.
В-третьих, ваш блог или выступления с докладами могут помочь вам обрести большую известность в сообществе: или потому что вы создали нечто полезное, что стало широко известным, или потому что продемонстрировали наличие усердия, силы воли и новаторства, необходимые для создания чего-то подобного.
При этом я прекрасно понимаю, что в нашем сообществе есть много людей, которые не могут или не хотят вести блог или выступать с докладами, потому что у них есть семьи и другие дела. Некоторым людям хочется полной и интересной жизни помимо работы, и после 5 часов они не хотят думать о коде. Такие люди тоже важны для нашего сообщества, и, на мой взгляд, несправедливо говорить, что кто-то недостаточно увлечён программированием, просто потому что у них нет блога. Нам всем будет значительно лучше без этой дискриминации.
— У ваших аккаунтов в Twitter и GitHub юзернейм «twostraws» («двесоломинки»). Откуда оно взялось?
— Это вопрос, который мне задают чаще всего! Когда я был ещё ребёнком, мои родители были очень бедными. Поход в McDonalds был для нас небольшим праздником, и я всегда брал две соломинки для своего молочного коктейля, чтобы взять от этого события всё. Такого рода привычки, которые мы вырабатываем в детстве, остаются у нас на всю жизнь — даже сегодня у меня есть странная непроизвольная потребность в двух соломинках.
— Одна из ваших книг называется «Server-Side Swift». Что вы думаете о нынешних перспективах Swift как серверного языка?
— Я считаю, что Swift недооценён как серверный язык в нашем сообществе — он используется значительно чаще, чем это обычно считается. Многие пробуют писать на нём из любопытства и обнаруживают, что навыки разработки на Swift применимы и к веб-разработке. Это открывает очень много возможностей.
— Ключевой вопрос по поводу Swift как языка разработки бэкенда — это прошёл ли он проверку в продакшне. Что вы можете об этом рассказать?
— Некоторые крупные компании, такие как Mercedes Benz или ING, уже используют Swift в продакшне на серверах, а прошло всего только несколько лет.
— Вы выступали на множестве различных конференций — как вы впервые попробовали себя в роли докладчика? Что бы вы рекомендовали разработчикам, которые готовятся к своему первому докладу?
— Первое время все мои доклады были внутри моей компании, первое публичное выступление было на Forward Swift 2016 — там я руководил шестидневными семинарами, следующими один за другим. Это был очень непростой первый опыт, я бы не рекомендовал никому с этого начинать. Мне нравится делать публичные выступления, и с тех пор у меня их было множество.
Если вы думаете, как сделать свой первый доклад, то я бы рекомендовал выбрать небольшую тему, которая вас увлекает, или, по крайней мере, в которой у вас есть опыт — с ней вы можете выступить на какой-нибудь местной встрече. Это поможет вам набраться уверенности в себе, после чего можно поучаствовать и в более крупном мероприятии. Вы можете рассказать, чему вы научились со Swift и какие сделали ошибки — доклады по этой теме всегда полезны. Если начинать отстаивать позицию по поводу MVVM / MVC или TDD / BDD, то кто-то может с вами не согласиться, но когда вы рассказываете о своём опыте, о том, что у вас работало, а что не работало — с чем тут можно спорить?
— На вашем сайте написано, что вы работаете не только со Swift, но и с Java, C# и другими языками. Скажите, если программист хочет профессионально расти за пределами iOS, чему стоит учиться?
— На моём сайте об этом написано, потому что, на мой взгляд, для программиста слишком легко познакомиться с одним языком, одной платформой и одной IDE и считать, что они выбрали «самое лучшее». Я не думаю, что существует лучший язык, лучшая платформа или лучшая IDE. Если вы потратите время и на Python, и на C#, и на JavaScript — да-да, JavaScript — вас обязательно что-нибудь привлечёт в каждом из этих языков, — благодаря этому вы вырастете как программист. В своё время я занимался разработкой игр под Xbox 360, и меня поразило то, насколько красивые API сделала Microsoft. Некоторые из них я потом портировал под Linux при помощи Python и OpenGL — мне хотелось, чтобы другие тоже могли с ними поработать.
Это не значит, что надо быть специалистом во всех областях, которые я сейчас упомянул — я не уверен, что это вообще возможно. Но по меньшей мере познакомиться с ними стоит — поинтересуйтесь, что так будоражит людей, которые бурно обсуждают React, это даст вам новые силы для работы со Swift и поможет совершенствовать себя.
— Были ли вы когда-либо раньше в России?
— Да, и мне очень понравилось. Я был в Москве, Великом Новгороде и Санкт-Петербурге, и на меня произвела большое впечатление архитектура в этих городах. К тому же мой интерес подпитывал тот факт, что оттуда родом мой любимый автор — Владимир Набоков.
Скоро Пол окажется в России снова: он выступит на нашей конференции Mobius (Москва, 8–9 декабря). И, как ни удивительно, его доклад будет про Swift (а конкретнее — о том, как с помощью определённых ограничений начать писать код умнее и быстрее). А кроме этого, на Mobius будет и много другого для мобильных разработчиков — как iOS, так и Android.