Help — Выбор между Java Developer или Android Developer


Содержание

Отличие Java от Java Andro > Задать вопрос

Доброго времени суток. Изучаю самостоятельно программирование на Android, очень нравится, получается. Хочу записаться на курсы. Есть курсы просто Java (выбор больше), а есть Java программирование на Android (выбор меньше). Хотелось бы узнать: сильно ли отличаются эти два направления языка? Если выберу просто Java поможет ли мне это в разработке приложений Android (в описании есть пункт «Создание программ с графическим интерфейсом», но не уверен, что это про Android) и что лучше «в жизни»? Прошу меня не пинать, что вопрос не технического характера, очень хочется знать мнение Вас, специалистов. Спасибо.

Закрыт по причине того, что необходимо переформулировать вопрос так, чтобы можно было дать объективно верный ответ участниками Kromster says support Monica, aleksandr barakin, cheops, Denis, Bald 25 июл ’16 в 4:41 .

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

1 ответ 1

Если вопрос переформулировать, то он бы звучал: «Чем отличается Java от Java?» Но в подробностях выясняется, что вам просто интересно отличие, Java от Android. Это совершенно другой вопрос, и ещё более некорректный. И очень не подходит для концепции данного ресурса, но всё же:

Хотелось бы узнать: сильно ли отличаются эти два направления языка?

Android это не язык, это инструмент для разработки. В будущем, возможно вы будете писать в нем на разных языках и использовать разные структуры С/С++, Java, HTML, CSS, JavaScript, XML, JSON, Groovy, Kotlin да и в целом там есть инъекция, спасибо ребятам из Jetbrains.

«Создание программ с графическим интерфейсом»

Очень сильное отличие в наработке графического интерфейса между Android и чистой Java.

Кроме вас самих, на данный вопрос никто не даст конкретный ответ. Мб вам нельзя сидеть за компьютером по состоянию здоровья)

В итоге:

Очень сильно отличие в направлении Java и Android, но основания движущая сила в Android это Java, а значит и очень много общего. Поэтому ответ такой: Если вы уверены, что будете заниматься разработкой под Android, быстрей переходите на Android и местами подтягиваете Java (Вам просто придется это сделать). Если нет, то есть смысл углубить свои знания Java вначале, а потом сделать выбор в одном из многих направлений.

Andro >Специалист, разрабатывающий продукты для ОС Android, может работать в крупных российских компаниях, искать работу за пределами страны, ведь представители этой профессии востребованы и в Европе, и в США.

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

Краткое описание

Во второй половине 2020 года общая доля смартфонов на ОС Android, проданных клиентам, составила 87%, обогнав не менее популярную платформу iOS. Спрос растет, а вот количество толковых разработчиков для Android не увеличивается, что связано с минимальной популярность профессии в странах СНГ.

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

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

Особенности профессии

Android-программист занимается следующей работой:

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

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

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

Плюсы и минусы профессии

Плюсы

  1. Доступная стоимость обучения.
  2. Высокая заработная плата в любом регионе страны.
  3. Лучшие условия труда: отличный коллектив, удобное рабочее место, оснащенное лучшими девайсами, социальный пакет.
  4. Постоянное взаимодействие с людьми.
  5. Создание полезного ПО.
  6. Карьерные перспективы.
  7. Специалисты, занимающиеся разработкой программных продуктов для Andro >

Важные личные качества

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

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

Обучение Android-программиста

Создание программного обеспечения для ОС Android — не слишком сложная работа, будущие специалисты могут выбрать один из способов обучения:

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

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

Как искать Java-разработчика: пособие для начинающих

Я занимаюсь подбором ИТ-специалистов более 7 лет, за это время я получила обширную экспертизу в этой области. Думаю, данный материал будет интересен как рекрутерам с опытом работы с данными специалистами, так и тем, кто только знакомится с миром ИТ, поэтому информацию постараюсь дать максимально просто.

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

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

Хороший программист (если мы нанимаем специалиста с опытом) имеет знания и практический опыт в технологиях Java, пишет качественный код, допускает не критичное количество ошибок, постоянно в курсе новых технологий и методов разработки, потому что он непрерывно занимается самообразованием.

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

Особенности:

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

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

На рынке ИТ, в том числе и Java-разработчиков, даже в кризис правила игры определяет соискатель. Предложений достаточно для того, чтобы средний кандидат мог найти работу за 1-2 недели, выбирая между несколькими предложениями о работе. В среднем, на одну вакансию в сфере ИТ претендует 3 кандидата (из исследования hh.ru). Тем не менее, Java не является редкой технологией, эта платформа достаточно популярна у программистов, поэтому найти нужное количество кандидатов для собеседования возможно, но потока по этой вакансии у вас не будет.

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

Обычно требования к джависту состоят из следующих блоков:

– Требование к образованию – чаще всего необходим кандидат с высшим техническим образованием.

– Знание и опыт коммерческой разработки на языке Java (не менее определённого количества лет), то есть студенческие и личные проекты работодателя не интересует.

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

– Знание определённого набора фреймворков (Hibernate, Spring итп.) и библиотек (например, JQuery). В каждой компании они требуются свои. Важно в этом пункте сразу уточнить у работодателя, что является обязательным, а что будет плюсом.

– Знание баз данных, например – MS SQL, Oracle и так далее.

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

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

Обязательно уточните у работодателя следующее:

  1. Какой график предусмотрен для кандидата, есть ли переработки, имеется ли возможность график сдвигать?
  2. Присутствует ли дресс-код и насколько строгий?
  3. Где будет располагаться рабочее место кандидата, будет ли это опен спейс или в компании кабинетная система, будет ли он находиться среди коллег-айтишников или среди коллег из других подразделений?
  4. В вопросе компенсации важно иметь четкое представление, что есть оклад, что есть премия и бонусы, белая ли зарплата.
  5. Обязательно узнать обо всех аспектах соц. пакета, он обычно у айтишников очень широкий: кроме ДМС это может быть компенсация фитнеса, бесплатная столовая, 100% оплата больничного, и даже игровые приставки в офисе.
  6. На каком проекте или каких проектах будет работать данный сотрудник, сколько человек в команде, и вообще, лучше честно и прямо спросить: «Чем эта вакансия может заинтересовать кандидата, что мы можем рассказать кандидату, чтобы он загорелся». Это очень хороший вопрос, и адекватный нанимающий менеджер охотно расскажет про все преимущества.
  7. Подразумевается ли профессиональный и карьерный рост на данной позиции?
  8. Какие знания и навыки из описания вакансии обязательные (без которых резюме не будут смотреть) и какие желательные. Например, «знание Java – от 2 лет опыта работы и знание Spring.MVC – обязательно”. Уточните у заказчика, может ли кандидат не указать каких-то из этих ключевых слов в резюме.

2. Как представлять вакансию соискателям (нюансы и правила создания презентации вакансии).

Здесь нужно исходить их трёх основных мотиваторов айтишника:

  1. Интересные проекты.
  2. Технологии, с которыми он будет работать (например, ему уже надоела та платформа, на которой у него большой опыт, но ему очень хочется работать только с Java).
  3. Повышение своего дохода. Этот пункт может быть заменен на комфортность работы (дорога до офиса, удобство графика, наличие столовой, хорошего места для питания, парковки) или команду (насколько хороший микроклимат в команде и насколько она профессиональная).

В описании вакансии для публикации на ресурсах и в соц сетях обязательно хорошо распишите условия, избегайте казённых и шаблонных фраз. В заголовке достаточно написать «Программист Java” или “Ведущий Java-разработчик».

