Сразу к делу.
Имею необходимость как можно быстрее освоить мобильную разработку.
Цель: реализация текущего проекта-стартапа + возможный поиск работы в будущем на позицию мобильного разработчика.
О себе.
По образованию психолог. Есть здоровый интерес к разработке, который обусловлен не только желанием зарабатывать, но и получать удовлетворение от созидательной работы. Активно слежу за трендами в IT последние несколько лет. Есть кое-какие навыки работы на языке R, Python немного JS. Умею парсить сайты, делать анализ данных и писать несложные системы автоматизации для личного использования. Имею общее представление об ООП, алгоритмах и структурах данных. Однако, называть себя разработчиком или специалистом по машинному обучению не стал бы.
Интерес к мобильной разработке возник в связи с текущей работой - участвую в стартапе, разрабатываем психологический сервис, который будет реализован через мобильное приложение. За это время освоил процесс разработки концепта будущего мобильного приложения, научился разрабатывать дизайн и интерфейс. Теперь, решил освоить разработку - желаю расширить сферу своих компетенций в текущем проекте. Также, рассматриваю возможность заниматься мобильной разработкой профессионально, под заказ (желательно поскорее).
В данный момент стою перед выбором мобильной платформы: Android или iOS. Также, необходимо определиться с языком программирования: Swift или Kotlin. Изучил множество материалов по этой теме, но все равно не могу принять решение. Да и не все вопросы были решены.
Итак, что мне удалось выяснить.
Android
++ язык Kotlin кажется довольно понятным и лаконичным, похож на Python - освоил бы его легко и с удовольствием
++ имеется собственный девайс - будет удобно тестировать приложения
++ также, можно делиться приложением залив его на чужое устройство в виде .apk файла (удобно для тестирования)
++ более-менее лояльная политика Play Market к публикации приложений
++ самая большая аудитория пользователей
-- есть мнение, что помимо языка Kotlin необходимо знать Java - придется потрать больше времени на изучение двух языков (?)
-- слишком большое разнообразие устройств и модификаций ОС
-- низкая платежеспособность пользователей
iOS
++ язык Swift кажется довольно понятным и лаконичным, похож на Python - освоил бы его легко и с удовольствием
++ имеется MacBook, уже зарегистрирован как разработчик и имею доступ ко всем необходимым инструментам в Xcode (редактор, отладчик, эмулятор iOS и др.) - очень удобно
++ небольшое разнообразие девайсов и унификация ОС
++ самая платежеспособная аудитория пользователей
-- есть мнение, что помимо языка Swift рекомендуют изучить Objective-C - придется потратить больше времени на изучение двух языков (?)
-- не имею собственного iPhone - не смогу тестировать приложения на работающем устройстве
-- не уверен, что можно переносить написанное iOS приложение на чужое устройство (как .apk файл в Android), чтобы юзать или тестировать (?)
-- слишком жесткая политика App Store к публикации приложений
Мои основные вопросы.
1) Так ли необходимо знать Objective-C или достаточно освоить Swift, чтобы начать разрабатывать мобильные приложения под iOS?
2) Так ли необходимо знать Java или достаточно освоить Kotlin, чтобы начать разрабатывать мобильные приложения под Android?
3) Реально ли устроится начинающему мобильному разработчику на удаленную работу или такая привилегия доступна только при наличие значительного опыта?
Мои дополнительные вопросы.
1) Возможно ли делиться iOS приложением залив его на чужое устройство или только через AppStore?
2) Многие рекомендуют React Native, но мне это кажется костыльным подходом к мобильной разработке - что думаете об этом? Возможно стоит присмотреться и к этой технологии?
Дешевле будет освоить разработку в Android, тем более что рынок устройств растет, в отличие от iOS.
Подучить java для работы в Kotlin не обязательно, но крайне желательно.
Трата времени идет обычно не на изучение двух языков, а на изучение их инфраструктуры - библиотеки, фреймворки, и так далее. Синтаксис самого языка учится довольно быстро.
Saboteur, благодарю за ответ.
Что бы вы рекомендовали для того, чтобы получить необходимый багаж знаний для Android разработки? Какие ресурсы использовать для изучения, в каком объеме?
Было бы полезно получить некую дорожную карту, чтобы понимать последовательность шагов, а также длину и сложность пути.
Длина и сложность пути совершенно не общеизвестна. У каждого свой бэкграунд. Кто-то сразу понимает разницу между статической и динамической типизацией, кто-то годами не понимает как и зачем в ООП.
Полную дорожную карту можно конечно поискать в инете, но оно вам не нужно, так как вам нужно написать конкретное приложение, использующее отдельные фичи, а не знать вообще все, на что способен xamarin.
Точнее так - джуниор не сможет оценить карту. Мидер уже начинает понимать, и только сеньор может сказать что из изученного очень полезно, а что средне.
Просто качайте SDK и пробуйте запилить простые хелловорлд.
Вам для начала нужно научиться создавать простейшее приложение, передавать его на телефон и запускать на нем ваше приложение. Затем будете ставить себе задачи, какие фичи добавить и добавлять.
Отвечу как iOS разработчик
1) Чтобы начать разрабатывать можно вообще не знать Objective-C, можно начинать прям со Swift, но я бы рекомендовал в будущем пройтись немного по Objective-C, все-таки знать его на уровне "чтение кода" было бы очень хорошо.
2) По андроиду такая же схема, знать джава чтобы начать разрабатывать не надо, но хорошо было бы в будущем иметь о ней представление
3) Насчет удаленной работы как повезет, мой первый работодатель брал таких, который были вообще без опыта и работали они 90% времени удаленно, так что все индивидуально, но я бы не рассчитывал, что вас возьмут без опыта на удаленку
Благодарю за ответ.
Прошу, не могли бы вы уточнить, зачем для работы на более новом языке нужно знать старый? Кроме ситуаций, когда нужно поддерживать старый проект?
Много библиотек еще имеют в себе objc код, много НЕ легаси проектов тоже имеют в себе objc код, в objc как по мне типы ссылок и вся возня со ссылками более явная, чем в swift, да и потом вы же не можете быть уверены, что вам не придется иметь дело с objc, верно?
dansing_bear, насчет доп вопросов делиться можно через testflight, hockeyapp, но это при наличие учетки разраьотчика
react native я бы вообще не трогал, все равно придется писать на нативном языке
Я Вас расстрою , но язык программирования - это только буквы .
Выучите ли вы (латиницу - котлин) или кирилицу (ява) . Не важно.
Дальше Вам потребуется научиться их соединять в слова (понять архитектуру приложений ).
А вот получиться ли из Вас хороший писатель (программист) не известно.
У Вас есть хоть какой опыт написания программ на любом языке ? Если нет , то попробуйте пару вечеров повозиться на scratch.mit.edu .
Это позволит Вам оценить насколько легко Вы обучаетесь и нравиться ли Вам вообще программировать
Говоря про скретч, я не издеваюсь, как может показаться. Есть дальнейшее развитие идеи под разработку
мобильных приложений appinventor.mit.edu/explore . Помимо родоначальника в сети, можно найти
и другие сервисы основанные на этом же подходе.
Да получаются простенькие приложения с излишним размером. Но освоить очень-очень просто.