Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Интервью

12 вопросов об iOS-разработке: интервью с деканом

На вопросы отвечает декан факультета iOS-разработки Андрей Антропов.

— Андрей, приветствую! Сколько вы уже в iOS-разработке?

— Здравствуйте. В iOS-разработке я три года. Перешел из бэкенд-сферы и до сих пор не жалею: получаю сплошное удовольствие от связки Swift-iOS. Успел поработать и фрилансером, и в команде. Сейчас разрабатываю приложения в замечательной студии Morizo-Digital.

— Чем вас привлекла сфера iOS? И какие она предлагает пути развития? Особенно интересны самые перспективные, на ваш взгляд, направления iOS-разработки.

— Когда я переходил в iOS, ориентировался на цветущие и довольные лица друзей — они уже давно занимались разработкой под эту ОС. Теперь же я могу сказать, что их положительные отзывы не были преувеличенными. Сфера у нас одновременно интересная (на передовом рубеже развития техники), высокооплачиваемая, и что самое удивительное — хороших специалистов в ней до сих пор не хватает.

Основной путь развития очевиден — создание мобильных приложений для iPhone и iPad. Но в последнее время открываются и другие возможности.

  • Разработка приложений для умных часов (watchOS), которые все плотнее входят в нашу жизнь.
  • Серверная Swift-разработка. Еще пару лет назад она была причудой энтузиастов, а сейчас вовлекает все больше людей. Я говорю не только о фреймворках Vapor, Kitura, но и о системной библиотеке SwiftNIO от Apple, которая позволяет использовать вышеперечисленные библиотеки в серверных решениях. Появление SwiftNIO показывает, что Apple заинтересована развивать серверное Linux-направление.
  • MacOS-разработка. Она все ближе и доступнее с выходом Marzipan — фреймворка, который позволит создавать macOS-приложения при помощи основной iOS-библиотеки UIKit. Знания, полученные при изучении iOS, становятся еще универсальнее.
  • Всеми любимая разработка игр. Их можно создавать не только при помощи Unity (привет факультету разработки игр), но и посредством встроенных системных инструментов SpriteKit и SceneKit.
  • Многое другое. Что говорить, если уже сейчас можно запускать Swift на Raspberry Pi и создавать умные устройства, управляемые с телефона.

Конкретно в iOS-разработке наибольший ажиотаж за последний год — вокруг приложений, использующих машинное обучение (ML) и дополненную реальность (AR).

Для обеих этих сфер Apple создала очень удобные системные библиотеки MLKit и ARKit соответственно. Они позволяют интегрировать последние достижения ML и AR при помощи нескольких строк кода.

В дальнейшем предложение будет диктовать спрос: ждем заявок от интернет-магазинов на AR-примерочные или, например, анализ и обработку отзывов средствами Machine Learning.

— Что интересного сейчас происходит с самим языком Swift — как он развивается и меняется в последние несколько лет?

— Swift очень вырос, окреп за последние годы и де-факто стал основным языком iOS-разработки. Думаю, не сильно ошибусь, если скажу, что 95 % новых iOS-приложений создаются на Swift. Кроме того, как я уже сказал, продолжается экспансия языка Swift на платформу Linux.

Реализованный в 2014 году Swift 4.2 LSP (Language Server Protocol) позволяет удобно работать с языком не только в заточенной под macOS среде Xcode, но и в других IDE, которые можно запускать и на Linux. Например, в Visual Studio Code. Количество системных приложений, которые Apple переписали с Objective-C на Swift, в iOS версий 10, 11 и 12 растет экспоненциально.

— Чтобы начать писать для iOS, нужно иметь Apple-устройство под рукой. Каков минимальный набор начинающего разработчика? Я слышала, надо еще платить какие-то отчисления...

— К сожалению, входной барьер в iOS-разработку высок, но это связано со стоимостью оборудования. Для начала вам потребуется MacBook, желательно не очень древней модели. На него вы установите среду разработки Xcode, после чего сможете начать писать первую программу. Больше на старте ничего платить не придется: достаточно бесплатного сертификата, привязанного к вашему Apple ID.

А вот чтобы загрузить свое приложение в магазин, понадобится оплатить distribution-лицензию. Она стоит 99 $ в год, но обычно эти деньги вносит не разработчик, а заказчик приложения.

Тестировать созданное приложение вы сможете хоть в программном симуляторе, хоть на подключенном к макбуку устройстве — платить за это не надо. Но и здесь есть нюанс: не вся функциональность доступна по бесплатной лицензии разработчика. Например, для подключения iCloud нужна платная годовая подписка.

— iOS-разработка — это не только Swift, но и Objective-C. Для каких задач предпочтительнее каждый из этих языков? И зачем студенты факультета еще учат основы C?

