Меню

Стать разработчиком андроид – Разрабатывать приложения под Android — словно быть (демонетизированным) ютубером / Habr

Содержание

31 совет / Alconost corporate blog / Habr


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

Я не могу показать вам короткий путь к успеху, но если вы готовы приложить усилия – он ждёт вас.

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

Переведено в Alconost

1. Узнайте получше функционал фреймворков для разработки приложений под Android


И я не говорю о чтении документации, речь идет о фактическом коде фреймворка. Я знаю немало разработчиков, которые не потрудились «нырнуть» поглубже во внутренности фреймворков. Не будьте такими. Это невероятно, как много можно узнать, когда вы понимаете, как реально работают вещи, как складываются воедино детали мозаики.

Если вам нужно закончить вашу игру для Android, прекратите игнорировать функционал SDK, сделайте его своим помощником.  

2. Хватит бояться упустить что-то


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

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

3. Читайте как можно больше кода


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

Это никак не поможет вам вырасти как Android-разработчику. Единственный способ действительно улучшить свои навыки – это читать качественно написанный код более опытных товарищей. Просматривайте программы и библиотеки с открытым исходным кодом, именно там вы обнаружите новые техники программирования и реализации функционала, о которых вы раньше даже и не подозревали.  

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

4. Подумайте об изучении дополнительных языков


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

Это откроет для вас перспективы, вдохновит на новые идеи, поможет существенно улучшить навыки программирования под Android. Настройтесь на изучение одного нового языка программирования в год.  

Совет: Здесь можно начать (если вдруг вы этого еще не знаете): JavaScript.

5. Пора изучить шаблоны проектирования Java


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

А еще вам нужно быть на одной волне с другими разработчиками: когда они будут обсуждать шаблоны Factory, Decorator или  Facade, вы будете понимать, о чем идет речь.

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

Совет: Вот хороший ресурс для освоения шаблонов проектирования Java. Если вы хотите еще больше информации, обязательно прочтите эту книгу.

6. Участвуйте в разработке проектов с открытым кодом


Если вы разработали библиотеку, плагин или другую полезную часть кода и используете ее в собственном приложении, подумайте о переходе на открытый исходный код. Участвуя в разработке совместного или собственного проекта с открытым исходным кодом, можно многому научиться. Считайте это экспресс-курсом open-source программирования, который значительно увеличит вашу стоимость как разработчика.
 
Если вам нечего переводить в открытый код, проверьте другие open-source проекты, которые вас заинтересуют. Исправьте ошибки, улучшите документацию, напишите несколько тестов для них.  

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

7. Пусть ваша IDE работает на вас


Потратьте больше времени на то, чтобы понять интегрированную среду разработки (IDE), которую вы используете: Android Studio. Ее возможности шире, чем вы можете себе представить. Она предлагает крутой функционал, который многие разработчики не исследуют досконально.   

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

8. Пора структурировать приложение правильно


В основном весь наш написанный код целиком выгружается в Activities или Fragments (я тоже этим грешу), превращаясь постепенно во «всемогущий объект», который практически невозможно поддерживать и тестировать.

Важно подобрать правильный шаблон при проектировании архитектуры вашего приложения, например  MVP (Model-View-Presenter – Модель-Представление-Представитель) или MVVM (Model-View-ViewModel – Модель-Представление-Модель Представления). Разделите логику функционирования приложения, взаимодействие представлений, взаимодействие данных в различные слои, чтобы было проще управлять ими и тестировать их.

Совет: Обратите внимание на эти полезные макеты от Google: они упростят вашу жизнь при проектировании приложений.

9. Изучите стандарты чистого программирования под Android


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

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

Совет: Вот здесь можно начать изучение.

10. Изучите передовой опыт программирования под Android


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

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

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

11. Используйте свободное время эффективно – слушайте подкасты


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

Добавляйте в свою жизнь многозадачность – слушайте подкасты по Android.

Совет: Начните с Fragmented Podcasts и Android Developers Backstage.

12. Не усложняйте. Будьте реалистами.


Это происходило не только со мной, но и с некоторыми моими друзьями-разработчиками. Конечно, будет правильно сначала подумать, перед тем как начать работу над чем-то (очень правильно, вообще-то).  Но не перемудрите, это приведет к путанице, пропущенным срокам и фрустрации.

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

13. Узнайте что-нибудь про дизайн


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

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

14. Станьте перфекционистом


«Идеал» – понятие субъективное, но возьмите за правило всегда стремиться к лучшей возможной версии продукта, над которым вы работаете.

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

15. Постоянство – ключ к успеху


Если вы хотите стать успешным в программировании (или в чем угодно еще в жизни), вам нужно быть последовательным.

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

Новое дело начинать легко, тяжело поддерживать интерес и энтузиазм к нему на протяжении длительного времени.

16. Начинайте с малого и постепенно расширяйтесь.


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

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

17. Всегда имейте под рукой площадку для проверки кода


Наличие инструментов для проверки кода может полностью изменить ваш процесс обучения. Если вы столкнулись с чем-то новым в Android, возьмите за правило всегда проверять это с помощью площадок для проверки кода.  

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

18. Пишите больше тестов


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

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

19. Переходите на разработку через тестирование (TDD)


Разрабатывайте приложение сразу надежным и эффективным, способным выдержать проверку временем.

Следуйте принципу «красный/зеленый/рефакторинг» при разработке через тестирование (TDD). Сначала напишите тест, который не будет пройден (красный), потом напишите код, который пройдет тест (зеленый),  и в итоге исправляйте и оптимизируйте код (рефакторинг).

«Разработка через тестирование — это способ управлять собственным страхом при программировании. Страх делает вас нерешительным и менее коммуникабельным. Страх заставляет вас избегать обратной связи. Из-за страха вы становитесь угрюмым».  — TDD by Example

20. Настройте хороший механизм для автоматизации релиза


Как разработчик, старайтесь тратить как можно меньше времени на вещи, которые можно автоматизировать, такие как проверка качества приложения и релиз.

Автоматизировать проверку качества вашего кода можно при помощи таких инструментов, как CheckStyle, PMD, Lint и FindBugs. Прохождение всех модульных и инструментальных тестов является обязательным до интеграции любых существенных изменений в ваше приложение.

После того, как все проверки пройдены, вы можете публиковать ваш APK в Play Store или распространять его любым иным образом.

Совет: Изучите возможность автоматизировать публикацию приложения в Play Store посредством этого open-source инструментария.

21. Развивайте навык реактивного программирования


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

Используя данный подход, вы сможете разрабатывать интерактивные приложения быстрее, а это сделает вашу жизнь проще.  

Совет: Тут можно найти хороший материал по RxJava для Android.

22. Привыкайте использовать Kotlin для программирования под Android


С тех пор, как Google анонсировал анонсировал первоклассную поддержку для языка программирования Kotlin на конференции Google I/O 2017, интерес к нему резко возрос. Этот язык программирования — как глоток свежего воздуха в мире программирования под Android.  

Это шикарная новость для Android-разработчиков, которым надоело программировать на старых, перегруженных и полных ошибок Java-приложениях. Дайте ему шанс, возможно, именно Kotlin вдохновит вас на новые свершения.  

Совет: Оцените это шикарное руководство по Kotlin.

23. Посещайте митапы, больше общайтесь с другими разработчиками


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

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

Совет: Зайдите на meetup.com, чтобы найти интересные вам митапы.

24. Изучите «горячие клавиши»


Практически для любой операции, которую вы хотели бы выполнить в Android Studio, есть «горячие клавиши». Если вы выучите их, это существенно сократит временные затраты на разработку и повысит вашу продуктивность. Вам потребуется какое-то время, чтобы запомнить сочетания клавиш, но в отдаленной перспективе это позволит перейти на работу без мышки.

Совет:  Если вы не хотите запоминать «горячие клавиши» по старинке, тут можно найти замечательный плагин, который поможет вам в этом.

25. Старайтесь узнавать как минимум одну новую вещь об Android каждую неделю


В необъятном мире Android есть множество вещей, которым предстоит научиться, которые нужно понять и которые просто могут раздавить вас, при первом приближении. Но все станет намного проще, если вы дадите себе обещание изучать хотя бы одну вещь об Android еженедельно.

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

