iOS

[Интервью] Программирование: специфика и сложности разработки. Андрей Коновальский?

11 мин.
[Интервью] Программирование: специфика и сложности разработки. Андрей Коновальский?

Мы поговорили с разработчиком под платформы от Apple: iOS и macOS, Андреем Коновальским о профессии, обучении-образовании, работе, играх и досуге. 

Начало

– Андрей, привет!
Давай начнем, как у нас принято: расскажи немного о себе. Где работаешь сейчас?

– Сейчас работаю в Кипрской компании Heatherglade, которая в основном специализируется на разработке и издательстве игр. До этого пару лет трудился в сфере разработки fintech-продуктов.

– Как ты пришел к тому, что решил заняться разработкой под iOS и macOS?

– Это был очень долгий путь в моем выборе. Перед тем, как полностью перейти в разработку я занимался маркетингом и SEO-продвижением проектов. Местами делал какие-то модули на PHP, немного верстал на CSS+JS, иногда писал SQL запросы для некоторых потребностей. 

Изначально очень долго выбирал направление в сфере backend разработки. Но чем дольше изучал стек технологий, тем больше это наводило грусти. В основном из-за того, что у каждой компании применяется своей стек и, к сожалению, это создает большие вариации для простого поиска работы. Затем я случайно наткнулся на одного видео блогера, который переехал в США и рассказывал о том, почему он решил перейти в мобильную разработку и какие преимущества она имеет. 

Фото Андрей Коновальский

Я приступил к активному изучению данного направления и оно оказалось довольно интересным, поскольку в нем нет такого большого разнообразия в различных стека,х и ты почти всегда завязан только на конкретных языках программирования. В случае с iOS — это Swift и Objective-C.

– А Android, как платформа, тебе совсем не близка? Почему?

– Основной выбор в пользу iOS-платформы мне помогла сделать эта картинка:

Она была очень актуальна несколько лет назад, но и на сегодняшний день ничего, практически, не изменилось в расстановке сил. Если коротко, то на iOS-платформе прибыльность намного больше, чем на Android. Это, конечно, актуально не для всех проектов, но у нацеленных на рынок Северной Америки такая тенденция очень хорошо выражена.

– Твой первый проект чему был посвящен? Сколько времени прошло с начала его реализации?

– Мой первый проект на iOS — это было приложение, аналогичное Tinder, только с видеозвонками. Разработка длилась где-то 3 месяца. Но, после завершения проекта, заказчик в App Store его так и не выложил.

– Помимо основной работы, занимаешься ли ты собственными проектами в свободное время?

– Да, я занимаюсь своими проектами в свободное время. По сути, для меня разработка — это не только работа, но и хобби одновременно. Проекты, которые я пишу в свободное время, дают возможность освоить новые технологии, предлагаемые для iOS-платформы. К примеру, это ARKit и Machine Learning, которые редко применяются и мало кто понимает, как с ними работать.

AR и Нейросети

– Ок, вот про это уже интересно. Дополненная реальность и Машинное обучение – сейчас прямо очень востребованы, если я правильно понимаю. Расскажи поподробнее, что там есть интересного и когда Apple уже выпустит свои AR- или -MR-очки?

– На данный момент Apple уже третий год подряд очень активно продвигает свой ARKit для разработки дополненной реальности. И каждый год показывает, как они его совершенствуют и где можно его применять. К примеру, в 2018 году они продемонстрировали очень интересный пример полноценной AR игры на двоих. И выложили исходный код этого проекта.

 

Я, например, недавно участвовал в хакатоне, который представляет NASA, где презентовал свой небольшой AR-проект. В нем использовалась данная технология, для демонстрации, как легко можно рассматривать космические объекты, применяя AR-технологию для изучения космической индустрии.