— Надо понимать, что Objective-C долгие годы был единственным языком разработки для macOS и iOS. За это время программисты написали на нем множество библиотек и модулей, которые до сих пор повсеместно используются, и заменить их в один миг нельзя. Да и, скорее всего, не нужно. Так что Swift и Obj-C — это спайка двух родственных технологий.

Да, сейчас Swift вышел на уровень, когда вы можете писать приложения, не зная Obj-C. О существовании последнего вы можете даже не подозревать. Но для полного понимания системных процессов знание Obj-C очень полезно. А ведь мы хотим, чтобы подход студентов к разработке был глубоким.

Кроме того, спрос на программистов Obj-C до сих пор высок. Особенно в компаниях с богатой историей разработки и массой так называемого legacy-кода, который нужно поддерживать и оптимизировать.

Если мы копнем еще глубже, то увидим, что некоторые iOS-проекты требуют библиотек на C/C++. В отдельных случаях это позволяет достичь большого прироста производительности. Чтобы не ходить далеко за примером: на C/C++ реализована популярная библиотека Realm для хранения данных в мобильных приложениях.

Поэтому мы считаем, что знание основ языка С (например, указателей и memory layout) сегодня пригодится любому разработчику.

— Главный вопрос, который я задаю всем деканам: какие проекты делают ваши студенты?

— Приложения для работы с VK, для интернет-магазина и системы поиска билетов. Полученного в итоге опыта оказывается достаточно для трудоустройства. Многие наши выпускники работают в крупных компаниях, таких как Сбербанк, «Мамба», «Везёт».

— Что можно рассказать о факультативах от партнеров?

— Факультативы — это видеоуроки и вебинары от экспертов, которые обучают студентов продвинутым технологиям. Например, в прошлом году мы записали факультатив по Core Data от «Тинькофф Банка». Сейчас записываем факультатив по архитектурам приложений со старшим разработчиком браузера Mail.ru Group. Также готовим факультатив «Реактивное программирование» от AGIMA.

— Вы начали писать для iOS, уже имея опыт в Python. Был ли этот переход легким и насколько отличается процесс изучения этих языков?

— Кривая обучения у обоих языков довольно пологая — они очень дружелюбны к новичкам. Это здорово, ведь программирование должно привлекать, а не отталкивать. Безусловно, если вы знаете один из популярных языков, будь то С/C++, Java, Python, Go или Ruby — освоить Swift вам гораздо легче, чем тому, что учит его с нуля. Все перечисленные языки реализуют объектно-ориентированный подход, а значит у них много общего.

— В обращении к студентам вы упомянули о сходстве Swift и Python в плане интуитивной семантики. А было что-то, что поначалу удивило в Swift?

— Меня очень удивила легкость, с которой в Swift мы можем отойти от ООП-парадигмы в сторону функциональной.

Как и многим техническим специалистам, в университете нам преподавали Lisp и Prolog. С тех пор к функциональному программированию я относился очень настороженно и поначалу сторонился функционального подхода в Swift. Но со временем понял, что FP на Swift и Lisp — это земля и небо, а работа с математическими вычислениями и функциями может быть лаконичной, логичной и приятной.

— Ваша основная работа в Morizo-Digital тоже связана с iOS-разработкой?

— Да. В нашей студии я отвечаю за iOS-разработку. Но уточню: 14 лет мы создавали в основном сайты и бэк. Мобильными приложениями занимаемся совсем недавно. У меня сейчас на попечении два проекта, которые готовятся к релизу. До окончания разработки я не могу раскрывать подробности.

— По вашему опыту, какие темы в Swift для студентов — самые трудные?

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

Если вам интересно, о чем я, можете посмотреть на opaque result types, которые появятся в Swift 5.1. Увидите, какие проблемы они решат.

— Какие материалы вы рекомендуете ученикам в дополнение к занятиям и методичкам?

— Я советую черпать знания изо всех проверенных источников. Условно их можно разделить на три типа:

1. Блоги, статьи, подкасты.

  • Обновленный блог Мэтта — автора популярнейших библиотек AFNetworking/Alamofire. Здесь можно почитать думы опытного программиста об iOS-делах насущных. Сложность материала: высокая.
  • Блог Джона Санделла — большого iOS-энтузиаста и участника всех возможных конференций. Он написал больше 100 статей о самых разных аспектах разработки и жизни программиста. Сложность материала: умеренная.
  • Шон Аллен — программист, который интересен искренностью и открытостью, с которой он рассказывает сообществу о своей работе. По понедельникам он делится с аудиторией новостями Swift.
  • Flawless App Stories — блог на Medium с подборкой статей по актуальным проблемам разработки от разных авторов. Замечателен тем, что позволяет взглянуть на процесс глазами сотен людей. Сложность материалов: очень разная.
  • Антуан Ван дер Ли — голландец, который в своем блоге сочетает множество тем: от разбора основ программирования до проблем выгорания и личности программиста.
  • iOS Dev Weekly — подборка самых актуальных новостей мира Swift. Уже несколько лет выходит каждую пятницу.
  • iOS Goodies — еще одна подборка новостей и обучающих статей, только выходит по вторникам.

