Репутація українського ІТ. Пройти опитування Асоціації IT Ukraine
×Закрыть

Частичное перепрофилирование из мобайла в ML/DS в 2020, есть ли смысл?

Кратко о себе:
26 лет, сеньйор-помидор, 6+ лет опыта в разработке под iOS, сейчас веслаю в крупной аутстаф галере где доверили лидить небольшую команду и спокойно формошлепить в пол ноги
за плечами бакалавр computer science в политехе, на который с 3 курса было по молодой глупости забито из-за того что уже тогда начинал работать (о чем конечно сильно жалею моментами)

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

Из всех способов найти себе приключений на жопу я задумался о следующем:
1. Вспомнить и наверстать универскую CS базу
2. Доучить нужную математику
3. Попытаться втянуться в машинное обучение или дата саенс рилейтед вещи

Самые основные консерны — если реально попрет, что делать с 6+ годами опыта в мобайле который уже сейчас неплохо кормит?
Есть ли сейчас или будет ли в перспективе какой-нить органичный симбиоз мобайл + ML, или весь серьезный движ сейчас в облаках?
Из всех ответвлений ML — в какую специфику стоит смотреть с учетом бекграунда в мобайл разработке? первое что приходит на ум это наверное computer vision, digital signal processing, NLP.

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

Буду рад любым советам, саксес или не саксес стори, вообщем всему что поможет решить стоит ли инвестировать год жизни в это дело сейчас.

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

криза середнього віку добралася до 26 річних тімлідів

Я не бачу перспектив на найблищі 5 років ML для мобайла(ARM), ANN для мобайла так, а ML потрібно на ПК(x64), а потім ранити на мобайлі, зараз тренеровані ANN переходят з ПК та клауду на мобайл та ембедид. У Вас тоді буде конкурентна перевага та нові горизонти) Хай щастить.

Вы имеете введу что не имеете введу что не имеет смысла занимается обучение моделей на мобилках, а обучать на PC. А на мобилке только модельки использовать?

Я с вами не соглашусь по-большинству пунктов.

Я не бачу перспектив на найблищі 5 років ML для мобайла(ARM)

А я уже заказы на мобильные с применением нейронных сетей получаю.

ANN для мобайла так, а ML потрібно на ПК(x64)

1. x86, x64, ARM особо разницы вообще нет, ключевой момент это быстрый GPU. И часто это не PC, а cloud.
2. Гугл пытается пропихнуть такую идею как Federated learning, что бы забирать у пользователей не данные, а веса, GDPR наступает.
3. Если я на python делаю прототип специально для Mobile проекта и дописываю недостающую функциональность на iOS, то это Machine Learning в мобайле?

Ведь в каком-то случае надо кастомный слой написать для CoreML модели(Возможно используя Metal).
Где-то саму нейронную сеть оптимизировать.
Где-то вообще понимание что на мобилке происходит, какие там данные и прочее. Что можно, а что нельзя еще.

По — этой причине я считаю заниматься этим нужно именно мобильному разработчику. А не абстрактному Machine Learning Enginner — с бекенда, так как он не понимает реалий мобайла.

Есть ли сейчас или будет ли в перспективе какой-нить органичный симбиоз мобайл + ML, или весь серьезный движ сейчас в облаках?
если реально попрет, что делать с 6+ годами опыта в мобайле который уже сейчас неплохо кормит?

Я бы не фиксировался на идее непосредственно натянуть опыт мобайла на ML/DS. А шёл бы по новому роадмапу без оглядок. Шесть лет опыта в мобайле — это в любом случае шесть лет инженеринга, которые будут тебе помогать двигаться быстрее.
Кроме того, не забывай, что под iOS пишут «применения» — applications. Вот и используй свои старые навыки и платформу, чтобы найти применение новым навыкам и сервисам, которые ты с их помощью создашь. Пусть даже чисто в демонстрационных целях.

З мобайла

смысл

є завжди...;))

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

