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

На этой странице ты найдешь советы по развитию в направлении iOS-разработки.
Грейды iOS-разработчиков
Что нужно знать?
Computer Science


Data
  • Знать Collections и Map
  • Знать распространенные реализации
  • Понимать в каких случаях нужны коллекции

OOP
  • Знать основную идею ООП
  • Уметь перечислять все принципы с кратким описанием

Architecture
  • Делегирование

Network
  • Уметь работать с сетью любым способом
iOS Platform


iOS SDK + 3rd
  • App lifecycle
  • UIViewController lifecycle

UI
  • Уметь верстать простой дизайн в xib
  • Autolayout

Threading
  • Знать про существование многопоточного кода
  • Thread vs Process

Tools
  • Уметь пользоваться логами

Xcode
  • Знать структуру проекта
  • Знать как открывать экраны и взаимодействовать с пользовательским интерфейсом
Memory Management


Memory
  • Знать отличия между типами памяти (оперативная и постоянная)
Language


Swift
  • Знать синтаксис, типы
  • Соблюдать code style
Computer Science


Data
  • Знать Collections и Map
  • Знать распространенные реализации
  • Понимать в каких случаях нужны коллекции

OOP
  • Знать основную идею ООП
  • Уметь перечислять все принципы с кратким описанием

Programming
  • DRY
  • KISS

Architecture
  • Делегирование
  • MVC

Network
  • Уметь работать с сетью любым способом
iOS Platform


iOS SDK + 3rd
  • App lifecycle
  • UIViewController lifecycle

UI
  • Уметь верстать простой дизайн в xib
  • Autolayout

Threading
  • Знать про существование многопоточного кода
  • Thread vs Process

Tests
  • Уметь писать простые unit тесты

Tools
  • Уметь пользоваться логами

Xcode
  • Знать структуру проекта
  • Знать как открывать экраны и взаимодействовать с пользовательским интерфейсом
  • Breakpoints
  • LLDB
Memory Management


Memory
  • Знать отличия между типами памяти (оперативная и постоянная)

ARC
  • Знать что в Swift не надо руками собирать мусор и всё на этом :)
Language


Swift
  • Знать синтаксис, типы
  • Соблюдать code style
Computer Science


Data
  • Знать Collections и Map
  • Знать распространенные реализации
  • Понимать в каких случаях нужны коллекции
  • Знать как работают внутри самые распространённые коллекции
  • Знать их асимптотику

OOP
  • Знать основную идею ООП
  • Уметь перечислять все принципы с кратким описанием
  • Знать отличия интерфейса от абстрактного класса
  • Хорошо понимать икапсуляцию и наследование

Design
  • Знать о существовании паттернов
  • Различать типы паттернов
  • Знать и использовать на постоянной основе простые паттерны
  • Знать про существование распространенных антипаттернов

Programming
  • DRY
  • KISS
  • Уметь перечислить все принципы SOLID и давать им краткое описание

Architecture
  • Делегирование
  • MVC
  • MVP
  • MVVM
  • VIPER
  • Знать техники рефакторинга

Network
  • Уметь работать с сетью любым способом
  • Знать протоколы передачи данных
  • Знать архитектуру взаимодействия REST
  • Знать коды ответов от сервера
  • Знать Multipart
iOS Platform


iOS SDK + 3rd
  • App lifecycle
  • UIViewController lifecycle
  • URLSession

UI
  • Уметь верстать простой дизайн в xib
  • Autolayout
  • Простые анимации
  • HIG

Threading
  • Знать про существование многопоточного кода
  • Thread vs Process
  • Уметь писать простой многопоточный код
  • Понимать синхронность и асинхронность

Tests
  • Уметь писать простые unit тесты

Tools
  • Уметь пользоваться логами
  • Debug mode
  • Уметь работать с запросами (Postman etc)

Xcode
  • Знать структуру проекта
  • Знать как открывать экраны и взаимодействовать с пользовательским интерфейсом
  • Breakpoints
  • LLDB