Составьте шаблон письма кандидату, где вы представляетесь, сообщаете, что у вас есть позиция и сразу пишите, что это Java-программист, далее описание вакансии и информация о компании. И, конечно, здесь распишите все преимущества компании, вакансии и проекта, которые вы ранее получили у заказчика (см. выше).

Кандидату лучше сначала высылать письмо, и потом звонить: “Я высылала вам письмо с вакансией” работает лучше, чем внезапный звонок.

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

3. Где размещаться (источники поиска, в том числе специальные и нетривиальные).

По статистике всё-таки больше кандидатов на Java находится на hh.ru, а лучшие приходят по рекомендации коллег-программистов.

Источники:

  1. hh.ru (и активный , и пассивный поиск).
  2. LinkedIn (лучше заранее работать над своей сетью контактов в тех сферах, где вы ищете и будете искать людей).
  3. Рекомендации других сотрудников-айтишников.
  4. Профессиональные форумы sql.ru и rsdn.ru, vingrad. Периодически появляются новые, теряют актуальность старые. Поэтому постоянно ищите новые ресурсы.
  5. Другие источники: ITMozg, Brainstorage, Programmersforum, Javatalks, Github.
  6. Facebook, Twitter, Вконтакте, жж-сообщества по программированию.
  7. Корпоративный сайт компании или агентства.

4. Стратегия поиска (отклики, активный обзвон, соцсети, объявления и т.д.).

1. Размещение вакансии на hh.ru, сбор откликов и активный поиск.

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

Java and Hibernate

Количество лет опыта мы будем определять уже по резюме.

2. Публикация объявления о вакансии со ссылкой на описание в соцсетях и на LinkedIn. В зависимости от соцсети преамбула может быть более или менее формальной и должна быть привлекательной и интересной. Попросите своих знакомых сделать репост ваших публикаций.

3. Публикация объявления на профессиональных форумах. Обязательно сначала прочитайте правила форума и раздела «Работа» или «Вакансии». За невыполнение требований вас забанят, а вакансию удалят. Например, на sql.ru публикацию нельзя редактировать, обязательно нужно указать оклад, название компании или агентства и город.

5. Как проводить первичный отбор по телефону (важные правила переговоров и критерии отбора).

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

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

6. Особенности очного общения и оценки кандидатов.

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

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

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

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

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

Обязательно давайте обратную связь кандидату по телефону или по электронной почте в любом случае.

6. Подготовка кандидатов к интервью в компании.

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

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


Как я бросил всё и стал Andro >

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

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

Цукерберг рекомендует:  Cgi - Избегание создание чистой страницы в CGI скрипте на Python

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Диалоговые окна

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

Дизайн диалогового окна

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

Класс Dialog — это базовый класс для создания диалоговых окон, но реализовывать напрямую класс Dialog не рекомендуется. Вместо этого следует использовать один из следующих подклассов:

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

Следует избегать ProgressDialog

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

Эти классы определяют стиль и структуру вашего диалогового окна, однако следует использовать DialogFragment в качестве контейнера вашего диалогового окна. Класс DialogFragment предоставляет все функции, необходимые для создания диалогового окна и управления его внешним видом, вместо вызова методов к объекту Dialog .

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

В следующих разделах руководства описано использование DialogFragment в сочетании с объектом AlertDialog . Если необходимо создать элемент выбора даты или времени, обратитесь к руководству Элементы выбора.

Примечание: Поскольку класс DialogFragment изначально включен в Android 3.0 (уровень API 11), в настоящем документе описывается использование класса DialogFragment , предоставляемого в Библиотеке поддержки. После добавления этой библиотеки в приложение появится возможность использовать DialogFragment и множество других API на устройствах, работающих на Android 1.6 и выше. Если минимальная версия вашего приложения поддерживает уровень API 11 и выше, можно использовать фреймворк-версию DialogFragment , но следует иметь в виду, что данный документ ссылается на API со вспомогательными библиотеками. При использовании вспомогательной библиотеки необходимо импортировать класс android.support.v4.app.DialogFragment , а не android.app.DialogFragment .

Создание фрагмента диалогового окна

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

Например, имеется базовый класс AlertDialog , управляемый в рамках DialogFragment :

Рисунок 1. Диалоговое окно с сообщением и двумя кнопками действия.

Итак, после создания экземпляра этого класса и вызова show() к этому объекту появляется диалоговое окно, показанное на рисунке 1.

В следующем разделе предоставлена более подробная информация об использовании API AlertDialog.Builder для создания диалоговых окон.

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

Создание диалогового окна оповещения

С помощью класса AlertDialog создается многообразие решений касательно внешнего вида диалогового окна , и зачастую этого класса вполне достаточно. Как показано на рис. 2, диалоговое окно состоит из трех областей:

Рисунок 2. Макет диалогового окна.

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

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

В диалоговом окне не должно содержаться более трех кнопок действия.

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

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

Добавление кнопок

Для добавления кнопок, изображенных на рисунке 2, вызывайте методы setPositiveButton() и setNegativeButton() :

Методы set. Button() предполагают заголовок для кнопки (реализуемый через строковый ресурс) и DialogInterface.OnClickListener , который определяет действие, следующее за нажатием кнопки пользователем.

Реализована возможность добавлять три различных вида кнопок действий:

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

Можно добавлять только одну кнопку каждого вида в AlertDialog . Это означает, что нельзя использовать более одной «положительной» кнопки.

Рисунок 3. Диалоговое окно с заголовком и списком.

Добавление списка

В API AlertDialog реализована возможность использования трех видов списков:

  • Традиционный список с выбором одного варианта
  • Интерактивный список с выбором одного варианта (переключатели)
  • Интерактивный список с выбором нескольких вариантов (флажки)

Для создания списка с выбором одного варианта, как на рисунке 3, используйте метод setItems() :

Поскольку список отображается в области содержимого диалогового окна, диалоговое окно не может показать одновременно сообщение и список, поэтому необходимо задать заголовок диалогового окна с помощью setTitle() . Для указания элементов списка необходимо вызвать setItems() , передающий указатель. В качестве другого варианта можно указать список с помощью setAdapter() . Наполнение списка динамическими данными (например, из базы данных) происходит с помощью ListAdapter .

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

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

Рисунок 4. Список с несколькими вариантами ответов.

Добавление интерактивного списка с одним или несколькими вариантами ответов

Для добавления списка с несколькими вариантами ответов (флажки) или списка с одним вариантом ответа (переключатели) используйте методы setMultiChoiceItems() или setSingleChoiceItems() соответственно.

Например, таким образом можно создать список с несколькими вариантами ответов, как на рисунке 4, который сохраняет выбранные элементы в ArrayList :

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

Создание пользовательского макета

Рисунок 5. Пользовательский макет диалогового окна.

Если в диалоговом окне необходим пользовательский макет, нужно создать макет и добавить его в AlertDialog путем вызова setView() в объекте AlertDialog.Builder .

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

В качестве примера на рисунке 5 приведен файл макета для диалогового окна.

Совет. По умолчанию при настройке элемента EditText для типа ввода «textPassword» используется семейство шрифтов фиксированной ширины, поэтому необходимо изменить семейство шрифтов на «sans-serif» , чтобы в обоих текстовых полях использовались одинаковые стили шрифта.

Для применения макета в вашем DialogFragment вам понадобится LayoutInflater с getLayoutInflater() и вызов inflate() , где первым параметром будет являться ID ресурса макета, а вторым параметром — исходный вид макета. Затем можно вызвать setView() для размещения макета в диалоговом окне.