26. Автоматизируйте все, что «съедает» ваше время


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

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

Совет: Обратите внимание на Zapier качественный сервис, который позволит вам объединить и автоматизировать некоторые ваши инструменты, которые вы используете ежедневно.

27. Запускайте две версии Android Studio одновременно


Наиболее важные ежедневные операции совершайте в стабильной версии Android Studio. Но не стоит упускать возможности самых свежих бета-версий Android Studio.

Иногда в этих последних версиях есть новые интересные возможности, которые вы не захотите упустить.  

28. Периодически пересматривайте чужие библиотеки


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

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

29. Найдите лучшие способы рефакторинга старых кодовых баз.


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

Совет: Эта книга полностью изменила мой взгляд на работу с  унаследованным кодом. Однозначно прочтите ее.

30. Всегда тестируйте приложения на устройствах с низкой производительностью


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

Приобретите самые дешевые и низкопроизводительные девайсы, которые вы только сможете найти, и заведите привычку разрабатывать приложения только для них. Вы начнете замечать множество недостатков вашего приложения, о которых раньше и не догадывались. Так вы сможете подготовить ваши приложения для большей части населения Земли, которым недоступны лучшие Android-устройства.

31. Купите самый лучший компьютер, какой вы только можете себе позволить


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

Отдайте предпочтение Mac, а не Windows. Вы просто влюбитесь в его простоту и надежность.

Если вы приобретаете MacBook, выберите вариант с самыми лучшими характеристиками. Потом вы будете бесконечно благодарны себе за это решение.

Поделитесь своими советами


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

О переводчике

Перевод статьи выполнен в Alconost.

Alconost занимается локализацией приложений, игр и сайтов на 68 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов, перевод технических текстов.

Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.

Подробнее: https://alconost.com

habr.com

Как стать Android-разработчиком? – Devcolibri

Это универсальный план по освоению Android-профессии. С его помощью вы сможете прокачаться в Android-разработке с самого нуля до профессионального уровня и подготовиться к трудоустройству в этой сфере.

1. Что нужно для начала разработки?

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

Писать приложения вы можете без какого-либо Android-смартфона, используя включённый в среду разработки эмулятор (программа, имитирующая реальное Android-устройство). Но, конечно, будет гораздо лучше, если у вас будет собственный Android-смартфон, на котором вы сможете тестировать ваши приложения.

2. Начинаем с Java

Основой мобильной разработки на сегодняшний день является Java. С изучения языка и стоит начать свой путь в Android. Прежде чем приступить к написанию мобильных приложений, будет полезно посвятить время изучению Java. На нашем сайте этой теме посвящён отдельный курс «Java для начинающих».

Для разработки приложений на Java вам понадобится среда разработки. Пожалуй, лучшим вариантом на сегодняшний день является Intellij IDEA. Это очень умная среда разработки, в которой удобно писать код благодаря функции автозаполнения кода, а также производить отладку и рефакторинг. Для обучения будет достаточно бесплатной версии. В нашем курсе мы подробно рассказываем, как настроить и начать работу с Intellij IDEA.

3. Переходим к Android

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

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

Здесь самое время начать создавать свои первые приложения и почувствовать уверенность в своих силах. Вся разработка приложений ведётся в единственной официально поддерживаемой среде разработки Android Studio. Именно она используется в современных руководствах и видео, в том числе и от Google. Хорошей новостью является то, что Android Studio разработана на основе Intellij IDEA, а это значит, что у вас не возникнет абсолютно никаких проблем при переходе от Java-разработки к Android. Она также доступна в бесплатном виде. В нашем курсе вы найдёте достаточно информации о начале работы с ней.

4. Android pro

Уже смотрите на смартфон глазами разработчика, а не пользователя? Отлично — самое время переходить дальше.

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

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

Прямым продолжением курса для начинающих разработчиков является курс «Android для продвинутых», который поможет вам сделать качественный скачок вперёд. Он появится на нашем сайте в самое ближайшее время, а здесь появится ссылка на него.

5. Двигайтесь вперёд

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

Заключение

Android-разработка — это безусловно хороший выбор для новичка в сфере IT. Здесь низкий порог вхождения, отличные перспективы развития и просто множество интересных проектов.

Не бойтесь начинать свою карьеру в области мобильной разработки, а мы вам в этом с радостью поможем. Вместе с нами вы сможете пройти весь путь мобильного разработчика — от Java и до уверенного владения Android-инструментами. Мы покажем вам на деле все преимущества Android-разработки и научим работать вас со своим смартфоном не в качестве пользователя, а в качестве продвинутого разработчика.

А для читателей нашего блога у нас есть специальный промокод на 10% скидку на курс «Профессия Android-разработчика»: BLOG10

devcolibri.com

Как я бросил всё и стал Android-разработчиком / Newtonew: новости сетевого образования

Несколько лет я хотел стать программистом и каждый раз отказывался от этой идеи. Гуманитарию, который уже пошёл по другой дороге, не силен в математике, в 24 года менять направление развития казалось опасным начинанием, лишённым смысла. Ведь кто-то взялся за программирование ещё до школы!

С такими мыслями я просматривал ленту новостей, и моё внимание привлекла статья «Как сотрудник банка с гуманитарным образованием стал разработчиком мобильных игр». К заголовку я бы еще добавил «и спал по 3-5 часов, продолжая работать в банке, а, возвращаясь домой, сидел с ребёнком».

Если раньше моими кумирами были Шерлок Холмс и Тирион Ланистер из «Игры престолов», то теперь я решил равняться на этого супермена с гуманитарным образованием. Шутки шутками, но статья произвела на меня сильное впечатление, и я решил попробовать.

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

Чтобы дать представление о том, что я считаю «крайними мерами», приведу пример одного небольшого лайфхака. Начал я с того, что объединил два дела в одно: спорт и дорогу от метро до дома. Какой смысл ходить пешком, а потом бегать на беговой дорожке? Я перестал заниматься спортом, а вместо этого надевал на работу кроссовки… Ведь многие современные офисные работники уже пересели на велосипеды и самокаты — наверное, в будущем люди будут чаще возвращаться с работы бегом.

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

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


Как я сфокусировался на месяц

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

Чтобы сидеть целый месяц и изучать код с утра до вечера, не нужна сила воли. Вообще. Вспомните все статьи, книги, фильмы, лекции о борьбе с ленью и прокрастинацией, которые вам представлялось услышать, увидеть, прочесть. Всё это ерунда! Потому что вопрос поставлен неправильно.

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

Мне попадалось сообщение на форуме от студента, который ходил на курсы по программированию, в духе: «программистам приходится много работать, они должны работать ещё и дома… очень тяжелая профессия…» Сейчас я могу сказать, что этому человеку вряд ли нужно идти в разработчикиии. Потому что программист не ДОЛЖЕН, и ему не ТЯЖЕЛО — он ХОЧЕТ и ему ИНТЕРЕСНО. Конечно, я не могу назвать себя программистом, но рискну сказать, что если программист ДОЛЖЕН и ему НЕ ИНТЕРЕСНО, то либо он не в том проекте, либо не в той профессии. Когда я писал свои первые приложения, я как будто играл в игру — постоянно возникают новые задачи, и я должен их решать. Решения могут быть разными, простор для фантазии безграничен. Это поинтереснее Skyrim или GTA.


Как я обучался: шкатулка с инструментами

Как человек, который последние 2 года занимался вопросами памяти и запоминания, я знаю о некоторых минусах интенсивного обучения. Мной же написанные статьи (Горячее время в обучении: часть 1, часть 2) почти полностью противоречат тому, что я сделал.

Чтобы нивелировать отрицательные эффекты интенсивного обучения, я вдвойне сосредоточился на сохранении опыта. По старой привычке, которую поддерживаю уже второй год, я начал заносить новую информацию в программу Anki, которая позволяет повторять материал через увеличивающиеся промежутки времени (если вы не знакомы с принципами интервального повторения, можете посмотреть статьи Интервальное повторение на Википедии, Помнить все, Не забудьте повторить).

