Обучение
Начать карьеру разработчика с Android было плохой идеей
Я понимаю, у мобильных разработчиков много вакансий, и это будущее. Но для меня важнее понять основы. И я думаю, что зря потратил год своей жизни только потому, что начал с Android.
Моя карьера разработчика началась 4.5 года назад. По сути, я был начинающим программистом. До этого момента мне не нужно было делать никаких реальных проектов, кроме небольших задач в университете.
Итак, я начал изучать Android после того, как прошел первую стажировку, которая принесла мне мою первую работу. Но меня это так расстроило!
Через 1.5 года я перешел на React и больше не оглядывался назад. Вот почему я думаю, что никогда не должен был начинать свою карьеру с Android.
1. Разные решения одной и той же проблемы
По какой-то странной причине во многих случаях есть несколько способов сделать одно и то же. Ты можешь сказать:
Это же неплохо?
Мой ответ — НЕТ! Для опытных разработчиков? Да, конечно неплохо!
Но если вы только начинаете, то в большинстве случаев вы будете сбиты с толку, и это случалось и со мной.
2. Сложность отладки
Одна из главных неприятностей при разработке Android — зачастую трудно определить проблему.
- Во-первых, на мой взгляд, отладочные сообщения ужасны.
- Представьте, что вы пытаетесь отладить проблему в течение всего дня, а решение на самом деле было — перезапустить IDE! Как это узнать новичку?
- Иногда проблемы варьируются от устройства к устройству, от версии к версии. Очень сложно найти все возможные варианты.
Иногда вы просто пишете решение и молитесь, чтобы оно сработало, потому что у вас нет доступа ко всем устройствам на Android!
3. Множество Best Practices (“лучших практик”)
Когда нам приходится использовать слово «Best» с существительным во множественном числе («Practices»), сама по себе возникает огромная проблема.
Но, к сожалению, в экосистеме Android дело обстоит именно так.
Есть несколько передовых методов решения одной и той же проблемы. Существует несколько правил для дизайна пользовательского интерфейса, создания Activity, иерархии классов и многих других вещей.
Но неприятно то, что все время от времени изменяется самим SDK!
4. Новичку трудно учиться
Изучение Android — это увлекательно и интересно. Никаких сомнений. Меня очаровало, когда я понял, что могу создать что-то, что будет работать на моем собственном телефоне. Для начинающего это отлично.
Но когда я начинал карьеру разработчика, мне было трудно получить представление о методах жизненного цикла и о том, как все работает вместе.
Даже для самого простого и стандартного приложения нужно было понять очень многое.
- Что такое Gradle?
- Что такое Activity
- Что такое XML
- Что такое манифест?
- Что такое методы жизненного цикла?
Для новичка так много новых концепций, что я разочаровался.
Сравните с веб-разработкой, где вам нужен лишь простой HTML-файл, чтобы увидеть результаты своей работы.
5. Высокий барьер для входа
На мой взгляд, барьер входа в разработку под Android очень высок.
- Вам нужна мощная машина (не менее 8 ГБ ОЗУ).
- Вам нужно физическое Android-устройство (эмулятор очень требователен к ресурсам).
- Для открытия учетной записи Play Store у вас должна быть возможность платить в международной валюте.
- Кривая обучения очень крутая.
Я знаю, что в других странах эти проблемы могут быть не критичны. Но в моей стране я видел, как многие люди бросали разработку под Android только потому, что не могли позволить себе лучший ноутбук/компьютер.
6. Грязная экосистема
Большое количество кодовой базы Android все еще написано на Java, и это трудно понимаемо!
Кроме того, читабельность кода может быть проблемой, если SDK не тот. Кажется, никто не задумывался о будущем. Просто добавляют все, что нужно.
Сообщество Android добавило много других вещей в и без того испорченную экосистему, например, RxJava или дата биндинг в Dagger. Но с их появлением проблемы отнюдь не исчезли.
Затем вбросили много других вещей, таких как Kotlin, KTX и Arrow.
Но, на мой взгляд, это только усложнило и без того сложную экосистему.
7. Ужасный механизм публикации
Что ж, вы преодолели все проблемы и создали отличное приложение. Теперь что?
Теперь вы хотите опубликовать его в магазине приложений. Но это не так весело, как вы думаете!
- Во-первых, у вас должна быть учетная запись разработчика, за которую вы должны заплатить 25 долларов.
- У вас должен быть файл с ключами для подписи.
- Сделать APK для нескольких версий сложно
- Вы не можете просто изменить название своего приложения в любое время (технически вы можете это сделать, но это отрицательно сказывается на SEO).
Напротив, существует так много бесплатных хостинговых решений, которые сразу же подходят для веб-разработки.
В большинстве случаев мне достаточно просто вставить код с GitHub, чтобы выполнить развертывание и обновление.
8. Управление различными устройствами
Это проблема как в веб-разработке, так и в Android.
Но разница в том, что существует всего несколько браузеров, и большинство функций в любом случае работают в большинстве браузеров.
Но для мобильных устройств? Нет, нет, нет..
только 4% устройств использует две последние основные версии Android
Иногда нам нужно делать условия внутри кода для поддержки нескольких версий Android. Что так странно и неприятно для начинающего!
9. Много волшебства, которое не работает
Самая неприятная вещь в разработке Android — это большое количество вау-моментов.
Но, к сожалению, волшебство исчезает, когда дело доходит до публикации в магазине.
Например, есть функция под названием minification, которая позволяет уменьшить размер APK. Но если вы используете ее, некоторые вещи просто не будут работать (даже некоторые функции Firebase, которые являются собственным продуктом Google!).
Если вы найдете решение в StackOverflow, все будут говорить, что вам нужно удалить минификацию, и это единственное решение.
У меня вопрос: почему существует функция, которую никто не может использовать? Подобные вещи так легко расстраивают junior-разработчика, и это самое случилось и со мной!
Начать карьеру разработчика с Android
Эта статья не предназначалась для критики Android. Android великолепен, и мне он до сих пор нравится. Я часто делаю полезные приложения для развлечения.
Но я думаю, что изучение Android-разработки в качестве начинающего разработчика может в целом иметь плохие последствия. Гораздо проще и лучше изучить веб-разработку, а затем перейти в мобильное пространство.
Я понимаю, у мобильных разработчиков много вакансий, и это будущее. Но для меня важнее понять основы. И я думаю, что зря потратил год своей жизни только потому, что начал с Android.
Вот и все. Хорошего дня! :D