Совет. Если необходимо пользовательское диалоговое окно, можно отображать Activity в качестве диалога вместо API Dialog . Нужно создать операцию и установить тему Theme.Holo.Dialog в элементе манифеста :

Готово. Операция теперь отображается в диалоговом окне, а не в полноэкранном режиме.

Передача событий обратно в основное диалоговое приложение

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

Например, DialogFragment определяет интерфейс, по который доставляет события обратно в основной компонент операции:

Операция, выполняемая диалоговым окном, создает экземпляр диалогового окна с помощью конструктора фрагментов диалогового окна и получает события диалога с помощью реализации интерфейса NoticeDialogListener :

Поскольку выполняемая операция реализуется через NoticeDialogListener с помощью метода обратного вызова onAttach() , во фрагменте диалога могут использоваться методы обратного вызова интерфейса для доставки событий нажатий к операциям:

Отображение диалогового окна

Для отображения диалогового окна необходимо создать экземпляр DialogFragment и вызвать show() , передавая FragmentManager и наименование тега для фрагмента диалога.

Второй аргумент, «missiles» , — это уникальное наименование тега, которое система использует для сохранения и восстановления состояния фрагмента, когда это необходимо. С помощью этого тега также можно управлять фрагментом путем вызова findFragmentByTag() .

Отображение диалогового окна в полноэкранном режиме или в виде встроенного фрагмента

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

Тем не менее, в этом случае нельзя использовать AlertDialog.Builder или другие объекты Dialog для построения диалогового окна. Если необходимо сделать DialogFragment встраиваемым, нужно определить пользовательский интерфейс диалогового окна в макете методом обратного вызова onCreateView() .

В качестве примера приведен DialogFragment , который появляется либо в виде диалогового окна, либо в виде встраиваемого фрагмента (используя макет с наименованием purchase_items.xml ):

Приведен пример кода, реализующего принятие решения об отображении фргмента в качестве диалогового окна или полноэкранного пользовательского интерфейса на основе размера экрана:

Подробные сведения о выполнении операций с фрагментами приведены в руководстве Фрагменты.

В приведенном примере mIsLargeLayout булеан указывает, должно ли текущее устройство использовать большой макет приложения (и отображать фрагмент как диалоговое окно, а не в полноэкранном режиме). Лучшим способом установить такой вид булеана является объявление значения булевой переменной с альтернативным значением для других размеров экранов. В качестве примера приведены два варианта булевых ресурсов для различных размеров экранов:

Затем можно инизиализировать значение mIsLargeLayout в течение выполнения метода операции onCreate() :

Отображение операции в качестве диалога на больших экранах

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

Для отображения операции в качестве диалогового окна только на больших экранах необходимо применить тему Theme.Holo.DialogWhenLarge к элементу манифеста :

Подробная информация о темах операций приведена в руководстве Стили и темы.

Закрытие диалогового окна

Когда пользователь нажимает кнопки, созданные с помощью AlertDialog.Builder , система закрывает диалоговое окно самостоятельно.

Система также закрывает диалоговое окно, когда пользователь нажимает на элемент списка в диалоговом окне, за исключением списков с переключателями или флажками. В иных случаях можно вручную закрыть диалоговое окно путем вызова dismiss() в DialogFragment .

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

Также можно отменить диалоговое окно. Это особое событие, возникающее, когда пользователь покинул диалоговое окно, не завершив задачу. Так происходит, когда пользователь нажимает кнопку Назад, касается экрана за областью диалогового окна, либо когда задано cancel() в Dialog (например, в качестве отклика на нажатие кнопки «Отмена» в диалоговом окне).


Как показано в примере выше, можно ответить на событие отмены с помощью onCancel() в классе DialogFragment .

Примечание: Система вызывает onDismiss() при каждом событии, которое вызывается методом обратного вызова onCancel() . Тем не менее, при вызове Dialog.dismiss() или DialogFragment.dismiss() , система вызывает onDismiss() , а не onCancel() . Поэтому в общих случаях вызов dismiss() производится при нажатии пользователем положительной кнопки в диалоговом окне, а после диалоговое окно закрывается.

Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.

Как найти работу для Junior Android Developer?

Еще во время обучения в университете я понял, что буду переезжать в крупные города, так как там легче найти работу в IT. Я учился на Урале (хотел поступать в ИТМО , но набрал всего лишь 225 баллов, которые получил, заканчивая сельскую школу).

Уже тогда я понимал, что знания, которые получаются в университете, далеки от требований в IT сфере. Чего только стоит SADT — модели и структурно-функциональное проектирование ИС, которая изучалась по методическому пособию, которое редактировалось (просмотрел через свойства файлов) в последний раз в 1998 году (я родился в 1996). Это проектирование вообще кто нибудь использует? Или все используют объектно-ориентированное проектирование (UML — диаграммы)

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

После окончания университета, я приступил к поиску работы на Junior Android. И тут я впервые столкнулся с тем, что ты никому не нужен.
Но все же ко мне пришла удача и меня пригласили в IT — компанию (название не буду писать) на должность Junior Android в столицу соседнего региона (до него не так далеко ехать) на оклад в 20000. Хоть меня зарплата и не устраивала, но я решил хотя бы 1 год поработать, чтобы получить минимальный опыт, который по сути прописан во всех вакансиях.
Первый месяц обучался стеку компании, одновременно изучая Kotlin (до этого писал только на Java). Затем мне предоставили доступ к проекту, и я уже выполнял небольшие задачи под присмотром.

Но через 2 месяца я уволился. Причин для этого было несколько:
1. Неудобное время начало работы. Когда в большинстве IT — компаний начало гибкое, то здесь работа начиналась фиксировано в 8:00. За опоздание штраф (хоть я и не опаздывал, но приходилось вставать в 5:30)
2. Система штрафа (хоть я не разу не провинился).
3. Работа в воскресенье (хоть всего на 4-5 часов, но все же).
4. Низкая заработная плата (если бы у меня была собственная квартира в этом городе, то я бы вполне прожил бы, но если снимать, то денег не хватало)
5. Обязательное чтение литературы, с последующей проверкой тебя. Я понимаю бы если литература была техническая (паттерны, архитектуры, особенности ЯП, лучших практик), но нет, литература была связана с управлением проектов и идеологий, которые в компании применялись.

Собственно я уволился, и тут мне друг предложил переехать в Санкт — Петербург, на что я ответил согласием, так как IT — компаний здесь больше, ну и собственно работы найти легче. Думал я. Ну — ну, наивный. Вакансий тут то больше, но везде требуется Middle и Senior, а Junior ни кому не нужны.
Я откликался почти на все вакансии, где требовался опыт от 1 года.
По моим наблюдениям все вакансии можно поделить на несколько групп:

1. Компании даже не прочитывают отклик. Даже не знаю как это объяснить, думаю слишком много откликов и HR просто не просматривает все. Их около 20%
2. Компании, которые просто просматривают твой отклик, но не приглашают на собеседование. Около 40%

3. Компании, которые высылают тебе тестовое задание — 20%.

4. Компании, которые сразу приглашают на собеседование задание — 20%

Отдельно стоит рассмотреть 3 группу. Ее можно поделить на подгруппы:
1. Те компании, которые после получения тестового задания, приглашают на собеседование — 60 %.
2. Те компании, которые после получения тестовые задания просто игнорируют тебя, даже не пишут об отказе. — 40%

Со мной даже произошел такой случай. Задание было такое: необходимо было создать приложение, используя VK SDK, произвести авторизацию пользователя в приложении, сохранить авторизацию (чтобы при каждом новым запуском заново не авторизовываться), и вывести любых 5 друзей. Ничего сложного, просто внимательно ознакомиться с API. (Здесь вопрос к разработчикам VK.SDK, как бы обычный Fragment объявлен устаревшим, а v4 вы не поддерживаете, не хорошо https://github.com/VKCOM/vk-android-sdk/issues/170 )

Выполнив задание за несколько часов, я отправил его, как и следовало по инструкции на контакт в telegram с ожидаемой зарплатой. Написали: «Посмотрим». И больше никакого ответа.
Через неделю от этой компании на HH появляется тоже самое резюме, на которое я снова откликаюсь.

HR спрашивает меня: Вы у нас в базе уже есть, а вы выполняли задание?»

Я: Да, я отправлял.

HR: отправьте снова.
Хорошо без проблем. Отправив тоже самое приложение, я так и не получил ответа.
Через две недели они снова создают вакансию на HH, на которую я снова откликаюсь, но теперь я сразу получил отказ без объяснения причины. Тут я не выдержал и отправил им гневное письмо на почту, на что они ответили, чтобы можете резюме, приложение и ожидаемую зарплату снова в телеграм скинуть. Но больше я с ними не связывался. Хотя и просил не много для этого города, всего 40к. Но нет, они не могут просто отписаться вы нам не подходите, а заставляют человека ожидать.

Цукерберг рекомендует:  Калькулятор цен для потенциальных клиентов

Я постоянно совершенствовался, прошел курсы по Android — разработке от одной компании
(Java, популярные библиотеки, паттерны MVP (Moxy), MVVM, рекомендуемая архитектура от Google Android Architecture Component, Clean Architecture, Dagger 2/Toothpick, RxJava и т.д)
Сейчас прохожу курса по Kotlin.
Но мне нужен опыт, чтобы закрепить эти знания. Но везде требуется от 1, а в большинстве случаев не менее 2 лет коммерческой разработки.

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

Я даже несколько раз откликался на вакансии Middle, так как считал что их требования к стеку (кроме опыта) для меня вполне подходят. Один раз мне даже выслали тестовое задание, основная задача которого просто использовать Itunes API для получения списка музыки, композиторов, которое я быстро выполнил, и меня пригласили на собеседование, но после него я получил отказ.

И вот прошло уже 7 месяцев, но работу я так и не нашел.
За это время я откликнулся на 300 вакансий и cходил где-то на 20 — 25 собеседований, но нигде мне оффер не предложили.

Какие возможны варианты:

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

2. Переезжать в Москву, но банально нет денег, а здесь я хоть с друзьями квартиру снимаю.

Даже стажировок нет.
Я пытался пройти на стажировку в Яндекс. Выполнил 2 задания (3 не успел из-за ограниченного времени) в их системе. Меня пригласили на интервью по Skype, где я думал буду решать задачи, связанные с Android, но решал задачу на оптимизацию алгоритмов, с которой я справился. Но на следующий этап меня не пригласили, отказав.

Сейчас я занимаюсь фрилансом, выполняя заказы на написания парсеров и скриптов на Python.
Но так как я не могу устроиться Junior Android Developer-ом, то думаю попробовать себя в QA или в QA Automation, там ситуация вроде получше.

Некоторые люди, возможно напишут, просто у тебя плохие знания или ты плохо ищешь.
Я бы не сказал, я быстро обучаюсь, мне достаточно 1-3 месяца чтобы я вник в проект.
А что касательно вакансий, то сами проверьте, зайдите на HeadHunter, выберите Санкт-Петербург, введите «Android Developer» и выберите «нет опыта». Сами все увидите.
Если вам HH не нравится, то зайдите на профессиональные LinkedIn или Мой Круг. Ситуация такая же.

Всем требуется Middle и Senior. Готовы платить больше. Но откуда им браться, когда нету вакансий на Junior?
Я понимаю, что проект нужно сделать в определенные временные рамки. И Junior в большинстве случаев не самостоятельная единица, а человек, который будет затрачивать время Middle.

И от этого еще грустней.

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

Как искать Java-разработчика: пособие для начинающих

Я занимаюсь подбором ИТ-специалистов более 7 лет, за это время я получила обширную экспертизу в этой области. Думаю, данный материал будет интересен как рекрутерам с опытом работы с данными специалистами, так и тем, кто только знакомится с миром ИТ, поэтому информацию постараюсь дать максимально просто.

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

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

Хороший программист (если мы нанимаем специалиста с опытом) имеет знания и практический опыт в технологиях Java, пишет качественный код, допускает не критичное количество ошибок, постоянно в курсе новых технологий и методов разработки, потому что он непрерывно занимается самообразованием.

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

Особенности:

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

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

На рынке ИТ, в том числе и Java-разработчиков, даже в кризис правила игры определяет соискатель. Предложений достаточно для того, чтобы средний кандидат мог найти работу за 1-2 недели, выбирая между несколькими предложениями о работе. В среднем, на одну вакансию в сфере ИТ претендует 3 кандидата (из исследования hh.ru). Тем не менее, Java не является редкой технологией, эта платформа достаточно популярна у программистов, поэтому найти нужное количество кандидатов для собеседования возможно, но потока по этой вакансии у вас не будет.

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

Обычно требования к джависту состоят из следующих блоков:

– Требование к образованию – чаще всего необходим кандидат с высшим техническим образованием.

– Знание и опыт коммерческой разработки на языке Java (не менее определённого количества лет), то есть студенческие и личные проекты работодателя не интересует.

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

– Знание определённого набора фреймворков (Hibernate, Spring итп.) и библиотек (например, JQuery). В каждой компании они требуются свои. Важно в этом пункте сразу уточнить у работодателя, что является обязательным, а что будет плюсом.

– Знание баз данных, например – MS SQL, Oracle и так далее.

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

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

Обязательно уточните у работодателя следующее:

  1. Какой график предусмотрен для кандидата, есть ли переработки, имеется ли возможность график сдвигать?
  2. Присутствует ли дресс-код и насколько строгий?
  3. Где будет располагаться рабочее место кандидата, будет ли это опен спейс или в компании кабинетная система, будет ли он находиться среди коллег-айтишников или среди коллег из других подразделений?
  4. В вопросе компенсации важно иметь четкое представление, что есть оклад, что есть премия и бонусы, белая ли зарплата.
  5. Обязательно узнать обо всех аспектах соц. пакета, он обычно у айтишников очень широкий: кроме ДМС это может быть компенсация фитнеса, бесплатная столовая, 100% оплата больничного, и даже игровые приставки в офисе.
  6. На каком проекте или каких проектах будет работать данный сотрудник, сколько человек в команде, и вообще, лучше честно и прямо спросить: «Чем эта вакансия может заинтересовать кандидата, что мы можем рассказать кандидату, чтобы он загорелся». Это очень хороший вопрос, и адекватный нанимающий менеджер охотно расскажет про все преимущества.
  7. Подразумевается ли профессиональный и карьерный рост на данной позиции?
  8. Какие знания и навыки из описания вакансии обязательные (без которых резюме не будут смотреть) и какие желательные. Например, «знание Java – от 2 лет опыта работы и знание Spring.MVC – обязательно”. Уточните у заказчика, может ли кандидат не указать каких-то из этих ключевых слов в резюме.

2. Как представлять вакансию соискателям (нюансы и правила создания презентации вакансии).

Здесь нужно исходить их трёх основных мотиваторов айтишника:

  1. Интересные проекты.
  2. Технологии, с которыми он будет работать (например, ему уже надоела та платформа, на которой у него большой опыт, но ему очень хочется работать только с Java).
  3. Повышение своего дохода. Этот пункт может быть заменен на комфортность работы (дорога до офиса, удобство графика, наличие столовой, хорошего места для питания, парковки) или команду (насколько хороший микроклимат в команде и насколько она профессиональная).

В описании вакансии для публикации на ресурсах и в соц сетях обязательно хорошо распишите условия, избегайте казённых и шаблонных фраз. В заголовке достаточно написать «Программист Java” или “Ведущий Java-разработчик».

Составьте шаблон письма кандидату, где вы представляетесь, сообщаете, что у вас есть позиция и сразу пишите, что это Java-программист, далее описание вакансии и информация о компании. И, конечно, здесь распишите все преимущества компании, вакансии и проекта, которые вы ранее получили у заказчика (см. выше).

Кандидату лучше сначала высылать письмо, и потом звонить: “Я высылала вам письмо с вакансией” работает лучше, чем внезапный звонок.

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

3. Где размещаться (источники поиска, в том числе специальные и нетривиальные).

По статистике всё-таки больше кандидатов на Java находится на hh.ru, а лучшие приходят по рекомендации коллег-программистов.

Источники:

  1. hh.ru (и активный , и пассивный поиск).
  2. LinkedIn (лучше заранее работать над своей сетью контактов в тех сферах, где вы ищете и будете искать людей).
  3. Рекомендации других сотрудников-айтишников.
  4. Профессиональные форумы sql.ru и rsdn.ru, vingrad. Периодически появляются новые, теряют актуальность старые. Поэтому постоянно ищите новые ресурсы.
  5. Другие источники: ITMozg, Brainstorage, Programmersforum, Javatalks, Github.
  6. Facebook, Twitter, Вконтакте, жж-сообщества по программированию.
  7. Корпоративный сайт компании или агентства.

4. Стратегия поиска (отклики, активный обзвон, соцсети, объявления и т.д.).

1. Размещение вакансии на hh.ru, сбор откликов и активный поиск.

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

Java and Hibernate

Количество лет опыта мы будем определять уже по резюме.

2. Публикация объявления о вакансии со ссылкой на описание в соцсетях и на LinkedIn. В зависимости от соцсети преамбула может быть более или менее формальной и должна быть привлекательной и интересной. Попросите своих знакомых сделать репост ваших публикаций.

3. Публикация объявления на профессиональных форумах. Обязательно сначала прочитайте правила форума и раздела «Работа» или «Вакансии». За невыполнение требований вас забанят, а вакансию удалят. Например, на sql.ru публикацию нельзя редактировать, обязательно нужно указать оклад, название компании или агентства и город.

5. Как проводить первичный отбор по телефону (важные правила переговоров и критерии отбора).

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

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

6. Особенности очного общения и оценки кандидатов.

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

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

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

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

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

Обязательно давайте обратную связь кандидату по телефону или по электронной почте в любом случае.

6. Подготовка кандидатов к интервью в компании.

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

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

Help — Выбор между Java Developer или Android Developer

О команде. Мы в Skyeng меняем традиционное образование с помощью технологий. Сейчас в нашей IT-команде более 250 сотрудников, включая 70+ разработчиков. Наша разработка — это 14 независимых и быстрых продуктовых команд с опытными тимлидами и продактами. Наши продукты — это онлайн-платформа Vimbox, Android и IOS-приложения, словари, браузерные расширения, внутренние CRM и финансовые системы. Skyeng входит в топ 20 IT-компаний России.

Под капотом. Распределённая команда с четкими процессами, применяем смесь kanban и scrum: работаем на результат, в production выкатываем изменения по нескольку раз в день, регулярные стендапы, ретроспективы. Наши менеджеры не боятся слова «рефакторинг», для работы с техническим долгом выделяем время в спринте. Не боимся ошибаться, а если так происходит, то проводим post mortem, разбираем ошибки и работаем дальше. Используем современные инструменты коммуникации: Slack, Hangouts, Jira, Confluence, Notion, Github, Zeplin и другие.

Наша команда занимается разработкой мобильных приложений skyeng, aword, listening.Сейчас уже никто не сомневается, мобильные приложения — будущее Skyeng :)

  • Разрабатываем новые мобильные уроки skyeng;
  • Переводим legacy-код на современный стек, экспериментируем с модульной архитектурой;
  • Разрабатываем параллельно 3 приложения с пересекающейся функциональностью (а скоро добавится еще одно);
  • Проводим множество AB-тестов новой функциональности, внедряем удаленный feature-control.