Когда конкретно они выпустят AR очки, никто не знает достоверно, пока Apple сама об этом не объявит. К сожалению политика конфиденциальности у Apple настолько жесткая, что узнать какие-то инсайды из мира разработок можно только приехав в Калифорнию на конференцию WWDC, где можно только в личной беседе с разработчиками из Apple получить определенную информацию, как и что у них изнутри может работать. 

– Нейросети сейчас используются и в iOS-устройствах. Мы можем наблюдать это, например, в приложении “Фото” – как самый яркий пример. Как думаешь, на что будет ориентироваться индустрия в ближайшие годы?

– Приложение фото — это один из самых эталонных примеров, где можно грамотно применять нейросеть. Возможно, скоро все проекты, и не только игровые, связанные с Computer VIsion с применением камеры, будут использовать нейросети. Также я знаю, что нейронные сети применяют для интеграции умных ботов в игры. И, насколько я знаком с новостями в данной сфере, ботам уже удалось обыгрывать людей в шахматы, китайскую настольную игру «Го» и даже в Dota 2.

Фото Андрей Коновальский

Про учебу и работу

– Уверен, что есть масса документации по разработке игр и приложений. Уже появились специализированные курсы. Если кто-то решит пойти делать мобильные проекты, где лучше всего начать изучение? Не хотел бы сам преподавать какой-нибудь курс для начинающих разработчиков?

– Мне предлагали попробовать преподавать курсы по iOS-разработке в учебном IT-центре, но пока у меня нет столько времени, чтобы мог погрузиться  еще и в преподавание. Иногда я могу просто прийти на лекцию или на доклад и поделиться опытом, или рассказать какие-то истории.

Чтобы перейти в разработку, неважно mobile или web, требуется понимать хотя бы основы программирования. Если для человека такие слова как массивы, циклы, переменные, константы, многопоточность, ООП — это что-то непонятное, о чем он впервые слышит, то придется начать с изучения основ. После этого уже можно определяться с платформой, языком программирования и т.д.

Основы можно пробовать изучать самостоятельно по видеоурокам или пойти на курсы, где будет преподаватель, способный помочь с изучением. Тоже самое, когда получится определится с направлением и языком программирования. 

Стоит обратить внимание, что есть низкоуровневые языки программирования и высокоуровневые. Чем к более высокоуровневому классу относится язык программирования, тем проще на нем работать, потому что там очень много за пользователя решает и делает компилятор или интерпретатор. Если же язык низкоуровневый, то придется самостоятельно следить за множеством нюансов. Поэтому такая разработка намного сложнее и ответственнее. Человеку без специального образования в области Computer Science будет сложно освоить низкоуровневую разработку. 

– Много ли у тебя ушло времени чтобы закончить обучение? Вот так, чтобы понять для себя: теперь я обладаю знаниями, которые могу применить на работе. Ну и насколько сложно было? 

– В моем случае это заняло около 6 месяцев. Но здесь есть важный момент, что у меня уже были знания в области основ программирования и даже немного больше. Я перед этим занимался написанием небольших модулей для WordPress и Drupal, версткой и разбирался, как делать запросы в базы данных. Но, если человек вообще далек от мира разработки, то обучение может занять около года.

– Давай поговорим про трудоустройство. Насколько сложно найти работу в сфере разработки? Мы ведь не Европа или Кремниевая долина, есть ощущение, что в странах бывшего СНГ это не многим и нужно.

– В последние годы на рынке очень большой дефицит специалистов. Некоторые компании порой не могут несколько месяцев закрыть вакансию. Мне сложно оценить, как сейчас обстоит ситуация на рынке всех стран бывшего СНГ, но я знаю сотни действующих IT-компаний, нуждающихся в специалистах. Поэтому у профессионала с востребованной специализацией нет проблем с трудоустройством и он сможет легко найти работу. Исключением могут стать только очень узкоспециализированные кадры, работающие на достаточно редких или старых технологиях.

– ОК, ты нашел работодателя, а он – тебя, как начинающего мобильного разработчика. Что будут спрашивать на собеседовании и как лучше к нему подготовиться? 