Memory Management


Memory
  • Знать отличия между типами памяти (оперативная и постоянная)
  • Знать heap и stack

ARC
  • Знать что в Swift не надо руками собирать мусор и всё на этом :)
  • Знать принцип RC
  • weak, unowned

Memory Leaks
  • Иметь базовые знания про утечки памяти
Language


Swift
  • Знать синтаксис, типы
  • Соблюдать code style
  • Collections
  • Final
  • Static
  • Модификаторы доступа

Objective-C
  • Знать синтаксис
  • Соблюдать code style
Computer Science

Data
  • Знать Collections и Map
  • Знать распространенные реализации
  • Понимать в каких случаях нужны коллекции
  • Знать как работают внутри самые распространённые коллекции
  • Знать их асимптотику

OOP
  • Знать основную идею ООП
  • Уметь перечислять все принципы с кратким описанием
  • Знать отличия интерфейса от абстрактного класса
  • Хорошо понимать икапсуляцию и наследование
  • Понимать все принципы ООП
  • Знать зачем нужен каждый из принципов
  • Знать плюсы и минусы каждого принципа
  • Понимать композицию

Design
  • Знать о существовании паттернов
  • Различать типы паттернов
  • Знать и использовать на постоянной основе простые паттерны
  • Знать про существование распространенных антипаттернов

Programming
  • DRY
  • KISS
  • Уметь перечислить все принципы SOLID и давать им краткое описание
  • Следовать принципам I и D
  • Уметь находить их нарушения на ревью

Architecture
  • Делегирование
  • MVC
  • MVP
  • MVVM
  • VIPER
  • Знать техники рефакторинга

Network
  • Уметь работать с сетью любым способом
  • Знать протоколы передачи данных
  • Знать архитектуру взаимодействия REST
  • Знать коды ответов от сервера
  • Знать Multipart
iOS Platform


iOS SDK + 3rd
  • App lifecycle
  • UIViewController lifecycle
  • URLSession

UI
  • Уметь верстать простой дизайн в xib
  • Autolayout
  • Простые анимации
  • HIG

Threading
  • Знать про существование многопоточного кода
  • Thread vs Process
  • Уметь писать простой многопоточный код
  • Понимать синхронность и асинхронность
  • Уметь писать многопоточный код разными инструментами
  • Знать классические проблемы многопоточности
  • Знать основы синхронизации

Tests
  • Уметь писать простые unit тесты
  • На постоянной основе писать unit тесты
  • Писать parameterized тесты
  • Знать виды тестов: unit, functional, integration, ui test
  • Знать базовые антипаттерны тестирования

Tools
  • Уметь пользоваться логами
  • Debug mode
  • Уметь работать с запросами (Postman etc)
  • Базовые знания git
  • Cocoapods

Xcode
  • Знать структуру проекта
  • Знать как открывать экраны и взаимодействовать с пользовательским интерфейсом
  • Breakpoints
  • LLDB
Memory Management


Memory
  • Знать отличия между типами памяти (оперативная и постоянная)
  • Знать heap и stack

ARC
  • Знать что в Swift не надо руками собирать мусор и всё на этом :)
  • Знать принцип RC
  • weak, unowned

Memory Leaks
  • Иметь базовые знания про утечки памяти
  • Знать об утечках памяти и что к ним приводит
  • Уметь их находить и чинить
Language


Swift
  • Знать синтаксис, типы
  • Соблюдать code style
  • Collections
  • Final
  • Static
  • Модификаторы доступа

Objective-C
  • Знать синтаксис
  • Соблюдать code style
  • Collections
  • Category
Computer Science


Data
  • Знать Collections и Map
  • Знать распространенные реализации
  • Понимать в каких случаях нужны коллекции
  • Знать как работают внутри самые распространённые коллекции
  • Знать их асимптотику
  • Знать как работают внутри менее распространённые коллекции