Но всё пошло не так гладко, как раньше! Если обычно на повторение 50 карточек у меня уходило минут 5, то теперь на 5 карточек могло уйти минут 10. Первое время я мучился, стараясь запоминать всё чуть ли не дословно, но потом понял, что это бессмысленно. Программисту важно уметь быстро находить решения, а не помнить их буквально. Поэтому я начал делать карточки более объёмными и перестал запоминать их дословно. То есть я знаю, какие записи у меня есть, и быстро могу найти нужное по ключевым словам.

Приведу пример типичной карточки средних размеров:

 

 

Есть и другой тип — на понимание принципов. Здесь я отвечаю, не подглядывая в ответ.

 

 

Это намного удобнее обычного конспекта, потому что с программой для интервального повторения вроде Anki вы следите, чтобы ничего не потерялось. Если мне попадётся вопрос, который я почти забыл или не уверен в ответе, я просто отправлю его на небольшой интервал (через 3 дня в примере ниже).

 

 

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

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

Например, я начал книгу Android Development и очень легко прошёл 200 страниц, а потом вообще перестал что-либо понимать. Тогда я отложил книгу и взял обычный учебник по программированию на Java, там застрял на 300-й странице. Затем перешёл на онлайн-курс по разработке под Android и проработал все уроки, кроме последнего — с ним я не справился. Когда вернулся к первой книге, прежние проблемы показались мне пустяком. Помимо этого я параллельно читал бумажный учебник по Java перед сном, а во время еды смотрел видеоуроки на телефоне.

Вообще я заметил, что все курсы по программированию построены так. Сперва тебе часами объясняют простейшие вещи:

а = 1;
b = 2;
с = a + b;
— Чему равно с?
— Трём!
— Поздравляем, вы завершили 50% курса!

А затем за несколько минут пытаются дать остальное:

— Хорошо, с = a + b, но зачем вам писать это каждый раз? Если вы перенесёте это в метод, то избавите себя от лишней работы. А вообще, вы могли бы реализовать абстрактный класс или интерфейс и через них уже решать подобные задачи. Попробуйте.
— Что?! Какой ещё абстрактный класс? Зачем использовать функцию? Зачем нужны интерфейсы и абстрактные классы?.. Похоже, программирование не для меня…

Примерно так это всё происходит.

Источник: joyreactor

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


Начинайте решать практические задачи как можно раньше

Этот принцип заслуживает заголовка. Если вы решаете реальные проблемы, вам будет интересно. Вы научитесь именно тому, что нужно вам. На четвертый или пятый день, когда я ещё занимался в метро, я начал писать программу, которая считала интервалы для Anki. Меня интересовало, сколько карточек нужно будет повторять в день через полгода, если всего ты решишь выучить 500 штук.

 

 

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

Другой пример: позавчера я зашёл на КиноПоиск и обнаружил совсем другой сайт. Но мне нужен старый КиноПоиск. Вы видите тут возможность для обучения? Я увидел ии написал приложение Kinopoisk vote. Потому что проходить уроки и выполнять задания — скучно. Интересно делать проект. Пусть приложение получилось так себе, скачает его человек 20 и денег я с него не получу. Сейчас главное, что я многому научился, пока его писал, а писать его было интересно.

Основной проект, над которым я работал — это галерея с фактами. Я хотел пройти весь путь от начала до конца и написать полноценное приложение. Чтобы не повторяться, я решил пойти от обратного — если обычно пользователям нужно что-то «лайкнуть», то здесь им нужно определить, насколько им тот или иной факт не нравится.  И если вдруг у меня заведутся пользователи, то будет забавно посмотреть на ТОП-список фактов, которые ненавидят. Сразу скажу, что я не рассчитывал сделать что-то серьёзное — я хотел просто научиться программировать.


Ресурсы, которыми я пользовался

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

 

 

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

 

 

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

Удобны курсы на Treehouse — тебя ведут за ручку с самого начала, всё подробно объясняют и дают промежуточные задания (я их, кстати, никогда не выполнял). Также можете посмотреть codecademy, codecombat, codebabes.

На мобильном прошел до середины: Изучаем java, Learn java. Ежедневно заходил повторять пройденное в Anki.

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


Итоги марафона

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

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

Если бы можно было вернуться на месяц назад, я бы сделал всё точно так же: нет идеального пути, придётся наступать на грабли, допускать ошибки и на них учиться. Поэтому мне было бы интересно пофантазировать над другим вопросом — что если вернуться на два или три месяца назад? А если на год?

Почему мы не можем решиться на важный шаг сразу? Зачем нам ждать по несколько лет, прежде чем что-то предпринять? Именно поэтому хочу пожелать всем, кто рискнёт заняться новым в следующем месяце или в следующем году: ребят, начинайте сегодня.

12 октября 2015, 15:00
Мнение автора может не совпадать с позицией редакции.

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.

newtonew.com

Разрабатывать приложения под Android — словно быть (демонетизированным) ютубером / Habr

Как известно, некоторые авторы на YouTube крайне недовольны условиями, которые предлагает эта платформа. Аналогичное сражение сейчас ведут разработчики Android-приложений на платформе Google Play. Попытаюсь за 20 минут объяснить, что не так с Android.

Когда-то Android считался лучшей мобильной платформой: контроль, настраиваемость, продвинутые функции, реальная многозадачность, поддержка даже редких случаев использования и свобода разработчиков. Это была лучшая платформа для науки и образования: во-первых, инструменты разработки свободны и кросс-платформенны, во-вторых, Android был очень гибкой ОС, которая не мешала экспериментировать с инновационными концепциями и возиться с оборудованием. Теперь всё это быстро исчезает.

Раньше основные релизы Android приносили новые функции, которые радовали и разработчиков, и пользователей. Но с какого-то момента я уже начал бояться анонсов новых версий, и до сих пор ищу в себе силы (хех), чтобы посмотреть на список изменений и рекомендации для разработчиков к последнему релизу. И новые версии — это не единственная причина для нервотрёпки: изменения в политике Google Play Store тоже всегда забавно читать.

Для начала немного контекста: до Android я экспериментировал с Windows Mobile 6.x и перешёл на Android после выхода версии 4.2: помню, что вскоре после этого анонсировали 4.4, и она стояла на моём первом Android-телефоне до конца его жизни. Android стал первой и пока единственной мобильной ОС, где я серьёзно вложился в разработку приложений.

Я начал возиться с разработкой приложений незадолго до выхода 6.0 (Marshmallow), так что я не старожил и не могу сказать, что наблюдал эволюцию Android с самого начала, и, конечно, не наблюдал весь процесс с точки зрения разработчика. Тем не менее, перед моими глазами прошло десятилетие изменений — даже во время экспериментов с Windows Mobile я обращал внимание, что происходило в лагере Android, хотя на эти телефоны у меня ещё не хватало денег (всё уходило на «карманные компьютеры» под Windows Mobile). Я отлично понимаю, насколько неудобен был для пользователей и разработчиков Android 4.x и раньше: я и сам мог попробовать эти версии, и мои приложения должны были их поддерживать.


С каждой версией Google изменяет Android API. Эти интерфейсы в значительной степени определяют, что можно и нельзя делать приложениям. Кроме того, некоторые API требуют разрешений, на которые вы соглашаетесь при установке, а некоторые из этих разрешений можно установить при запуске (идея в том, что приложение должно деградировать грациозно, предоставляя отдельные функции без получения некоторых разрешений). Это относится к API для работы со списком контактов или местоположением.

Новые версии Android включают новые API. Раньше в старые API из предыдущих версий не вносилось практически никаких изменений. То есть старые приложения продолжали нормально работать.

В последние два-три года новые версии Android начали удалять и изменять старые API. Например, если приложение хочет оставаться активными в фоновом режиме, то оно теперь должно отображать постоянное уведомление. Идея хорошо звучит в теории, но в итоге у вас постоянно несколько уведомлений, по одному для каждого фонового приложения. Например, у меня на телефоне постоянно висит два уведомления: одно для диктофона, второе для эквалайзера. Одно из моих собственных приложений тоже должно постоянно показывать уведомление в Android 8/Oreo и более новых версиях для надёжного фонового сканирования Wi-Fi, чтобы установить появление пользователя в определённых местах.