Будет сложно, но интересно!


  • Разрабатывать мобильное приложения с нуля, развивать уже существующие приложения;
  • Интегрировать мобильное приложение по API с существующими веб-приложениями;
  • Тесно общаться с командой разработки бэкэнда, участвовать в развитии API;
  • Проектировать архитектуру мобильного приложения.
  • Имеет опыт Android-разработки от двух лет;
  • Отлично знает Java/Kotlin и основные фреймворки платформы;
  • Владеет базовыми навыками разработки: работа с багтрекером (у нас Jira) и с системой контроля версий (мы используем git), пишет документацию (пишем в markdown).
  • Меняем образование — это важная цель в глобальном масштабе, делать социально-важное нереально круто, попробуй!
  • Сильная команда. Средний уровень разработчиков в компании — senior. Есть чему поучиться, есть с кем обсудить то, что уже знаешь;
  • Уникальный опыт: действительно сложные проблемы, которые можно встретить только в нагруженных проектах и сильно растущих компаниях;
  • Учимся сами: регулярные доклады разработчиков внутри компании, участие и выступления на конференциях;
  • Хакатоны и командные сборы в разных уголках мира — каждая команда выезжает на 2 недели вместе работать и отдыхать, хакатон объединяет всю команду IT;
  • Скидка 50% на уроки английского каждому сотруднику и другу;
  • Конференции, профессиональные курсы, выбирай и учись с оплатой от компании;
  • Можно влиять на компанию и её процессы;
  • Оплачиваемые отпуск и больничный;
  • Стабильная заработная плата два раза в месяц;
  • Работа в большой и амбициозной IT-компании с процессами, но без бюрократии;
  • Можно расти вместе со школой. Skyeng растет в 3 раза каждый год, сотрудники растут быстрее;
  • Можно работать удаленно из любой точки мира, а также из нашего уютного офиса в Москве (м. Таганская). Выбор за тобой.

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

Советы сеньоров: как прокачать знания junior Android

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

Никита Кравцов, Senior Android-разработчик в Depositphotos

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

Не пренебрегайте возможностью изучать внутренний код фреймворка. К примеру, в процессе разработки собственного класса FlowLayout разработчик первоначально хотел реализовать данную задачу на RelativeLayout. После изучения исходников FrameLayout/LinearLayout/RelativeLayout разработчик реализовал задачу на классе ViewGroup.

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

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

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

Всегда будьте up-to-date. Подпишитесь на рассылку новостей или официальный канал и получайте обновления о новых библиотеках и продуктах, следите за выходом новых версий прошивки.

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

