Вакансия: разработчик мобильных приложений для ОС 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


Вконтакте

Недавно в продаже появилось забавное устройство - электронный дверной глазок, устанавливающийся на место штатного глазка в любую дверь. Устройство так и называется «ГлазОК». Стоит около 3500 рублей.


Глазок состоит из двух частей - внешней и внутренней.

На внешней части камера, кнопка звонка, светодиод инфракрасной подсветки и датчик освещённости.

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

Шлейф подключается к плате внутренней части.

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

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

При нажатии кнопки звонка или повторном нажатии кнопки на внутреннем блоке изображение записывается на карту памяти MicroSD. При дополнительных нажатиях кнопки на внутреннем блоке записываются дополнительные кадры. Размер картинки 320x240 точек, формат JPG. ГлазОК может записывать не только фото, но и видео (3, 5 или 10 секунд), но я в этом не вижу особого смысла.

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

Угол обзора камеры существенно уже, чем у обычного глазка. Вот так выглядело изображение в обычном глазке.

А это кадр с карты памяти электронного глазка.

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

Устройство питается от трёх «пальчиковых» батареек АА. Я измерил потребляемый ток.
При показе изображения с камеры ГлазОК потребляет 120 ма, при просмотре картинок и настройках - 70 ма, в дежурном режиме - 1.4-1.5 ма. Таким образом хороших алкалиновых батареек хватит на 2.5-3 месяца. При желании глазку можно смастерить внешнее питание из зарядки от любого мобильного телефона.

Для просмотра картинок и управления внизу корпуса есть три кнопки - влево, вправо и ОК. В качестве кнопки «назад» используется большая центральная кнопка.

Я снял небольшое видео, демонстрирующее работу глазка:

В заключение плюсы и минусы устройства «ГлазОК»:

Плюсы:
Устанавливается на место обычного глазка за пять минут
Не требует внешнего питания
Записывает изображения на карту MicroSD
Функция звонка
Инфракрасная подсветка в темноте

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