📖 Что в статье:
— Как учиться на iOS-разработчика самому
— Hard skills начинающего iOS-разработчика
— Когда идти на собеседование
— Работа в команде: soft skills программиста
— Полезные ссылки для старта в iOS
Привет! Я Паша — тимлид iOS-отдела в «Лайв Тайпинге». Тимлид — это специалист, который не только пишет код. Ещё он руководит командой разработчиков и участвует в отборе кандидатов.
Как человек, общающийся с новичками, могу сказать, что в профессию приходят в любом возрасте и с любым образованием. Преград нет. Но легче всего разработка iOS-приложений даётся тем, кто интересуется технологиями и хочет приносить пользу людям.
Нужно быть чуть-чуть влюблённым в идеи Apple: участвовать в жизни сообщества, следить за новинками и обновлениями — тогда мотивация учиться iOS-разработке будет выше
Apple — экосистема про развитие. Корпорация привлекает молодых амбициозных разработчиков, чтобы они изучали её технологии и делали прогрессивные проекты. Вся информация про платформу iOS, языки программирования, среду разработки есть в открытом доступе. Это значит, что любой человек может стартовать в iOS, изучив материалы из официальных источников:
- Язык программирования Swift — бесплатный учебник, который поможет освоить Swift с нуля.
- Старт на Swift— полезные туториалы для пошагового изучения языка.
- Гайдлайны Human Interface Design — свод правил о дизайне iOS-приложений.
- Официальный сайт для iOS-разработчиков — комьюнити специалистов.
Чтобы процесс шёл легко, у вас должна быть база в программировании — без неё освоить эти материалы будет сложно. Пробовать никто не запрещает, но всё же перед тем как изучать iOS, лучше сначала разобраться в основах профессии разработчика. Сделать это можно разными способами:
- Поступить на техническую специальность в университет — классно, но долго. Если вы ещё учитесь в школе, то выбрать подходящий факультет, поступить на него и параллельно учиться программировать на iOS — хороший вариант.
- Записаться на платные курсы — если вы учитесь не на технической специальности, или уже работаете и хотите сменить сферу, то платные курсы помогут сделать это дисциплинированно.
- Изучить основы самому — на первых порах можно изучать разработку самостоятельно. Так вы сформируете в голове общую картину, поймёте, какие темы даются легко, а какие проседают. Единственное ограничение здесь — ваша усидчивость и мотивация.
Не у каждого есть четыре года на университет. А курсы будут эффективнее, когда у вас уже есть знания, которые нужно уложить в систему. Поэтому я расскажу, как изучить программирование и iOS-разработку самостоятельно. Поможет мне в этом наш джун — Женя. Вы познакомитесь с его историей и посмотрите, подходит ли вам самостоятельный путь.
Как учиться на iOS-разработчика самому
Время: от 6-ти месяцев обучения
Первые вложения: от 80-ти тысяч за макбук
Создавать iOS-приложения без макбука можно, но сложно. Если вы серьёзно настроены стать iOS-разработчиком, то лучше приобрести девайс сразу. По деньгам больно, но оно того стоит.
Подготовка
1. Составьте roadmap. Перед тем, как погрузиться в программирование, любой новичок должен сделать roadmap, или карту развития . Можно составить свою, а можно найти готовую — например, roadmap от swiftapps.ru.
2. Спланируйте график. Можно почитать истории людей, которые прошли путь в разработку с нуля, и подсмотреть у них рабочие решения. Но не копируйте чужое расписание слепо, ведь только вы знаете, когда и сколько вам комфортно работать.
«Тяжело, тяжело…» — если вас уже посещают такие мысли то, конечно, лучше выбрать курс, где будет команда единомышленников и ментор. В таком случае важно внимательно выбирать программу обучения, чтобы курс рассказывал не только про Swift, но и давал основы
Что поможет в самостоятельном обучении
- Заметки. Сохраняйте полезную информацию в одном месте. Можно использовать стандартные «Заметки» на макбуке. Но лучше хранить всё в Notion, ведь со временем информации станет очень много. В Notion можно создавать огромное количество разделов и уровней вложенности. Это стеллаж IKEA в мире цифровой инфы.
- Канбан-доски. Нужны, чтобы отслеживать прогресс проекта. В вашем случае проектом может быть не приложение, а, например, чтение учебника. Оцениваете задачу, планируете проект, отлеживаете статус. Для этого тоже можно использовать Notion. Честно не реклама — просто удобно.
- Трекеры. Следить за временем, которое уходит на задачу, — это взрослый подход. Так вы будете понимать собственную скорость и отслеживать прогресс: начали ли вы справляться быстрее или всё ещё буксуете на месте. Хороший тайм-трекер — Toggle.
Hard skills начинающего iOS-разработчика
Главный вопрос: что же надо изучать? Собрал для вас базовые темы, в которых должен разбираться будущий iOS-разработчик.
✅ Знать базовые принципы ООП
Объектно-ориентированное программирование (ООП) — это подход к программированию, который используется не только в iOS-разработке. Сейчас и в обозримом будущем разработчики пишут в этой парадигме.
Вам поможет: книга «Погружение в паттерны проектирования» (включите VPN) — введение в ООП, разбор принципов SOLID и классических паттернов проектирования. В главах есть пункт «Аналогия из жизни», который объясняет тему человеческим языком на понятном примере.
✅ Понимать базовые архитектуры
Каждый разработчик на самом деле — архитектор. По-хорошему, он должен спроектировать целую систему, которая сможет работать без сбоев. Чтобы это делать, нужно разбираться в базовых архитектурах: MVC, MVVM, MVP, VIPER. Для того, кто владеет этими знаниями, не проблема создать приложение любого масштаба.
Вам поможет: The book of VIPER — большая книга, которая рассказывает про VIPER-архитектуру. Сейчас и в обозримом будущем в iOS-отделе «Лайв Тайпинга» работают по ней). Вдогонку — статья-разбор VIPER-архитектуры на примере iOS-приложения.
✅ Писать псевдокод
Псевдокод — это универсальный язык, который нужен для описания алгоритмов. Не для того, чтобы программа выполняла команды, а для того, чтобы эти команды мог прочитать любой программист. В его основе — базовые принципы синтаксиса компьютерного кода и человеческий язык.
Вам поможет: Дж. Макконнелл, «Основы современных алгоритмов» — автор рассказывает о разных видах алгоритмов и учить их анализировать. Для удобства главы книги не зависят друг от друга — их можно читать в любой последовательности.
✅ Знать языки программирования iOS-приложений
В первую очередь начинающим iOS-разработчикам нужно освоить Swift. Однако в мире ещё существуют проекты, написанные на Objective-C. Рано или поздно все сталкиваются с такими, поэтому знание Objective-C — будет вашим преимуществом.
Вам поможет: «Swift. Основы разработки приложений под iOS, iPadOS и macOS» — базовые концепции программирования и основы синтаксиса доступным языком. Если вы не занимались разработкой, то эта книга подходит для старта. 6-ое издание самое актуальное сейчас.
✅ Знать базовые фреймворки Swift
Лучше начать с устоявшихся фреймворков — Apple UIKit, Foundation и CoreAnimation, а SwiftUI оставить на потом. Он нативный, но появился только в 2019. Три года — небольшой срок для интеграции нового инструмента. Фреймворк сырой, и ему нужны доработки. Применять его в коммерческой разработке — рисково, потому что могут происходить сбои. А наша задача — сделать для клиента стабильное приложение.
Вам поможет: UIKit, Foundation, CoreAnimation.
✅ Уметь работать с Git
В коммерческой разработке над приложением работают сразу несколько программистов. Это значит, что им нужен общий доступ к проекту. Его может обеспечить система контроля версий Git. Она хранит изменения в проекте в полном объёме и позволяет решать конфликты слияния, которые возникают при разработке.
Вам поможет: Git-book.
✅ Понимать навигацию iOS-приложений
В iOS-приложениях есть универсальные элементы навигации, способы их осуществления (UITabBarController, UINavigationController) и отображения (UIViewController). Нужно понимать, что они представляют собой на поверхности (например, как отображается таббар на экране) и как организована их работа «внутри» приложения.
Вам поможет: UITabBarController, UINavigationController, UIViewController
✅ Понимать жизненный цикл приложения и ViewController
У приложения есть несколько состояний: когда оно не работает, когда пользователь запускает его, когда активно пользуется, когда сворачивает в фон и закрывает. Все эти состояния должны быть отображены в коде приложения, чтобы оно могло адекватно реагировать на события (действия пользователя). Жизненный цикл приложения схож по структуре с жизненным циклом ViewController — его тоже нужно знать.
Вам поможет: Жизненный цикл приложения, жизненный цикл UIViewController
Когда идти на собеседование
Для разработчиков важны практические навыки. Теория — это хорошо, но без реального программистского опыта сложно конкурировать с другими кандидатами.
Прежде, чем идти на собеседование, попробуйте придумать и создать свой pet-проект. Пусть даже это будет копия известного приложения. Нарисуйте для него прототип, подключите свободное API. Да, на проекте вы будете один: у вас не будет команды из менеджеров, дизайнеров, тестировщиков. Но главное, что вы сами на практике, методом проб и ошибок разберётесь в том, как создаются iOS-приложения.
У iOS-разработчиков есть возможность написать несколько строчек кода и моментально проверить, как он исполняется, с помощью тестовой программы Swift Playground. Это такая «песочница», где можно оттачивать навыки и тестировать pet-проекты
Берите свой pet-проект и бегом на собеседование, если уже нашли подходящую вакансию.
Работа в команде: soft skills программиста
Чтобы стать успешным разработчиком, недостаточно писать чистый код. В компании, которая делает продукты для крупного бизнеса, программист — это всегда человек, который играет в команде. Вывод — нужно развивать soft skills. Это «мягкие» навыки, которые относятся не к профессиональным умениям, а к вашей личности.
Какие soft skills нужны разработчику
- Планирование — на реальных проектах вас ждёт новый уровень планирования, по сравнению с тем, что вы делали во время обучения. Вам предстоит оценивать задачи, укладываться в оценку и распределять своё рабочее время так, чтобы нагрузка была равномерной.
- Постановка задач — чтобы другой человек понял, чего вы от него хотите, нужно максимально понятно и конкретно объяснять свои ожидания и обозначить сроки. 90% успеха выполненной задачи — её правильная постановка.
- Делегирование — нельзя тащить на себе весь проект. Нужно научиться делегировать задачи коллегам, если вы понимаете, что не справитесь с объёмом работ.
- Честность — важно честно говорить, что получается и нет, особенно если проблема тормозит всю работу. Пока вы честно не сможете сказать о ней, никто не поможет с её решением.
- Умение отдыхать — важно понимать, когда вы уже всё, и давать себе время на перезагрузку. Отдохнувший разработчик работает продуктивнее, чем «горящий» специалист.
Полезные ссылки для старта в iOS
Обучающие
- Статья «Я не знаю ООП» — если вы начали разбираться в принципах объектно-ориентированного программирования и у вас возникли вопросики, то вы найдёте общий язык с автором статьи.
- Статья «Xcode — что это за среда разработки» — поможет скрасить первое знакомство со средой программирования iOS-приложений. Шоркаты в одной картинке — вместо тысячи кликов.
- Raywenderlich — неисчерпаемый источник iOS-руководств. Подходит и новичкам, и профессионалам, которым нужно быстро понять работу нового фреймворка. Плюс в том, что к каждому учебному материалу прилагается практическое занятие — можно изучить новую тему и тут же проверить себя на деле.
- Hacking with Swift — тоже крутой и полезный ресурс со свежими туториалами по Swift, но бесплатный.
- Документация Swift — исчерпывающая информация по основному языку программирования для iOS. А вот те же материалы, но с переводом на русский.
- Генератор ссылок на ресурсы в проекте Xcode в Swift — получаете строго типизированные ресурсы с автозаполнением (изображения, шрифты и тд).
- Ежегодный курс iOS-разработки от Стэнфордского университета — объясняет основы создания приложений для iPhone и iPad с использованием SwiftUI.
Блоги и телеграм-каналы
- NSHipster — блог дизайнера и разработчика облачного сервиса Heroku. Давно не обновляется, но там хранится много полезной информации про фреймворки, объекты фреймворков, Objective-C, Swift, Xcode и важные open source-проекты.
- iOS Dev Weekly — срез новостей из мира iOS-разработки. Приходит в виде почтовой рассылки по пятницам. Куратор — Дэйв Вервер.
- Канал в Telegram от Rambler — самые интересные статьи, видео и новости, связанные с iOS-разработкой.
- Телеграм-канал Mobile Insights by AppTractor — дайджест статей по iOS, Android и разработке в принципе. Можно почитать что-то интересное для разного уровня.
- Телеграм-канал iOS Dev — выкладывают хорошие статьи с кратким саммари — удобно, если нужно получить полезную информацию, но нет времени читать многабукв.
Если вы хотите работать iOS-разработчиком в «Лайв Тайпинге» — переходите в раздел «Вакансии». Наверняка там есть интересное предложение для вас.