Обычно в крупных компаниях HR – это просто люди, которые берут на работу других людей на основе простого резюме. Но сами они практически не разбираются в теме. В технологических компаниях выстроено все точно также или при разговоре задают вопросы по теме?

– Это все зависит от самой компании, потому что у каждой из них процессы найма кандидатов могут сильно отличатся. Чаще всего HR проводит предварительную беседу, чтобы понять что за человек, какой у него опыт и дает какие-то подробности о вакансии. Практически у всех компаний есть практика проводить технические интервью, где задают различные вопросы о специализации, по которой человек пришел устраиватся. Могут также давать различные тестовые задачи, которые попросят решить. 

Вот на этом этапе все может идти по-разному, потому что у каждой компании вопросы могут сильно отличаться. Чаще всего, если техническое интервью прошло успешно, то с кандидатом продолжают дальше общаться. Если все процессы проходят хорошо, то человеку присылают оффер от компании. 

– Если бы я сейчас решил сменить сферу деятельности, обучиться какому-нибудь языку программирования и разобраться в движке, мне бы точно было не комфортно на первом собеседовании, как минимум. Волновался ли ты когда понимал, что сейчас будут задавать вопросы, ответить на которые, возможно, ты не мог? И, конечно же, дай совет как этот страх побороть. И нужно ли?

– В моем случае мне было куда проще. До этого у меня был собственный небольшой бизнес, и мне самому иногда приходилось нанимать людей. Поэтому я уже имел опыт в том, как проводятся собеседования. Затем я поискал в интернете информацию о собеседованиях для IT-специалистов, чтобы понимать, с чем людям приходится сталкиваться и как можно себя преподнести с наиболее выгодной стороны. 

Фото Андрей Коновальский

Стоит учитывать, что всегда могут задавать самые банальные вопросы, к которым нужно быть готовым. К примеру: какую зарплату вы хотите, кем вы себя видите в будущем, чем увлекаетесь, расскажите о себе… И очень желательно быть сразу готовым ответить на них. Но, поскольку я уже знал принцип ведения собеседования заранее, проблем с ответами не возникло.  

Еще важно не забывать, что собеседование не стоит воспринимать, как допрос, на который надо прийти, ответить и уйти. Это совместный процесс, где тебе задают вопросы, и ты задаешь вопросы. Поэтому, желательно, не бояться интересоваться, как работает компания, какие технологии они применяют, пусть расскажут о своих продуктах и т.п.

– Отлично. Тебя взяли в штат, ты полноценный сотрудник крутой компании. У тебя есть задачи, дедлайны – все как у всех. Проходит год, но задачи все те же. Что требуется новичку, чтобы вырасти до настоящего профессионала? С чего начать и как развиваться в сфере iOS-разработки?

– На самом деле, если человек запрыгнул в скоростной поезд, это не значит, что теперь к нему легко придет слава и успех. Я знаю примеры, когда люди работали по многу лет в одной компании где были плохо построены внутренние процессы. Работая там, ты просто особо не развиваешься как специалист. Именно поэтому здесь важно еще самому стараться изучать и интересоваться всеми новинками, которые появляются в сфере IT-технологий.

 К примеру, 5 лет назад разработка под iOS кардинально отличалась от нынешней и за это время было очень много всего добавлено и улучшено. Если компания, в которую ты пришел все еще работает со старыми технологиями, то имеется большая вероятность, что личный рост как разработчика может остановиться. 

Именно поэтому я стараюсь всегда посещать доклады, семинары, читать различные блоги и рассылки по разработке, постоянно слежу за новинками в моей сфере. Только стремление к постоянному саморазвитию поможет совершенствоваться в своей специальности.

– Это все, конечно, прекрасно. Но вот я не технарь, допустим. Я тут так, тексты пишу, вопросы задаю. Может быть у меня и образование… юриста, например. На сколько важно именно техническое образование, чтобы начать карьеру? (Windows переустановить я могу, если что!)