В будущей версии Android 10/Q возможности приложений ещё больше ограничат. Google убирает доступ к буферу обмена, убивая целую категорию приложений для управления буфером обмена (история скопированных фрагментов, синхронизация с другими телефонами, компьютерами и т. д.). В настоящее время все приложения могут получить доступ к буферу без специальных разрешений. Можно было решить проблему, добавив запрос на разрешение, а не полностью удаляя API. Приложения больше не могут включать и выключать Wi-Fi, что не позволяет, например, автоматически отключать Wi-Fi во время поездки на автомобиле. Google думает полностью запретить приложениям доступ к произвольным файлам во «внешнем хранилище» (SD-карты и область внутренней памяти на вашем телефоне, где лежат скриншоты и фотографии, MP3, образы для эмуляции и т. д.).

Обратите внимание, что все эти вещи они удаляют для «безопасности», но их можно было просто защитить запросом на разрешение, как со списком контактов или местоположением. Вместо этого они решили полностью удалить функции. Даже если пользователи захотят, приложения не смогут их реализовать. Существующие приложения, вероятно, будут разгромлены пользователями, ведь люди не поймут, почему программа вдруг перестала работать после обновления на замечательную новую версию Android.

Это значительные изменения. Нормальные приложения могут перестать работать. Разработчикам придётся их обновить, чтобы реализовать менее удобные обходные пути, внедрить объяснительные сообщения и так далее. Это требует времени, усилий, денег и т. д., которые можно было потратить на исправление других проблем или разработку новых функций. Небольшим командам или инди-разработчикам, особенно которые занимаются этим в свободное время, может быть очень трудно догнать последние «тенденции» Google. Например, из-за изменения работы фоновых сервисов я в течение лета провёл большую часть своего свободного времени, перепроектируя архитектуру одного из приложений, что в свою очередь привело к появлению новых ошибок, которые пришлось диагностировать, исправлять и т. д., чтобы упомянутое приложение показывало уведомление и корректно работало в последних версиях Android.

Даже без выпуска новых версий Android компания Google может отправить в утиль старые API: например, установить новые правила Play Store, запретив приложения с определёнными разрешениями. Недавно Google запретила разрешения на доступ к SMS и журналу вызовов: соответственно, все такие приложения изгнаны из каталога.

Такие приложения по-прежнему можно установить напрямую из APK или альтернативных каталогов, но не Play Store. На практике получается, что из многих приложений в Play Store вырезают ключевую функциональность. Например, диктофон больше не может указать номер телефона в аудиозаписи, а приложения автоматизации больше не могут использовать SMS-сообщения как триггер для действий. Поскольку 99% пользователей скачивают приложения из Google Play, данная функциональность теперь запрещена и доступна только очень абсолютному меньшинству пользователей, которые знают, как обойти эти ограничения.


Разработчики в Play Store всё больше чувствуют себя как создатели контента для YouTube, где изменения политики происходят внезапно и без предупреждения. На YouTube продюсеры всегда опасаются, что контент будет демонетизирован по какой-то причине: это решает полностью автоматизированная, непрозрачная система, также как и реагирование на жалобы правообладателей. В Play Store теперь тоже приходится постоянно следить, по какой новой причине внезапно могут удалить ваше приложение или заблокировать учётную запись разработчика, вместе со всеми другими аккаунтами, которые Google сочтёт причастными:
И это лишь отдельные примеры даже не самых «страшных» историй, которые через день публикуются в r/androiddev. В соответствующей «категории» десятки историй по каждой такой теме. Иногда похожие случаи попадают на Hacker News. Похоже, Google относится к бану аккаунтов и удалению приложений Play Store с тем же легкомыслием, что и модераторы онлайн-игр, которые по малейшему поводу банят игроков по подозрению в мошенничестве. Для большинства игроков онлайн-игры — просто развлечение, в отличие от разработки приложений для Android. Возникает очевидный вопрос: что делать людям, которых забанили?

Теперь я понимаю, что аналогия с YouTube ужасна. Видите ли, на YouTube обычно приходят предупреждения. Нет такого, что вы проснулись и внезапно обнаружили, что ваш аккаунт забанен. У авторов видео обычно есть возможность извлечь выгоду из драмы, обратившись к пользователям. Аудитория обычно им сочувствует, в то время как разработчики приложений имеют дело с возмущением юзеров, которые понятия не имеют или не хотят знать, почему нам приходится массово удалять функциональность или снижать производительность наших приложений. Например, разработчик популярного диктофона ACR после удаления разрешения на доступ к журналу вызовов столкнулся с плохими отзывами, злоупотреблениями и ненормативной лексикой от тысяч разгневанных пользователей — и это после обширной кампании, предупреждающей о предстоящих изменениях (как пользователь ACR, я удалил версию Play Store и установил через XDA Labs непривязанную версию, которая сохраняет старую функциональность).

Для независимых разработчиков и небольших компаний разработка под Android стала рискованнее, чем когда-либо. Сегодня я начну работать над проектом, а через шесть месяцев, когда подготовлю первую версию, изменения в политике каталога не позволят его опубликовать или серьёзно повлияют на функциональность… в дополнение к вышеупомянутому пункту об API, которые устаревают и меняют семантику, требуя постоянной поддержки кода, чтобы идти в ногу с последними версиями.

Если вы ходили по ссылкам выше, то поняли ещё кое-что: в Google фактически отсутствует поддержка пользователей живыми людьми, и если бы их боты были такими же отзывчивыми, как Google Assistant… Если это не боты, а люди, то разница не чувствуется: они выплёвывают шаблонные ответы. Широко известно, что лучший способ решения проблем с листингом на Google Play — привлечь внимание сотрудника Google в социальных сетях.

Похоже, уровень поддержки Google зависит от того, насколько громкий шум вы поднимете в социальных сетях. И это экспоненциальная корреляция, потому что большого шума недостаточно, чтобы получить умеренный уровень поддержки; нужно поднять гигантский шум. Это проблема с большинством сервисов Google, особенно если вы не используете G Suite (по-видимому, разработчики приложений не считаются «платными клиентами», когда дело доходит до поддержки). Одна из вещей, которые я хотел бы зарегулировать на государственном уровне, безусловно, это обязательство таких мега-корпораций обеспечивать фактическую поддержку пользователей.

Хотя аналогия YouTube, вероятно, была ошибочной, но здесь есть ещё одна параллель: многие считают, что в последние годы YouTube вносит изменения в бизнес-модели и алгоритмы, благоприятствуя большим, уже известным авторам и затрудняя работу более мелких. Я считаю, что мы наблюдаем аналогичную тенденцию в Google Play Store — просто имейте в виду, что популярность приложения или его «уровень» следует оценивать не по количеству загрузок или активных пользователей, а по объёму комиссионных для Google от рекламы и внутриигровых покупок.


«Android — это open source» стало шуткой ещё пять лет назад. Хотя Android Open Source Project (AOSP) по-прежнему существует, многие действительно важные для конечных пользователей и разработчиков компоненты становятся всё более закрытыми.

Приложения от Google, могут делать то, что сторонним приложениям практически недоступно, благодаря тесному взаимодействию с проприетарным бегемотом, которым является Google Play Services. Это особенно заметно в самом приложении «Google», а также в Google Assistant и лаунчере Google (Google Старт).

В сборке AOSP многое отсутствует, а у многих приложений, включая мои, будут проблемы с нормальной работой. Проекты по «дегуглификации» Android разработали свободные альтернативы для многих функций Google Play. Но сам факт, что сообществу приходится разрабатывать эти альтернативы и что они крайне необходимы для запуска большинства популярных приложений, показывают, что в настоящее время Android можно считать свободным разве что как дистрибутив Linux.

Cам по себе AOSP эффективно контролируется Google. Этот проект важен, потому что определяет общие API для различных «OEM-версий» Android, так что мы можем разрабатывать для Android, а не для «Samsung Android» или «Nokia Android». Но какие API внедрить, а какие исключить, полностью решает Google. То же самое касается общей архитектуры системы, модели безопасности и т. д. Это означает, что Google может наклонять AOSP как угодно, удалять функции и переносить в проприетарные компоненты что захочет.

