Глядя на признанных 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.
KevlarBeaver
Когда я интересовался последний раз свифтом на серверной стороне, насколько я помню, всё было очень
плохоникак. Что-то изменилось? Я могу поставить его на убунту и кодить в удобной IDE под GNU/Linux? Если да, то расскажите, как — с удовольствием в свободное время дооценю ваш недооценённый ЯП.olegchir
Хорошо, что вы заинтересовались!
Насколько знаю, со свифтом на GNU/Linux все просто замечательно. В этом и смысл. Можно скачать прямо бинарники для GNU/Linux, но также можно собрать из исходников. Сборка из исходников не только повышает безопасность, гарантируя что бинарник не пропатчен, но и повышает общий уровень вашей грамотности в используемом стеке технологий.
Кроме того, это лицензия Apache License 2.0. Это, конечно, не AGPL, но уже очень хорошо. И APL2 совместима с GPL3 (но не с GPL2), то есть можно мешать исходники между собой при создании деривативов.
В качестве IDE советую попробовать Visual Studio Code c плагином vscode-swift. У обеих лицензия MIT, которая хоть и является свободной и совместимой с GPL в одну сторону, не является копилефтной лицензией, а значит дает проприетарщикам возможность давления на вашу свободу. Подробней проблема описана на специальной странице на сайте GNU. К сожалению, хорошей IDE с лицензией GPL3 для Swift нет, поэтому придется довольствоваться VSCode.
В целом, разрабатывая свободный софт под лицензией GPL на языке Swift под операционную систему GNU с ядром Linux вы продвигаете вперед сообщество свободного программного обеспечения, и человечество в целом.
KevlarBeaver
Спасибо за столь развёрнутый ответ. Я сначала было обрадовался тому, что Вы так всё расписали, но начал читать, а в тексте — лицензии, лицензии, лицензии. Вы сёрьзно, да? По существу, конечно, тоже ответили, за это — отдельное спасибо.
Пока Вы отвечали, я сам пробежался по Интернету. И что я обнаружил, меня не очень обрадовало. Да, на сайте swift.org есть бинарники, и они под мою любимую убунту… но больше ни под что их нет (кроме MacOS).
Странно говорить, что язык недооценён, когда на оффсайте есть бинарники под один дистрибутив. А как же, например, CentOS? Тоже популярный серверный дистриб. Я уже не говорю про остальные, и про FreeBSD, и про Windows.
Кроме того, как я понял, я не могу набрать sudo apt install swift и получить поддержку этого языка на своей машине. И даже в PPA его нет. Или всё таки я ошибаюсь? Если не сложно, поправьте меня на этот счёт.
На сайте Digital Ocean я нашёл инструкцию установки именно бинарников. В конце статьи я нашёл ссылку на книгу, как оказалось, бесплатную по последней версии языка. Я обрадовался. Перешёл по ссылке и попал на сайт iTunes, где мне сообщили, что This book can be downloaded and read in Apple Books on your Mac or iOS device. Вы шутите? Для того, чтобы изучить язык и использовать его на сторонней ОС, я должен купить айпад, чтобы прочитать книгу?
Конечно, есть документация на том же swift.org, можно и ручками поставить бинарники, можно извернуться и что-то напрограммировать под Visual Studio Code… но неужели с таким подходом язык может стать популярным где-то за пределами мира Apple? Учитывая, что ему уже четыре года и он перешагнул порог четвёрной мажорной версии, а всё так, я не побоюсь сказать этого слова, плохо.
aknew
Нет, не нужно, вот она же в виде сайта docs.swift.org/swift-book, а то что об этом не упомянуто в той инструкции вопрос к ее составителям.
Хотя на самом деле я тоже отношусь к свифту на сервере весьма скептически, по крайней мере пока. Ну и заголовок у статьи, конечно, желтый, зашел посмотреть как оно там реально на сервере со Свифтом, а по факту почти все что по этой теме есть в статье уже приведено в самом заголовке
olegchir
Да, я совершенно серьезно. Это не просто лицензии — это гарантии свободности используемого вами ПО. Рекомендовать несвободный язык было бы, как бы правильней выразиться, аморально? Например, нельзя посоветовать несвободный .NET Framework для использования С#, но можно посоветовать свободный .NET Core.
Подробное описание причин лучше прочитать полностью на сайте GNU, оно составлено Ричардом Столлманом лично и является хорошим введением в вопрос.
Программное обеспечение зачастую распространяется в виде исходных кодов. Хотя эта форма выпуска может быть неприемлема, например, для детей, это вполне нормальная форма дистрибуции для взрослого человека, и тем более разработчика. Умение установить ПО, распространяемое в виде исходных кодов — один из ключевых столпов компьютерной грамотности. Более того, именно исходные коды под правильной лицензией (например, GPL3) и являются основным носителем свободности ПО.
Так что, не совсем понятно, кого и за что вы собрались винить. Вот глядите, есть мантейнер пакета для операционной системы Ubuntu GNU/Linux. Он потратил свое личное время на то, чтобы облегчить вам установку ПО. Время, которое он иначе мог бы потратить на общение с женой или ребенком. Если бы мантейнер пакета под Убунту собрал бы его неправильно, можно было бы предъявить ему некие неформальные претензии, да и то со скидкой, что вряд ли это сделано намеренно.
Но для вашей ОС CentOS GNU/Linux нет пакета. Нет того человека, который бы потратил личное время и собрал бы его. Ваши претензии к несуществующему человеку?
Вместо этого, можно было бы направить свою энергию в полезное для сообщества русло и собрать данный пакет самостоятельно, после чего поделиться им с окружающими людьми.
То, что Apple распространяет книгу с помощью ПО, не являющегося свободным — безусловно, позор. Но этого вполне можно было ждать от маркетологов коммерческой компании, это бич нашего общества.
Я всячески не рекомендую устанавливать подобное ПО, чтобы качать эту книгу. Вместо этого вы можете воспользоваться поиском по интернету, чтобы найти что-нибудь более доступное, что тоже позволит вам разобраться в Swift. Например, вот здесь опубликована отличная подборка материалов: Awesome Swift. И опубликована надо сказать, под лицензией Creative Commons Zero v1.0 Universal — одной из наиболее пермиссивных лицензий, совместимых с GPL (пользоваться коей я все равно не советую по причине, описанной в предыдущем сообщении).
Популярность — продажная девка. Не все самые лучшие языки являются одновременно самыми популярными. Одна из лучших IDE в мире, Emacs, написана на Emacs Lisp и С, и непохоже, чтобы ELisp находился на верху индекса Tiobe. Делает ли это Elisp плохим языком?
В любом случае, я старался помочь вам советом относительно выбора и использования языка, а не разводить пустопорожнюю полемику.
В завершение хочу предупредить, что операционная система CentOS GNU/Linux опасна, так как может содержать несвободные компоненты. Советую использовать только дистрибутивы, описанные на сайте FSF. Моя персональная рекомендация — Parabola GNU/Linux-libre, это дистрибутив, основанный на Arch Linux.
KevlarBeaver
Спасибо огромное за ещё один столь развёрнутый ответ. Я бы вам с радостью налепил плюсов, но у меня, как мне сообщает этот сайт почему-то не «полноправный аккаунт», так что извините :) Касательно пакетов для сторонних ОС — я считаю, этим должна заниматься сама Apple, если ей, конечно, нужно, чтобы язык таки дооценили.
И, я так понимаю, вы всё же гораздо лучше разбираетесь в лицензировании и вот этом всяком, потому, не могли бы вы ответить на такой вопрос? Если я, простой разработчик из богом забытой деревни, возьму исходники Swift, соберу пакеты под свою любимую ОС, выложу в PPA или ещё куда-нибудь — мне за это ничего не будет?