– На самом деле, техническое образование здесь не обязательно. Я знаю людей, которые вполне успешно работают с дипломами экономиста или юриста. К примеру, я – один из таких. Единственное, что у меня со школьных времен было очень глубокое изучение информатики, поэтому мне данная сфере была легкой в изучении.

Про игры

 – Недавно, с релизом iOS 13, для пользователей стал доступен сервис Apple Arcade. Без микротранзакций и любых дополнительных платежей. Как считаешь, это перспективное направление?

– Мне кажется, что это очень важное направление для игровой индустрии. Оно выглядит, как когда-то iTunes, ставший отличным решением для сферы музыкальной индустрии. 

– А как сейчас монетизируются ваши игры?

– На данный момент используется самый популярный способ: внутренние покупки и реклама.

– На рынке есть самый популярный, для обывателя, вариант поиграть без смартфона – Nintendo Switch. Однако, есть и другие консоли: PS4, Xbox One. Играешь во что-то или только разработкой занимаешься?

– У меня есть PS4 и раньше я играл чаще. Но, со временем, загрузка работой увеличилась и времени на игры практически не остается. Так что, пока консоль просто пылится на полке.

– Какой из последних игровых релизов (как мобильных, так и нет) тебе больше запомнился?

– Для мобильных меня впечатлил релиз GTA: San Andreas и Vice City, поскольку в далеком прошлом они были любимыми играми.

– А любимые жанры какие? Что больше предпочитаешь?

– Последняя игра, в которую я долго играл, и мне она очень нравилась — это был «Ведьмак 3». После этого не особо часто попадались игры, которые могли так надолго увлечь. А на телефоне играю в обычные казуальные игры, которые помогают скоротать время в дороге, или немного отвлечься в небольшой перерыв.

– Раз сейчас занимаешься разработкой игр, можешь рассказать в каком жанре проект?

– Чаще всего это казуальные игры.

– «Три в ряд» и что-то подобное?

– Примерно так и есть. Это игры, которые являются вполне понятными для широкого круга пользователей и создаются просто для приятного времяпровождения. Я, например, чаще всего играю в такие игры, когда нахожусь в долгой дороге.

– С каким проблемами, чаще всего, приходиться встречаться? Есть ли сложности с движком или больше с организационными моментами?

– На данный момент нам иногда приходится сталкиваться с трудностями при работе с игровым движком. К примеру, некоторые проекты написаны на игровом движке от Apple, который не пользуется особой популярностью из-за того, что работает только на Apple устройствах, но при этом на нем можно быстро реализовывать игровую физику или графические эффекты.

 Из-за малой популярности порой не всегда можно найти в интернете подробную документацию и необходимые ответы, когда возникают проблемы и что-то работает не так, как ожидалось. 

– А что за движок от Apple? Ты имеешь ввиду Swift? Почему не взять, например, тот же Unity?

– Swift — это их новый язык программирования. У компании Apple есть свой собственный 2D игровой движок SpriteKit, а так же 3D-движок SceneKit. Они позволяют быстро создавать игры, использовать текстуры, настраивать физику, сцены освещения. Там вообще присутствует полноценный визуальный редактор, как в Unity.

Также, у них есть GameplayKit, который содержит в себе различные фичи, применяемые в играх. К примеру, это «Генератор рандома», AI боты, State Machine, «Система правил поведения». Благодаря этим инструментам можно спокойно создавать игры, зная только язык Swift или Objective-C. Хотя иногда я натыкался на специальные сборки приложений под iOS, где пользователь мог просто в визуальном редакторе настраивать сцену, а заранее подготовленный универсальный код уже все делал за него. Это дает возможность создавать простые игры, без особого знания программирования. 

В этом всем есть только один недостаток — все данные технологии доступны только в рамках платформы Apple: iOS, macOS, tvOS. 