кризис и без Вас может нехило так встряхнуть зону комфорта.
Нужно понимать реалии отечественного рынка. 99% это аутсорс/аутстаф или тоже самое, только под другими названиями вроде «сервис/консалтинг».

как по мне нужно задаться следующими вопросами:

1) Анализ рынка труда.
Сможете ли Вы найти компанию/проект где продадите себя как iOS + ML Software Engineer?

В целом вакансии iOS + ML иногда проскакивают (вроде Grammarly), но, к сожалению, не так часто.
На мобайл вообще позиций достаточно мало, плюс кроссплатформа активно напирает.
Нужно заресерчить забугорный рынок — есть ли спрос/предложение на таких спецов.
Возможно удастся найти ремоут проект на зп выше рыночной.

2) Составить роудмап необходимый для изучения ML.

Прикинуть сколько времени нужно чтобы разобраться в данной теме. Как получить первый практический опыт.

3) Рассмотреть продуктовые компании в своем регионе с похожим стеком.

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

4) Не забывать про фактор кризиса

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

Есть ли сейчас или будет ли в перспективе какой-нить органичный симбиоз мобайл + ML, или весь серьезный движ сейчас в облаках?

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

Самые основные консерны — если реально попрет, что делать с 6+ годами опыта в мобайле который уже сейчас неплохо кормит?

Хороший консерн. Может быть так что совмещать новые знания со старым опытом получится, а может и по другому. Возможно придется менять техническую сферу..

Из всех ответвлений ML — в какую специфику стоит смотреть с учетом бекграунда
в мобайл разработке?

С учетом

26 лет
и спокойно формошлепить в пол ноги
я конечно люблю свою зону комфорта, но хотелось бы ее чутка встряхнуть

Просто бери что угодно что нравиться и этим занимайся. Универсальный совет который обычно дают тем кто спрашивает что бы поучить.

Перейшов з мобайла (iOS) в DS, результатом задоволений. В мобайлі часто займався алгоритмами (в основному comp. vision)

основные консерны — если реально попрет, что делать с 6+ годами опыта в мобайле который уже сейчас неплохо кормит?

Потрібно намагатись перейти на нову позицію без втрати по зп. Це простіше зробити без зміни компанії. Тому я би рекомендував перейти на мобайл позицію в продуктову компанію (саме в продуктових компаніях найбільший попит на DS) і там вже змінювати профіль.

Есть ли сейчас или будет ли в перспективе какой-нить органичный симбиоз мобайл + ML?

Такі продукти існують, але їх дуже мало. Я над таким працював (Gemini Photos), доволі цікаво. До речі, зараз в цю комаду шукають iOS інженера

Из всех ответвлений ML — в какую специфику стоит смотреть с учетом бекграунда в мобайл разработке?

Якщо розглядати симбіоз mobile + ml, то це computer vision. Для класичного ds більш важливим є продуктове мислення та вміння роботи зі structured data

Такі продукти існують, але їх дуже мало. Я над таким працював (Gemini Photos), доволі цікаво.

А что-то для продакшена использовали или все свое пилили?

круто,реальный саксес кейс в треде)
интересно — какой уровень мат бекграунда у вас был на момент когда вы решили перепрофилироваться? можно по шкале от 1 до 10, где 1 это школьная база, а 10 это свежий выпускник отличник мехмата/примата какого-нить КПИ )

а также, понимаю что скорость входа у каждого своя — но все же, сколько было потрачено в вашем случае на доучивание мат базы до уровня «ориентируюсь в теме и самостоятельно могу решать бизнес задачи средней сложности»?

Из всех ответвлений ML

а разве этот хайп еще не попустило кризисом? ну ок.

Судя по-апворку еще больше раздуло.

ну в апворк нормально могут как я понял из последних местных материалов — не только лишь все
плюс как возможные причины — что за все эти штучки на постоянке onsite, работодатели/инвесторы перестали быть готовыми платить... не так?

Питон, TF + туториалы. Нынче этого полностью достаточто, что быть здесь

ML/DS