Очевидно, что реализация важных функций через Google Play и привязка ОС к компонентам Google важна для удержания контроля над «OEM-сборщиками». Положительный эффект для пользователей и разработчиков заключается в том, что функции и исправления безопасности становятся доступны даже на устройствах, которые не получают обновлений от OEM или получают обновления только для своей версии Android, но не для новой. Отрицательный эффект в том, что указанные изменения в одночасье могут повлиять даже на старые версии Android. Это остаётся полностью на усмотрение Google, также как ограничения приложений в Play Store.

Кажется, Google открывает только необходимый минимум Android, сколько необходимо, чтобы ОС работала на устройствах OEM. Мы не доходим до крайней точки в основном потому, что у самых крупных OEM достаточно рычагов, чтобы предотвратить это. Чувствую, что если бы Google могла сделать Android полностью закрытой системой, то сделала бы это. Интересно, что изменится в будущей операционной системе Fuchsia.


У Google два оправдания для изменений в Android и политике Google Play: «безопасность» и «пользовательский опыт», причём последний включает «время автономной работы». Не уверен, для кого Google в последние годы разрабатывает свой «пользовательский опыт», но точно не для «опытных пользователей», таких как я. Впрочем, сначала поговорим о безопасности.

Меры безопасности должны быть пропорциональны тому, что они защищают. С каждой версией Android мы видим всё больший акцент на безопасность: например, рутануть телефон становится всё труднее без кастомной прошивки, которая изначально включает функциональность суперпользователя. Можно сделать вывод, что Google действует во благо. Но несложно заметить, что под предлогом безопасности запрещают определённые разрешения, такие как журнал вызовов и доступ к сообщениям, или удаляют API, включая доступ к внешнему хранилищу.

Усиление мер безопасности имеет смысл, потому что мы храним в наших телефонах всё более ценную информацию: от «старомодной» приватной информации до биометрических данных, таких как отпечатки пальцев, скан лица и сетчатки глаза. Конечно, Google и прочих, наверное, больше всего заботит охрана доступа к платёжным системам, ключам DRM и так далее.

Прежде чем закончить рассуждения о безопасности, давайте немного поговорим о пользовательском опыте — это ещё одно популярное оправдание для ограничений или полного удаления определённых функций. Если 1% людей используют какую-то слишком сложную (или даже «небезопасную») функцию, то её часто упрощают… а вышеупомянутый 1% остаётся с системой, которая больше не поддерживает их вариант использования. Звучит не так уж плохо? Но Google обязана повторять этот процесс достаточно часто при выпуске новых версий (чтобы сотрудники могли получать свои бонусы), каждый раз связывая руки ещё 1% пользователей, и что останется в итоге? Наверное, только функция просмотра рекламы (очевидно, рекламы Google). Вам же не нужно звонить, верно? В конце концов, собеседник может оказаться мошенником, втянуть вас в схему социальной инженерии или что-то в этом роде.…

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

На самом деле, всё сводится к выбору пользователя. Android раньше позволял немного пожертвовать безопасностью в обмен на более мощные и инновационные приложения, чем в iOS. Раньше я мог запустить 10 приложений в фоновом режиме и посадить батарею за полдня, но теперь, если я хочу это сделать, то придётся смотреть на 10 текущих уведомлений. Раньше я мог обмениваться файлами между приложениями как на десктопе, но, видимо, это тоже оскорбление для хорошей безопасности. Раньше я мог сканировать сети Wi-Fi каждую минуту, но в Android 9 даже это ограничили несколькими сканированиями в час, убивая некоторые нормальные случаи использования, включая мой дипломный проект. К счастью, в универе мы можем просто притвориться, что последняя версия Android — восьмая.

Смарт-карты, включая SIM-карты, изобрели для контейнеризации защищённой части систем. Аутентификация, аттестация — все функции безопасности должны делаться там, чтобы большая система оставалась менее безопасной и более гибкой. Но в какой-то момент в последние десятилетия несколько компаний решили, что будет лучше (может, для «пользовательского опыта»?) перенести важные операции безопасности в процессор приложений, включая целые бесконтактные платёжные системы. Были разработаны системы вроде SafetyNet. А давайте запретим запускать банковское приложение на рутованном телефоне? Представьте, что интернет-банкинг на десктопе отказался работать, потому что до него дошла информация, что я знаю пароль к учётной записи администратора…

В конце концов, ограничивая нормальные приложения в своём каталоге, Google в итоге поощряет прямую загрузку и установку APK. Это нежелательно с точки зрения безопасности, не нужно объяснять, почему.

Наши телефоны определённо стали безопаснее, но излишняя «безопасность» портит жизнь людям, которые хотят от телефона больше, чем без перерыва смотреть YouTube и проверять свою ленту в социальной сети. Также нужно помнить, что у многих людей смартфон — это единственный компьютер и им нельзя сказать «Просто сделай эту сложную задачу на десктопе». Как насчёт того, чтобы не хранить так много чувствительной информации в телефоне, чтобы мы могли вернуться к прежней гибкости с теми же рисками? Android, пожалуйста, разреши мне выстрелить себе в ногу, как раньше.


Меня бы так сильно не беспокоило это движение Android в сторону широких масс (или понимание Google того, что разрешено делать широкой общественности), если бы существовала жизнеспособная альтернатива мобильной ОС. Но у нас её нет. Есть только iOS от Apple, чья привлекательность с самого начала заключалась в девизе «это просто работает»: безопасная платформа с ограниченной функциональностью, что одновременно ограничивает возможность ошибок. Не сомневаюсь, это находка для большинства пользователей. Но лично мне такая платформа не подходит. Как я уже сказал, дайте мне возможность выстрелить себе в ногу, если я так хочу: дайте мне 2 часа автономной работы, если я того пожелаю, и пусть мои собственные приложения шпионят за моим местоположением, если я им это разрешил.

Ограничения iOS были в порядке, потому что много лет у нас был Android, который позволял делать такие вещи. Так получилось, что благодаря AOSP и отсутствию конкуренции Android оказался де-факто стандартом для каждого смартфона, который не является Apple. Среди недорогих смартфонов Android фактически является единственным вариантом. Конечно, из-за этого рыночная доля Android выросла. Поскольку сейчас «все» его используют, появился соблазн скопировать модель iOS «это просто работает» и навязать безопасность людям, «склонным к членовредительству» — теперь вы не сможете себе навредить, даже если захотите.

Усилия конкурентов Android в лучшем случае смехотворны. Windows Phone / Windows Mobile потерпела неудачу отчасти из-за слабого и, возможно, слишком позднего выхода на рынок, в сочетании с сомнительным «видением» и плохими управленческими решениями со стороны Microsoft. Хотя система Microsoft на самом деле была хорошей, иначе откуда столько убеждённых фанатов WP/WM, но вышла на рынок настолько поздно (и с таким неопределённым будущим), что не смогла привлечь разработчиков, а без топовых приложений платформа не нужна людям, как бы превосходна она ни была с технической точки зрения. Очевидно, проблема ещё в том, что многие из топовых приложений выпускает Google; она выпустила эти приложения для iOS в основном по той причине, что платформа iOS появилась раньше.

Если даже большой игрок с глубокими карманами, как Microsoft, не может представить третью мобильную платформу, то что уж говорить о менее масштабных попытках, таких как Firefox OS. Тут результат вполне предсказуем. У них ещё и дополнительная проблема с поиском железа для запуска. К сожалению, на телефоне нельзя взять и поменять ОС, как на компьютере. В далёком 2015 году я уже жаловался на отсутствие стандартизации в аппаратном обеспечении смартфонов. На самом деле интересно почитать ту статью, когда Android 4.4 был последней версией, и посмотреть, как изменилось моё восприятие Android.

Также должен отметить, что успешная альтернатива Android определённо должна запускать приложения Android, возможно, через слой совместимости. В некотором смысле Android установил стандарт для приложений, как 15 лет назад IE6 диктовал веб-стандарты наихудшим способом. Кто-то сказал антимонопольный?


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

Google устраняет часть мусорных и даже немного вредоносных приложений Play Store, усиливая автоматизацию, при этом ещё сильнее закукливаясь и будучи глухой, как никогда. На автомате трудно отличить нормальное приложение от вредоносного, а пользователю не разрешают решать столь важный вопрос. Поэтому Google просто «запрещает» использование определённых функций путём устаревания API и запрета этих функций в каталоге программ, таким образом блокируя буквально все приложения, которое хотят открыть произвольные файлы в хранилище пользователя, а также диктофоны, программы автоматизации действий и т. д.

Нам отчаянно нужна альтернатива Android. Но непонятно, кто будет разрабатывать и использовать эту альтернативу. Я знаю только то, что больше не чувствую себя счастливым ни как разработчик Android, ни как пользователь Android, и вообще вряд ли буду рекомендовать Android друзьям и родственникам.

habr.com

Как стать разработчиком Андроид приложений?

Если вы хотите с нуля “войти в IT”, вы задумываетесь о том, в какую сферу направить свои усилия. Мобильная разработка привлекает своей популярностью и востребованностью. Ежедневно миллионы владельцев смартфонов используют приложения для работы, развлечений или учебы. Если вы хотите попасть в волну, самое время стать разработчиком на андроид. Следуйте нашим советам и все получится!

Что выбрать iOS или Android?

Обе платформы имеют свои плюсы и минусы в популярности и разработке. Разработчики обеих платформ — хорошие друзья, которые постоянно обмениваются опытом. Чем привлекает Android:

  • аудитория у платформы шире — 86,2% пользователей смартфонов в мире имеют OC Android.
  • широкая география использования по миру.
  • Java — легко осваиваемый и интуитивно понятный язык
  • Не смотря на то, что iOS лучше окупается (платные приложения и покупки в них, более платежеспособная аудитория), индивидуальный android разработчик имеет свою нишу на рынке. Серьезные компании делают акцент, в основном, на iOS, так что место для работы разработчиков есть.

С чего начать?

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

  1. Вы должны действительно гореть разработкой на Android и хотеть развиваться в этом направлении. Ситуация усложняется тем, что множество смартфонов разных компаний используют Android, а обновления появляются медленно, что сказывается на том, чтобы сделать такое приложение, которое подойдет под разные размеры экранов и версии систем. Будьте к этому готовы.
  1. Вам необходимо разобраться в целом в методологии разработки мобильных приложений, а также развить в себе необходимое мышление — нужно помнить о том, что ресурсы мобильных телефонов не безграничны. Разработчики андроид приложений должны заботиться о производительности процессора, объеме памяти и батарее. Если сделать приложение некачественно, его в скором времени удалят.
  1. Начать лучше всего с курсом программирования на Android, где у вас будет ментор, который сможет вам дать фидбек по коду и архитектуре.
  1. Параллельно читайте литературу, блоги и смотрите видео-обучалки. Важно: ищете контент на английском языке, так как самые прогрессивные материалы по разработке Android именно в англоязычном интернете.

Требования компаний к Андроид разработчикам начального уровня

Для того, чтобы устроиться в профессиональную компанию андроид-разработчиком, вам необходимы следующие навыки:

  • Good knowledge of Java for Android development & Android SDK/Gradle build system
  • Good knowledge XML/JSON/SQL/GIT
  • Good understanding OOP/OOD/SOLID principles
  • Good understanding UI/UX principles and experience with customizing UI
  • Experience with back end integration using REST API
  • Problem-solving skills
  • English level — Intermediate

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

Как получить работу Junior разработчика Андроид приложений

Если создание приложений для android — это, чем вы хотите заниматься профессионально, в хорошей команде, вам нужно попасть в IT-компанию.

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

В помощь вам интернет-ресурс Upwork, где вы можете увидеть реальные задачи по Android и пробовать их сделать. На первых порах даже не берите заказ, а просто работайте над задачей без дедлайна и обязательств.

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

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

Советы от Android разработчиков Artjoker

Несколько советов по обучению разработке на Android от команды Artjoker.

  1. Разберитесь, как устроен код и функционал фреймворков Android. Вы узнаете много нового и сложите в систему фрагменты знаний о разработке.
  1. Не пытайтесь объять необъятное — изучайте вещи, которые нужны конкретно сейчас для разработки конкретного приложения. В свободное время изучайте то, что вас заинтересовало. Android — как айсберг, если вы изучили что-то и считаете, что этого достаточно, одумайтесь, вы знаете только 30%.
  1. Перспективный разработчик приложений для android изучает передовой опыт коллег. Вы можете просматривать библиотеки и программы с открытым исходным кодом, делать выводы и реализовывать новые техники на своих проектах, тем самым улучшая их.
  1. Изучайте шаблоны проектирования Java — они значительно облегчат вам разработку и помогут быть в теме, когда другие разработчики будут обсуждать их.
  1. Общайтесь с mobile-дизайнерами — будет ли приложение интуитивно понятным зависит не только от UI/UX-дизайнера.
  1. Возьмите за правило пользоваться горячими клавишами при работе над приложением — оптимизируйте свое время.
  1. Следите за тенденциями — набирает обороты язык программирования Kotlin. Специалисты, которые умеют с ним работать, вскоре будут очень востребованы.

Вам будет полезно:

  • developer.android.com — сайт, на котором собрана полезная документация для разработчиков
  • Android Wear — версия операционной системы Google Android, с помощью которой вы можете программировать приложения для умных часов и других носимых устройств.
  • ARCore — это платформа для мобильных приложений с дополненной реальностью. Учитывая быстро развивающиеся темпы дополненной реальности, полезно изучить тему.
  • Android Auto, Android Things и Android TV — все эти сервисы и программы также показывают, что сфера не ограничивается только разработкой для смартфонов, так что у вас большой потенциал!

Удачи в реализации себя как Android-разработчика, работайте упорно каждый день, поставьте себе цель и идите к ней:)

Если вы хотите узнать больше о жизни и работе в Artjoker, читайте «50 фактов о работе в Artjoker» и смотрите видео:)

artjoker.ua

Как я стал андроид-разработчиком без профильного образования, попутно мешая бетон

Это моя первая статья на хабре, в которой я хотел бы описать свой небольшой жизненный путь от человека с непрофильным образованием, работавшего и строителем-разнорабочим, и сметчиком, и маляром-штукатуром — до андроид-разработчика в небольшой Харьковской компании. Текста будет достаточно много, картинок — поменьше. Поехали!

Детство



Сразу хочу отметить, что ни знакомых ни родителей программистов у меня не было, посему прививать любовь к данной профессии было некому! Детство проходило под лозунгом “Dendy forever”. Каждый день по нескольку часов я проводил в компании с BattleToads, ButtleCity, Mortal Combat, Чёрный плащ, Бомбермен и другими популярными на тот промежуток времени тайтлами. Играть я не просто любил — обожал до безумия. Потные ладошки, разбитые джойстики, лёгкий детский мат после очередной смерти — всё это присутствовало в большом количестве.

Компьютером на тот момент я ещё не обзавёлся, но понимал, что на PC глубина игр и качество графики было на три головы выше чем на маленькой пиратской приставке с жёлтыми катриджами. Правда, чудо-машина была у моего соседа, где я и мог немного поиграть в вожделенные Герои 2, Диабло 2, Кармагедон, Дальнобойщики! Мир компьютера и компьютерных игр увлекал меня настолько мощно, что я решил — надо связать свою жизнь с этой индустрией!

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

В аудитории собралось около 20 человек. Комната была большой и просторной. По периметру стояли вполне современные ЭВМ! Ручки и тетрадки уже лежали на большом овальном столе в ожидании Короля Артура, то есть, нашего преподавателя по программированию, который немного задерживался. Осмотревшись по сторонам, я заметил, что в основном весь контингент — такие же 13-14 летние ребята как и я. Выделялись только два парня, которые были заметно выше нас и года на три старше! После длительного ожидания в аудиторию вошёл наш метр — Анатолий(отчество, к сожалению, не помню) и сразу дал нам понять — первые уроков 5 мы будет работать с ручками и тетрадками, а с компьютером стоит повременить! КАК? Я же специально пришёл сюда, чтобы посидеть за этой чудной шайтан-машиной, а тут такой облом.

Если кто ещё не догадался, то моим первым языком был великий и ужасный ПАСКАЛЬ! DOS, синий экран и жёлто-белые символы, которые были на тот момент для меня китайской грамотой! Как из всего этого можно было сделать Герои 2? Где мне рисовать доспехи для персонажа? Как делать карту мира? Integer, char, boolean: много новой информации, которая никак не приближала меня к созданию компьютерных игр. Тогда я ещё не понимал, что все эти числа, переменные и константы — очень важная база для будущих проектов!