OOP
  • Знать основную идею ООП
  • Уметь перечислять все принципы с кратким описанием
  • Знать отличия интерфейса от абстрактного класса
  • Хорошо понимать икапсуляцию и наследование
  • Понимать все принципы ООП
  • Знать зачем нужен каждый из принципов
  • Знать плюсы и минусы каждого принципа
  • Понимать композицию
  • Иметь глубокие знания ООП
  • В ревью предлагать оптимальные решения с помощью принципов ООП
  • Понимать связь между принципами ООП
  • Знать агрегирование

Design
  • Знать о существовании паттернов
  • Различать типы паттернов
  • Знать и использовать на постоянной основе простые паттерны
  • Знать про существование распространенных антипаттернов
  • Знать более сложные паттерны
  • Понимать какие паттерны помогают соблюдать принципы SOLID
  • Понимать различия схожих паттернов
  • Знать и уметь находить в ревью различные антипаттерны разработки

Programming
  • DRY
  • KISS
  • Уметь перечислить все принципы SOLID и давать им краткое описание
  • Следовать принципам I и D
  • Уметь находить их нарушения на ревью
  • Знать все принципы SOLID и следовать им
  • Знать другие принципы ООП, помимо SOLID
  • Уметь распознавать на ревью нарушения принципов SOLID (или других принципов)

Architecture
  • Делегирование
  • MVC
  • MVP
  • MVVM
  • VIPER
  • Знать техники рефакторинга

Network
  • Уметь работать с сетью любым способом
  • Знать протоколы передачи данных
  • Знать архитектуру взаимодействия REST
  • Знать коды ответов от сервера
  • Знать Multipart
  • Знать криптографические протоколы данных
  • Знать протоколы для передачи данных в реальном времени
iOS Platform


iOS SDK + 3rd
  • App lifecycle
  • UIViewController lifecycle
  • URLSession
  • Permissions
  • Push, deeplink
  • Advenced WKWebView
  • Persistence (CoreData, UserDefaults etc)

UI
  • Уметь верстать простой дизайн в xib
  • Autolayout
  • Простые анимации
  • HIG
  • Верстать кодом
  • Знание цикла layout

Threading
  • Знать про существование многопоточного кода
  • Thread vs Process
  • Уметь писать простой многопоточный код
  • Понимать синхронность и асинхронность
  • Уметь писать многопоточный код разными инструментами
  • Знать классические проблемы многопоточности
  • Знать основы синхронизации
  • Знать qos

Tests
  • Уметь писать простые unit тесты
  • На постоянной основе писать unit тесты
  • Писать parameterized тесты
  • Знать виды тестов: unit, functional, integration, ui test
  • Знать базовые антипаттерны тестирования

Tools
  • Уметь пользоваться логами
  • Debug mode
  • Уметь работать с запросами (Postman etc)
  • Базовые знания git
  • Cocoapods

Xcode
  • Знать структуру проекта
  • Знать как открывать экраны и взаимодействовать с пользовательским интерфейсом
  • Breakpoints
  • LLDB
  • Schemes, targets
  • Frameworks
  • Понимание структуры файла pbxproj
  • Memory Graph
  • Capture View
Memory Management


Memory
  • Знать отличия между типами памяти (оперативная и постоянная)
  • Знать heap и stack
  • Иметь глубокие знания по хранению reference и value типов в памяти

ARC
  • Знать что в Swift не надо руками собирать мусор и всё на этом :)
  • Знать принцип RC
  • weak, unowned

Memory Leaks
  • Иметь базовые знания про утечки памяти
  • Знать об утечках памяти и что к ним приводит
  • Уметь их находить и чинить
  • Уметь находить в pull request утечки памяти
Language


Swift
  • Знать синтаксис, типы
  • Соблюдать code style
  • Collections
  • Final
  • Static
  • Модификаторы доступа
  • POP
  • FP

Objective-C
  • Знать синтаксис
  • Соблюдать code style
  • Collections
  • Category
Computer Science