И еще дам совет. На питоне с TF MVP для разводки лоха-инвестора лепиться за 3 дня. Потом 1-2 года пилится его бабло, а дальше ему просто говориться — ну не шмогла я, но старалась.

Потому что на нем быстро писать MVP и для него море биндингов для всего сделаны и отлажены. И на нем MVP из туториалов слепишь за 3 дня.
Потом 2 года типа оптимизировать и улучшать будешь. После все одно не сделаешь желаемого, а у инвестора кончатся деньги. Поэтому через год от старта попила нужно начинать окучивать следующих инвесторов, не позже.

З.Ы. Да, о проде я речь не веду — он не нужен, поэтому на всякие С++, С и на быстрые и качественные движки нейронок можешь не заморачиваться.

понял принял
то есть математики out of the box и прочего стафа для DS — в Питоне сейчас достаточно?

Для этого уровня выше крыши. А для остального тебе нужно в Штаты, где подобные либы пишут и разрабатывают.

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

Но, я надеюсь ты понял мой легкий стеб.

Я уже хотел у вас советы брать где искать лоха-инвестора.

С этим не ко мне, а например к Хмилю — он вернулся на ДОУ.
Ну и для таких как ты проводят много семинаров и образовательных курсов и обучением поиску лохов-инвесторов. Их таких много, но их поиск и окучивание — это отдельная работа.

З.Ы. Сразу скажу, что если углубишься серьезно в то же машинное обучение и программирование, то научиться искать и окучивать лохов-инвесторов уже не сможешь. И наоборот.

сенкс
да понял я тебя прекрасно, прикладная математика была там где-то в пяточной кости 5 лет — матлабы мейплы даже солидворксов чуть. иногда даже сдавал спецкурсы на бал выше чем «удовл»)
Штаты, эх, Штаты... эх короче говоря. может быть в следующей жизни повезет.

Всё что выше (прикладная математика, матлабы мейплы даже солидворксов) большей частью не нужно, если ты не работаешь в тех редких единичных местах в мире.
Нужен питон и умение пользоваться 1-2 движками нейронок и немного понимать, что есть перемножение матриц. За тебя уже все реализовано в Питоне уже как лет 7.
В общем pip install ля-ля-ля, туториал и все получится за 3-5 дней.

Разработка своих кастомных моделей. методов каких — это долго и дорого и не выгодно. Это прерогатива американских универов.

Які перспективи DS в умовах короначасу і опісля?

Хорошие. Но все зависит от твоего попадания в правильную и модную струю.
Струя с коронавирусом не взлетит.

Но мой прогноз на ближайшие 10 лет, не дальше.

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

Наробок для чого, медецини, екології, он-лайн рітейлу, медіа, розваг?

екології

Здесь самое то бабло пилить (можно и с применением DS и ML).
Остальное — безумные фантазии

Еще применения — финансы, производство, сельское хозяйство и куча другого, где автоматизация имеет смыл.

На канал Себранта варто підписуватися? :)

Да, только после того, как Себрант проставит пару кегов пива, того, что мне нравится.

немного понимать, что есть перемножение матриц

У некоторых даже с этим проблемы, например не понимают, почему нужно умножать строку на столбец. По-хорошему, для начала хотя бы в этом разобрались, прежде чем лезть куда-то.

У большинства, вообще-то. Но когда я все выше писал, я был трезв.
Для большинства даже понять что такое матожидание очень и очень сложно.

Но они по туториалам могут дернуть нейуронки на TF и сделать MVP. И этого достаточно, чтобы получать 3000 баксов в Украине как ML-хер-просцышь-что-там,.

убежать от формошлепства к чему-нибудь более интересному и конечно же выйти на заветные 5K+

Если мотиватор ток бабос то ML не совсем удачная идея.

Попробуйте выйти на удаленку к клиентам на прямую. Быстрее будет.

на одной мотивации бабоса, в такой дальний космос как ML/DS я знаю что точно далеко не уеду)
я знаю что даже в своей специфике мне до настоящего рокстара как до орбиты — но на данном этапе меня просто уже не тянет в сторону развития внутри iOS песочницы, уходить в менеджмент, как и осваивать другие платформы нет вообще никакого желания, а вот во что реально любопытно копнуть это в какую-то математически емкую тематику.

