Що має знати 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 та голосовим управлінням. Кандидати з такими знаннями матимуть значні переваги у залученні до нових проектів.

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

В следующем году я бы посоветовал обратить внимание на такое явление в мире 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.

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

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn



20 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

В раздел «Would be a plus» я бы, таки, вписал React Native — отдельным полноценным рядком.
Судя по количеству позиций на некоторых североамериканских job resources — React Native догоняет Native iOS.

А также в «Must have» вписал бы RxSwift/RxCocoa

React Native — вписать

«Would be a plus»

не идти в iOS и вообще в натив. А то наберут и потом плачут что же все так плохо через полгода разработки. Не 2 а 3 платформы. Жертва маркетинга :)
Кол позиций ничего не значит. А не, Точнее значит. Реклама работает и потраченных в мусорку денег больше будет :)

А также в «Must have» вписал бы RxSwift/RxCocoa

Просто Rx(реактивное программирования). Большего не надо так как можно обойтись без этих громоздких и хайповых фреймворков. Да решают они задачи некоторые хорошо, но пихать во все щели их не стоит, как не особо «опытные разрабы» (кол лет на галере это не опыт, а протертые штаны, что бы не апеллировали годами в айТИ) кричат об этом.

Видно, що автор старався, але стаття дійсно трохи «порвана».

Річ у тім, що навіть на Джінні проскакують вимоги стосовно реактивного програмування та значно більша доля вимог стосовно знять гібридної розробки.

Можливо ця похибка викликана вибіркою.

По крайній мірі стосовно тих вимог до фахівця по вакансіям, що присилають мені рекрутери то картина дуже не повна :(

Було проаналізовано 100% відкритих вакансій в категорії iOS/macOS станом на 16 грудня. Ніякої вибірки. Причому це робиться вже другий рік поспіль, і цифри стабільні (окрім Core Data).

Пошук ДОУ показує, що станом на зараз є 2 вакансії Senior iOS Dev, де в описі зустрічається слово React. 2 вакансії — це 5% від усіх 38 вакансій. Окремо на ДОУ зараз є 6 вакансій Senior React Native Dev в категорії Front End.

Ось і вся «повна картина». Перевірити нескладно.

Якби я змішав нативну розробку та Front End, як ви пропонуєте, тоді стаття справді вийшла би «трохи порвана». Щодо Front End буде окрема стаття. Але навіть там на вас чекає розчарування. Станом на зараз в категорії Front End на ДОУ розміщено 154 вакансії Senior, і серед них 6 вакансій Senior React Native Dev складають 4%.

Добре, відпишу як є.

Кожен день мені приходить від рекрутера пропозиція. Іноді їх буває по 4 в день.
Через ЛінкедІн. Через Телеграм. Через Скайп.

Там вимоги інші.

Саме тому я делікатно написав "

Можливо ця похибка викликана вибіркою.

"

Іншими словами, якщо взяти інакше джерело вакансій, то вимоги будуть інші.

Відповідно до джерела даних огляд вірний, але не адекватний ринку.

Мапа не територія — я про це :)

Власне, ДОУ є найбільшим сайтом про IT в Україні. Усі ключові компанії тут представлені. Яке ще може бути джерело вакансій? А світ iOS-розробки є дуже вузьким. Ви можете прямо написати, які конкретно компанії зараз шукають Senior iOS Dev зі знанням React Native, але не розмістили вакансію на ДОУ.

Власне, ДОУ є найбільшим сайтом про IT в Україні. Усі ключові компанії тут представлені. Яке ще може бути джерело вакансій?

Америка, ЮКей, наприклад :)

А світ iOS-розробки є дуже вузьким

Чи по Вашому світ іОС розробки є тільки в Україні?

Підказка:
як Ви думаєте звідки заходять замовлення під майбутні вакансії локальним посередникам?

При чому тут Америка? В Америці ринок праці неспівставно більший. LinkedIn показує зараз 755 вакансій Mid-Senior iOS Dev в США. Те, що вам періодично надсилаюсь звідти вакансії за вашим профілем, не дає вам жодної можливості судити про весь американський ринок. Якщо якась технологія має там ті ж самі 5%, то 5% від 755 — це 38 вакансій. Вам можуть легко надіслати звідти 1 вакансію, 4 вакансії та й навіть всі 38 вакансій. Але яка з цього користь людині, яка не хоче йти шляхом H1B або фрілансу? Хоча я з вами згоден, що було б цікаво побачити реальну різницю між вимогами в Україні та Каліфорнії.

При чому тут Америка?

Ви мені вибачте, але я ще раз Вам повторюсь:
Ваша «праця» про українського сеніор девелопера.
Ключове слово «українського»

Ви все правильно зробили в дослідженні: які данні зайшли — такі результати і отримали.
Але це український сеніор, за результатами аналізу вакансій на DOU :)

Отримані Вами результати не відображають всіх вимог до Senior iOS/macOS Developer.

Хоча я з вами згоден, що було б цікаво побачити реальну різницю між вимогами в Україні та Каліфорнії.

от саме про цю різницю я Вам і пишу :)

Але яка з цього користь людині, яка не хоче йти шляхом H1B або фрілансу?

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

Добре, я порахую відсоток React Native у вакансіях Каліфорнії та відпишу. Яких ще вимог, на вашу думку, бракує? Поки що ви озвучили тільки одну...

Добре, я порахую відсоток React Native у вакансіях Каліфорнії та відпишу. Яких ще вимог, на вашу думку, бракує? Поки що ви озвучили тільки одну...

От знову Ви все сприйняли буквально :)

Дослідження такого типу як Ваше робиться за такою методикою:
1) Вимоги зі сторони роботодавців: ДОУ (є) та інші українські джерела: Джінні +
work.ua, rabota.ua? etc (відсутні)
1.1) Аналіз драйверів, що впливають на вимоги роботодавців-посередників та роботодавців продуктових компаній
2) Пропозиція: аналіз CV кандидатів на Джінні та інших ресурсах
2.1) Аналіз драйверів (стимулів), що впливають на вивчення певних технологій фахівцями
3) Аналіз розривів між п.1 та п.2 та можливих причин таких розривів
4) Коментарії фахівців :)

якось так :)

Дозволю собі озвучити, скільки на Work.ua та Rabota.ua є вакансій, що не співпадають з DOU: сукупно їх там 10 від всесвітньо-відомих компаній Vrosoft, QAprosoft (Чернівці), Персонал Лайф, Improveit Solutions (Чернівці), а також Укрсиббанк. Рву на собі волосся, що вони

(відсутні)

все эти пункты, кроме 1-2 может быть, должен джун знать, а не сениор. А некоторые (випер, мввм) — даже не критерии. В общем, статья — какой то неинформативный сумбур, который введет в недоумение сениоров, и подаст ложные надежды неокрепшим умам джунов.

Власне, в такому випадку 100% вакансій — це «неинформативный сумбур», тому що ця стаття створена шляхом аналізу вакансій, а не вигадування вимог з голови. Але якщо ви маєте якісь конкретні зауваження, напишіть їх. Прочитавши ваш коментар, рекрутери зможуть внести зміни в тексти вакансій.

Да, в таком случае действительно — проблемы у самих вакансий, так как их просто друг у друга копируют, а уже на собеседовании выявляют скилы (и то далеко не всегда).

Так які конкретно технології ви пропонуєте? Які скілли ви виявляєте на співбесідах? Дайте хоча б якусь конкретику. Дивлюся список технологій у вашому профілі. Xcode, SourceTree, GitHub Desktop, Fabric, UIKit — це вказують у вакансіях Junior. Ці речі добре знайомі будь-якій людині, яка має 6 місяців досвіду. Ідемо далі. CloudKit, AVKit — це специфіка окремих проектів. Їх можна вказати як would be a plus, якщо на проекті є такі технології. MapKit, CoreLocation, WebKit — це елементарно. Якщо людина знає багатопоточність та управління пам’яттю, я не буду її запитувати, як додати карту з MapKit. Виходить, що статистика вакансій виглядає значно адекватніше, ніж список ваших скіллів.

неплохо вы на профиль перекатили) Я его фиг знает когда завел, и забил. На доу мне ловить нечего профилем)) А так вот «тыкать», защищая статью — не совсем красиво с вашей стороны.
Допустим я сейчас могу начать наваливать о координаторах, DDD и протокол-ориентированное программирование (идеально к свифту). Можно углубиться, и через ojc-c++ прокинуть мост между сишными библиотеками и свифтом, и т д и т п. Так же скилл проводить код-ревью (хотя вода уже).
Проблема статьи лишь в том, что она ориентируется на безграмотные копипаст данные. Но как я понимаю, вы из тех людей, которые начинают рыть профили, что бы хоть как то дискредитировать критику)) Так что, можете копнуть еще инсту, фб, может там еще скилов найдется))

А вообще — между j и s разница по большей части заключается только в опыте и умении использовать инструменты и креативить в решениях. Но тут об этом ни слова) За то Cocoapods надо знать сениору)) Лучше поздно чем никогда

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

я сейчас могу начать наваливать о координаторах, DDD

Я бачив таких інтерв’юерів, які самостверджуються за рахунок кандидатів. Але в даному випадку ідея була в тому, щоб зрозуміти потреби ринку.

Мені дуже шкода, що вам довелося працювати в компаніях, де вакансії являють собою

безграмотные копипаст данные

Анализ вакансий — вода. Это как оценить девушку, звать ли её замуж, чисто по внешности.
Надо зайти в контору и посмотреть что на проекте. Бо от балды обычно что-то кидают и все.

Я, власне, кажучи, не маю відношення до iOS-розробки, але вже давно і багато разів говорилось, що джуна від мідла від сеньйора відрізняє не тільки к-сть знань, а глибина.

Діма, окреме дякую тобі за статтю, це інформативно і мені було цікаво!

Підписатись на коментарі