Data
  • Знать Collections и Map
  • Знать распространенные реализации
  • Понимать в каких случаях нужны коллекции
  • Знать как работают внутри самые распространённые коллекции
  • Знать их асимптотику
  • Знать как работают внутри менее распространённые коллекции
  • Знать потокобезопасные коллекции

OOP
  • Знать основную идею ООП
  • Уметь перечислять все принципы с кратким описанием
  • Знать отличия интерфейса от абстрактного класса
  • Хорошо понимать икапсуляцию и наследование
  • Понимать все принципы ООП
  • Знать зачем нужен каждый из принципов
  • Знать плюсы и минусы каждого принципа
  • Понимать композицию
  • Иметь глубокие знания ООП
  • В ревью предлагать оптимальные решения с помощью принципов ООП
  • Понимать связь между принципами ООП
  • Знать агрегирование

Design
  • Знать о существовании паттернов
  • Различать типы паттернов
  • Знать и использовать на постоянной основе простые паттерны
  • Знать про существование распространенных антипаттернов
  • Знать более сложные паттерны
  • Понимать какие паттерны помогают соблюдать принципы SOLID
  • Понимать различия схожих паттернов
  • Знать и уметь находить в ревью различные антипаттерны разработки

Programming
  • DRY
  • KISS
  • Уметь перечислить все принципы SOLID и давать им краткое описание
  • Следовать принципам I и D
  • Уметь находить их нарушения на ревью
  • Знать все принципы SOLID и следовать им
  • Знать другие принципы ООП, помимо SOLID
  • Уметь распознавать на ревью нарушения принципов SOLID (или других принципов)

Architecture
  • Делегирование
  • MVC
  • MVP
  • MVVM
  • VIPER
  • Знать техники рефакторинга
  • Clean arch
  • UDF (unidirectional data flow)
  • Применять техники рефакторинга и предлагать их решения на ревью

Network
  • Уметь работать с сетью любым способом
  • Знать протоколы передачи данных
  • Знать архитектуру взаимодействия REST
  • Знать коды ответов от сервера
  • Знать Multipart
  • Знать криптографические протоколы данных
  • Знать протоколы для передачи данных в реальном времени
  • TCP/UDP Socket
  • SOAP
  • HTTP Cache
iOS Platform


iOS SDK + 3rd
  • App lifecycle
  • UIViewController lifecycle
  • URLSession
  • Permissions
  • Push, deeplink
  • Advenced WKWebView
  • Persistence (CoreData, UserDefaults etc)
  • AVFoundation
  • Yandex MapKit, Google Map
  • IAP
  • Application Extensions (Notification etc)
  • Background tasks

UI
  • Уметь верстать простой дизайн в xib
  • Autolayout
  • Простые анимации
  • HIG
  • Верстать кодом
  • Знание цикла layout
  • Понимание UIResponder chain
  • Понимание основ UX/UI
  • Accessibility

Threading
  • Знать про существование многопоточного кода
  • Thread vs Process
  • Уметь писать простой многопоточный код
  • Понимать синхронность и асинхронность
  • Уметь писать многопоточный код разными инструментами
  • Знать классические проблемы многопоточности
  • Знать основы синхронизации
  • Знать qos
  • Иметь более глубокие знания о проблемах многопоточности

Tests
  • Уметь писать простые unit тесты
  • На постоянной основе писать unit тесты
  • Писать parameterized тесты
  • Знать виды тестов: unit, functional, integration, ui test
  • Знать базовые антипаттерны тестирования
  • Писать UI тесты
  • Выделять время во время планирование задачи на тесты
  • Писать негативные кейсы для тестов
  • Знать антипаттерны тестирования

Tools
  • Уметь пользоваться логами
  • Debug mode
  • Уметь работать с запросами (Postman etc)
  • Базовые знания git
  • Cocoapods
  • Shell
  • Advanced Cocoapods (podfile configuration, private pods creation)
  • Linter

Xcode
  • Знать структуру проекта
  • Знать как открывать экраны и взаимодействовать с пользовательским интерфейсом
  • Breakpoints
  • LLDB
  • Schemes, targets
  • Frameworks
  • Понимание структуры файла pbxproj
  • Memory Graph
  • Capture View
  • Build Phases, RunScripts
  • Xcode profile
  • Xcode Instruments
Memory Management


Memory
  • Знать отличия между типами памяти (оперативная и постоянная)
  • Знать heap и stack
  • Иметь глубокие знания по хранению reference и value типов в памяти
  • Знать стековую и регистровую архитектуру

ARC
  • Знать что в Swift не надо руками собирать мусор и всё на этом :)
  • Знать принцип RC
  • weak, unowned
  • Closure Capture

Memory Leaks
  • Иметь базовые знания про утечки памяти
  • Знать об утечках памяти и что к ним приводит
  • Уметь их находить и чинить
  • Уметь находить в pull request утечки памяти
  • Уметь определять сложные утечки памяти
  • Знать, какие системные классы могут создавать утечки памяти
  • Определять retain циклы для любых утечек памяти
Language


Swift
  • Знать синтаксис, типы
  • Соблюдать code style
  • Collections
  • Final
  • Static
  • Модификаторы доступа
  • POP
  • FP
  • Advanced Generics
  • Advanced Decoding
  • Property Wrappers

Objective-C
  • Знать синтаксис
  • Соблюдать code style
  • Collections
  • Category
Computer Science


Data
  • Знать Collections и Map
  • Знать распространенные реализации
  • Понимать в каких случаях нужны коллекции
  • Знать как работают внутри самые распространённые коллекции
  • Знать их асимптотику
  • Знать как работают внутри менее распространённые коллекции
  • Знать потокобезопасные коллекции

OOP
  • Знать основную идею ООП
  • Уметь перечислять все принципы с кратким описанием
  • Знать отличия интерфейса от абстрактного класса
  • Хорошо понимать икапсуляцию и наследование
  • Понимать все принципы ООП
  • Знать зачем нужен каждый из принципов
  • Знать плюсы и минусы каждого принципа
  • Понимать композицию
  • Иметь глубокие знания ООП
  • В ревью предлагать оптимальные решения с помощью принципов ООП
  • Понимать связь между принципами ООП
  • Знать агрегирование

Design
  • Знать о существовании паттернов
  • Различать типы паттернов
  • Знать и использовать на постоянной основе простые паттерны
  • Знать про существование распространенных антипаттернов
  • Знать более сложные паттерны
  • Понимать какие паттерны помогают соблюдать принципы SOLID
  • Понимать различия схожих паттернов
  • Знать и уметь находить в ревью различные антипаттерны разработки

Programming
  • DRY
  • KISS
  • Уметь перечислить все принципы SOLID и давать им краткое описание
  • Следовать принципам I и D
  • Уметь находить их нарушения на ревью
  • Знать все принципы SOLID и следовать им
  • Знать другие принципы ООП, помимо SOLID
  • Уметь распознавать на ревью нарушения принципов SOLID (или других принципов)

Architecture
  • Делегирование
  • MVC
  • MVP
  • MVVM
  • VIPER
  • Знать техники рефакторинга
  • Clean arch
  • UDF (unidirectional data flow)
  • Применять техники рефакторинга и предлагать их решения на ревью

Network
  • Уметь работать с сетью любым способом
  • Знать протоколы передачи данных
  • Знать архитектуру взаимодействия REST
  • Знать коды ответов от сервера
  • Знать Multipart
  • Знать криптографические протоколы данных
  • Знать протоколы для передачи данных в реальном времени
  • TCP/UDP Socket
  • SOAP
  • HTTP Cache
iOS Platform


iOS SDK + 3rd
  • App lifecycle
  • UIViewController lifecycle
  • URLSession
  • Permissions
  • Push, deeplink
  • Advenced WKWebView
  • Persistence (CoreData, UserDefaults etc)
  • AVFoundation
  • Yandex MapKit, Google Map
  • IAP
  • Application Extensions (Notification etc)
  • Background tasks

UI
  • Уметь верстать простой дизайн в xib
  • Autolayout
  • Простые анимации
  • HIG
  • Верстать кодом
  • Знание цикла layout
  • Понимание UIResponder chain
  • Понимание основ UX/UI
  • Accessibility

Threading
  • Знать про существование многопоточного кода
  • Thread vs Process
  • Уметь писать простой многопоточный код
  • Понимать синхронность и асинхронность
  • Уметь писать многопоточный код разными инструментами
  • Знать классические проблемы многопоточности
  • Знать основы синхронизации
  • Знать qos
  • Иметь более глубокие знания о проблемах многопоточности

Tests
  • Уметь писать простые unit тесты
  • На постоянной основе писать unit тесты
  • Писать parameterized тесты
  • Знать виды тестов: unit, functional, integration, ui test
  • Знать базовые антипаттерны тестирования
  • Писать UI тесты
  • Выделять время во время планирование задачи на тесты
  • Писать негативные кейсы для тестов
  • Знать антипаттерны тестирования
  • Уметь настраивать тесты в Bamboo (CI)
  • Оптимизировать тесты

Tools
  • Уметь пользоваться логами
  • Debug mode
  • Уметь работать с запросами (Postman etc)
  • Базовые знания git
  • Cocoapods
  • Shell
  • Advanced Cocoapods (podfile configuration, private pods creation)
  • Linter
  • Carthage, SPM
  • CI создание и изменение планов
  • Fastlane
  • static мы dynamic libs

Xcode
  • Знать структуру проекта
  • Знать как открывать экраны и взаимодействовать с пользовательским интерфейсом
  • Breakpoints
  • LLDB
  • Schemes, targets
  • Frameworks
  • Понимание структуры файла pbxproj
  • Memory Graph
  • Capture View
  • Build Phases, RunScripts
  • Xcode profile
  • Xcode Instruments
  • Advanced LLDB
  • Xcode Templates
Memory Management


Memory
  • Знать отличия между типами памяти (оперативная и постоянная)
  • Знать heap и stack
  • Иметь глубокие знания по хранению reference и value типов в памяти
  • Знать стековую и регистровую архитектуру

ARC
  • Знать что в Swift не надо руками собирать мусор и всё на этом :)
  • Знать принцип RC
  • weak, unowned
  • Closure Capture
  • Понимать MRC
  • Понимать ARC vs GC

Memory Leaks
  • Иметь базовые знания про утечки памяти
  • Знать об утечках памяти и что к ним приводит
  • Уметь их находить и чинить
  • Уметь находить в pull request утечки памяти
  • Уметь определять сложные утечки памяти
  • Знать, какие системные классы могут создавать утечки памяти
  • Определять retain циклы для любых утечек памяти
Language


Swift
  • Знать синтаксис, типы
  • Соблюдать code style
  • Collections
  • Final
  • Static
  • Модификаторы доступа
  • POP
  • FP
  • Advanced Generics
  • Advanced Decoding
  • Property Wrappers

Objective-C
  • Знать синтаксис
  • Соблюдать code style
  • Collections
  • Category
Computer Science


Data
  • Знать Collections и Map
  • Знать распространенные реализации
  • Понимать в каких случаях нужны коллекции
  • Знать как работают внутри самые распространённые коллекции
  • Знать их асимптотику
  • Знать как работают внутри менее распространённые коллекции
  • Знать потокобезопасные коллекции
  • Deque
  • Queue
  • Tree
  • Graph (алгоритмы)