но опять же при этом нужно сохранять баланс потраченное время/практическая выгода и быть честным с собой — работа не хобби и помимо работы есть куча других вещей на которое можно потратить свободное время, если новые скилы не дадут никакой практической пользы в карьере в них тогда нет смысла

26 лет, сеньйор-помидор, 6+ лет опыта в разработке под iOS, сейчас веслаю в крупной аутстаф галере где доверили лидить небольшую команду и спокойно формошлепить в пол ноги

Вы пришли к успеху.

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

Таких позиций у нас аутсорсе/аутстафе нету, может быть есть что-то в snapchat, но для iOS, ML не требуют в вакансии.
Будете overqualified для рынка, оно вам надо?

Из всех способов найти себе приключений на жопу я задумался о следующем:
1. Вспомнить и наверстать универскую CS базу
2. Доучить нужную математику
3. Попытаться втянуться в машинное обучение или дата саенс рилейтед вещи

Похвально, сам такой

Самые основные консерны — если реально попрет, что делать с 6+ годами опыта в мобайле который уже сейчас неплохо кормит?

Ну вас отличный опыт нативного фронтона под Мобайл. К клепанию форм всегда успеете вернутся.

Есть ли сейчас или будет ли в перспективе какой-нить органичный симбиоз мобайл + ML, или весь серьезный движ сейчас в облаках?

Симбиоз возможен. На Upwork переодически появляется проекты со всем этим, оно все зачаточном состоянии и очень сырое.
CoreML имеет кучу недоработок в том числе в дизайне и проблемы с конвертацией из других форматов. CreateML для MacOS — детская игрушка.
Есть библиотеки от Гугл(TensorFlowLite), LibTorch. Они гарантированно работают, но не умеют GPU, хотя в CoreML с этим тоже большие проблемы.
Весь серьозный движ это облака. ML — это большие данные и вычисления.
Да сейчас начинают это все по-чучуть выносить в мобайл, но это все пока такие слезы.
Хотя начинают продвигать тот же Federative Learning, это может дать кое-какой толчек.

Из всех ответвлений ML — в какую специфику стоит смотреть с учетом бекграунда в мобайл разработке? первое что приходит на ум это наверное computer vision, digital signal processing, NLP.

Ну вы умеете писать какой-то код, советую еще Python подучить и базовый набор утилит для DataScience.
Матрицы на Swift множить умеете?

computer vision

— в целом да, тем более рабочие реализации которые работаю есть и применяются. Естественно это порезанные или простые модели типа: TinyYolo, Lenet. Что-то сложное будет либо тормозить либо не поместится в память.

Обработка изображений

 — тоже вариант, сейчас занимаюсь ресерчем по-данному направлению.

digital signal processing

 — из всего в контексте iOS мне приходит на ум это только процессинг звука. Занимался в контексте Pet-проекта.
Проблема № 1.
Для анализа звука сырой набор данных нейронке смысла давать нету, толку нет(мусор на входе, мусор на выходе).
Нужно строить спектрограмму используя оконное преобразование Фурье. Для Python на котором вы будете обучать модели, есть librosa. На iOS не хватает инструментария.
Я для данной задачи закатил рукава и частично портировал функциональность из LibRosa в iOS. (Переносить функцию размежевания матрицы с SciPy — это жесть).
Зато обрадовало то что реализация rfft в numpy вынесена в C модуль.
Ведь то что я буду давать модели обученой пайтоновскими любами, должно совпадать что я буду отдавать в iOS.
(Визуализацию спектрограммы в моей MacOS приложухе можно увидеть по-ссылке: is1-ssl.mzstatic.com/...​/pr_source.jpg/626×0w.jpg)
Есть пару своих идей для этого.

NLP, Voice recognition

