В гостях на канале Start Android побывали опытные разработчики Вячеслав Титов и Михаил Ерошкин, участники команды «R.id.team», авторы серии вебинаров на нашем канале.
Ребята рассказали, чем сейчас занимаются, над чем работают. Поговорили о том, как живется разработчикам, о тенденциях в разработке приложений, об ожиданиях заказчиков, о требованиях работодателей, о собеседованиях, о тестовых заданиях и т.д. Ответили на вопросы новичков.
- Видеозапись скайп-конференции:
- Ответы на вопросы с обещанными ссылками от Миши Ерошкина:
- Расскажите, что с “R.id.team”, команда распалась?
- Как вы сейчас работаете, официально, фриланс, аутсорс?
- Работаете ли над собственными проектами, какими?
- У вас большой опыт работы в команде. Как распределяются обязанности при работе над проектом?
- Какие сейчас тенденции в мобильной разработке, какие направления, технологии востребованы?
- Как опытные разрабы оценивают перспективу Android в дальнейшем? В особенности в России.
- Стоит ли зацикливаться лишь на Android’е? Какая будет конкуренция, скажем, через 5 лет на рынке труда среди Android-разработчиков?
- Рекомендации по архитектуре проекта, MVP и другие часто используемые паттерны проектирования.
- Что посоветуете новичкам?
- Наши приложения:
Видеозапись скайп-конференции:
Ответы на вопросы с обещанными ссылками от Миши Ерошкина:
Расскажите, что с “R.id.team”, команда распалась?
Получив достаточный опыт для того, чтобы работать за зарплату, причем достаточно неплохую, многие выбрали путь что “лучше сейчас, чем неизвестно что потом”. Речь про вебинары, мастер классы и прочее, то, что мы думали поставить на поток. Были мысли по поводу аутсорса, и даже пробовали, но тут опять же есть минус – мы все андроид разработчики. Нет, есть конечно опыт и в смежных областях. Денис к примеру ios немного знает, я JavaEE, Инна в базах данных мастер, Слава в роли проект менеджера вполне неплох, но всё равно, основной опыт у всех в андроиде. Это несколько неудобно, потому что чуть больше андроид разработки, уже будет проблематично делать. Было желание сделать собственный проект, даже прорабатывали идеи, находили, писали ТЗ и всё наладили, но это всё загнулось, потому что основная работа давала неплохой приток денег,
и половине нашей команды этого хватало.
Как вы сейчас работаете, официально, фриланс, аутсорс?
Все три варианта =). Я с Денисом к примеру официально, он в Питере, а я в Москве. Слава работает на трех работах, официально, фриланс и аутсорс все вместе взято. Инна у нас любит скрытничать, поэтому даже не знаю где она сейчас. И Бека, который влился в нашу команду чуть позже, сейчас на аутсорсе работает. В принципе, на рынке спроса на разработчиков больше, причем с существенным отрывом, чем самих андроид разработчиков, поэтому некоторые работодатели идут на уступки, и вместо поиска человека в офис, уже нанимают его по удалёнке. Так что не обязательно ехать в Москву, чтобы найти работу. Достаточно открыть hh.ru
Работаете ли над собственными проектами, какими?
Да, некоторые из нас занимаются параллельно своими проектами. Я к примеру писал и пишу уже четвёртый год программу treQster – это сервис для нахождения друзей, планирования маршрутов и многое другое. В общем очень удобное приложение для путешествий. Как Life360, только круче =). Денис года три пишет Training Note – программу для тренировок в качалке. Да и пожалуй всё. Больше из нас никто своих проектов не пишет. Вообще, свой проект это нереально сложно, особенно если ты один, потому что на рынке столько всего, что выйти на рынок с новой идеей, чтобы она сразу полюбилась многим, практически нереально. Поэтому многие из наших предпочли работать за зарплату, что очень даже логично. Но для работодателя сделать свой проект, это очень даже нужно, а код выложить на гитхаб, чтобы он мог и проект посмотреть, и код почитать. Работодатели это очень любят.
У вас большой опыт работы в команде. Как распределяются обязанности при работе над проектом?
Я не буду говорить про определенные компании, и как там налаживается процесс, потому что это попадает под NDA. Скажу в общих чертах: многие любят методологию Scrum, где устанавливается так называемый спринт на неделю – 4 недели (в зависимости от задач). Но в основном стараются делать две недели. На планировании спринта, идёт отчёт о прошлом спринте, что было сделано, что не сделано. Это обычно занимает пару часов. Дальше на основе этого, строится новый спринт. Есть также короткие встречи, которые проходят каждый рабочий день. Обычно делают их с утра, в какое-то определенное время. Каждый очень коротко (буквально 30 секунд) рассказывает что он делал прошлый день, что делает и что планирует делать. Но правда не все делают эти короткие встречи. Вообще советую получше почитать про методологий Scrum.
Какие сейчас тенденции в мобильной разработке, какие направления, технологии востребованы?
Многим по душе пришёлся материальный дизайн, и сейчас многие пытаются перевести на него свои проекты. Из направлений ничего нового, все также стараются перевести функционал своего сайта на мобильное приложение, это мейнстрим. Также появляются вакансии по разработке фитнес трекеров и прочих специфических вещей. Технологии? Если речь про библиотеки или про стиль написания программы, то тут можно долго говорить, и это не сильно сейчас необходимо новичкам, но кое что я всё же расписал в последнем вопросе.
Как опытные разрабы оценивают перспективу Android в дальнейшем? В особенности в России.
Перспективы наверное будут еще лучше, нежели сейчас. Появляется какое-то сумасшедшее число новых дивайсов, новых устройств, под которые надо писать софт. Это фитнес трекеры и подобные специфические устройства. Также сейчас мейнстримом является перенести свой сайт на мобильное приложение. Что касается России, то в принципе, тут всё довольно неплохо. Работы хватает, а вот разработчиков – нет.
Стоит ли зацикливаться лишь на Android’е? Какая будет конкуренция, скажем, через 5 лет на рынке труда среди Android-разработчиков?
Скажем так: Android разработчиком тут везёт. Хотя это применимо и к ios. Зацикливаться конечно же не стоит, но в андроиде будет столько новых и интересных задач,
хоть и на одном языке, что ближайшие лет 10 я думаю даже и не стоит об этом думать. Но развиваться надо в разных областях. Правильно было бы изучить IOS и в дальнейшем
стать тим лидом в мобильной разработке, а там может и проект менеджером. Так что если вы будете изучать андроид и дальше, то вам будет впрочем неплохо,
но если хотите большего (к чему лично я и сам стремлюсь), то поработав немного андроид разработчиком. изучите еще и ios.
Рекомендации по архитектуре проекта, MVP и другие часто используемые паттерны проектирования.
- По паттернам проектирования очень рекомендую книгу ссылка
- Статья про MVP архитектуру. Очень толковая – ссылка
- Моё видение архитектуры в упрощенном варианте – ссылка
- Прототипирование от RedMadRobot – ссылка
Что посоветуете новичкам?
Ровно что и пару лет назад: в андроид надо лезть после изучения JavaSE, а также изучить английский на уровне Pre-Intermediate и выше. Это является базой для андроида.
После этого, по андроиду: знать 4 основных компонента Android приложения, которые регистрируются в манифесте. Это Activity, Service, Content Provider и Broadcast receiver. Знать как они работают и их жизненные циклы (сервиса и активити).
Изучить что такое AsyncTask, понять как он работает и больше никогда его не использовать. Вместо него использовать Loaders. Из сторонних библиотек для работы с многопоточностью, пожалуй выделю Robospice. На конференциях в основном её хвалили. Она у себя под капотом использует сервис, и через него шлёт асихронные задачи.
Изучить работу с БД (через Content provider). Будет также плюсом. если вы еще попробуете и ORMLite. Для работы с сетью, в базовом варианте можете использовать OkHttp, если чуть посложнее. то Retrofit. Последний внутри себя использует OkHttp, но этот дуэт несколько сложноват поначалу.
Ну и конечно же, надо уметь грамотно строить архитектуру приложения. Тут уже с опытом прийдёт. Читайте про паттерн MVP и MVC (если чуть сложнее, то и MVVM). Недавно я писал пару примеров для собеседований, вот к примеру одно из них, как желательно строить архитектуру: ссылка. Конечно же, она не идеальная, я и сам не всё знаю, но пока что всем компаниям, кому делал ТЗ, всем такой стиль понравился.
Прекращайте спользовать ActionBar, переходите на ToolBar, изучайте что такое NavigationDrawer. Вот, кстати, очень хорошая либа, которую мы используем для него: ссылка . Все остальные мелочи (как сохранять состояние активностей, использование фрагментов и прочее), я считаю базовым. Думаю о них не стоит говорить.
Из Java замечу про: коллекции (Map, List, Set, HashMap, LinkedHashMap, TreeMap, HashSet, ArrayList, LinkedList), многопоточность (!!!), обобщенные типы (дженерики). Также не указываю то, что следует знать синтаксис и прочие базовые вещи, типа что есть объект, как их сравнивать, сортировать и прочее.
Объединяйтесь в небольшие команды, пробуйте вместе какой-то проектик для изучения, выкладывая код на гитхаб. Используйте Git. Команда также хороша тем, что в дальнейшем можно приехать в гости к кому-нибудь. Например, после того как все устроились на работу, ко мне в Москву приезжал Денис и Слава. Я же в свою очередь ездил в гости к Денису и заодно на конференцию, которая проходила в Питере. Теперь вот Славу надо развести, чтобы в Крыму отдохнуть у него =)
Наши приложения:
Моё приложение на маркете (treqster). Заходите, ставьте пять =) ссылка
Приложения Дениса на маркете (Training note). Тут тоже ставьте =) ссылка
Успешное android приложение – клон ссылка
Если можно, дайте, пожалуйста, эмайл Михаила.
Может быть его на каких-то условиях заинтересует наш проект на Андроиде?.
Юрий.
Он сейчас в отпуске, но я сообщу ему ваш email