Разделяй и властвуй. Большинство начинающих разработчиков стараются держать всю логику и код в Activity или Fragment, превращая данные классы в огромные объекты, которые тяжело читать и поддерживать. Если вы хотите писать более эффективный код, вам необходимо понимать, что такое архитектурные паттерны (MVP, MVVM) и дизайн-паттерны.

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

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

  • Java. Для начала вам необходимо досконально изучить язык и все его тонкости. Учитывая направленность этой статьи, я не буду углубляться в подробности, но как минимум, помимо базовых знаний, вам необходимо понимать и применять «Software Design Patterns». В процессе своей работы я пользуюсь ресурсами Javatpoint, Sourcemaking и Tutorialspoint.
  • Google’s official Android Developer site. Отправная точка для любого Android-разработчика. Является наиболее полным пособием при разработке Android-приложений. Это один из лучших и самых актуальных ресурсов.
  • Official Android Developers Youtube channel. Официальный видеоресурс с новостями, лучшими практиками и руководствами, который постоянно пополняется новыми материалами. Достаточно часто выход новой feature (к примеру, Architecture components) сопровождается выходом видео. Одно из преимуществ ресурса — возможность повышения знаний во время проезда в городском транспорте.
  • The Busy Coder’s Guide to Android Development. Достаточно обширный ресурс-шпаргалка для разработчиков. Оформлен в виде книги и обладает большим количеством примеров по разработке Android-приложений. Примеры из книги вы сможете найти здесь.
  • Stack Overflow. Один из самых популярных ресурсов для разработчиков многих направлений. Stack Overflow не содержит документации для обучения или целенаправленных инструкций, но является наиболее популярным местом, где разработчик сможет найти решение специфических проблем, возникающих при разработке программного обеспечения.
  • AndroidWeekly. Еженедельная рассылка новостей. Рассылка представляет собой набор статей, инструкций, примеров кода, подкастов, презентаций и видео на Android-тематику.
  • Google Material Guidelines. Официальный ресурс с рекомендациями к дизайну пользовательских интерфейсов.

Ростислав Антонов, Lead Software Engineer в EPAM Ukraine

15 лет опыта в IT, из них 8 лет на Android

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

Следите за новинками индустрии. Android — это динамично развивающаяся операционная система. Ежегодно Google проводит конференцию Google I/O, где презентуются новые вещи, которые будут включены в платформу. Кроме этого, на мероприятии есть возможность для общения, дискуссий и обмена опытом. Ближайшая конференция состоится мая 2020 года. Следить за событиями можно на Youtube-канале Google Developers.

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

Цукерберг рекомендует:  Android - Как продвигать мобильное приложение после релиза

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

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

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

Александр Зубченко, Android Lead в Waverley

8 лет опыта разработки под Android

Раз уж ты здесь и читаешь советы Senior Android-разработчиков, то ты таки решил погрузиться в мир боли и страдания виртуальных Java-машин. На самом деле нет, но иногда тебе будет так казаться, когда твой код замечательно работает на эталонном Nexus, а на топовом Samsung Galaxy у заказчика лезут баги. Решить эту проблему поможет сила убеждения. Да-да, нужно убедить заказчика купить нормальный Nexus-смартфон, и баги исчезнут! Звучит довольно просто, вот только для этого тебе нужно хорошо знать английский язык. Да уж, но без него никуда.

Прошли те времена, когда РМ, как любящая мама, ограждал(а) разработчиков от вредных и приставучих заказчиков. Увы, система так больше не работает. Знания английского на уровне чтения документации уже недостаточно, тут нужен крепкий Intermediate, а лучше Upper-Intermediate. В общем, пункт номер раз — английский язык. It’s a must, period. И да, тебе нужен не просто разговорный английский, но и «технический разговорный» — собеседования на английском никто не отменял.

Хм. заказчик все еще не хочет менять телефон?! Тогда копнем глубже. возможно, курсы по НЛП? Нет, это не пойдет — компания отказывается их оплачивать! Вернемся во времени и посмотрим, с чего все начиналось.

Пункт номер два. Ты решил изучать программирование, а с чего начинается любое обучение? Правильно — с книг, со чтения документации. Если я в свое время учил Android исключительно по книгам, то сейчас книги точно отошли на второй, если не на третий план. Книга долго пишется, а SDK быстро меняется. А вот в официальной документации обычно все up-to-date! И вот здесь я бы рекомендовал зайти в раздел гайдов на Developer Android и пройти/изучить все интересующие тебя разделы.

Ты — дитя современности и не любишь читать, а предпочитаешь смотреть/слушать? Тогда Udacity (или любые другие онлайн-курсы) — это твой выбор. Вот здесь — отличная подборка видеокурсов различного плана, и самое главное — они бесплатные. Но без пункта номер раз (это который про английский язык) тебе к ним дорога закрыта.

Пункт номер три. Кроме Android-специфичных техник, ты обязан владеть базовыми, основополагающими знаниями по программированию: ООП и ООД, работа с сетью, Web, шаблоны проектирования ПО, структуры данных и алгоритмы, построение баз данных.

Пункт номер четыре. Очень желательно изученный материал закреплять каким-то заданием. Придумай для себя проект твоей мечты и постепенно иди к нему. И здесь в твоих пытках (да-да, я не опечатался) и попытках тебе всегда поможет Stack Overflow — без него никуда. Зарегистрируйся на биржах фриланса и попытайся найти того несчастного, кто будет отдавать свои кровные за твои баги! Ты научишься планированию, декомпозиции, самодисциплине, возможно, возненавидишь программирование и узнаешь много новых английских (и не только) слов, сказанных заказчиком в твой адрес.

Пункт номер пять. Хорошо, доки читаешь, видео обучающие смотришь, пытаешься подрабатывать. Что же дальше? А дальше нужно погружаться в среду, в информационное поле, следить за тенденциями. Необязательно все знать досконально, но быть в теме — важно. И в этом тебе помогут:

  • Видео с конференций Google I/O, DroidCon. Выбери наиболее тебя интересующие и просто скачай их с YouTube на телефон/ноут и смотри, когда хочешь. Это и плюс к карме разработчика, и плюс к прокачке английского языка.
  • Заходи на Android Developers Blog — там публикуются анонсы, гайды, релизы.
  • Подпишись на рассылку самого «вкусного» за неделю — AndroidWeekly.
  • Зарегистрируйся в Medium и подпишись на интересующих тебя публицистов/сообщества, к примеру ProAndroidDev.
  • Подпишись на тематические Youtube-каналы, к примеру Android Developers, Google Developers.
  • Общайся с другими разработчиками, получай знания/информацию из соседних областей.

Пункт номер шесть. Та-а-акссс, ну теперь ты загружен по полной и каша в голове! Отличненько! Иногда много информации — это хуже, чем отсутствие информации, согласись. Поэтому заведи свою базу знаний — Knowledge Base (KB). Лично у меня это Evernote, где я по тегам раскидываю интересные статьи, куски кода. Изучая новую (для себя) технологию/фичу/либу, старайся получить информацию о ней больше, чем из одного источника. Лучшие материалы можно сохранить в свою KB, чтобы потом не рыскать по интернетам в поисках той самой статьи, где очень хорошо и подробно с примерами все было написано.

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

  • Учи то, что тебе интересно. Если тебе нравятся алгоритмы, то прокачивай этот скилл. Интересует создание игр — изучи OpenGL и все, что связано с созданием игр. Это огромный пласт информации и не только из IT-сферы.
  • Важно регулярно (а вот как регулярно — у всех индивидуально) делать level-up умений: выучить и применить (помнишь проект своей мечты?) что-то кардинально новое, технологию или новый язык программирования, который ну прямо-таки меняет фсьо! К примеру: RxJava, Dagger, новые Architecture Components by Google. Это и зарядка для ума, и пунктики в твое резюме.
  • Найди IT-спеца/публициста/блогера, который бы тебе импонировал, и подпишись на него. Для меня в свое время такими людьми стали: Reto Meier (архитектура, компоненты приложения), Chet Haase (GUI, анимации), Colt McAnlis (алгоритмы, сжатие данных).

Итак, теперь ты хорошо кодишь на Java. молодец! Можешь ее забыть (шучу! старушка Java всегда пригодится на каком-нибудь проекте на саппорте) и начать учить Kotlin. Если год-полтора назад он скромно стучался в домик к зеленому человечку, то сейчас это инструмент, поддерживаемый Google и уверенно вытесняющий Java. Нужно знать Kotlin. Что тебе теперь надо сделать? Правильно — подписаться на Kotlin Weekly (ты уже смышленый, знаешь, как это делается ;)). И дальше по уже знакомому тебе списку: официальная документация (она там отличная), видео на Youtube, чуток саморекламы, Medium-подписки и прочее.

Вернемся туда, откуда мы начали. Ух ты, а приложение-то твое работает как нужно и на православном Nexus`е и на корейском Samsung`е! Ой, да ты уже и не в захудалой конторке работаешь, которая снимала подвальное помещение, где не было отопления зимой, а в солидной компании. И рутинный код ты пишешь все реже, а по большей части — самые важные/вкусные куски приложения. Achievement Unlocked: «Ты — Senior!».

И напоследок парочка life-tips:

  • Не хватайся за Android Wear/TV/Auto, как бы ни хотелось. Вот только если ну совсем уже нечего делать, а хочется погрызть гранит науки.
  • «Ты ж программист» — не диагноз, будь разносторонней личностью! Социализируйся, ходи в кино/театры/тусовки/музеи — где еще ты встретишь свою половинку? :) Хороших умных людей должно быть много!
  • После английского начни учить еще какой-нибудь иностранный язык, но только такой, чтобы не был похож на английский и ломал мозг. Рекомендую японский/китайский.
  • Дерзай! Нет, не дерзи своему тимлиду, а дерзай.

Василь Пірус, Competence Lead у Perfectial

7 років досвіду у Software Development, з них понад 5 — у мобільній розробці

У світі Android-розробки сьогодні дуже легко розгубитися: постійно виходять нові статті, відкриті бібліотеки, круті анонси та рекомендації для розробки під Android від Google. До цього всього додайте ще Kotlin — нову мову програмування, яка стрімко перетворюється на стандарт для написання Android-застосунків. У такому потоці інформації важливо вміти відфільтровувати цікаві і потрібні для вас речі: для того, щоб стати справді кращим спеціалістом, не обов’язково перечитувати усі можливі статті по MVP, MVVM, MVI, Clean/Reactive/etc architecture. Швидше навпаки, важливо розуміти основи, без яких буде дуже важко рухатися вперед.

Необхідна умова
Відштовхуємось від того, що ви добре знаєте мову програмування Java, розумієте базові алгоритми, знаєте Java Collection Framework та можете пояснити, як працювати з багатопотоковістю. Крім того, дуже важливим є розуміння платформи та мобільного контексту.

Отже, нижче я наведу список ключових для фокусування сфер.

1. Розуміння та знання компонентів Android SDK
Важливими є життєві цикли Activity та Fragment, а також як працювати з Service, Intent’s. Це такі поняття, які не змінюються, проте недостатнє їх розуміння може спричинити чимало проблем у майбутньому.

Ще дуже класно розібратися в механізмі роботи та можливостях RecycleView — компоненту системи, що використовується майже в кожному застосунку. Дуже хороше відео на цю тему: Yigit Boyar: Pro RecyclerView.

2. Робота з Android UI
Сюди входить робота з XML Layout, ConstraintLayout, Animation. В деяких випадках доведеться писати CustomView, тому добре наперед підготуватися і зрозуміти, як працюють методи OnMeashure() , OnLayout() , onDraw() .

Якщо вам ще не випадало нагоди багато працювати з UI, добрим тренуванням буде взяти свою улюблену програму та спробувати відтворити її в Android Studio. Є серія туторіалів про те, як побудувати інтерфейс Instagram’у на базі компонентів Material design.

3. Unit-тестування, архітектурні компоненти
Ніколи не писали Unit-тести на проекті? Не проблема, 120 хвилин з CodeLab — і у вас вже є базові навички. Ще 110 хвилин — і ви вмієте користуватися архітектурними компонентами (принаймні це зрозуміліше, ніж просто документація).

4. Kotlin
Ну і звичайно, Kotlin. Як я вже згадував раніше, це must have. Раджу не зволікати і починати писати частини коду на Kotlin. Насправді це дуже зручно і вам не доведеться чекати на проект, що є/буде повністю написаний на Kotlin.

Google зараз активно працює над документацією, та для початку буде достатньо таких ресурсів: Android Developer, Android Kotlin Guides.

5. Цикл розробки проекту
Більш загальною, проте не менш важливою, метою є розуміння повного циклу розробки програми: від написання фічі або програми і до релізу в Google Play Store; навики аналізу крешів і причин їх виникнення.

6. Практика
Ну і звісно, що, крім різноманітних туторіалів, найефективнішим шляхом розвитку є участь у складному різноплановому проекті та взаємодія з колегами, які готові ділитися своїм досвідом.

Корисні ресурси

Роман Кучерявец, Android Team Lead в Nullgravity

5 лет опыта разработки под Android

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

Что нужно знать
Нужно начать с основ. Любой язык программирования имеет в себе ряд конструкций и особенностей, которые необходимо знать. В случае с Java это работа с памятью, коллекции и пакет потока безопасных аналогов из java.util.concurrent.*. Раз уж речь зашла о многопоточности, нельзя забывать о том, как в целом она устроена в Java и Android в частности (один из самых избитых вопросов на собеседованиях). Кроме языка, каждая экосистема, в которой работает та или иная программа, тоже обладает своей спецификацией и требованиями. Так как нам предстоит работать с зоопарком устройств экосистемы Android, нужно знать особенности некоторых брендов, потому как не всегда поведение программы в одной ОС будет одинаковым на разных девайсах, к примеру, от Xiaomi или Meizu.

Что может помочь в повышении уровня знаний и качества кода? В случае с первым, нам достаточно читать грамотные книги, практиковаться по ним и не упускать возможности почитать блоги известных программистов и их профили на GitHub. В случае со вторым — мы должны постоянно следить за обновлением функционала в экосистеме, где мы работаем, смотреть подкасты от Google, следить за трендами и новыми фишками, которые несут в себе обновленные ОС у производителей.

На что стоит обратить внимание
В первую очередь, на свой код! ;) Старайся использовать проверенные практики в построении своих программ, не придумывай колесо. Начинай с малого, а именно сo структурирования проекта. Когда увидишь, что просто разделять классы по принципам ООП — мало, почитай, что такое SOLID и как можно и нужно проектировать программы, какие для этого есть архитектурные и проектные шаблоны.

Используй практику ревью кода. Например, у нас в Nullgravity на каждом проекте используется кросс-ревью, к тому же тимлиды команд смотрят еще pull request’ы соседних проектов. Если практика code review еще не используется у тебя на проекте, будь первым, кто о ней заговорит. Времени на разработку новой фичи будет уходить больше, но код станет гораздо чище.

Что еще? Можно сказать про то, что у нас есть огромный спектр фреймворков и библиотек для всех наших потребностей! Но не стоит бездумно брать в работу первый попавшийся. Рекомендую ознакомиться с самыми популярными: Dagger2, RxJava2, Retrofit2, Google API (Maps, Firebase и т. д.), Room (или любое другое популярное ORM решение), LiveData, Crashlytics — это одни из основных, с которыми частенько приходится работать. Все остальное ищется по принципу количества звездочек и проблем на GitHub. Всегда нужно взвешивать то, насколько конкретную задачу стоит делать с нуля, и сможешь ли ты решить ее лучше, чем это сделали другие за то же время.

И напоследок по этому вопросу. Очень рекомендую начинать практиковать Kotlin. Этот язык программирования уже прошел этап «молодого и неопытного» и сейчас быстро взрослеет. В нем есть множество вещей, которых нам могло не хватать в Java — null safety, coroutines, bind views, data class, sealed class, и многое другое.

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

Чтобы вырасти из junior’а, нужно понимать, насколько хорошо ты смог/-ла усвоить для себя какую-то тему, нужно постоянно заниматься саморазвитием. Потому даже если ты уже на проектe, то далеко не все, что было описано выше, может встретиться в работе. Всегда старайся автоматизировать то, что поддается этому волшебному слову — темплейты, CI, CD. Всегда пробуй что-то новое на pet-проектах. Выделяй время для планирования, чтобы появлялось понимание того, сколько уходит времени на задачи. Подтягивай знание английского, потому что документация по сложным фреймворкам в основном англоязычная.

Михаил Анохин, Android Developer в Dev-Pro

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

Java. Идеальным фундаментом для знаний Android-разработчика будет четкое понимание языка программирования. Для этого необходимо прочитать:

Kotlin. Google в прошлом году официально объявил о поддержке данного языка программирования, поэтому стоит обратить на него внимание. Для изучения воспользуйтесь такими источниками:

Android Framework. Необходимо понимать, какие компоненты включены в систему, как они взаимодействуют между собой и со сторонними сервисами. Эти процессы детально описаны в Developer Guides. После этого стоит прочитать книги:

Также стоит пройти курсы от Google на Udacity:

Что дальше? Дальше необходимо читать статьи, периодически добавляемые на Android Resources, и просматривать видео с конференций Google I/O и DroidCon (Italy 2020, Berlin 2020, NYC 2020, SF 2020).

Олег Козак, Mobile Team Lead в Sigma Software

Перше питання, яке виникає перед абсолютно всіма Android-початківцями: «Kotlin or Java?». Загалом непогано знати і те, і інше. Проте на початку кар’єри варто сконцентруватися на чомусь одному. Моя порада без вагань — Kotlin. Після того як Google навесні 2020 року анонсував Kotlin як офіційну мову для ОС Android, доля комерційних проектів на Java стрімко падає. Динаміку можна прослідкувати тут.

Для тих, хто має Java-бекграуд, рекомендую почитати цикл статей:

Найкраще джерело Android-знань — Google. Нещодавно компанія запустила програму «Google Developers Training». Тут можна знайти тренінг як для початківців, так і для більш прокачаних девелоперів. Ці тренінги безкоштовні. Також можна пройти тести та отримати Android Developer Certificate, проте це вже платна опція.

Ще один важливий інструмент, на який хочу звернути вашу увагу, — Google Material Design. Дуже корисна збірка правил, де описано, як правильно будувати UI. Ці стандарти настільки круті, що ними керуються не лише в Android-розробці. Наприклад, знаю багатьох iOS-девелоперів, які використовують Material Design теж.

Але слід пам’ятати, що у всіх, навіть дуже авторитетних компаній, можуть бути недогляди. Нещодавно натрапив на проблему з BLE connection через boolean параметр в Android SDK методі. А саме — autoreconnect в методі connectGatt(context, false, сallback) . Android-девайси з версією блютусу 5.0 не під’єднуються до BLE-девайсів, якщо autoreconnect true , і в той же час працюють без проблем, коли autoreconnect false . Таких огріхів, на жаль, вистачає. Однак не лише з технічними труднощами стикаються початківці.

Найпоширеніша проблема джуніор девелопера — практично будь-яка задача виглядає як «mission impossible». Але не варто впадати у відчай :) Коли не зрозуміло як вирішити задачу, не потрібно битись головою об стіну і намагатись самому знайти рішення. Найкращий вихід — просто спитати в команди. Можливо, хтось стикався вже з такою задачею. Як показує практика, в 95% випадків хтось або вже вирішував таку задачу, або знає, як її вирішити.

Ще один варіант — розбити задачу на маленькі частини і вирішувати глобальну задачу step by step. Потім, скоріш за все, доведеться трохи порефакторити після складання всього пазла, але вирішення задачі кількома способами ще нікому не зашкодило :)

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

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

Что нужно знать и уметь, чтобы работать Andro />

В статье о выборе Andro >API и кастомизация. Всё это — рутинные проблемы, чьё наличие не должно влиять на ваше решение заняться разработкой под Android. Чтобы принимать их как должное, вам следует овладеть фундаментальными знаниями, список которых я составил в максимально возможном объёме.

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

Что нужно знать для разработки приложений под Andro >

Английский язык на уровне чтения

Принципы ООП, java, jvm, garbage collector, Gradle, Git

Разбираться и отличать друг от друга MVC , MVP и MVVM

Dagger 2 — самый популярный фреймворк, реализующий Dependency Injection для Android

ButterKnife. Используется, когда нужно связывание полей и методов с Android views и когда лень копипастить findById

Retrofit. Нужен для работы с Rest- API

Конвертер для json Moshi

Timber (удобное и умное логирование)

Retrolambda. Позволяет использовать Java 8 лямбда-выражения

обёртка над sqllite StorIO

обёртка над sqllite Cupboard

LeakCanary. Помогает отлавливать утечки базы данных

U2020- MVP . Небольшой пример нашей архитектуры приложений

Знание Kotlin / C++

С чего начать разработку приложений для Andro >
  • Training for Android developers — родная тренинг-документация от Google для начинающего Android-разработчика
  • StartAndroid — отличный набор уроков на русском языке. Содержит широкий список детальных примеров и видеоуроков с комментариями ключевых моментов. Наверно лучший способ понять идеологию разработки, познакомиться с терминами и понятиями, а так же быстро стать начинающим android разработчиком.
  • курс Александра Климова, с которым вы освоите Android-разработку за 5 месяцев. Является отличным дополнением к startandroid.ru.
  • Android Tutorial — брошюрка, из которой можно узнать об основных понятиях и обозначениях в Android. После неё чтение любой документации должно даваться чуточку проще.
  • Набор простых шпаргалок и примеров работы с различными компонентами Android. В целом материал старый, но многие вещи в платформе не менялись годами. В любом случае станет хорошим стартом для молодого разработчика.
  • Vogella Tutorials — блог от эксперта Android Eclipce Ларса Фогеля на английском языке. Отличные детальные примеры, алгоритмы, паттерны и многое другое.
  • курс «Разработка под Android» на Hexlet. 136 видео уроков, тестов и домашних работ. Преподаватель — Виталий Непочатов. Курс от 19 декабря 2013 года.
  • курс Android Development for Beginners на Udacity для совсем начинающих. Его можно пройти бесплатно — Udacity всячески пытается заставить нажать на платную кнопочку, но если внимательно присмотреться и почитать, что написано на экране, то можно увидеть, как начать курс без оплаты.

Стоит яростно следить за…

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

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