2. Обучающие сайты.

  • RayWendelich — сайт №1 с обучающими материалами по iOS. Здесь много статей, видеоуроков и абсолютно замечательных книг, но в основном, конечно, платных.
  • ObjC.io — аналог предыдущего сайта, но с более глубокой академической подачей материала. Это для философов от Swift.
  • HackingWithSwift — сайт Ивана Урганта от Swift, Пола Хадсона (Paul Hudson) — мастера презентаций, Adobe After Effects и заготовленных шуток-каламбуров. В отличие от первых двух сайтов, здесь полно бесплатных статей и видео. Есть даже бесплатная обучающая программа.
  • Pointfree.co — мой любимый сайт, где двое дядек рассуждают о функциональном подходе в Swift. Их увлеченные лица как бы намекают, что они с удовольствием дискутировали бы и бесплатно. Но, к сожалению, для просмотра большинства видео нужна платная подписка.

3. Конференции разработчиков (записи выступлений, скорее всего, доступны на YouTube).

Русскоязычные:

Англоязычные:

И конечно, главное событие года для каждого iOS-программиста — конференция WWDC от Apple.

— Спасибо! Андрей, будем ждать вопросов от желающих изучать Swift и iOS-разработку. :)

Пройти обучение

4 июн 19, 13:04
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Программирование в химии: интервью с Джузеппе Балакко

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

Чтобы доказать это, перенесёмся в мир химии. О том, как из учёного стать крутым программистом, не меняя сферы деятельности, мы поговорили с основателем компании Nucleomatica, разработчиком ПО для спектроскопии ядерного магнитного резонанса iNMR Джузеппе Балакко.

Джузеппе, начнём с главного — что такое спектроскопия ядерного магнитного резонанса? Где она применяется?

— Спектроскопия ядерного магнитного резонанса (NMR) позволяет оценить молекулярную структуру вещества, его количественный и качественный состав. С середины ХХ века это один из популярнейших аналитических подходов в химии. Конкретной сферы применения нет: NMR востребована как в научных экспериментах, так и  в медицине, промышленности.

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

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

NMR-спектрометр

В основе метода лежит явление ядерного магнитного резонанса. Попробую объяснить упрощённо: все ядра имеют заряд, а некоторые — ещё и полуцелые спины. Возможно, вы помните, как в школьном курсе химии раскладывали «стрелочки» (протоны и нейтроны) по парам в «клеточках» (характеризующих энергетический уровень), а в итоге оставались одинокие «стрелки» и «клетки». В этом случае под действием переменного внешнего поля магнитные ядра могут менять энергетический уровень, поглощая энергию. Преобразования в них можно фиксировать в зависимости от частоты излучения извне.  Регистрация этих явлений позволяет построить спектр зависимости и определить состав вещества. Для организации исследования, фиксации и интерпретации результатов используется программирование.

Программирование в классическом представлении: на популярных языках в общедоступных средах разработки? Или это работа со специальными языками и ПО?

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

Именно поэтому на рынке фактически нет такой профессии, как NMR-программист. Как правило, это или IT-специалисты широкого профиля, или химики с дополнительным образованием. Кроме того, в NMR есть объективные ограничения: высокая точность требует много времени и ресурсов (гелия, запас которого на планете ограничен, сверхпроводящих магнитов и прочего). То есть услуга дорогостоящая. В перспективе, с открытием новых технологий, NMR может стать более доступной и применяться массово, но пока это не так.

Какие языки программирования вы используете?

— Преимущественно С, так как требуется большая производительность. Но также приходится иметь дело с C++, Lua, Objective-C и веб-набором HTML–CSS–PHP.

По образованию я не программист, а химик, и всем языкам обучался сам. Первым был BASIC, потом я переключился на Pascal, и затем — на C. Когда начинал карьеру, рынок специализированного ПО был очень мал, поэтому пришлось учиться программировать, чтобы решать профессиональные задачи самостоятельно.

Можете посоветовать книги?

— Для изучения многих языков, в том числе Pascal, C, Python, есть серия книг «Numerical Recipes in…». Это собрание типовых задач и решений. Очень полезно для тех, кто делает первые шаги в программировании, но не хочет тратить много времени на самостоятельный поиск ответов на тривиальные вопросы.