Если коротко — то все курсы по программированию сводились к одной схеме. Мы приходили, что-то записывали в тетрадки, получали задание, списывали всё под чистую у двух взрослых ребят и… и далее был самый сладкий момент — WarCraft 2 по сети! Ух, какие баталии у нас были! Мультиплеер на 6-ть человек — это было нечто, это было в разы лучше детских шалостей на денди вместе с соседским компьютером. Вообщем, практических знаний я не получил, зато вдоволь поиграл в варик! После этих событий я подумал, что программирование — это вовсе не моё; слишком сложно, слишком непонятно. Я решил завязать с идеей стать программистом…

Первые успехи

После девятого класса, мама решила отдать меня в лицей при ХАИ, который считался одним из лучших в Харькове. Институтские преподаватели, куча домашнего задания, физико-математическая направленность и… и программирование естественно!

Паскаль снова появился в моей жизни вместе с новым учителем по фамилии Соколова. И она была великолепна, ибо кодил у нас практически весь класс! Настолько хороших, добрых и умных преподавателей надо ещё поискать! Быть может, если бы не та база знаний которую я получил в лицее — не писал бы я сейчас эту историю.

Впервые, после идиотских детских курсов, я полюбил программировать и даже начал делать маленькие текстовые игры с вариантами ответов — это было восхитительно! Я сам, своими руками создавал некую историю, загадочные миры c различными сюжетными развилками! if — else… switch-case… чудеса!

Но, школьные годы закончились и надо было поступать в институт. Тестов на тот момент ещё не было, для поступления на бюджет нужно было быть либо крайне талантливым товарищем, либо иметь знакомых. Моя фатальная ошибка заключалась в том, что я повёлся на поводу у родственников и пошёл в строительную сферу, мол, это всегда прибыльно и выгодно. Честно говоря, в тот момент я особо и не задумывался куда идти учиться, кем я буду в будущем, чем я хочу заниматься? Эти вопросы меня не особо волновали. Моё внимание немножко сместилось в сторону Dota и Lineage 2…

Курсы по программированию 2.0

После окончания академии городского хозяйства по специальности, которая гордо звучала “Городское строительство и хозяйство”, начались не самые весёлые времена. Покраска школы танцев, заливка раствором полов в магазине, монтаж фундаментных плит, подвесные потолки. От строительной сферы меня просто выворачивало. Мало того, что работа была зачастую очень грязной, так ещё и контингент сотрудников был не самым воодушевляющим. Но, что делать… больше я ничего не умел — приходилось работать в таких условиях. Чуть позже меня немного повысили и я стал помощником прораба. Здесь то и появилось много свободного времени на раздумья — как быть дальше!

Пораскинув мозгами я решил, что стоит попробовать попасть на работу в IT! Особых сомнений по поводу выбора языка у меня не было! Порыскав по интернету я нашёл недорогие курсы Java, а Java — это не только ценный вэб, но и моя любимая ОС Андроид! Подождав недельку-другую пока соберётся группа, я гордо вышел из дома, чтобы немного изменить ход своего печального существования!

Почти все кто меня окружал рьяно отговаривали от мысли идти на курсы. Девушка была недовольна, что будем редко видеться, мама считала, что это пустая трата денег, ведь на такие специальности учатся по 5 лет! Но моё решение было окончательным и бесповоротным!

В этот раз аудитория оказалось совсем крохотной. На одной из стен висела захламлённая доска для рисования. Из маленькой форточки слышался громкий гул: это были тренировки девочек по шейпингу из соседнего здания. Нашим новым учителем оказался преподаватель из ХПИ, который активно подрабатывал интервьюером для больших харьковский компаний и пытался курировать процесс нашего обучения.

Весь курс сводился к тому, что мы разбирали слайды с определённой темой, переписывали весь код в эклипс и смотрели что получится. У меня была небольшая фора перед остальными — всё-таки паскаль оставил отпечаток знаний в моей подкорковой части мозга. Чтобы описать качество данных курсов, я приведу всего лишь два ярких примера из нашего обучающего процесса.

Ещё на первом занятии наш сэнсэй пообещал создать почту, куда мы будем скидывать домашние задания для проверки. Естественно, почта так и не была создана, а задания… кому они нужны, правда? За курсы ведь уже уплачено! Но, больше всего меня поверг в шок другой момент. После окончания одного из уроков, наша группа получила задание сделать некий простой аналог гороскопа: пол — знак зодиака — вывод в консоль какой-то надписи. Я же решил пойти дальше! Сделал простенький интерфейс на Swing, откопал иконки знаков зодиака и соорудил такой себе бомжегороскоп! По сути — это был мой первый опыт в создании интерфейса совместно с логикой! Вся группа на следующем уроке сидела и клацала мой проект, умиляясь тому, что я немного перевыполнил поставленную задачу. Думаю, сейчас и сэнсэй оценит мой творческий порыв. Но увидев что я сделал наш горе-учитель сказал лишь одну фразу: “ Вот людям время девать некуда”. Меня это даже немного задело!

Из всего вышеописанного можно было бы сделать вывод, что это провал! Но не для меня! Эти курсы дали мне какую-никакую базу и маленький запал для дальнейших свершений! А свершения, естественно, не заставили себя долго ждать…

Поиски первой работы

После окончания псевдо-курсов я и мой новоприобретённый друг Леонид начали искать свою первую работу в IT! Курсы же закончили — теперь возьмите нас, пожалуйста, на работу! Мы очень хорошие! Ничего не знаем… но хорошие)! Тут история умалчивает о трёх попытках Лёни попасть в NIX Solutions, и перешёптываний HR-ов “снова этот повар к нам пришёл”; наши походы на тесты в EPAM и Global Logic для прохождения стажировки. Хочу отметить, что в EPAM тестирование было заметно сложнее, но намного лучше организовано! Правда обе попытки не увенчались для нас успехом.

После непродолжительных раздумий было решено сначала хоть что-то написать, чтобы было с чем приходить к HR-у. Тут я сразу же вспомнил свои детские попытки творить простенькие текстовые игры и предложил Лёне совместно сделать что-то подобное, только теперь на джаве и с картинками! Сказано — сделано! Процесс пошёл, но очень вяло. Лёня очень слабо разбирался в программировании и почти весь код приходилось писать мне! После месяца этих бесполезных телодвижений мы отказались от этой идеи, хотя я даже соорудил некий дешёвый аналог боёвки из БК.
Лёня решил идти в вёрстку, а я — попробовать себя в андроид-разработке и не прогадал! Хотя кол-во мучений превышало все мыслимые нормы…

Андроид forever

Многие, изучая определённую технологию, начинают практиковаться на задачках, каких-то примерах. Я же решил сразу делать свой pet-проект! Без подготовки, без прочтения книг — просто пилить приложение! Не долго думая был создан Android Project с именем Английский everyday и понеслась.

Первые строки кода давались невероятно тяжело! Андроид манифест, разработка интерфейса в XML, обработка кликов — всё было просто ужасно! Весь интерфейс плыл как Одиссей по морям, приложение то работало, то не хотело запускаться выдавая какие-то ошибки и направляло к манифесту! Первый месяц был просто адом! Stack overflow стал для меня вторым домом! К зиме 2013 года я сделал первый билд своего приложения. Мотивации уже никакой не было! Кодить было очень тяжело, выглядел проект ужасно! Всё падало и тормозило!

Я уже перестал ежедневно заниматься кодингом, как вдруг в городе встретил своего старого знакомого Лёню! Мы разговорились и я показал ему своего первенца на телефоне! К моему удивлению Лёня пришёл в дикий восторг! “Мишаня, смотри, оно же работает”! “Ой, нажал на кнопочку и оно упало, но кнопочка то работает!”. Вся эта встреча вдохнула в меня какую-то свежую струю! Я пришёл домой и начал выискивать в гугле самые удачные дизайнерские решения в интерфейсе! Узнал про Behance и Dribbble. После нескольких месяцев работы моя апликуха стала выглядить очень сочно, правда у каждого экрана был свой абсолютно уникальный стиль! Получился эдакий разноцветный попугай — симпатичный, но полностью безвкусный!

