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

«Что требуется от Android Dev?» – вопрос из категории FAQ. Я работодатель и в этой статье расскажу, каким должен быть Junior Android разработчик.

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

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

На первый взгляд алгоритм кажется сложным:

Но я и не жду, что Junior Android разработчик знает все наизусть. Важно лишь, чтобы вы понимали, за что отвечают методы onCreate, onPause, onResume и onDestroy, что их вызывает и каков результат работы. В противном случае рекомендую ознакомиться с официальной документацией. Если же вы приведете пример того, как жизненный цикл может привести к утечке памяти, я буду действительно впечатлен.

Фундамент любого приложения. Существует 4 основных компонента:

  • BroadcastReceiver;
  • Service;
  • Activity;
  • Content Provider.

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

Не забывайте и об : ваша работа должна выделяться.

Параметры сохранения

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

Сети

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

Базовые знания о REST обязательны, и если вы не умеете делать простые GET и POST запросы из Android-приложения, следует вернуться к базису. Почти любое приложение, которое приходит мне на ум, способно делать REST-запросы, и это является главным в выборе специалиста. Volley для Android станет отличным началом для тех, кто хочет изучить основы, вот только вы очень быстро поймете, что данный способ взаимодействия с сетью уже устарел.

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

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

Android разработчик vs Android Studio

Данная IDE преодолела большой путь, учитывая, что первый запуск был осуществлен несколько лет назад, в те времена, когда все активно юзали Eclipse. Даже в Junior-разработчике я бы хотел видеть доказательства того, что он знаком со средой программирования Android Studio. Исключительно ручной ввод данных – признак скудного опыта. К тому же, это занимает уйму времени, а потому неэффективно. Мне нравится, когда люди используют горячие клавиши для быстрого ввода. В перечне моих тем для собеседования есть и вопрос о том, какие комбинации клавиш наиболее часто использует кандидат.

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

Ничего страшного, если вы все еще используете IntelliJ IDEA, но если вы до сих пор работаете с Eclipse… Скажем, мне было бы любопытно узнать, почему вы предпочитаете именно эту среду разработки.

Git

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

Разумеется, существуют и другие системы контроля версий, и знание принципов их работы не менее значительно. Однако наиболее широкое распространение получила именно система Git, поэтому понимание данной VCS приоритетно.

Паттерны

Шаблоны проектирования не так важны, и, уверен, многие их используют, даже не догадываясь, что это и есть те самые паттерны. Но если вы знаете Builders, Singletons и Factory Methods, а также хорошо осведомлены, где их можно использовать (и даже знаете, где найти пример в Android SDK) – это огромный плюс для вашего резюме.

Даже если вы только слышали о «Банде четырех» (GoF) и «Effective Java» Джошуа Блоха, это также дополнительные баллы для вас. Кстати, говоря о баллах:

Бонусы

  • модульное тестирование и понимание, почему тесты на Android могут быть настолько сложными;
  • наличие хотя бы одной из классических книг по программированию;
  • вы «играли» с другими языками, в том числе с Kotlin;
  • в Play Store загружено хотя бы одно ваше приложение.


Прочее

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

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

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

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

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

Большинство разработчиков Android принадлежит к так называемому поколению Y (средний возраст соискателя на эту позицию «Разработчик Android» - 27 лет). Не секрет, что у этого поколения свои взгляды на идеальную работу, а значит, и методы мотивации этих людей должны быть особыми. К тому же не стоит забывать, что на одну вакансию разработчика Android приходится меньше одного резюме, так что работодателям поневоле приходится подстраиваться под пожелания соискателей. Что по-настоящему интересует в работе разработчиков поколения Y, рассказывает рекрутинговый портал .


К основным отличительным чертам поколения Y с точки зрения их отношения к работе обычно относят:

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

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

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

Должностные обязанности разработчика Android

Разработка приложений под Android,
- тестирование приложений,
- поддержка приложений.

Зарплатные предложения и требования работодателей

Среднее зарплатное предложение для разработчика Android в Москве составляет 100 000 руб., в Санкт-Петербурге - 80 000 руб., в Волгограде - 45 000 руб., в Воронеже - 50 000 руб., в Екатеринбурге - 67 000 руб., в Казани - 50 000 руб., в Красноярске - 60 000 руб., в Нижнем Новгороде - 47 000 руб., в Новосибирске - 55 000 руб., в Омске - 57 000 руб., в Перми - 50 000 руб., в Ростове-на-Дону - 50 000 руб., в Самаре 50 000 руб., в Уфе - 50 000 руб., в Челябинске - 57 000 руб.

Пробовать силы в разработке приложений под Android могут соискатели с опытом программирования на Java не менее 1 года. В качестве начинающего разработчика Android работодатели хотели бы видеть специалиста со знанием принципов объектно-ориентированного программирования, СУБД, HTML, HTTP, XML, ранее работавшего с web-технологиями. Востребованы навыки практического применения шаблонов проектирования, умение оптимизировать и тестировать код. Предпочтительно высшее образование (профильное либо техническое). Зарплатные предложения для начинающих разработчиков Android в столице составляют от 50 000 до 70 000 руб., в Санкт-Петербурге – от 40 000 до 55 000 руб., в Екатеринбурге – от 35 000 до 45 000 руб., в Красноярске – от 30 000 до 40 000 руб.


Город Уровень дохода, руб.
(без опыта работы на данной позиции)
Москва 50 000 - 70 000
- Высшее / неполное высшее образование (техническое / IT)
- Знание HTML, HTTP, XML
- Знание принципов объектно-ориентированного программирования
- Знание СУБД
- Понимание взаимодействия приложения по модели клиент-сервер
- Навыки практического применения шаблонов проектирования
- Опыт работы с web-технологиями
- Умение оптимизировать и тестировать код
- Опыт программирования на Java от 1 года
Санкт-Петербург 40 000 - 55 000
Волгоград 22 000 - 30 000
Воронеж 25 000 - 35 000
Екатеринбург 35 000 - 45 000
Казань 25 000 - 35 000
Красноярск 30 000 - 40 000
Нижний Новгород 24 000 - 32 000
Новосибирск 28 000 - 40 000
Пермь 30 000 - 40 000
Омск 25 000 - 35 000
Ростов-на-Дону 25 000 - 35 000
Самара 25 000 - 35 000
Уфа 25 000 - 35 000
Челябинск 28 000 - 40 000

Вакансии для разработчиков Android со стажем работы от 1 года требуют от кандидатов опыта работы с системами контроля версий, знания Android SDK, нескольких языков программирования и систем поддержки командной разработки. Оклад программистов, соответствующих указанным требованиям, в Москве возрастает до 80 000 руб., в северной столице – до 62 000 руб., в Екатеринбурге – до 55 000 руб., в Красноярске – до 48 000 руб.

Город Уровень дохода, руб.
(с опытом работы от 1 года)
Требования и пожелания к профессиональным навыкам
Москва 70 000 - 80 000
- Знание Android SDK
- Знание одного или нескольких дополнительных языков программирования: C / C++ / Python / Perl / Ruby
- Знание одной из систем поддержки командной разработки
- Опыт работы с системами контроля версий
Санкт-Петербург 55 000 - 62 000
Волгоград 30 000 - 35 000
Воронеж 35 000 - 40 000
Екатеринбург 45 000 - 55 000
Казань 35 000 - 40 000
Красноярск 40 000 - 48 000
Нижний Новгород 32 000 - 38 000
Новосибирск 40 000 - 45 000
Пермь 40 000 - 46 000
Омск 35 000 - 40 000
Ростов-на-Дону 35 000 - 40 000
Самара 35 000 - 40 000 Уфа 35 000 - 40 000 Челябинск 40 000 - 45 000

В следующем зарплатном диапазоне востребован опыт разработки многопоточных и мобильных приложений. Стаж разработки под Android должен составлять более 2 лет. Дополнительным плюсом при трудоустройстве станет знание английского языка. Такие специалисты зарабатывают в Москве до 120 000 руб., в городе на Неве – до 95 000 руб., в Екатеринбурге – до 80 000 руб., в Красноярске – до 72 000 руб.

Город Уровень дохода, руб.
(с опытом работы от 2 лет)
Требования и пожелания к профессиональным навыкам
Москва 80 000 - 120 000
- Высшее образование (техническое / IT)
- Опыт разработки многопоточных приложений
- Опыт разработки мобильных приложений

Возможное пожелание: знание английского языка

Санкт-Петербург 62 000 - 95 000
Волгоград 35 000 - 53 000
Воронеж 40 000 - 60 000
Екатеринбург 55 000 - 80 000
Казань 40 000 - 60 000
Красноярск 48 000 - 72 000
Нижний Новгород 38 000 - 55 000
Новосибирск 45 000 - 67 000
Пермь 46 000 - 68 000
Омск 40 000 - 60 000
Ростов-на-Дону 40 000 - 60 000
Самара 40 000 - 60 000
Уфа 40 000 - 60 000
Челябинск 45 000 - 67 000

Наиболее высоким доходом вакансии хотят привлечь разработчиков сложных пользовательских интерфейсов, программирующих под Android более 3 лет. В качестве претендентов работодатели готовы рассматривать участников крупных проектов, имеющих портфолио собственных Android-приложений, опубликованных в Google Play. Максимальная зарплата разработчиков Android в Москве составляет 160 000 руб., в Санкт-Петербурге – 130 000 руб., в Екатеринбурге – 110 000 руб., в Красноярске – 100 000 руб.

Город Уровень дохода, руб.
(с опытом работы от 3 лет)
Требования и пожелания к профессиональным навыкам
Москва 120 000 - 160 000
- Знание английского языка
- Опыт разработки сложных пользовательских интерфейсов
- Опыт участия в разработке крупных проектов
- Портфолио собственных Android-приложений, опубликованных в Google Play
Санкт-Петербург 95 000 - 130 000
Волгоград 53 000 - 70 000
Воронеж 60 000 - 80 000
Екатеринбург 80 000 - 110 000
Казань 60 000 - 80 000
Красноярск 72 000 - 100 000
Нижний Новгород 55 000 - 75 000
Новосибирск 67 000 - 90 000
Пермь 68 000 - 90 000
Омск 60 000 - 80 000
Ростов-на-Дону 60 000 - 80 000
Самара 60 000 - 80 000
Уфа 60 000 - 80 000
Челябинск 67 000 - 90 000

Портрет соискателя

Типичным представителем профессии разработчика Android является молодой мужчина с высшим образованием. Женщин в данном, относительно молодом сегменте рынка труда, немного – всего 4%. Большинство соискателей должности разработчика Android – молодежь в возрасте до 30 лет (74%). 77% специалистов имеют высшее образование. 14% разработчиков Android свободно владеют английским языком.

Разработчик Android

Большинство разработчиков Android принадлежит к так называемому поколению Y (средний возраст соискателя на эту позицию «Разработчик Android» - 27 лет). Не секрет, что у этого поколения свои взгляды на идеальную работу, а значит, и методы мотивации этих людей должны быть особыми. К тому же не стоит забывать, что на одну вакансию разработчика Android приходится меньше одного резюме, так что работодателям поневоле приходится подстраиваться под пожелания соискателей. Что по-настоящему интересует в работе разработчиков поколения Y, рассказывает рекрутинговый портал .

Вакансия: разработчик мобильных приложений для ОС Android

Планшеты, смартфоны – многие профессионалы и просто пользователи не могут уже представить свою жизнь без них. Удобство работы с этими гаджетами обеспечивают разработчики, которые создают всевозможные приложения под мобильные ОС. Какие же требования предъявляют компании к тем, кто создает приложения для Android?

  1. Какими знаниями и навыками должен обладать разработчик мобильных приложений для ОС Android?
  2. Каков инструментарий разработчика мобильных приложений для ОС Android?
  3. Каковы требования компании к уровню образования потенциальных сотрудников?
  4. Какие требования предъявляются к опыту работы?
  5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?

Дмитрий Калита, ведущий Android-разработчик в Parallels

1. Во-первых, всеми теми, которыми должен вообще обладать любой разработчик программного обеспечения: абстрактное мышление, знание и умение применять паттерны проектирования, способность писать простой «читабельный» код, умение пользоваться основными инструментами разработчика (трекер задач, система контроля версий, система code review и т.д.).

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

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

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

Существует также много современных инструментов более общего назначения, которые в том числе могут быть использованы и в Android-разработке. На нашем проекте из таких инструментов мы используем, например, Kotlin и Dagger 2.

Мы также используем при разработке другое решение компании – Parallels Desktop для Mac. Поскольку Parallels Access, над которым мы работаем, – это приложение для удаленного доступа с мобильного устройства на десктоп, то во время отладки Android-клиента нам нужен десктоп, чтобы к нему подключаться. Так вот, например, при работе из дома не очень удобно подключаться к тому же десктопу, на котором собственно пишешь код. Намного удобнее поднять виртуальную машину с помощью Parallels Desktop и подключаться к ней.

Другой пример: при разработке Android-клиента Parallels Access нам нужно тестировать его совместно с серверной частью, установленной на разные версии операционных систем Mac OS и Windows. В этом нам очень помогают виртуальные машины, созданные с помощью Parallels Desktop.

3, 4. Конечно же, это сильно зависит от вакансии (например, у нас сейчас есть вакансии Android-разработчиков как в московский, так и в таллинский офисы Parallels, и требования там слегка разные).

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

Еще в резюме Android-разработчиков мы обращаем внимание на наличие ссылок на проекты в Google Play, обязательно смотрим эти проекты, смотрим количество установок и отзывы. Весомым плюсом на этапе рассмотрения резюме будет опыт работы в известной девелоперской компании, с хорошей культурой программирования, такой как, например, Parallels!

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

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

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

Григорий Харченко, руководитель отдела мобильной разработки Kokoc Mobile (Kokoc Group)

1. Основное требование к разработчику – это доскональное знание базового языка программирования Java, поскольку именно на нем создаются все мобильные приложения для ОС Android.

2. Кандидат должен знать средства разработки Android SDK, уметь использовать серверный протокол HTTP, такие библиотеки, как Retrofit и Picasso, создавать разметку экранов Layouts, базы данных SQL, SQLite, текстовый формат обмена данными JSON, разбираться в компонентах интерфейса пользователя (UI) и методе взаимодействия обмена данными Rest API.

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

4. Опыт работы в области программировании должен составлять не менее трех лет, при этом не менее года кандидат должен посвятить мобильной разработке под ОС Android.

5. Разработчик мобильных приложений должен знать API социальных сетей, таких как Facebook, Twitter, Instagram. Уметь работать с API геосервисов, например, Google Maps, Яндекс.Карты. Это важно, поскольку функционал перечисленных API используется для создания практически любого приложения, как сервисного, так и e-commerce. Еще одно требование – хорошее знание английского языка, поскольку разработчику предстоит читать много технической документации на английском.

Кирилл Харьков, руководитель команды Android-разработки, Почта Mail.Ru

1. Разработчику, который хочет попасть в нашу команду, прежде всего понадобится уверенное знание Java – это основной язык, на котором он будет работать. Мы ждем доскональных знаний – вплоть до моделей памяти, синтаксических нюансов и четкого понимания того, что происходит «под капотом». Когда обычный пользователь касается дисплея смартфона и видит, как там все движется, раскрывается и выезжает, для него все это настоящая магия. Разработчик же обязан представлять, как это работает и почему именно так, а не иначе. Естественно, нужно знать саму платформу Android. Требуются базовые знания фреймворка и его компонентов. Обязательно знать принципы ООП и шаблоны проектирования.

2. Нужно знать и уметь применять все техники тестирования (unit-тестирование и так далее). IDE у нас обычная – AndroidStudio, которая с недавних пор попала под крыло Google. В настоящий момент этот редактор довольно стандартизирован, и из более-менее редко используемых плагинов можно назвать лишь Memory Analyzer.

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

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

5. Потенциальному кандидату на место в нашей компании нужно осознавать масштабность задач, которые ему предстоит решать в будущем. Android-приложениями Mail.Ru Group пользуются миллионы – это, несомненно, повышает уровень ответственности. Человек должен иметь опыт оценки задач по сложности и времени выполнения, хорошо расставлять приоритеты, находить общий язык с сотрудниками из самых разных команд. Ведь у нас очень большая компания, и над одним продуктом могут работать люди из самых разных отделов и подразделений одновременно.

Дмитрий Воронкевич, Android Platform Team Lead, Badoo

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

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

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

Важно хорошо и глубоко понимать, как работает Java. Многопоточность – это еще одна важная тема. Ее нужно хорошо понимать и уметь применять на практике. Как показывает мой опыт, это одно из самых слабых мест у мобильных разработчиков. Затем XML, нужно уметь его писать, читать и парсить с помощью библиотек. JSON и библиотеки по работе с ним. Нужно понимать data binding. На мобильных телефонах у нас не Oracle, но все же хорошо разбираться в том, как работают базы данных, какие запросы будут ресурсоемкими и почему. Плюс разработчик должен понимать, как работать с сетью, причем на разных уровнях: чем шире знания, тем лучше.

2. В Badoo мы пользуемся множеством общепринятых инструментов, таких как: Android Studio, Gradle, Git, shell, Jira, Teamcity, JaCoCo, HockeyApp и т.д.

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

Вот еще пример: мы очень серьезно боролись с утечками памяти, в результате создали и выложили в Open Source целый набор утилит для этого: https://github.com/badoo/hprof-tools , https://github.com/badoo/android-weak-handler .

3. У нас нет жестких требований к образованию кандидата. Мы смотрим на реальные знания и практический опыт.

4. Мы предпочитаем кандидатов с реальным опытом, у которых в портфолио есть хорошие качественные приложения. С другой стороны, талантливый программист может пройти у нас собеседование, не имея внушительного опыта. Как раз сейчас у нас открыта такая вакансия: http://bit.ly/AndroidBadoo .

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

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

Подготовил Игорь Штомпель

Разработчик Android

З/п
диапазон
Город ИТ
Телекоммуникации
Промышленность
Производство
Строительство
Управление недвижимостью
Услуги B2B Продажи B2B Продажи В2С
I Москва 50 000 – 70 000 45 000 – 65 000 45 000 – 60 000 50 000 – 70 000 45 000 – 60 000 50 000 – 70 000
Санкт-Петербург 40 000 – 55 000 40 000 – 53 000 40 000 – 50 000 40 000 – 55 000 40 000 – 50 000 40 000 – 55 000
Екатеринбург 34 000 – 48 000 31 000 – 44 000 30 000 – 40 000 34 000 – 48 000 30 000 – 40 000 34 000 – 48 000
Новосибирск 33 000 – 46 000 29 000 – 42 000 29 000 – 38 000 33 000 – 46 000 29 000 – 38 000 33 000 – 46 000
II Москва 70 000 – 87 000 65 000 – 78 000 60 000 – 75 000 70 000 – 90 000 60 000 – 78 000 70 000 – 80 000
Санкт-Петербург 55 000 – 70 000 53 000 – 62 000 50 000 – 60 000 55 000 – 72 000 50 000 – 62 000 55 000 – 65 000
Екатеринбург 48 000 – 59 000 44 000 – 53 000 40 000 – 51 000 48 000 – 61 000 40 000 – 53 000 48 000 – 55 000
Новосибирск 44 000 – 58 000 42 000 – 50 000 38 000 – 50 000 46 000 – 60 000 38 000 – 50 000 45 000 – 55 000
III Москва 87 000 – 125 000 78 000 – 110 000 75 000 – 110 000 90 000 – 120 000 78 000 – 110 000 80 000 – 120 000
Санкт-Петербург 70 000 – 100 000 62 000 – 90 000 60 000 – 90 000 72 000 – 100 000 62 000 – 90 000 65 000 – 93 000
Екатеринбург 59 000 – 85 000 53 000 – 75 000 51 000 – 75 000 61 000 – 80 000 53 000 – 75 000 55 000 – 80 000
Новосибирск 58000 – 81000 50000 – 72000 50000 – 72000 60000 – 78000 50000 – 72000 55000 – 78000
IV Москва 125 000 – 170 000 110 000 – 150 000 110 000 – 140 000 120 000 – 150 000 110 000 – 150 000 120 000 – 150 000
Санкт-Петербург 100 000 – 135 000 90 000 – 120 000 90 000 – 110 000 100 000 – 120 000 90 000 – 120 000 93 000 – 120 000
Екатеринбург 85 000 – 120 000 75 000 – 100 000 75 000 – 95 000 80 000 – 100 000 75 000 – 100 000 80 000 – 100 000
Новосибирск 81 000 – 120 000 72 000 – 100 000 72 000 – 92 000 78 000 – 100 000 72 000 – 100 000 78 000 – 100 000
Среднее Москва 110 000 95 000 95 000 108 000 97 000 100 000
Санкт-Петербург 89 000 75 000 75 000 89 000 78 000 80 000
Екатеринбург 75 000 65 000 65 000 73 000 66 000 68 000
Новосибирск 72 000 62 000 62 000 70 000 63 000 65 000

Типичный функционал:

  • разработка мобильных приложений под Android;
  • поддержка мобильных приложений;
  • участие в отладке и тестировании приложений;
  • размещение приложений в GooglePlay.

Портрет соискателя:

  • 28 – средний возраст
  • 97 – мужчины
  • 81 – высшее образование
  • 2,2 года – средний срок работы на последнем месте
  • 36 – готовы к переезду
  • 41 – на момент размещения резюме не имели работы
Зарплатный диапазон Требования и пожелания к профессиональным навыкам
Диапазон I
  • Неполное высшее образование (техническое /ИТ)
  • Знание HTTP, XML
  • Знание принципов объектно-ориентированного программирования
  • Знание СУБД
  • Знание принципов клиент-серверной модели взаимодействия приложений
  • Навыки практического применения шаблонов проектирования
  • Знание Android SDK
  • Умение оптимизировать и тестировать код
  • Опыт работы с веб-технологиями
  • Опыт программирования на Java – от 1 года
Диапазон II
  • Знание английского языка на уровне чтения технической документации
  • Знание паттернов проектирования под Android
  • Знание одной из систем поддержки командной разработки
  • Опыт работы с системами контроля версий
  • Опыт разработки мобильных приложений под Android
Диапазон III
  • Высшее образование (техническое / IT)
  • Знание Android Guidelines
  • Знание правил и требований к релизам в GooglePlay
  • Портфолио завершенных опубликованных в GooglePlay приложений
  • Опыт работы в команде разработчиков
  • Опыт разработки многопоточных приложений
  • Опыт разработки мобильных приложений под Android– от 2 лет
  • Возможное пожелание: знание одного или нескольких дополнительных языков программирования: C/C++/ Python /Perl/Ruby
Диапазон IV
  • Опыт работы в start-up проектах
  • Опыт разработки сложных пользовательских интерфейсов
  • Опыт участия в разработке крупных проектов
  • Опыт разработки мобильных приложений под Android – от 3 лет

Подготовила Валерия Чернецова, руководитель отдела аналитики SuperJob


Вконтакте

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

Начало работы

Новичкам в программировании поможет наша .

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

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

Вы всегда можете найти у нас на сайте.

FAQ

Я хочу начать разрабатывать под Android. С чего мне начать?

Первый и важнейший шаг в разработке под Android – это изучение Java и XML. Как только вы более менее познакомитесь и с тем, и с другим, изучите официальную Документацию по Android и пройдите несколько уроков, пока не почувствуете себя достаточно уверенным для создания собственных проектов. Удачи!

Нужно ли мне Android-устройство для разработки?

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

Какую IDE мне лучше использовать?

  • Android Studio - официально поддерживаемая IDE для разработки под Android. Именно она используется в современных руководствах и видео, в том числе и от Google.
  • Eclipse была основной IDE для разработки под Android на протяжении многих лет, поэтому большинство устаревших уроков, ресурсов, видео и скриншотов сделаны на ней.
  • IntelliJ IDEA был альтернативой Eclipse, но в настоящее время разумнее начать с Android Studio. Android Studio – это ответвление IntelliJ IDEA, так что вы получите все её преимущества плюс бонусы под Android.

Может, мне стоит забыть про Java и начать учить Kotlin?

Google теперь официально поддерживает Kotlin как язык разработки под Android, но это не значит, что про поддержку Java можно забыть. В ближайшем обозримом будущем документация, инструменты, новые фичи платформы будут поддерживать как Kotlin, так и Java. Хотя Kotlin - более молодой язык с некоторыми приятными особенностями, вы всё ещё можете создавать отличные приложения на Java. Выбор зависит только от вас, но если вам не принципиально или вы новичок, то, возможно, лучше сделать выбор в пользу Kotlin.

Ресурсы

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

Официальные ресурсы Android

Дизайн

  • Красивости для Android – вдохновение для создания графических интерфейсов под Android.

Рассылки

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

Коллекции библиотек

Инструменты

  • Genymotion – крайне полезный и функциональный эмулятор.
  • Android Asset Studio – отличная коллекция инструментов для создания/редактирования иконок, изображений и т.д.
  • Codota Plug-in для Android Studio – замечательные примеры кода прямо в Android Studio.

Примеры open source приложений

Идеи для приложений

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

Каков мой бюджет?

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

Какая у меня маркетинговая стратегия?

Вы собираетесь использовать обычное сарафанное радио или готовы платить за известность?

Какой список задач у данного проекта?

А также, какие есть ограничения? Сколько мне нужно разработчиков?

Откуда будут приходить/где будут храниться данные?

А также, как они будут использоваться? Разработана ли у меня соответствующая политика приватности?

Есть ли цель заработать денег?

Если да, как вы собрались её достигать? Через рекламу, IAP , подписки, платные приложения? Всё вышеперечисленное?

Как вы будете платить вашим разработчикам?

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

Какой будет способ тестирования?

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

Как скоро вы хотите опубликовать приложение в магазине?

Это однозначно повлияет на конечный доход.

Будете ли вы требовать или предлагать регистрацию/интеграцию с социальными сетями?

Продумайте реализацию этой функциональности.

Какова ваша целевая аудитория?

Это нишевое приложение или оно может быть распространено повсюду?

Реализована ли уже моя идея?

Если да, как я могу улучшить её или что в ней отсутствует?

Что делать с идеями для приложений, если вы не разработчик?

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

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

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

Поймите, что разработка требует значительных усилий. Представьте, что разработчик работает полный рабочий день (8 часов) на протяжении 2 месяцев, чтобы создать ваше приложение. И вы также работаете полный рабочий день. Что вы делаете в это время? Если ваша работа, по вашим представлениям, заканчивается раньше, то нужно пересмотреть идею. В этом сценарии разработчик выполняет большую часть работы, и вы, честно говоря, бесполезны. То, что вы можете дать после того, как приложение закончено, не имеет особого значения и не будет мотивировать разработчика заканчивать продукт.

Пересмотр вашей идеи

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

  • Распределяйте работу настолько справедливо, насколько это возможно.
  • Фокусируйтесь прежде всего на ваших навыках.
  • Ваша загрузка должна примерно равняться 2 месяцам полноценной работы. Для простых приложений загрузка, конечно, может быть меньше. Вы можете попросить сообщество (например,

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

Разработчик под Android

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

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

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

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

Языки программирования, которые применимы для разработки приложений и библиотек для мобильной платформы, это Visual C#, Visua C++ и конечно же JAVA. Предпочтение отдают именно JAVA, так как используя этот язык можно легко разрабатывать всевозможный софт, а кроссплатформенность даст еще больше преимуществ на этапе разработки и публикации проекта. Что касается Visual С языков, то для построения проектов на их основе нужно дополнительное программное обеспечение(набор библиотек), которые переведут код в нужные инструкции для мобильной операционной системы.

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

  • Среда разработки;
  • Эмулятор Андроид;
  • Сборщик кода в конечный установщик с расширением apk.

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

Этап разработки приложения и выбор инструментов

Для качественного написания приложений профессионалы в области программирования используют самые передовые технологии, а также хорошо зарекомендованные инструменты, используя которые можно добиться отличного результата. Но не стоит гоняться за самым новым софтом, так как в большинстве своих случаев нужен немного устаревший набор средств среды разработки, так как именно по ним есть учебный материал, который Вам будет крайне необходим. Например, запрос: скачать «Разработка приложений для android» выдаст ссылку на книгу Хашими С., в которой раскрываются все возможности и тонкости программирования, которые Вам предстоит встретить. Знакомиться с большим количеством литературы всегда полезно, так как Вы сможете узнать о разных подходах и путях программирования, выбрав для себя самый оптимальный.

Первым делом нужно завестись инструментом, которым Вы будете разрабатывать приложение. Это не что иное, как среда разработки приложений для android. Она должна отвечать достаточными требованиями функциональности и простоты именно для Вас, так как именно Вам предстоит заниматься написанием кода и проектированием конечного приложения. Чаще всего начинающие программисты выбирают один из двух путей: Visual Studio от компании Microsoft или Eclipse(Netbeans).

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

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

Разработка приложений

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

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

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

Оправданность разработки и стоимости

Иметь собственное фирменное приложение для любой компании престижно. Поэтому разработка мобильных приложений android будет актуальной, пока пользователи и потенциальные клиенты компании будут пользоваться мобильной операционной системой компании Google, а с учетом того, что доля данной ОС около половины от общего рынка, то не стоит труда сделать вывод, что актуальность данной темы еще будет велика на протяжении многих лет.

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

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

Путь разработчика

Любой начинающий разработчик, который только освоил технологию и смог запустить сове первое приложение «Hello Android!», становиться junior developer. То есть человек, который имеет знания, но у него нет практического опыта непосредственной разработки серьезных приложений. Повысить свой уровень можно только практикой. Для этого достаточно устроиться в компанию, которая заинтересована в «доработке» новичков до нужного уровня.

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

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

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

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

Вывод

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

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

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

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





Top