По C рекомендую книгу «C: a Software Engineering Approac» Питера А. Дарнелла. Она как раз посвящена созданию ПО на инженерном уровне, где важна производительность и надёжность.

По Lua могу посоветовать «Programming in Lua» Роберто Иерусалимши: здесь можно найти ответы на все вопросы по языку.

Ваше мнение, как лучше обучаться: интернет-курсы, книги, навороченные среды разработки?

— Нет универсального ответа — необходимо всё совмещать. У меня был неудачный опыт онлайн-обучения, но преимущественно потому, что я не мог делиться своими соображениями и замечаниями. Но это частный случай, а в перспективе, безусловно, интернет-курсы —  эффективный способ. При этом без книг и онлайн-документации обойтись нельзя.

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


1 июн 18, 16:15
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

У меня не было 5 месяцев, пришлось выучиться за 3

Когда тебе 32, первый вопрос, который задают на собеседовании – почему решили сменить вид деятельности. В 25 такого не услышишь. Все время после института я провел в секторе B2B-торговли – целых 12 лет. Интересная работа, много общения и высокая зарплата. Но в какой-то момент понял, что больше этим заниматься не хочу. Я ушел с работы и стал думать про дальнейший жизненный путь. И вдруг захотелось вернуться назад, в то время, когда я сам тянул локальную сеть через весь дом или программировал на Паскаль.

4 года учился самостоятельно

Я понимал, что время, чтобы стать высококвалифицированным программистом, упущено. Но несколько лет назад я столкнулся с тестированием. Информации о тестировщиках мало. О них редко пишут, а на YouTube ролики в основном от Портнова. Тем не менее, я заинтересовался направлением и стал самостоятельно его изучать с 2014 года. Тогда я думал, что на тестировщика учат только за рубежом.

Большого прогресса от самообучения не было. Не хватало системного подхода и обратной связи. Прослушал лекции, а заданий нет. Если есть, некому проверить. Поэтому не знаешь, правильно делаешь или нет. Я учился сам почти четыре года, но, только поступив на курсы, понял, где были ошибки. С GeekBrains определился случайно. Увидел рекламу и понял: вот оно. Будут знания, практика и строчка в резюме.

Я не могу учиться так долго

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

На портале есть ограничение. Уровни и стажировку проходят друг за другом. Записаться сразу на два уровня и стажировку нельзя. Но как только я записался на второй уровень, активировалась запись на стажировку, которой я сразу воспользовался. Курс «Введение в автоматизацию» можно пройти вместе с любым уровнем, поэтому добавил и его. В итоге я одновременно проходил второй уровень, автоматизацию и стажировался. Конечно, нагрузка большая. Если вы работаете, не советую идти моим путем, но совместить уровень и курс по автоматизации можно. Это не так сложно. В итоге я поступил в январе, а в марте выпустился.

Выбирайте место для старта

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

В Москве вакансий для тестировщика много. Чтобы развиваться как профессионал, ищите интересные и сложные проекты. Иногда предлагают много механической работы: понажимал на кнопки и отправил результат начальству. Ни кейсов, ни отчётов, ни анализа не предполагается. Но с такими должностными обязанностями и через три года будешь на том же уровне развития.

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

Три правила поиска работы

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

Второе правило – отправьте сопроводительное письмо. Я подробно написал, почему именно я подхожу на должность и почему хочу работать в этой компании. Работодатели получают десятки резюме, и только единицы присылают сопроводительные письма. Это шанс выделиться среди кандидатов.

Третье правило – подготовьтесь заранее. Я знал свои слабые места. Для работы с высоким окладом мне было недостаточно знаний по SQL и Selenium. Я искал в Интернете дополнительные материалы, и на собеседовании мне это пригодилось.

Воспринимайте тестовые задания как шанс попрактиковаться

Когда ищете работу, будьте готовы выполнять тестовые задания. Они присутствуют практически в каждой вакансии. После того, как вы отправите резюме, вам позвонят и пришлют тестовое. По объему и сложности они разные. Например, программа в Google Docs, которая рисует треугольник. В ней нужно найти баги.

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

Собеседование проходит в два или в три этапа. Звонок – тестовое задание – интервью.

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

Если решились, идите до конца

Перед последним собеседованием у меня опускались руки. Хотел плюнуть и искать работу по старой специализации. Но желание поменять профессию заставляло меня двигаться дальше. Всем ребятам хочу посоветовать добиваться цели, раз уж решились. Работа должна приносить удовольствие, тогда жизнь будет в радость.

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

Пройти обучение

28 мар 18, 12:49
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Показаны все темы: 3

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru