Що має знати Senior iOS/macOS Developer. Результати аналізу вакансій на DOU

Станом на 16 грудня 2018 в рубриці iOS/macOS на DOU було розміщено 34 вакансії Senior Developer. Це майже виключно iOS: 32 вакансії. 2 вакансії macOS-розробників. Та жодної, де хоча б в тексті згадано tvOS або watchOS.

Усі 34 вакансії я проаналізував вручну, щоб дізнатись, які навички очікували роботодавці від сеньора в 2018 році. 2017-го я вже готував таку аналітику, але цього року я зробив її більш детальною.

Розділяти iOS та macOS я не став, тому що в умовах, коли частка macOS на ринку дуже маленька, вакансії на macOS часто закривають айосниками.

Рейтинг навичок розділений на 2 частини: «Must have» та «Would be a plus». Скажу наперед, що загалом, на мою думку, вимоги виглядають адекватно. Лише 2 компанії вказали Xcode. Тому, думаю, варто звернути увагу на те, які знання очікуються.

Must have

Swift — 68% вакансій. Минулого року було 76%. Частка Swift є стабільною.

Objective-C — 59% вакансій. Великі зміни відбуваються саме з Objective-C. В 2014-2017 роках знання Objective-C передбачалося за замовчуванням. Дивно писати у вакансіях Senior C++ Developer, що потрібно знати C++. У вакансіях Senior .NET Developer не обов’язково вказувати C#. Ніхто ж не пише в вакансіях, що потрібно ходити на роботу в одязі. Це і так зрозуміло. Але в 2018 році, коли люди, що починали зі Swift, перетнули поріг у 4 роки досвіду, вже може існувати Senior iOS Developer без знання Objective-C. Інформація про те, чи потрібно кандидату знати Objective-C, стала важливою.

Client-Server Networking — 56% вакансій. Минулого року було 45%. Більшість iOS-аплікацій є клієнт-серверними, але не всі. Особисто я більше року працював на великому проекті на 7 iOS-розробників, де сервера не було в принципі. Таке буває. Якщо ви виросли на такому проекті, а на іншу роботу не беруть без знань комунікації з сервером, пройдіть курс «Networking and Security in iOS Applications», і все стане на свої місця. Найпопулярнішою технологією комунікації з сервером є REST, він вказаний у 32% вакансій. SOAP — тільки в одній вакансії. GraphQL не вказав ніхто, хоча розмови про його переваги чутно досить часто. Конкретні бібліотеки значення не мають. Alamofire та AFNetworking згадувались по 2 рази. В 1 вакансії як must have вказано OHHTTPStubs.

Англійська мова — 44% вакансій. Часто у вакансіях не вказують конкретний рівень англійської, а просто пишуть, що він має бути достатнім для комунікації. Для того, щоб зрозуміти, яку роль відіграє рівень, я звернувся до сирих даних останнього зарплатного опитування DOU на GitHub. Зробив вибірку Senior Software Engineer, що програмують на Swift та Objective-C, та розбив на 4 групи залежно від рівня англійської. Pre-Intermediate — 3 анкети, середня компенсація 3.067 долара після податків. Intermediate — 11 анкет, 3.173 долара.

Upper-Intermediate — 25 анкет, 3.502 долара. Advanced — 10 анкет, 4.035 долара. Можна зробити висновок, що прохідним рівнем є Intermediate. А небажання вчитись та підтягнути свій рівень до Advanced коштує (4.035 — 3.173) x 12 = 10.344 долара на рік.

Git — 41% вакансій. Єдина компанія, яка вказує SVN — Genesis. Але Git їм теж підійде.

Object-Oriented Programming — 35% вакансій. Чесно кажучи, мені це здається дивним. ООП було безумовною парадигмою в Objective-C. Але в Swift Apple просуває Protocol-Oriented Programming. Останній згадано лише в 1 вакансії. В традиційному розумінні ООП базується на класах. Але в Swift класи є лише одним з кількох типів моделей. Більшість компонентів стандартної бібліотеки Swift реалізовані як структури, а не класи. Можливість крос-типових операцій забезпечують саме протоколи.

Multithreading — 26% вакансій. Минулого року було 27%. Конкретний інструмент не настільки важливий. GCD згадується в 15% вакансій, Operation (NSOperationQueue) — 6%. Враховуючи, що в перспективі в Swift може з’явитись first-class concurrency support (вбудована багатопоточність), як в Go, ключову роль відіграє знання принципів паралельних та розподілених обчислень, а не конкретної технології.

Unit Tests — 26% вакансій. Минулого року було 30%. На цей пункт слід звернути особливу увагу, тому що дуже багато проектів в принципі не мають юніт-тестів. Відповідно, ситуація, коли розробник не має досвіду з юніт-тестами, не є екзотикою. Не обов’язково це має бути TDD. Тільки 9% вакансій згадують саме TDD. Хоча добре знати TDD — ідеальний варіант. В деяких компаніях юніт-тести пишуть, як правило, джуніори. Але концепція TDD передбачає, що сеньор пише тести, що задають вимоги, а мідли та джуніори пишуть код, що відповідає цим вимогам. Особисто я треную навички TDD на сайті HackerRank. Там ти спочатку вчишся писати код, який проходить тести, а потім можеш додавати на сайт власні тести.

Continuous Integration — 24% вакансій. На великих проектах, як правило, є DevOps. Але більшість проектів в iOS маленькі, і Senior iOS Dev виконує там роль майстра на всі руки. Важливо знати саме принципи CI, а от знання конкретної технології тут теж є другорядним. Jenkins згадується лише в 9% вакансій, хоча Xcode Server немає в жодній.

M-V-VM — 18% вакансій. MVC згадується лише в 15% вакансій. Це можна пояснити тим, що розмежування на дані та інтерфейс вже є усталеним: всі так працюють. А от той факт, що дані можуть по-різному виглядати в базі та на екрані, є як мінімум цікавим. Але іноді використання M-V-VM є просто даниною моді. Сам автор M-V-VM John Gossman ще 2006 року писав: «For simple UI, M-V-VM can be overkill».

Core Data — 15% вакансій. Минулого року було 36%. Не думаю, що Core Data стали використовувати менше. Я припускаю, що на тексти вакансій могли вплинути коментарі під iOS-дайджестом на DOU: «Core Data на больших проектах беспомощна», «Нормальные пацаны уже юзают Realm». Для тих, хто вирішив стати «нормальним пацаном», Ray Wenderlich випустив книгу про Realm. Але лише 2 вакансії його згадують. А SQLite взагалі немає в жодній.

Auto Layout — 15% вакансій. Після переходу на iOS 7 2013 року Auto Layout був топовою темою на співбесідах. Не всі мали з ним досвід, і інтерв’юер мав шанс блиснути знанням «вищої математики» констрейнтів. Зараз всі зрозуміли, що то не так складно в порівнянні, наприклад, з багатопоточністю.

Цікаво, що кожна компанія використовує у своїх вакансіях власний спосіб написання назви Auto Layout. Наприклад, в компанію Rozetka потрібен спеціаліст зі знанням «Autolayaut».

Memory Management — 12% вакансій. 6 років тому, коли я почав працювати iOS-розробником, робота з пам’яттю була ключовим знанням, потрібним на всіх без виключення проектах. Ручне управління пам’яттю залишало великий простір для memory leaks. З того часу відбулись великі зміни: перехід на ARC та Swift. Знання про пам’ять все ще важливі, але вони вже не відіграють такої великої ролі.

Agile — 12% вакансій. Waterfall не згадується у жодній вакансії. Lean зустрівся 1 раз. Конкретизувати у вакансії фреймворк в межах Agile не прийнято: лише 1 вакансія згадує Scrum, жодна не згадує Kanban.

Core Animation — 12% вакансій. Минулого року було 21%. У 2 вакансіях згадується Core Graphics.

VIPER — 9% вакансій. VIPER в Україні популяризує компанія Genesis. Оскільки вони створюють топові проекти та потрапили в список «New Apps We Loved» від Apple, VIPER, який був модним у США з 2014 року, зараз у всіх на вустах в Україні. Тут можна почитати про VIPER, а тут Sergey Petrov критикує VIPER та називає його поганим вибором.

SOLID — 9% вакансій. Класика безсмертна. Але не SOLID єдиним. Щоб потрапити в компанію Wirex, потрібно знати та використовувати DRY, YAGNI та KISS.

Sockets — 9% вакансій.

CocoaPods — 9% вакансій.

А особисто я вважаю, що Senior має знати, чим відрізняються Sequence та Collection. Хоча деякі навіть плутають NSCoding та Codable.

Would be a plus

Тут немає таких явних лідерів. Але цей список цікавий тим, що як would be a plus компанії вказують ті технології, які вони реально використовують на проектах.

Objective-C — 9% вакансій.

C++ — 9% вакансій.

UI Tests — 9% вакансій.

Уточню, що 9% — це 3 вакансії. По 2 рази у вакансіях зустрічались TDD, Continuous Integration, fastlane, JavaScript, React Native та Agile.

Мій улюблений ARKit згадується лише 1 раз як would be a plus. В must have він відсутній. Загалом доповненою реальністю займаються згідно з вакансіями лише 2 компанії: Snap та Genesis. Машинним навчанням на Swift — ніхто. Create ML, Core ML, Vision та Natural Language немає в жодній вакансії. Хоча Apple цього року зробила ставку саме на ці технології. А ми в Perfectial вже використовуємо їх на комерційному проекті.

Також по 1 разу згадуються Docker, AWS, Xcode Instruments, Sketch, Metal, OpenGL, Python, C#, Node.js. Можна зробити висновок, що всім не вгодиш, але кожен знайде свою вакансію.

Цікавинки

В компанію ZEO Alliance потрібен Senior Objective-C Developer з хорошим знанням Mac OS X. Mac OS X існувала в 2001-2012 роках.

Компанія N-iX шукає Senior iOS Engineer для амбітного клієнта, що планує мати один мільярд користувачів до 2020 року.

Думки технічних експертів

Ольга Мацик, Senior macOS and iOS Dev в Augmentive, PhD in Computer Systems and Components

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

Сучасні смартфони здаються зараз цілком буденним гаджетом, у свій час вони з легкістю замінили кнопочні телефони. Сучасні тенденції розвитку технологій показують, що провідні компанії напрацьовують розробки в галузі проектування гаджетів з доповненою реальністю та голосовим управлінням. Apple — не виняток і також планує випускати окуляри з доповненою реальністю (тут можна прочитати про перспективи).

Цілком ймовірно, що не за горами той час, коли Тім Кук з гордістю представить новий девайс, який може відвоювати досить солідну нішу популярності у смартфонів. Багато прикладних програм можуть бути набагато зручнішими на такому пристрої. Наприклад, використання навігатора, який буде значно зручніше використовувати, маючи його вбудованим у окуляри, аніж постійно відволікатися на екран смартфона в дорозі.

Багато програм можуть мігрувати на такі пристрої, а також можуть з’явитися нові програми, які будуть використовувати переваги та можливості нових гаджетів. Як наслідок, виникне велика потреба у програмістах зі знанням та з досвідом роботи з ARKit та голосовим управлінням. Кандидати з такими знаннями матимуть значні переваги у залученні до нових проектів.

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

Сучасні смартфони здаються зараз цілком буденним гаджетом, у свій час вони з легкістю замінили кнопочні телефони. Сучасні тенденції розвитку технологій показують, що провідні компанії напрацьовують розробки в галузі проектування гаджетів з доповненою реальністю та голосовим управлінням. Apple — не виняток і також планує випускати окуляри з доповненою реальністю (тут можна прочитати про перспективи).

Цілком ймовірно, що не за горами той час, коли Тім Кук з гордістю представить новий девайс, який може відвоювати досить солідну нішу популярності у смартфонів. Багато прикладних програм можуть бути набагато зручнішими на такому пристрої. Наприклад, використання навігатора, який буде значно зручніше використовувати, маючи його вбудованим у окуляри, аніж постійно відволікатися на екран смартфона в дорозі.

Багато програм можуть мігрувати на такі пристрої, а також можуть з’явитися нові програми, які будуть використовувати переваги та можливості нових гаджетів. Як наслідок, виникне велика потреба у програмістах зі знанням та з досвідом роботи з ARKit та голосовим управлінням. Кандидати з такими знаннями матимуть значні переваги у залученні до нових проектів.

