Чтобы по-настоящему держать руку на пульсе индустрии, требуется прикладывать немало усилий: внимательно следить и за официальными техническими анонсами, и за неформальными настроениями в сообществе.
В случае с iOS-разработкой эти усилия прикладывает Александр Зимин. С одной стороны, он настолько активно смотрел видеозаписи сессий WWDC 2017, что недавно даже составил для всех гид по ним. С другой, он организует встречи CocoaHeads, выступает на различных конференциях, а на приближающейся московской Mobius ещё и входит в программный комитет — то есть очень много контактирует с сообществом и видит, чем оно живёт.
Поэтому сейчас, когда неумолимо приближаются релизы iOS 11 и Swift 4, мы решили расспросить Александра о текущем состоянии iOS-разработки сразу с двух ракурсов: и «что происходит с технологиями», и «что происходит с людьми».
— Вступительный вопрос: сколько всего приложений установлено на твоём айфоне?
— В районе 200. При этом раз в полтора-два месяца я занимаюсь чисткой тех, которые не использовал в течение этих двух месяцев. И в то же время периодически у меня добавляются новые. То есть варьируется где-то от 175 до 225.
— Пост по следам WWDC опубликован недавно, когда с мероприятия прошло уже больше месяца. Насколько эта тема сейчас актуальна для сообщества — интерес подостыл, или наоборот, вот сейчас с появлением стабильных бет iOS 11 все и начинают разбираться на практике?
— Я бы разбил разработчиков на несколько групп. Первая вообще далека от WWDC, ей никогда не интересны новинки. Тут особо нечего обсуждать, им неинтересно — ну и хорошо, у них там свои интересы.
Вторая группа — те, кто следуют указаниям Apple и поддерживают последние две операционные системы. Как я указал в конце своей статьи, они сейчас смотрят WWDC предыдущего года. Потому что если при выходе iOS 11 они выкинут поддержку iOS 9, будут поддерживать iOS 10 и выше, значит, смогут использовать во всей красе те нововведения, которые показали год назад.
Есть разработчики собственных приложений, которые хотели бы выпустить что-то новое, интересное, связанное с дополненной реальностью и машинным обучением — такие изучали материалы WWDC с первых же дней. Потому что тут ты либо успеешь к релизу, либо не успеешь. И у этих разработчиков (многих таких я знаю лично) есть свои проекты, которые они уже месяц пишут, а в сентябре хотят показать миру. В основном связанные с дополненной реальностью.
Ну и если говорить о компаниях, то для них очень важно, чтобы Apple поддерживали их, добавляли на главную страницу, писали про них. А один из самых простых способов этого добиться — это поддерживать последние технологии от Apple. Поэтому разработчики крупных компаний как раз сейчас начинают смотреть, что было представлено на WWDC, чтобы за август реализовать и получить фичеринг от Apple. Ну и действительно, беты стали довольно стабильными, поэтому сейчас уже есть смысл ставить их на девайсы.
— А насколько этот WWDC своими анонсами впечатлил iOS-сообщество?
— Он довольно сильно удивил многих разработчиков. Потому что было мнение, что в сфере машинного обучения или дополненной реальности Apple работает исключительно в экспериментальных лабораториях, да еще и в маленьком объёме. И если они их и представят, то это будет с большим запозданием. А тут в Apple взяли и представили множество новых технологий (причём их определение объектов в AR без датчиков одно из самых точных на рынке), в iOS 11 на этом акцент куда больший, чем был в iOS 10.
Но, с другой стороны, эти технологии сейчас довольно сырые. В случае с CoreML, например, одна из уязвимых сторон оказалась в возможности скачать твою модель с девайса. То есть, если ты сделал какую-то уникальную модель машинного обучения и добавил её в приложение через этот формат от Apple, то любой человек может её оттуда взять. Сейчас в новых бетах конкретно ситуация с CoreML ситуация становится лучше, но в целом early adopters сталкиваются со сложностями.
— А насколько изменилось что-то для тех разработчиков, которые ни в какое машинное обучение лезть не собираются, а делают какое-то типовое приложение?
— В iOS есть свои изменения и для них. Одно из явных — это очень быстрое заполнения пароля, и очень многим разработчикам с авторизацией в приложениях стоит это поддержать. Под это на WWDC была целая сессия выделена. Или, например, Drag and Drop — если приложение поддерживает iPad и работу с данными, то скорее всего, есть смысл попробовать.
Еще одним интересным нововведением стал Dynamic Type для сторонних шрифтов (это когда человек сам выбирает размер шрифта, удобный ему, а приложения подстраиваются). Сторонние разработчики игнорировали эту функциональность (хотя в мире и много слабовидящих людей), так как использовали сторонние шрифты, теперь ситуация может измениться.
Но если с iOS все понятно, то в Xcode в этот раз очень много нововведений. На мой взгляд, это один из самых больших апдейтов за последние годы.
— И если в случае с iOS некоторые только через год посмотрят на новинки 11-й версии, то вот Xcode обновить стоит всем прямо сейчас, и любой почувствует улучшения?
— Да. Они сильно его ускорили, много чего переписали с нуля. Я сейчас как раз сижу сразу в двух Xcode разных версий, и, по моим ощущениям, новая куда быстрее.
Также многие разработчики рады, что появился рефакторинг, в Swift этого не хватало. Если кто-то хотел переименовать функцию или класс, или решить какие-то более комплексные задачи, то приходилось либо использовать сторонние инструменты вроде AppCode, либо руками это делать. Никому не нравится рутинная работа.
И самым интересным, на мой взгляд, стало то, что теперь на Xcode можно писать свои расширения, которые будут поддерживать дополнительные действия с вашим кодом. И это открывает сразу простор для кастомных рефакторингов (вроде упрощения большого if-else в тернарный оператор, если там мало кода). Теперь у разработчиков может быть меньше поводов перейти на AppCode.
— Про AppCode, кстати, любопытно, что сейчас в сообществе с его использованием. Сложно конкурировать с IDE от главного вендора — насколько у JetBrains получается это сделать, и чем именно удаётся привлечь разработчиков?
— Я сам с AppCode работал довольно мало, но вижу, что есть своя каста разработчиков, которые его используют. Обычно это advanced-разработчики, которым не хватает каких-то функций в Xcode: сложных кастомных скриптов, или того же рефакторинга, или, что интересно, в AppCode (с помощью Upsource) встроены pull request-ревью, да и в целом контроль версий хорошо устроен, поэтому можно прям из IDE проверять чужие ветки, чужие PR.
Конечно, многим разработчикам не хочется переходить на новые инструменты, потому что Apple для них уже сделали Xcode, он бесплатный, везде разрекламирован, сразу беты поддерживает. Но, в моём представлении, идеальный вариант — это когда ты комбинируешь два инструмента. Это сложно, но, например, используешь Xcode, когда нужно протестировать будущие беты, а AppCode — когда проверяешь чужие ветки.
— Приближается Swift 4. В чём его технические изменения, несложно нагуглить, а спросить хочется о другом: что сообщество ощущает по его поводу? Жаждет поскорее перейти, или, наоборот, после болезненного перехода к третьему теперь «дует на воду»?
— Ну, переход на 4.0 должен быть безболезненным. Появляется Swift 3.2, который почти не отличается от текущего Swift 3.1.1, и в то же время работает со Swift 4.0. То есть теперь не должно возникнуть знаменитой проблемы, когда какая-то сторонняя библиотека, написанная на Swift, которую вы держите в проекте, не поддерживает последнюю версию, и вы не знаете, как вам поступить — не дописывать же за автора. В моём представлении, переход на Swift 4.0 не займёт больше часа или двух.
Так что особых опасений нет, но при этом ситуация вокруг нового Swift в сообществе такая: о нём попросту почти не говорят. Из-за того, что его изменения «под капотом», незаметные для тех, кто пользуется Swift. Они связаны с производительностью, с исправлением багов и тому подобным. И если о 3.0 разработчики говорили в ключе «всё сломается», то о 4.0 просто ничего не говорят. Получается ситуация «либо плохо, либо никак».
— Год назад компания Apple, агитируя всех активно использовать Swift, при этом сама почти не использовала его в продакшене. Что с этим изменилось за год?
— Год назад ситуация была такой: на Swift был написан калькулятор в iOS, приложение WWDC, и, если не ошибаюсь, один из их новых фреймворков — действительно, довольно мало. А теперь на Swift написан, например, обновлённый App Store — понятно, что это довольно гигантская вещь, полная сложных кастомных UI-компонентов, и, наверное, превосходящая многие другие эппловские приложения по сложности. И в Xcode теперь две системы на Swift. Во-первых, новая билд-система, призванная ускорить сборку проекта, а во-вторых, source editor — эта не написана с нуля, а портирована из Swift Playgrounds для iPad. Так что, как видим, Apple сделал очень много шагов в сторону Swift за последний год.
— К вопросу о том, что source editor портирован с iPad. Приложение Swift Playgrounds ощущается как баловство — «дать детям бесплатно первую дозу Swift на планшете, чтобы потом они продолжили всерьёз уже на Mac». А слова о том, что оттуда перетащили что-то в десктопный Xcode, звучат так, как будто Apple подошли к айпэду очень серьёзно, поставив в некоторых вопросах вперёд десктопа. Где правда?
— Ну, в данном случае iPad выступал скорее как тестовое устройство, на котором они проверили работу нового source editor, и, когда он работал достаточно хорошо, смогли перенести в Xcode. Та же новая билд-система является не базовой, а дополнительной опцией, можно при желании собирать проект со старой. А вот source editor уже достаточно обкатан, чтобы его вставили единственным вариантом.
Но я так понимаю, что на Swift Playgrounds для iPad у них действительно амбициозные планы, а не просто «выпустили и забыли». Буквально пару месяцев назад они заключили контракт, благодаря которому теперь именно с iPad на Swift можно писать под многих роботов и дронов. Мне кажется, это мечта многих детей.
— На WWDC в числе прочего Apple озвучили, сколько суммарно денег получили все iOS-разработчики, и по сравнению с прошлым годом сумма резко увеличилась. А насколько то, что ты видишь в сообществе, подтверждает эти красивые числа? По ощущениям, стало ли в iOS-разработке больше денег?
— Смотря о чём говорить. Если про личные проекты — в моём представлении, действительно стало больше. Мой знакомый выпустил текстовый квест с двумя экранами. Текстовый квест — это когда на экране написан какой-то текст, у игрока есть несколько вариантов выбора, он выбирает и видит следующий текст. Такое было популярно в 90-х, да и сейчас, среди видных представителей Lifeline…. Сюжет был написан непрофессионалом и довольно быстро. Понятно, что технически такое приложение пишется за пару часов. И в итоге при затратах на рекламу примерно в $600 была прибыль $10 000 за месяц.
Вот такая ситуация на рынке. Многие из-за этого думают, идти ли на работу в какую-то компанию за 200 000 рублей в месяц, когда можно попробовать маленькие проекты, и через полгода пятый-шестой-седьмой сможет принести деньги. В этом отношении денег действительно становится больше. И помогают новые форматы рекламы, которые сейчас предоставляет Facebook — сейчас ещё мессенджеры представили, пока никто из моих знакомых не пробовал, но потенциально это позволяет зарабатывать больше.
Если же говорим про компании, то, в моём представлении, спрос на iOS-разработчиков потихоньку начинает падать. Потому что рынок мобильных устройств уже затормозил, становится популярным что-то новое, пока никто не знает, где будет следующий бум, но инвестиции уже идут куда-то в сторону проектов с машинным обучением или блокчейном. И в этом отношении рынок становится чуть менее прибыльным.
— По твоим ощущениям, в какую сторону сейчас меняется сообщество iOS-разработчиков — и вообще в мире, и конкретно в Москве?
— Появляется смесь профессиональности и консерватизма. Люди сейчас больше думают над архитектурой, комплексными подходами, разными способами тестирования, более сложными интерфейсами. Если посмотреть, как выглядели приложения пять лет назад и как сейчас, видна разница.
Но в то же время рынок становится консервативнее. Пять лет назад он был относительно новым, сюда приходили люди, которые хотели себя попробовать в чём-то новом, готовые ввязаться в авантюру. Сейчас многие из них находятся на рынке уже 5-6 лет и не очень принимают какие-то новинки. Для них те же машинное обучение или дополненная реальность выглядят чем-то рискованным и «накрученным». Хотя в своё время, когда они пришли на мобильный рынок, он был таким же для предыдущих, как сейчас ML. Это конфликт поколений, можно сказать.
Конкретно в Москве сейчас один из самых активных рынков. Мне сложно сравнивать с Сан-Франциско, про него не до конца понимаю, но если сравнивать с Германией или той же Италией — получается, что наш рынок в Москве в разы активнее. Из просто одной из сфер это превратилось во что-то невероятное, с кучей материалов, общения, различных решений. Это радует.
А печалит, что при этом рынок становится чуть агрессивней и чуть более хайповым. Кто-то одну технологию возвышает, как фанатик, кто-то другой начинает хейтить. Возникает стадное чувство, когда кто-то высказал мнение (зачастую неправильное), а остальные начинают слепо повторять. Такое наблюдается в очень многих сферах, но в iOS до какого-то момента этого не было. Разработчики не спорили так между собой, не дискриминировали разного рода группы, не было войн между разработчиками разных компаний. А сейчас наблюдается такая тенденция, и это деструктивно влияет.
— К тому, что московский рынок вырос: а как на этом фоне развиваются встречи CocoaHeads?
— Ранее было так: проводим на одной и той же площадке, выступают спикеры без какого-либо прогона выступления заранее, и люди общаются. Это был интересный формат, но в текущих реалиях этого недостаточно, потому что сообщество развивается, появилось множество других митапов, требования возросли.
И в итоге мы пробуем новые площадки, пробуем новые форматы: круглый стол, викторина, блиц, дискуссии… Начали собирать фидбэк и анализировать его. Начали готовить спикеров, прослушиваем их иногда больше чем один раз, чтобы качество докладов было высоким. У нас появились требования к площадке: обязательно трансляция, видеозапись, чтобы перекусить что-то было, чтобы викторины были с призами. В общем, требования возросли, поднялся уровень, и получается, что CocoaHeads — это уже как мини-конференция, а не митап. Кроме того, мы хотим проводить не в одном городе, а в нескольких: ранее в Петербурге встречи были нечастыми, а теперь будут на регулярной основе, потому что нашли человека, готового этим заниматься.
— Мы этой осенью впервые организуем Mobius в Москве, и ты участвуешь там и как спикер, и как член программного комитета. У тебя какие ожидания от конференции по сравнению с тем, что было в Петербурге? В чём видишь разницу?
— Поскольку последний петербургский Mobius был двухдневным, а в Москве будет один день, тут будет несколько другой формат. С одной стороны, докладов будет количественно меньше. А с другой, это позволяет сделать отбор максимально строгим и показать «лучших из лучших».
И при этом, поскольку в Москве конференция пройдёт впервые, тут есть ощущение эксперимента: посмотрим, как поведёт себя московская аудитория.
— Тебе как раз знакомо и московское iOS-сообщество, и петербургское — а чем, на твой взгляд, они различаются? По-твоему, есть ли разница между тем, как пишут под iOS в двух городах?
— Судя по по оценкам обратной связи после CocoaHeads, московское сообщество чуть более избаловано: примерно одинаковые по уровню доклады в Питере оцениваются на 15%-20% выше, чем в Москве. Это связано, скорее всего, с количеством материала на рынке: чем больше мероприятий проходит в городе, тем выше ожидания и строже оценки.
И разницу в самой разработке тоже вижу. В Москве уклон в сторону сложных решений. Грубо говоря, в Москве скорее хотят решить один компонент сложно, а в Питере много компонентов проще. Скорее всего, это связано со стилем жизни. Потому что в Москве очень много разработчиков, очень много вакансий, ты приходишь на работу, у тебя там одна задача на неделю, и ты как хочешь, так её и пишешь. Мог бы написать её, образно говоря, в три строчки кода, но у тебя целая неделя, тебе скучно, и ты пишешь её в тысячу строчек, пишешь какую-то архитектуру сложную поверх. В итоге, хотя и кажется, что Москва быстрее, мне разница видится такой. Это по-своему хорошо, решения становятся более гибкими и тестируемыми, порог входа при работе со старыми компонентами новыми разработчиками снижается.
Mobius пройдёт в Москве 11 ноября. Тема доклада Александра сейчас ещё не сформулирована окончательно, но очевидно, что она будет связана с iOS. Сейчас на сайте конференции уже можно увидеть имена и нескольких других спикеров (как по iOS, так и по Android), а также приобрести билеты. И со временем они дорожают — так что выгоднее не ждать, пока станет известно больше подробностей.
Автор: JUG.ru Group