Конечно, можно применять и Unity для игровых проектов, но это уже отдельная платформа со своими достоинствами и недостатками.

– Другими словами, разработчикам под Android куда сложнее или у Google тоже есть собственный движок под их платформы?

– У Android разработчиков ничего подобного нет, им приходится применять сторонние разработки. В самой документации для Android-разработчиков описано использование Unity или Unreal Engine в проектах. Поэтому, мне кажется, что в Google не особо спешат предоставлять возможности для максимально производительной разработки на высокоуровневом языке своей платформы.

– Третий Ведьмак – признанный шедевр, тут сложно что-то возразить. Казуалки по пути на работу – тоже хорошо, особенно если сам работаешь над похожими проектами. Но ведь у нас есть Apple Arcade, упомянутый выше. И уже на старте есть, как минимум, вторая часть клона Zelda – Oceanhorn. Неужели не хочется «залипнуть» в подобные проекты?

– Думаю, что если в ближайшее время удастся снова куда-то отправиться в путешествие, то будет больше времени на изучение проектов, выложенных в Apple Arcade. Но даже те, что я уже успел просмотреть, производят впечатление вполне достойных разработок. 

Также хочу попробовать поиграть в игру которую создал 14 летний парень и смог ее продвинуть в Apple Arcade. Интересные идеи довольно часто появляются у людей, проводящих много своего времени за играми. 

– Смотришь ли ты на другие студии разработчиков, как например для себя? Девид Кейдж, например, Кодзима?

– Не особо слежу за этими людьми. Разработчикам чаще приходится интересоваться тем, какие выходят новые технические инструменты в девелопменте, чтобы понимать, имеется возможность применить эту новинку в проекте или нет. Один из ближайших примеров — очередное обновление ARKit и Machine Learning от Apple.

– Хотел бы поработать в большой студии, с кучей народу, над ААА-тайтлом? 

– Идея конечно интересная. Но, к сожалению, на телефонах игры AAA уровня это редкость. К тому же, ближайшие GameDev-компании, которые я знаю, они точно так же сосредоточены на казуальных мобильных играх. Вот у них чаще всего я и смотрю, какие проекты и интересные задумки реализовываются.

– Ну и славно. Развернем это интервью в противоположную сторону.

Программист, дизайнер, разработчик — это бородатый мужик в растянутом свитере и сальными волосами, что сидит сутками за компьютером и «что-то там делает». Как минимум, для большей части населения бывшего СНГ. 
Чем ты увлекаешься помимо разработки? Ролики, лыжи, сноуборд, велосипед?

– На самом деле я веду очень активный образ жизни. Занимаюсь в спортзале, плаваю в бассейне, зимой езжу кататься на лыжах, а летом катаюсь постоянно на велосипеде. Чтобы отвлечься от работы, иногда, я могу в течении рабочего времени выделить часик для занятий йогой, чтобы немного расслабиться и перезарядить разум.

Фото Андрей Коновальский

Ну и кратко

– Цель – это то, чего ты добиваешься. Раз за разом.
Мечта – то, что исполняется (возможно, нет) на закате лет. О чем ты мечтаешь?

– Возможно, было бы неплохо в будущем создать свой какой-то продукт, связанный с мобильными технологиями, который можно будет развивать и предоставить пользователям как полезный сервис.

– Любимые или запомнившиеся книги?

– Очень понравилась книга, которую считают «библией капитализма». Это популярная книга под названием «Атлант расправил плечи». Даже спустя несколько лет, мне все равно она кажется шедевром.

– Супер, спасибо за уделенное время.
Надеюсь, что ваши проекты будут интересны (и прибыльны), а работа будет приносить только удовольствие.

– Спасибо, и вам!

***

Если вам тоже есть что рассказать — без проблем. Пишите на почту, что указана в профиле автора.

Мы в Telegram, на Дзен, в Google News и YouTube