Программа
Основные темы, которые надо освоить
- UIKit
- SwiftUI
- Работа памяти в iOS
- Проблемы многопоточности
- Работа с сетью
- Виды баз данных
- CoreData
- Основные архитектуры iOS приложений + Dependency Injection (DI)
- ООП — объектно ориентированное программирование, переходящее в протокол ориентированное программирование
- Git
- Понятие реактивности + Combine
- Xcode debugging (отладка)
В основном обучение на курсах ведется по следующему принципу:
- От простого к сложному
- Выбирается тема из списка выше
- Даются азы
- Даются углубленные знания по ней
- Практическое задание высокой сложности
- Дается хаотичный набор сложных тем, которые мало связаны между собой
Например вы можете сами нагуглить курс по iOS разработке на сайте «блаблалогия.ру». Сразу после первого раздела с константами и переменными идет набор сложных тем, не связанных между собой по сути.
Скрин:

Курсант, только научившийся печатать код в xCode должен переопределять методы и инициализацию классов!
Возьмем еще одну программу от бигтеха «Шмяндекс»:
Скрин

Я вообще не понимаю как навигация в проекте связана с ScrollView и дебагом приложений!
Исходя из собственного опыта, и опыта моих коллег по цеху, я пришел к выводу, что подобная система обучения является ущербной и заставляет курсанта на этапе подготовки к собеседованиями зазубривать материал, без понимания его смысла.
На мой взгляд, самый лучший порядок такой:
- Выбираем набор тем, которые взаимосвязаны между собой (например многопоточность + работа с сетью)
- На практическом примере понимаем зачем вообще нужна многопоточность
- На практическом примере элементарными методами учимся слать запросы в сеть
- На практическом примере создаем реальные ошибки и проблемы многопоточности и сетевых запросов
- На основе лучших практик на практическом примере решаем эти проблемы.
Таким образом курсант понимает зачем ему нужна эта тема, какие у нее есть проблемы и как их решать. А как красиво это все объяснить, он поймет на этапе подготовки к собеседованиям. И эти теоретические знания будут ложиться на практическую базу. Это позволяет уйти от бессмысленной зубрежки к простому структурированию знаний и закреплению результата.
Поэтому я несколько месяцев составлял список тем, и делил их по сложности, чтобы именно на практике, а не в теории закончить программу с мидловыми знаниями.
Список уроков тут. Успехов!