25 долларов были переведены на счёт компании Google — аккаунт разработчика получен и Английский Everyday, моё первое серьёзное приложение, появился на Google Play и форуме 4PDA! Естественно, я абсолютно ничего не знал об оптимизации интерфейса под различные экраны, маркетинге, раскрутке, рекламных биржах и тд. Я просто доделал проект, вставил туда баннер от Admob и пустил в свободное плаванье.

Первые комментарии не заставили себя долго ждать и, как ни странно, людям моё приложение действительно понравилось! Я активно начал дополнять контент и править ошибки. Про подключение библиотек я тогда ничего не знал — всё писалось вручную и с нуля! Вместо того, чтобы использовать какой-нибудь BaaS, я заливал тексты и слова в блог на блогере, а затем выкачивал html страничку и парсил её! Да кол-во велосипедов в моём проекте превышало весь московский автопарк!

Нежданно — негаданно мой английский начал приносить деньги! Изначально всего пару долларов в месяц, но для меня это уже было нечто! Постепенно я стал замечать, что в день я получаю 400-1000 органических установок с маркета! Забив в поиск ключевое слово английский я обнаружил, что в выдаче по Украине я обогнал LinguaLeo! LinguaLeo КАРЛ! Выдача гугл поиска так же показала, что большое кол-во различных сайтов сами зарелизили моё приложение на свои сервера, даже рецензии какие-то были! Тут то и появились в Английском полноэкранные банеры, которые начали приносить ещё большие доходы! 150$ в месяц, затем 200$, затем и вовсе 350!!! На своём приложении я стал зарабатывать больше чем на официальной работе!

Мотивация подскочила до невиданных высот и я решил приступить ко второму приложению, а именно Everyday Weather! А затем и к третьему — Number Mix Saga! Естественно, частенько падающее и ни чем не выделяющееся погодное приложение получило свои 1000-2000 установок и было забыто. Только после этого я узнал, что погодные приложения — одни из самых низкоскачиваемых!

Number Mix Saga тоже не приобрела должного успеха! Выпускать простенькую логическую игру, в которой не было ничего уникального в эпоху битвы многомиллионных маркетинговых бюджетов — бессмысленная затея!

При разработке двух последних приложений я успел освоить различные альтернативные маркеты(Опера, SlideMe и др).

Двигаться дальше

В начале 2015 года гугл без шума и пыли забанил мой чудесный английский! Ведь контент для приложения брался абсолютно отовсюду! Картинки тырились со всего интернета, звуковые эффекты, иконки. Весь ресурсный набор Английского выглядел как дача Виктора Януковича в Межигорье: берём всё что плохо лежит и используем в своих целях! Тем временем я устроился в маленькую компанию как андроид-разработчик, что немного увеличило мой профессиональный потенциал.

Воевать с гуглом по поводу своей блокировки я не стал, ибо понимал, что затея абсолютно провальная! Было принято решение сделать что-то подобное, только больше, лучше, красивее и без багов! Сказано — сделано!

В апреле этого года я начал свой новый проект — Английский 4 You. Подключив весь свой предыдущий опыт и одного знакомого я с головой ушёл в разработку. Если раньше я абсолютно ничего не знал про мобильный маркетинг, раскрутку приложений и альтернативные магазины, то в этот раз я подготовился основательно. Был готов большой план по разработке с макетами и спринтами, расписана вся маркетинговая политика как до релиза приложения, так и после. Разработаны пресс-релизы, собран какой-никакой бюджет!

Первый месяц разработки был проведен на Pinterest, Behance и Dribbble. Понимая, что дизайнер из меня не самый лучший, я решил выбрать стилистику будущего приложения из уже чего-то готового и симпатичного, а только потом приступать к разработке. Ещё недельку я потратил на аналитику конкурентов: Duolingo, LinguaLeo, Memrise, Busuu, 6000 слов. Почти все они не давали какой-то комплексной базы (не считая LinguaLeo). В основном все конкуренты специализировались на увеличении базы слов, при этом много контента было закрыто, с предложением купить его в дальнейшем. LinguaLeo безусловный лидер в этой области, огромная база всего и вся: грамматика, слова, правописание, тексты, диалоги, статистика! И если на сайте всё это организовано удачно, то в самом приложении — наоборот, всё слишком скомкано, плюс привязанность к местной валюте — фрикаделькам.

Исходя из опыта схожих приложений, я окончательно решил, что абсолютно весь контент будет полностью бесплатным и доступным, интерфейс простым и понятным, а прибыль буду получать только с рекламы! Стоял выбор из двух рекламных агрегаторов: Appodeal и AdtoApp. После нескольких тестах на пробном приложении был выбран Appodeal. AdtoApp то работал, то почему-то мне на почту приходило письмо, о том что я что-то не так настроил и работать переставал, при этом некоторые мобильные антивирусы активно ругались при установке тестовой приложки. Окончательно про то насколько хорош Appodeal я сказать не могу, но пока меня всё устраивает.

Август. На улице +38. Все окна открыты на распашку. Жара невыносимая. Ползунок загрузки в Play Market потихоньку доходит до 100%. Английский 4 You отправляется во всемирные сети для покорения новых высот, а я отправляюсь в альтернативные магазины приложений, в сервисы покупки мотивированого трафика, на форум 4PDA. Хоть приложение и закончено — проблем меньше не стало: правка ошибок, доработка функционала, маркетинг.

Тут моя маленькая история постепенно подходит к концу. Планы на будущее — наполеоновские. Какой итого всего вышесказанного? Он прост: стремитесь делать то, что приносит Вам удовольсвтие, не обязательно уходить с текущей работы, просто саморазвивайтесь и стремитесь сделать свой продукт максимально интересным и удобным. Да, быть может на Вас свалится 100500 проблем и неудач, но это не повод останавливаться, — это мотивация для дальнейшего движения вперёд!

P.S. “А чего это я в начале писал про игры — да про игры, а потом начал разрабатывать приложения” — подумает читатель. А потому что сделать хорошую и красивую игру — большой труд, приличные финансовые вливания и какой-никакой опыт разработки. У меня его не было и я решил отталкиваться от того, что мне по силам. А игры не забыты, игры — это следующая стадия моего развития!

habr.com

За и против мобильной разработки под Android

Недостатки мобильной разработки для Android

  1. Много устройств. Выше мы сказали, что доступность — это плюс. Но обратная сторона медали — необходимость поддерживать приложение для каждой модели смартфонов разных производителей с этой системой внутри. На не очень качественных китайских телефонах приложение может «крашиться» не по вине разработчика, а из-за аппаратных проблем.
  2. Огромное число экранов. Пункт плавно вытекает из предыдущего — большое разнообразие экранов создает дополнительные сложности при разработке. Чтобы решить проблему разного соотношения сторон, нельзя просто взять и растянуть интерфейс приложения. Приходится поддерживать несколько типов экранов и фактически разрабатывать копии.
  3. Несколько версий операционной системы. iOS обновляется ежегодно, и старые версии не получают поддержки — актуальны только последняя и предпоследняя. С Android дела обстоят иначе. Google не может обновлять систему на всех устройствах — это делают вендоры. В итоге актуальны оказываются сразу несколько версий Android. Не все производители быстро обновляют свои устройства, а кто-то не делает этого вообще.
Распределение версий на устройствах. Источник

Все это затрудняет работу специалистам. Если вы договариваетесь с заказчиками приложения, что будете поддерживать только 90% версий, — это уже отлично. Но некоторые требуют поддержку и всех 100%. И это боль разработчика: с каждым обновлением появляются новые API, которые он хочет использовать, но их нет на старых версиях ОС. Эту проблему частично решает библиотека совместимости.

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

Одна из главных проблем — блокировки приложений, а затем и аккаунтов без объяснения причин. На все жалобы в техподдержку разработчики получают стандартный ответ от бота. Причем это касается не только мелких и неизвестных приложений, но и тех, у которых миллионы загрузок. Известны примеры, когда закрывались целые компании из-за автоматического бана приложения, вокруг которого строился весь бизнес.

Сообщение, которое мобильный разработчик не желал бы видеть и в страшном сне

skillbox.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *