Бути Apple developer: плюси, мінуси і нюанси?

Усі статті, обговорення, новини про Mobile — в одному місці. Підписуйтеся на телеграм-канал!

Усім привіт! Так склалося, що я сьогодні вперше серйозно подумав про те, щоб змінити свій стек технологій, і мій можливий вибір впав на розробку для продукції Apple, і мені хочеться почитати від Apple developer, що прекрасно, а що жахливо в розробці, а також які існують нюанси.

Сам Full stack .NET Developer, сьогодні згорів від Visual Studio і розуміння, що це якесь порочне коло xD

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

мне у эпла нравится качество сборки, но очень не нравится их политика. Купил дочери macbook air и нужен был apple ID. Был, мягко говоря, удивлён тем фактом, что для его получении требуется обязательный ввод кредитки. Сильно, очень сильно эпл любит деньги. Не знаю насколько такая их политика дальновидна конечн

Почитал я комментарии и понял, либо люди очень разные, либо не хотят себе конкурентов в нише :]

Просто докину в противовес своих 5 мыслей

Мой опыт в iOS разработке составляет 6 лет, работал на стартапах, аутсорсе и продукте
+ год до iOS разработки работал back-end разработчиком.

1. Проекты для мобилок на 3 месяца — часто правда, в основном в аутсорсе. Плохо ли это? Для себя отметил возможность поработать над разными продуктами, используя большой спектр технологий и не засиживаться. Если выбор пал на продуктовую компанию — лови один проект на года и радуйся. Это точно не одностраничные сайтики клепать ;)
2. Apple выкатывает обновления, и твои знания устаревают. В чём проблема то? Тыжпрограммист, идти в ногу со временем — главная составляющая профессионального разработчика. Ты работаешь с технологиями, а они имеют свойство обновляться и прогрессировать на глазах.
3. Есть шанс попасть на проект со старыми технологиями (Objc и т.д) — эта проблема касается любого легаси проекта, и Apple тут не при делах.
4. Мобайл дев не станет архитектором. Не могу ни подтвердить, ни опровергнуть, т.к. сам архитектором не стал, смотрю немного в другую сторону. Есть возможность стать лидом как техническим так и лидом команды, быть ближе к бизнесу, а не разработке. И мобайл разработчик легко может добиться этих целей. Тут уже каждому своё.
5. Мобильные приложения мертвы, все юзают веб. Просто предлагаю отрыть на своём iPhone статистику использования экранного времени и сравнить время проведённое в Safari и в остальных приложениях ;] (у меня браузер занял аж 1 час времени за последние 10 дней)

Тыжпрограммист, идти в ногу со временем

проблема не в тому що появляються нові технології і їх треба вчити, проблема що старі знання ідуть в смітник, а межа між девелопером з 5ма роками досвіду і девелопером з 10ма стирається, на ринку все більше девів які легко заміняються, нікому ваш древній досвід не потрібен. А в 40+ прийдеться конкурувати з 23-річними сінйорами яким значно легше буде вчити нові технології ніж вам. На бекенді це трішки не так працює, там знання накопичуються і через 5 років не викидаються в смітник.

возможность стать лидом как техническим так и лидом команды, быть ближе к бизнесу,

це взагалі не прирогатива мобайлу, будь-який дев може стати лідом

сравнить время проведённое в Safari и в остальных приложениях

і скільки цих «приложений» ви встановили за останніх півроку? можливо щось нове винайшли де всі зависають? тікток — новий «убійца фесбуку»?

6 років в iOS і в цілому все що яблочне і ні разу ще нічого в смітник не ходило

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

Знания разработчика никуда не деваются, появляются новые инструменты, нынешние устаревают. Умение освоения новых инструментов востребовано всегда и прокачивается вместе с опытом работы. Для профессионального разработчика (не ремесленника) на сегодня важны знания принципов, подходов, неудачный опыт и понимание бизнес составляющей, а только потом инструменты, благодаря которым мы можем реализовать наши задачи.
Инструменты — вещь изменчива и второстепенна, не просто так инструменты могут быть быстро освоены 23х-летним синьором, они не сравнятся с опытом, полученным за 10 лет разработки.

Я что-то упустил где я написал, что только мобайл дев может стать лидом...

Я постоянно предпочитаю использовать приложения, вместо сайтов. Это быстро, удобно, доступно, нативно. Может конечно я один такой, но мысль, что приложения никому не нужны опровергает каждый, кто смотрит в телефон на протяжении дня на улице, на диване, в кафе и прочих местах ;]

мысль, что приложения никому не нужны опровергает каждый, кто смотрит в телефон на протяжении дня на улице

Люди дивляться у гуглокарти, телеграм, фейсбук, інсту і тікток, а не твою божественну аплікуху, яка відкривається в кращому випадку раз в пару тижнів, коли треба замовити доставку води чи заправити авто на АЗС.

Как-то грубо получилось, думаю вы не со зла)
После вашего письма понял следующее:
1. Мой смартфон бесполезный
2. Бизнесы, которые приносят миллионы в месяц на мобильных приложениях можно закрывать уже вчера
3. Каждый день ± тысяча украинских студентов-медиков пользуются моим pet-проектом для подготовки к экзаменам в маршрутках, метро и в любом другом месте. Нужно будет и его тоже отправить на свалку :[

За 2020 год пользователи сгенерировали более 200 миллиардов загрузок приложений, и эта цифра выросла на 55% с 2016 года.
Это просто факт, пруф лежит тут: buildfire.com/app-statistics

Выглядит достаточно живо как для того что «давно мертво».

У когось, бачу, підгоріло знатно. Я не хотів, чесне слово.

4. Мобайл дев не станет архитектором.

подскажи плиз где сдавать экзамены на лычку «архитектора»

Не ко мне вопрос, это цитата одного из комментаторов ниже.

Займаюсь iOS розробкою з 2011 року
так, можливо на початку складніше знайти проєкт не на умовно 3 місяці, але є багато цікавих проєктів на багато років де обєм роботи виходить набагато за рамки переміщення кнопок

є проєкти у сфері мобільної безпеки, стрімингу аудіо чи відео , чатів, банківські системи тощо
зараз навпаки є тренд до того що мобільні додатки це більше ніж просто красиве відображення JSON
також є сфера IoT де додаток комунікує із зовнішніми залізяками

є область фрейморків (платіжні системи, знову стріминги, обробка зображен/відео)

обирати є з чого

так в мобільній розробці ви наврядчи зустрінитесь с локальною високо навантаженою базою даних але для багатьох проєктів база даних таки потрібна
але тут є «високонавантажені» інтерфейси коли наприклад потрібно відобразити велку кількість даних так щоб і анімація не заламалсь і лагів не було

з мінусів саме епл розробки можу додати, що іноді меншим злом є вимушене викростиння епл фреймворків щоб якась фіча нормально працювала в екосистемі епл замість можливості використати стороннє або своє рішення (наприклад core data для бази даних — є альтернативи але якщо потрібен бекап в айклауд та взаємодія з епл вотч/епл ТВ можуть будти складнощі)

те, що епл раз на декілька років оновлює технологічний стек свідчить про розвиток , так потрібно чомусь вчитись заново але ці знання вони нашаровуються і досвід, це не завжди вміння застосувати АПІ, це і знання системи і інтуіція, що базується на попередньому досвіді

також на серйозних проєктах, що існують роками (зустрічав і працював на таких) можна зустріти objc code який потрібно буде іноді правити

ще до мінусів відніс би складність робити responsive інтефейси в епл використовуючу autolayout (це імперативний стиль створення UI) але це наразрі стандрат (на його зміну прийшов SwiftUI (декларативний) але його ще не можна всюду використовувати) якщо коротко — в автолейауті не лінійна логіка його роботи і щоб навчитись потрібно просто зіткнутися з різними задачами тому по власним відчуттям зробити один і той самий інтерфейс на андроід часто може бути швидше ніж на ай ос (Swift UI виправляє це але як я казав не завжди ще можна ним послуговуватись)

Займаюсь iOS розробкою з 2011 року

тобто за 11 років таки не вийшло вирости кудись вище рівня мобайл розраба

так потрібно чомусь вчитись заново але ці знання вони нашаровуються

але на зарплату це не впливає... Якщо ви підете в відпустку, чи зможе вас замінити умовний дев з 3-5 років досвіду. Якщо так то для більшості проектів ваші нашаровані знання за 11 років не дуже то й потрібні(викидаємо за душки старі динозаври на Obj-C)

— 

вище рівня мобайл розраба

якщо мені подобається саме мобільна розробка я росту саме в цьому напрямку, джуна не візьмуть робити з ноля та вести розробку серйозного проєкта, не візьмуть як ліда мобільного напрямку також
мені, наприклад, подобається саме технічний напрямок тому розвиваюсь саме в цьому напрямку

— 

умовний дев з 3-5 років досвіду

може замінити будь якого іншого дева в відпусці.
— 

Якщо так то для більшості проектів ваші нашаровані знання за 11 років не дуже то й потрбні(

визначить «більшість» проєктів ?
більшість проєктів в світі — це сайти-візитки/додатки с трьома екранами, що відображають джейсон і таке інше — то так, ці знання не портрібні але я кажу про складні проєкти на яких шукають людей з досвідом і там потрібні такі знання (кажу це не з уяви а зі свого досвіду та досвіду своїз друзів, які займаються розробкою мобільних додатків)

викидаємо за душки старі динозаври на Obj-C

Кстати, реализации WebRTC, TensorFlow(Lite), многих библиотек для обработки видео и прочих сложных штук, используемых в мобайл разработке, до сих пор имеют в себе много кода на objc. Если что-то ломается или не так как надо работает — приходится ковыряться в этом коде чтобы понять что не так.

Кстати, реализации WebRTC, TensorFlow(Lite), многих библиотек для обработки видео и прочих сложных штук, используемых в мобайл разработке, до сих пор имеют в себе много кода на objc.

Не Obj-C, а C/C++.

Objective-C++ якщо бути точнішим, це просто брідж.

github.com/...​/lite/delegates/gpu/metal

Apple недавно видала C++ API для Metal, я відчуваю що з такими плясками objc випиляються аж бігом, так як його задача objc бути бріджом для API.

webrtc.googlesource.com/...​refs/heads/main/sdk/objc

Знову таки брідж тому-що Swift не вміє працювати з C++ модулями напряму.

до сих пор имеют в себе много кода на objc

Але ж на багато кода не тяне, все одно основний код на C/C++

Не знаю как сейчас у эппл разработчиков сейчас, но я в 2013 году не увидел для себя перспектив в качестве Android Developer, хотя тогда был очень большой хайп на мобильную разработку и там было бабло.

Дело в том, что уже тогда андроид девелопер был по сути ближе не к десктопному разработчику, а к клиент-серверному фронтенд-разрабу, что означало необходимость условно «двигать кнопочки», «натягивать дизайны», заниматься «совместимостью размеров экранов», читай «браузерной совместимостью». Сейчас, когда десктопная разработка фактически мертва, мобайл ВЕСЬ клиент-серверный, разрабы андроид/айос по сути обслуживают API серьезных высокооплачиваемых бекенд разрабов/архитектов, не имея доступа ни к микросервисной архитектуре, ни к базам данных... Если еще на заре появления мобайла могли быть какие-то надежды, что мобайл-дев — это новый десктоп и там можно потрогать и БД и архитектуры и прочее просто в рамках своего мобильного «десктопа», то сейчас такие надежды тщетны.

Так что сейчас мобайл разработку можно порекомендовать только тем, кто готов и любит делать фронт и ему окей оставаться всю жизнь разрабом, без возможности вырасти до полноценного лида, архитекта и прч., ведь на этих должностях в первую очередь требуется знание бекенда, а не фронта.

Мені не подобається мобайл.
Особливо субміт аплікейшинів.
Довго і через Ж

Бекенд пайплайни теж трешовими бувають

Вони контрольовані і прогнозовані. На відміну від.

Чому погано бути мобайл девелопером:
— це тупіковий рівень розвитку. Доростете ви до сініора, а що далі? Вам буде дуже складно рости в сторону архітекта, стаф інженера і тд, нікому не потрібен архітект без розуміння бекенду і частково фронтенду. Скоріш навпаки, буде ок якщо архітект знає бекенд але не розбирається в мобайлі.
— більшість проектів на мобайл які заходять в Україну на аутсорс — це шарашка на 3-6 міс, на мобайлі практично нема великих ентерпрайз проектів де 100+ мобайл девів, та навіть таких де 10+ суто iOS інженерів досить мало. Звідси випливає пункт 1, а ще кожних 3-6міс задумуєшся про те чи знайдуть тобі новий проект чи звільнять. На великих галерах зазвичай проблем з новими проектами не буде але там і умови відповідні.
— з часом ваші знання не накопичуються а просто обезцінюються. Так наприклаж на iOS було з MRC, Obj-C, зараз Swift-UI. Ви тратите багато часу на вивчення технології, через деякий час Apple випускає повністю новий підхід, і впринципі через 3 роки все що ви знали про стару технологію ви можете забувати. Так на ринку ви будете конкурувати з мідлами в яких 3 роки досвіду і які готові працювати за менші гроші, вони будуть знати нову технологію на тому ж рівні що і ви і цього буде достатньо, бо кастомеру не потрібен ваш застарілий Obj-C чи знання МRC. Це не бекенд де з часом досвід хіба накопичуєть, тут він завжди обезцінюється, відповідно це впливає на ріст зп і мотивацію.
— згадайте коли останній раз ви скачували нову апку на телефон. Хайп на мобайл пройшов і впринципі проривних технологій зараз немає, тут немає високонавантажених систем і чогось супер критичного, вам не будуть платити стільки скільки зараз платять девопсам чи крипто-девелоперам. Плюс розвиток фронтенду і різних кросплатформ заставляє кастомерів на таких 3-6місячних шарашках чи потрібно йому взагалі наймати нейтів девелоперів, ринок мобайлу потрохи звужується, а фронтенду і кросплатформ відповідно тільки зростає.

Як висновок, загалом робота на мобайлі є і буде, але не слід розраховувати на якісь захмарні зп чи перспективи росту вище сінйора. Якщо дійсно хочете розвиватись в мобайлі — шукайте великі продуктові компанії закордоном.

Цікава думка, але що у тих, хто розробляє дескотопні продукти для Apple? Ситуація теж сама?

таких проектів дуууже мало. Наскільки я розумію щоб писати десктопні продукти не обовязково знати MacOS. А враховуючи що зараз все йде в cloud не бачу перспектив десктопних продуктів.

Виходить так, наче вже немає сенсу вчити Swift, і взагалі обирати цей напрямок майбутньому джуну)

якщо хіба починаєте вивчати Swift і хочете якихось перспектив, то кращою інвестицію в майбутнє однозначно буде перевчитись на фронтенд/бекенд/девопс. Можете порівняти кількість відкрити вакансій на iOS та на все решту. А ще врахуйте зоопарк кросплатформ з якими можливо прийдеться працювати на мобайлі.

пізніше перевчатись прийдеться у вільний час і з даунгрейдом зарплати

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

У вас галероцентричне бачення світу, у можливо в цій парадигмі ви і праві. Але на галерах світ не закінчується. Хайп на мобайл дійсно пройшов, і зараз він є базовою складовою будь-якого великого b2c бізнесу, при чому багато де це mobile-first парадигма, і совання кнопок в телефоні бізнес цінить більше, ніж совання кнопок в вебі. От історії, де кожній автомийці своя апка треба вже дійсно відходять.

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

Якщо коротко, то шлях мобільного розробника дуже ок, але він менш універсальний в першу чергу не по технологіям, а по бізнесам, для яких ця експертиза потрібна. Але тут теж потрібно розуміти, що умовний фронтендер може пиляти як клієнт умовної «розетки», так і якийсь внутрішній дашборд/адмінку, яку побачать 20 людей за весь її лайфтайм. В той же час, мобільщик буде бачити в основному перший варіант, і майже ніколи другий. Якщо ентерпрайз то ваша тєма, не варто рипатись в мобільну розробку, якщо хочеться робити те, що будуть «щупати» пересічні клієнти, то мобільна розробка то найлегший шлях до цього. І дійсно, прийдеться більше орієнтуватись на продуктові компанії, якщо захочеться якогось росту в матеріальному плані. Але, нагадаю, що всі ті славнозвісні около-FAANGівські зарплати, то це якраз про продуктові компанії, і там не про фреймворки та деталі синтаксису запитують.

У вас галероцентричне бачення світу

незнаю з чого ви взяли, я ніколи не був на галерах, а останніх декілька років працював виключно в продуктових компаніях, як на великих b2b та b2c так і на менших стартапах. Бекенд інженерів чомусь завжди було більше, і відповідно можливостей для росту в технічному напрямку.

багато де це mobile-first парадигма, і совання кнопок в телефоні бізнес цінить більше, ніж совання кнопок в вебі.

порівняйте к-ть відкритих вакансій і зп на мобайл і фронтенд. Безумовно є бізнеси де є мобайл і нема фронтенд, але в рази більше бізнесу якому і не потрібен той мобайл. Якщо взяти топові mobile-first апки типу інтсаграму, приват24, чи якісь сервіси купівлі квитків — то так, там працють сотні мобайл інженерів, але в рази більше бекендщиків і девопсів, і топові чуваки якраз будуть вони а не мобайл деви, це їм треба займатись безвідмовною архітектурою яка буде правильно скейлитись і супортити мільйони запитів. А на мобайл к-ть юзерів ніяк не впливає, скейлиться лише к-ть скрінів... не поставлять мобайл девів лідати такі великі проекти...

всі ті славнозвісні около-FAANGівські зарплати, то це якраз про продуктові компанії, і там не про фреймворки та деталі синтаксису запитують.

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

Кількість вакансій на нашому ринку — це трохи хибна метрика. Так, фронтендерів більше чим андроїд девів. Але я, як андроід дев, можу аплаїться на 90% вакансій з релевантним досвідом, де останні 10% це буде специфічна історія з С++/AOSP/AR/etc. Фронтендер буде відразу фільтрувати по фреймворку. Бекендери те ж саме, тільки там почнеться з мови. Хоча в цілому вакансій буде більше, безумовно, але не на порядок. Знову ж таки, тому що в рамках одної компанії, навіть mobile-first, завжди є бек-офіс, сапорт, маркетологи і т.д. і їм в тому числі потрібні інструменти для роботи, які зазвичай живуть в браузері.

С приводу навантаження, до речі. Один з основних неочевидних плюсів мобільної розробки, як на мене, це вартість деплою. В сторах перевірка займає мінімум добу. Тому не буває 10 деплоїв в прод в день, те що деплоїться більш уважно перевіряється, розкатується не повністью і майже не трапляється ситуацій, що «прод упав» зі сторони апки. І коли трапляється черговий факап, і колеги з бекенду посеред ночі, бо в америці бізнес тайм, їбуться з логами, я сплю як немовля. Так, це ріже швидкість розробки, але в той же час менеджмент зовсім інакше планує, і ситуацій типу «швиденько поправ, ну що вам то варто», та і банальних інфраструктурних падінь, просто не виникає, як у інших напрямів.

Фронтендер буде відразу фільтрувати по фреймворку. Бекендери те ж саме

саме тому у них вищі рейти, найти фронтендера з правильним стеком важче, не те що андроїд дева де 90% кандидатів мають релевантні скіли

сплю як немовля

так, і відсутність всіляких онколів — це великий плюс на мобайлі

саме тому у них вищі рейти,

да да да))

сьогодні згорів від Visual Studio

А что случилось то?

Вирішив я поставити С++ на свою голову, і тут сталося це: Couldn’t install Microsoft.VisualCpp.Redist.14

Після цього VS відмовився нормально працювати

Ну не знаю. Так себе повод, чтобы бомбить и кардинально менять стек. Я думал, с функционалом какие-то проблемы, а тут просто какие-то косяки с инсталером.

Ну так налаштування збережи і переінсталюй її повністю.

какой микрософт нафег? gcc, clang же есть

«Осёл из Шрека.jpg»
Пиши под iOS на .NET MAUI, возьми лучшее из двух миров

Орнув з осла xD
Але MAUI нормально зараз підтримується тільки в Visual Studio, а я саме вчора через неї і почав думати про зміну) (так, можна якось в Rider спробувати, або взагалі через VS Code, но яка буде продуктивність, порівнюючи з тим, якщо це було через VS?)

Кстати, если ты так горишь от VS — попробуй действительно Райдер. Главное первые 10 минут пережить, потому что будет эффект «зловещей долины» — похоже на VS, но не VS
А если денёк поработать (главное не сдаваться и не переползать обратно на привычный VS) — то очень даже нормально работается в нем.

Ось ти не повіриш, але я до цього рік працював на Rider. Я перейшов тільки по одній причині — вони дууууууже довго вводять нові технології в Rider. Той же MAUI в них зараз підтримується тільки в беті, і тільки для мобільних версій. За WinUI я взагалі мовчу (а я саме це хотів би спробувати, і спробував завдяки VS), ну і цей список я впевнений, можна довго продовжувати.

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