Що має знати Senior iOS Developer у 2024 році. SwiftUI та Objective-C вимагають по 34% вакансій
Це десятий випуск рубрики «Що має знати Senior» і третя стаття, присвячена аналізу вакансій Senior iOS Developer. Дослідження провели на основі 29 вакансій, опублікованих на DOU, Djinni та Indeed станом на 3 березня
Наприклад, Objective-C у 2017 році був типовою вимогою, як і Xcode. Ці навички не було потреби спеціально вказувати у вакансіях. 2019 року ситуація змінилась: у 59% вакансій було зазначено вимогу знати Objective-C. Коли я починав роботу над цим випуском, думав, що частка Objective-C у 2024 році буде наближатися до нуля, а SwiftUI вимагатимуть більшість роботодавців. Але я помилився. Objective-C та SwiftUI однаково часто згадують у вакансіях: по 34%. Дідусь Objective-C все ще затребуваний.
Вакансії, що потрапили в дослідження
DOU: Ajax, Akvelon, AUTODOC, Genesis (Lift), Intellias, JustMarkets Tech, LetyShops, Nortal, MacPaw, Raiffeisen Bank, Readdle (Documents team), Readdle (Scanner Pro team), Riseapps, Stuzo, Valtech, Wirex; Djinni: Cortance, Fitsoftware, Galaktica, Readdle (Spark team), Simplify, Soft Team; Indeed: — Arkuda Digital, EasyEdit, PROBEGIN, GlobalLogic, HYS Enterprise, Netfully, Онікс-Системз.Для зручнішого сприйняття ми перевели значення у відсотки, а відсотки заокруглили до цілих.
Досвід роботи програмістом
Найвищі вимоги до досвіду роботи програмістом мають Arkuda Digital і Soft Team — вісім років. Найчастіше від спеціаліста рівня Senior вимагають п’ять років досвіду.
Освіта і портфоліо
В iOS-розробці цінують практичні знання. Лише в одній вакансії було згадано профільну освіту. На диво рідко роботодавці очікують від iOS-розробника портфоліо. Це можна пояснити тим, що на багатьох проєктах в аутсорсингу не дозволено розголошувати ім’я замовника, і до цього ставляться з розумінням.
Знання Computer Science
87% вакансій не згадують алгоритми навіть як плюс. Зате знання об’єктноорієнтованого програмування вимагають 31% вакансій, патерни проєктування 28%, SOLID 24%. Ці базові знання варто освіжити перед тим, як іти на співбесіду. Чи ви можете без підготовки розшифрувати всі п’ять літер абревіатури SOLID?
Мови програмування
2019 року знання Swift вимагали у 68% вакансій, зараз у 83%. Не є новиною, що вже не може бути iOS-розробника без Swift. Але й Objective-C досі не потонув. Діліться в коментарях, чи використовуєте Objective-C.
Базові фреймворки
Всупереч очікуванням UIKit лише незначно відстає від SwiftUI. Це можна пояснити обмеженнями, які все ще має SwiftUI, через які ці два фреймворки сьогодні не тільки конкурують, а й доповнюють один одного.
Reactive Programming
Реактивне програмування стає все популярнішим, а безсумнівним лідером тут є Combine. Знання Combine можна назвати однією з найперспективніших навичок в iOS-розробці: він в топі згадок як «буде плюсом».
Ключові навички та концепції iOS-розробки
Складно уявити собі iOS-розробника, який не вміє в клієнт-серверну взаємодію, не знає, як користуватися системами контролю версій, не пише юніт-тести. Гаразд, юніт-тести багато хто не пише. Тому радує, що у 31% вакансій прямо зазначено юніт-тести як вимогу.
З 2019 року майже удвічі зросла кількість згадок багатопотоковості у вакансіях. Зараз ці знання входять у трійку ключових для iOS-розробника разом зі Swift та англійською мовою.
Технології персистентності
Серед технологій персистентності беззаперечним лідером залишається Core Data. Realm згадали лише в одній вакансії як плюс. SwiftData, що вийшла 2023 року, поки що не цікавить нікого з роботодавців в Україні.
Мережева взаємодія
У мережевих технологіях несподівано високою є частка XML, яка не поступилася JSON.
Архітектура
Очікувано найпопулярнішою архітектурою у 2024 році є M-V-VM, що органічно лягає на SwiftUI. Але й MVC не здається. Був час, коли індустрія дуже скептично ставилася до MVC. Всі говорили про масивні view-контролери. Тепер цю архітектуру переосмислюють і кажуть про те, що за розумного підходу шаблон MVC не такий вже й поганий. А як ви ставитеся до нього?
UI
Серед вимог нечасто згадують знання UI-розробки. Отож роботодавці усвідомлюють: ця складова роботи далеко не найскладніша. Але, як показує практика, розробка UI була і буде левовою часткою внеску iOS-розробника на більшості проєктів.
Графіка та анімації
Не всім потрібно, щоб ви розумілись на графіці та анімаціях, але такі знання мають свою нішу.
Dependency Management
Swift Package Manager незначно випереджає CocoaPods. Деякі роботодавці цінують вміння створити власну бібліотеку, особливо якщо вакансія відкрита на розробку SDK, а не кінцевого застосунку.
Рівень англійської
Англійська є навичкою № 2 для iOS-розробника після Swift. Проте у 45% вакансій не вимагають її знання. Найвищі вимоги до рівня англійської має Intellias. Це єдина компанія, що зазначила у вимогах рівень Advanced.
Гуманітарні та м’які навички
Вміння гармонійно спілкуватися високо цінують роботодавці. Конкретну методологію розробки програмного забезпечення опанувати значно легше, ніж навчитися конструктивно взаємодіяти з колегами. До речі, серед методологій Kanban не згадав ніхто.
Буде плюсом
Перспективними для вивчення можна вважати технології та навички, які найчастіше вказують як такі, що будуть плюсом. Це означає, що вони затребувані, але компаніям не так просто знайти спеціалістів з відповідним досвідом. Лише чотири навички трапились як плюс у 10% вакансій або більше: це Combine, CI/CD, Objective-C та Agile.
Топ навичок за вимогами
Наведемо 17 головних навичок, потрібних iOS-розробнику. Порівняли за роками, щоб було видно динаміку. Найчастіше роботодавці згадують Swift, англійську й багатопотоковість.
Цікавинки, знайдені у вакансіях
Читати вакансії — особливий вид задоволення. Можна багато дізнатися про те, що відбувається в індустрії та на ринку праці. Ділюся з вами найцікавішими інсайдами.
MacPaw анонсує новий революційний продукт під macOS (Cocoa) і шукає інженера з досвідом розробки під iOS або macOS. Плюсом буде знання Core ML. У штаб-квартирі MacPaw у Києві, яка працює як коворкінг, є Starlink для безперервної роботи, спортзал і кімнати для сну та медитацій. Можна приходити з домашніми улюбленцями, в офісі є окремі поверхи для котів і собак. Не просто так їхній подкаст називається It’s raining cats & dogs. Компанія покриває витрати на оренду коворкінгу в іншому місті або на облаштування домашнього офісу. Медичну страховку пропонують не лише співробітникам (покривають на 100%), а й членам родини (50%). Також MacPaw компенсує 50% витрат на психотерапію, дає бюджет на освіту та безплатні курси англійської.
Readdle запрошує долучитися до розробки ШІ-асистента для Spark, а також здобути досвід у розробці на Swift і під iOS, і під Android та Windows.
HYS Enterprise розробляє продукт, що зчитує та перевіряє NFC-чипи, вбудовані в документи. Зокрема, їхня технологія перевіряє, чи обличчя відповідає даним паспорта. На
Єдиною компанією, яка згадала у вакансії освіту, є Arkuda Digital. Їхній ідеальний кандидат є бакалавром комп’ютерних наук, знає Objective-C та має вісім років досвіду в програмуванні. Серед усіх вакансій, що потрапили в дослідження, ці вимоги є найвищими. Компанія працює над новим продуктом у сфері мультимедіа.
Єдиною компанією, яка згадала KISS і DRY, є PROBEGIN, чим вони безсумнівно заслужили на згадку. Також вони є єдиними, кого цікавить SpriteKit.
Fitsoftware готова запропонувати віддалену роботу та компенсацію від 77 до 110 тисяч євро на рік. Ознайомлення з машинним навчанням буде плюсом.
Думки технічних експертів
Сергій Бутенко, Cocoa Engineer у MacPaw, автор iOS дайджесту на DOU та @main News
Звісно, що Senior-розробнику треба мати різносторонній досвід, розуміти принципи побудови систем і знати особливості платформи. Це база, ґрунт, фундамент. Але є інша, не менш важлива навичка — вміти не просто робити задачу, а зʼясувати можливі ризики та нефункціональні вимоги. Наприклад, треба підготувати відправку аналітики.Для розробника початкового рівня все зрозуміло — беремо URLSession і відправляємо запит. Але у більш досвідченого розробника можуть виникнути питання: чи треба кешувати івенти, якщо немає інтернету; відправляти всі івенти окремо або частинами; чи відправляємо дані користувача; як перевірити, що аналітика взагалі працює і так далі.
На співбесіді це можна перевірити в діалозі або на прикладі коду, і зрозуміти, наскільки розлогі відповіді дає кандидат. І інша навичка — вміти докопатись до суті або розібратися, як щось працює. Нещодавно нам треба було зробити, щоб CleanMyMac вмів оновлювати застосунок Zoom. Тут стали в пригоді вміння аналізувати чужі застосунки, перехоплювати трафік, дизасемблювати код. Також це може допомогти швидше знайти причину нетривіальної помилки.
Анатолій Тухтаров, iOS Technical Lead в Ciklum
Як на мене, сеньйорність не залежить від технології. Це радше питання софт-скілів. Так чи інакше, виконуючи різноманітні задачі, інженер вивчить велику кількість API, під час код-рев’ю дізнається, як їх краще використовувати. Можливо, з технічних навичок в iOS я б зазначив обізнаність у платформі та екосистемі Apple, що дасть змогу запропонувати клієнтам додаткові можливості.З іншого боку, найважливішими рисами Senior вважаю відповідальність і надійність. Важливо розуміти вимоги бізнесу, підлаштовуватись під них, обирати оптимальний шлях реалізації фічі та вчасно віддавати продукт замовнику.
Комунікаційні навички не менш важливі. Спілкування з колегами різного рівня технічної обізнаності, допомога менш досвідченим колегам, команді з процесами, вміння вчитися в інших — все це має значно більше значення, як на мене, ніж знання на пам’ять певного API.
Ігор Мальований, засновник спільноти Swift in UA
Різниця у знаннях між умовними Senior і Middle+ не така суттєва, як різниця у рівні відповідальності та досвіді. І цього досвіду має бути достатньо, щоб планувати заздалегідь архітектуру і розвиток системи, вміти приймати виклики з неприємними або важкими завданнями та вміти доводити їх до логічного фіналу. А ще простота: там, де Middle полізе у хащі, Senior має вміти написати простий прямолінійний код без викрутасів (ми ж тут здебільшого задовольняємо потреби бізнесу, а не вимахуємося =)).Якщо трохи спуститися до рівня технологій, то це:
— Умовно вільне володіння інструментами Xcode (профілювання, граф пам’яті тощо).
— Умовно вільний перехід на нові технології та фреймворки за потреби. Все знати неможливо, і трохи тупо вимагати від себе цього. Але не боятися нового — це вже рівень.
— Вільне розуміння багатопотоковості та керування пам’яттю.
— Основи алгоритмів. Я не вірю, що чемпіони LeetCode здатні написати кращий код за розробника з досвідом та без медальки за вирішення алгоритмічних задач. Але вміння оптимізувати завжди буде у пригоді.
Читайте також — рейтинг мов програмування серед українських розробників 2024.