Борис Щербина, Senior iOS-разработчик в Beetroot

В следующем году я бы посоветовал обратить внимание на такое явление в мире iOS-разработчиков, как full stack developer. После того, как Apple заопенсорсила Swift, выпустив его под лицензией Apache не только для OS X, но и для Linux, стало разумным и доступным создавать back-end сервисы, написанные на Swift. Следовательно, те, кто раньше мог реализовать только клиентскую сторону сервиса (iOS-приложение), теперь могут предоставить услуги и по реализации серверной части. Для владельцев небольших проектов с компактным бюджетом или для создания MVP — это очень хороший вариант.

В следующем году я бы посоветовал обратить внимание на такое явление в мире iOS-разработчиков, как full stack developer. После того, как Apple заопенсорсила Swift, выпустив его под лицензией Apache не только для OS X, но и для Linux, стало разумным и доступным создавать back-end сервисы, написанные на Swift. Следовательно, те, кто раньше мог реализовать только клиентскую сторону сервиса (iOS-приложение), теперь могут предоставить услуги и по реализации серверной части. Для владельцев небольших проектов с компактным бюджетом или для создания MVP — это очень хороший вариант.

Ігор Рапалюк, Senior iOS Dev у Perfectial

На мою думку, окрім основних скілів, які вже зазначені в цій статті вище, кожен Senior повинен ще зробити ставку на якусь передову технологію, яка зараз є у Apple, але яка ще, так би мовити, не дійшла до наших замовників. Особисто я спостерігаю таку картину, що саме передові технології є ризикованими для них, і вони не готові ставити свої гроші, допоки не переконаються, що ця технологія буде прибутковою. Я вирішив для себе покопати в бік машинного навчання. Як на мене, в цьому є майбутнє. На кількох проектах у мене вже є реальні кейси його використання. Цього року Apple впровадила технології, які значно спрощують роботу з ML-моделями, їх створення та інтеграцію в проект. Плюсом також для Senior, який хоче розібратись в ML, будуть базові знання Python для роботи з Turi Create. Це бібліотека від Apple, яка містить в собі трохи більше можливостей, ніж Create ML.

На мою думку, окрім основних скілів, які вже зазначені в цій статті вище, кожен Senior повинен ще зробити ставку на якусь передову технологію, яка зараз є у Apple, але яка ще, так би мовити, не дійшла до наших замовників. Особисто я спостерігаю таку картину, що саме передові технології є ризикованими для них, і вони не готові ставити свої гроші, допоки не переконаються, що ця технологія буде прибутковою. Я вирішив для себе покопати в бік машинного навчання. Як на мене, в цьому є майбутнє. На кількох проектах у мене вже є реальні кейси його використання. Цього року Apple впровадила технології, які значно спрощують роботу з ML-моделями, їх створення та інтеграцію в проект. Плюсом також для Senior, який хоче розібратись в ML, будуть базові знання Python для роботи з Turi Create. Це бібліотека від Apple, яка містить в собі трохи більше можливостей, ніж Create ML.

P. S. Я планую протягом року підготувати аналогічні огляди про інші технології. Зокрема Front-end, Java, .NET, PHP, Node.js, Python, C++, Ruby, Android, Scala та Go. Якщо ви маєте бажання допомогти, напишіть мені приватне повідомлення на DOU. Навіть 15-хвилинна консультація вже є вагомою допомогою.

Похожие статьи:
Итак, прошел уже месяц с выхода Java 10. Уже даже успел подойти первый апдейт. А это значит — пора переходить и нам :) Вслед за переходом...
The gig economy has been celebrated in many ways, claiming to offer freedom to workers everywhere. However, there is a darker side to the gig economy which mustn’t be ignored. As it has grown, various stories have been upheld as noble...
Пилотный выпуск Scala дайджеста от Максима Ратошнюка, Platform Engineer at PlayQ. Полезные ресурсы Интересный блог о новостей из мира...
У свіжому дайджесті DOU News обговорюємо майбутнє оновлення застосунку Резерв+, конференцію Microsoft Build 2024, успіх Nvidia та інші...
В Україні змінять податкову політику з 1 серпня, оскільки до 1 липня Верховна Рада не встигає повернути довоєнні...
Яндекс.Метрика