— тоже рабочий кейс, приложения для изучения языков Babel может анализировать речь без интернета. Значит Voice и Text recognition там есть.
Я до NLP толком не добрался, но думаю там тоже есть большие проблемы с препроцессингом.

Еще моменты:

Обучение моделей — MacOS не поддерживает NVIDIA, а все Фреймворки для ML используют CUDA. Есть сырой проект PLaidML, на котом можно запустить Keras на ATI, но оно только ток работать начало и ненамного быстрее обучения через CPU. Вообщем нужен либо cloud либо собирать комп или Google Colab(Есть лимит на время, но бесплатный).

Девайсы — телефоны уже достаточно мощны, имеют GPU, но в телефоне слабый GPU, а на серваке NVIDIA Tesla V100 за $4000 и 32GB памяти, разница в масштабах задач очевидна.

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

В любом случае сначала нужно будет изучать всю базу вне контекста мобайла. На Coursera, Udacity, Udemy полно курсов. Медиум переполнен кусочками информации.
Советую пройти какой-то Into to DataScience, а затем уже Machine Learning смотреть.
Математику смотреть по-необходимости. Умножать матрицы для начала достаточно.
Мне понравилась еще книга: Grokking Deep Learning.
Потом уже смотреть куда и что.

Можно еще найти примеры простых моделей и попытался запустить на iOS через CoreML.
Есть книга: Machine Learning With Core ML. Там можно найти примеры.

Но она не даст базу, так примеры прикладного применения.

Но это все время, это сложнее чем с iOS на Android перейти к примеру.

убежать от формошлепства к чему-нибудь более интересному и конечно же выйти на заветные 5K+

іди в DevOpsы там зараз бабло рубят :)
а 6+ років формошльопства в мобайлі мало значать, там ліби-мови-підходи сильно змінюються кожні 3-5 років, тому що в ти роки форми клепал чи 6 принципово значення не має

ну вот пилил я скрины на обж си c MVC архитектурой 6 лет назад, а сегодня вот на свифте с реактивщиной юзая new shiny architecture — основная суть мобильных приложений за эти 6 лет не претерпела какой-то кардинальной метаморфозы, я больше об этом)

формошлепство aka рутина это просто игра на опыте своих проверенных и надежных решений для бизнеса, по факту в этом нет чего-то плохого. Но со временем «наша Галя становится балувана» и тебя тянет за новыми эмоциями.

ага, от тільки якщо swiftUI зараз не вивчиш то не факт що за 2 роки будеш потрібен

ага, от тільки якщо swiftUI зараз не вивчиш то не факт що за 2 роки будеш потрібен

Ну вы знаете: выучить ML/DataScience и SwiftUI это задачи разного порядка.
К слову: SwiftUI еще сырой, для продакшена нужно враппить им тот же UIKit, плюс много багов.

SwiftUI еще сырой, для продакшена нужно враппить им тот же UIKit, плюс много багов

Это ещё ладно, починят. А то, что он совершенно нетестируемый и, скорее всего, таковым и останется — это реальный killer.

А какие проблемы с тестированием?

Ну так SwiftUI вьюхи — это чёрная коробка. Ты никак, к примеру, не протестируешь, что нажатие на кнопку X вызывает функцию Y.
Да, можно покрывать это автоматизированными UI тестами, но это серьёзный удар по производительности и надёжности test suite.

А как насчет решений типа такого:
github.com/nalexn/ViewInspector

Да, рефлексия — это один из путей обхода этой проблемы. Но, как и водится с рефлексией, особенно в отношении иерархии вьюх, мы ступаем на шаткую поверхность.

Тесты начнут давать много false negatives. Мой тест на то, что кнопка X вызывает функцию Y не должен падать от того, что я поменял кнопку местами с другой кнопкой.

Кроме того, возникает риск ловить падающие или несобирающиеся тесты при переходе на новую версию iOS SDK.

Решение для тестирования SwiftUI от Apple, скорее всего, тоже будет лежать в плоскости рефлексии. Но я рассчитываю, при этом, хотя бы получить 1st party совместимость с SDK и какой-никакой статический анализ.

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