OOP
  • Знать основную идею ООП
  • Уметь перечислять все принципы с кратким описанием
  • Знать отличия интерфейса от абстрактного класса
  • Хорошо понимать икапсуляцию и наследование
  • Понимать все принципы ООП
  • Знать зачем нужен каждый из принципов
  • Знать плюсы и минусы каждого принципа
  • Понимать композицию
  • Иметь глубокие знания ООП
  • В ревью предлагать оптимальные решения с помощью принципов ООП
  • Понимать связь между принципами ООП
  • Знать агрегирование
  • Знать более одной парадигмы программирования (Императивная, функциональная, декларативная)

Design
  • Знать о существовании паттернов
  • Различать типы паттернов
  • Знать и использовать на постоянной основе простые паттерны
  • Знать про существование распространенных антипаттернов
  • Знать более сложные паттерны
  • Понимать какие паттерны помогают соблюдать принципы SOLID
  • Понимать различия схожих паттернов
  • Знать и уметь находить в ревью различные антипаттерны разработки
  • Знать паттерны за пределами refactoring guru
  • Знать антипаттерны разработки за пределами sourcemaking

Programming
  • DRY
  • KISS
  • Уметь перечислить все принципы SOLID и давать им краткое описание
  • Следовать принципам I и D
  • Уметь находить их нарушения на ревью
  • Знать все принципы SOLID и следовать им
  • Знать другие принципы ООП, помимо SOLID
  • Уметь распознавать на ревью нарушения принципов SOLID (или других принципов)
  • GRASP

Architecture
  • Делегирование
  • MVC
  • MVP
  • MVVM
  • VIPER
  • Знать техники рефакторинга
  • Clean arch
  • UDF (unidirectional data flow)
  • Применять техники рефакторинга и предлагать их решения на ревью
  • MVI, Combine и др.

Network
  • Уметь работать с сетью любым способом
  • Знать протоколы передачи данных
  • Знать архитектуру взаимодействия REST
  • Знать коды ответов от сервера
  • Знать Multipart
  • Знать криптографические протоколы данных
  • Знать протоколы для передачи данных в реальном времени
  • TCP/UDP Socket
  • SOAP
  • HTTP Cache
  • OSI Layers
  • Handshaking
  • IPV4/IPV6
iOS Platform


iOS SDK + 3rd
  • App lifecycle
  • UIViewController lifecycle
  • URLSession
  • Permissions
  • Push, deeplink
  • Advenced WKWebView
  • Persistence (CoreData, UserDefaults etc)
  • AVFoundation
  • Yandex MapKit, Google Map
  • IAP
  • Application Extensions (Notification etc)
  • Background tasks
  • Core Image
  • JSCore
  • Widgets
  • App Clips
  • Следить за новыми технологиями, подходами и библиотеками, предлагать новые решения

UI
  • Уметь верстать простой дизайн в xib
  • Autolayout
  • Простые анимации
  • HIG
  • Верстать кодом
  • Знание цикла layout
  • Понимание UIResponder chain
  • Понимание основ UX/UI
  • Accessibility
  • Уметь писать custom view (draw)
  • Сложные анимации (Core Animation)
  • Сторонние фреймворки для вёрстки
  • SwiftUI

Threading
  • Знать про существование многопоточного кода
  • Thread vs Process
  • Уметь писать простой многопоточный код
  • Понимать синхронность и асинхронность
  • Уметь писать многопоточный код разными инструментами
  • Знать классические проблемы многопоточности
  • Знать основы синхронизации
  • Знать qos
  • Иметь более глубокие знания о проблемах многопоточности
  • Производить постоянный анализ кода в проекте на наличие проблемных мест и оптимизировать код
  • Знать работу потоков на уровне процессора и компилятора

Tests
  • Уметь писать простые unit тесты
  • На постоянной основе писать unit тесты
  • Писать parameterized тесты
  • Знать виды тестов: unit, functional, integration, ui test
  • Знать базовые антипаттерны тестирования
  • Писать UI тесты
  • Выделять время во время планирование задачи на тесты
  • Писать негативные кейсы для тестов
  • Знать антипаттерны тестирования
  • Уметь настраивать тесты в Bamboo (CI)
  • Оптимизировать тесты
  • Обмен данными между таргетами UI-тестов и приложения
  • TDD

Tools
  • Уметь пользоваться логами
  • Debug mode
  • Уметь работать с запросами (Postman etc)
  • Базовые знания git
  • Cocoapods
  • Shell
  • Advanced Cocoapods (podfile configuration, private pods creation)
  • Linter
  • Carthage, SPM
  • CI создание и изменение планов
  • Fastlane
  • static мы dynamic libs
  • LLVM, Compiler
  • xcodebuild

Xcode
  • Знать структуру проекта
  • Знать как открывать экраны и взаимодействовать с пользовательским интерфейсом
  • Breakpoints
  • LLDB
  • Schemes, targets
  • Frameworks
  • Понимание структуры файла pbxproj
  • Memory Graph
  • Capture View
  • Build Phases, RunScripts
  • Xcode profile
  • Xcode Instruments
  • Advanced LLDB
  • Xcode Templates
Memory Management


Memory
  • Знать отличия между типами памяти (оперативная и постоянная)
  • Знать heap и stack
  • Иметь глубокие знания по хранению reference и value типов в памяти
  • Знать стековую и регистровую архитектуру
  • Знать Swift Memory Layout
  • Понимать как работает bytecode

ARC
  • Знать что в Swift не надо руками собирать мусор и всё на этом :)
  • Знать принцип RC
  • weak, unowned
  • Closure Capture
  • Понимать MRC
  • Понимать ARC vs GC

Memory Leaks
  • Иметь базовые знания про утечки памяти
  • Знать об утечках памяти и что к ним приводит
  • Уметь их находить и чинить
  • Уметь находить в pull request утечки памяти
  • Уметь определять сложные утечки памяти
  • Знать, какие системные классы могут создавать утечки памяти
  • Определять retain циклы для любых утечек памяти
  • Производить постоянный анализ кода в проекте на наличие проблемных мест и оптимизировать код
Language


Swift
  • Знать синтаксис, типы
  • Соблюдать code style
  • Collections
  • Final
  • Static
  • Модификаторы доступа
  • POP
  • FP
  • Advanced Generics
  • Advanced Decoding
  • Property Wrappers

Objective-C
  • Знать синтаксис
  • Соблюдать code style
  • Collections
  • Category
Книги для развития­ в программировании
Роберт Мартин
Чистый код. Создание, анализ и рефакторинг
Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес
Приемы объектно-ориентированного проектирования. Паттерны проектирования
Э. Хант, Д. Томас
Программист-прагматик. Путь от подмастерья к мастеру
Мартин Фаулер
Рефакторинг
Р. С. Мартин, М. Мартин
Принципы, паттерны и методики гибкой разработки на языке C#
Маклафлин Бретт
Объектно-ориентированный анализ и проектирование
Мэтт Галовэй
Сила Objective-C 2.0
Полезные статьи на Хабре
Основы модульной архитектуры
Лучшее объяснение архитектуры MVC. Часть 1. Обзор, возвращение к первоисточникам и про то, как анализировать и выводить шаблоны самому
Лучшее объяснение архитектуры MVC. Часть 2
Полезные сайты
Блог Рона Джеффриса
Коротко о Simple Design
Что изучить, чтобы начать iOS
Многие застревают на стадии stackoverflow, но важно продолжать развиваться и переходить к первоисточникам
UIKit предоставляет необходимую инфраструктуру для ваших приложений iOS или tvOS
Платформа обеспечивает базовый уровень функциональности для приложений и платформ
Руководство по языку Swift
Курс от Stanford University
Самая большая коллекция туториалов по iOS-разработке
30 примеров мини-проектов под iOS
Курс по основам программирования от Harvard University
Курс: Гид По Языку Программирования Swift
Для дальнейшего развития в iOS
Архив документации
О подкапотной работе Swift и Objective-C
О продвинутом использовании Swift
О Swift и iOS-разработке