Ищу Android-разработчика
Привет! Меня зовут Денис, я технический директор
Мы — отдел разработки новых IT продуктов и нам нужны люди, которые помогут в выполнении нашей миссии.
Зарплата 150 000—750 000, в зависимости от уровня
«Авиата» — сервис покупки авиа- и Ж/Д билетов. Мы работаем с 2013 года, и сейчас продаём более 300 000 билетов ежемесячно. В 2018 году издание Forbes Казахстан назвало нас лидером по продаже билетов.

Мы ставим перед собой амбициозные цели и не собираемся останавливаться. Наша IT-компания — команда единомышленников, но по отдельности каждый – самонаводящаяся ракета!

Что мы делаем

В работе в нашей компании можно выделить одну интересную деталь - мы разрабатываем и поддерживаем сразу 4 мобильных приложения - Авиата Авиа, Авиата ЖД, Чокотревел и Чокотревел B2B. И не смотря на то, что все ios разработчики сосредоточены в разных командах, им часто приходится решать комплексные задачи. Это может быть последовательное внедрение одинаковой фичи в разные приложения, либо создание общих компонентов, например, модуль бронирования. Такой подход позволяет постоянно обмениваться опытом и навыками, внедрять во все продукты самые новые и крутые технологии, принимать правильные решения и развиваться всем программистам без исключения. Важно заметить, что никто не диктует разработчикам как и что нужно делать - все вопросы решают сами программисты, устраивая brainstorming сессии.

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

    Предлагаем взамен

    Офис в центре Алматы. Мы находимся на пересечении проспектов Абая и Гагарина, в 5 минутах от станции метро «Алатау». Кстати, офис у нас новый, просторный и клевый.

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

    Ноутбук и монитор. И любое другое оборудование, необходимое для эффективной работы.

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

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

    Грэйдинг Android-разработчиков
    Intern
    Hard skills
    • Базовые знания языка программирования (переменные, операторы, функции, ограничители)
    • Понимание клиент-серверной архитектуры
    Soft skills
    • Способность и желание обучаться
    • Проактивность в поиске решения задач
    • Умение формулировать и задавать вопросы
    • Способность спокойно относиться к критике
    Responsibilities
    • Решение простых задач
    • Исправление некритичных багов
    • Следование принципам разработки ПО, принятым в компании
    • Обязательное прочтение рекомендованную литературу, описанную выше
    • Участие в Code review разработчиков выше
    Tech skills
    • Базовые знания Java/Kotlin (синтаксис: типы данных, функции, классы, циклы, control flow, exception handling)
    • Базовые знания версти XML (стилизация компонентов)
    • Базовые знания работы с БД (основные понятия БД: таблицы, записи, базовые SQL запросы [теория])
    • Базовые знания Android Framework'а: Activity, ViewGroup XML (FrameLayout, LinearLayout), View (TextView, Button, EditText, ListView), Fragment
    Junior 1
    Hard skills
    • Понимание что такое API в целом; и в частности: REST API и HTTP статусов
    • Умение работать по Gitflow
    • Умение дебажить код
    • Знание и применение базовых принципов ООП (Инкапсуляция, Наследование, Полиморфизм)
    • Умение писать unit test'ы
    • Базовые знания работы с БД (CRUD)
    Soft skills
    • Умение уточнять задачу
    • Умение оповещать о проблемах
    • Умение распределять время
    • Умение исследовать проблему
    Responsibilities
    • Решение типовых задач
    • Исправление багов
    • Следование составленному плану развития
    Tech skills
    • Хороший уровень знаний Java/Kotlin (углубленные знания ООП, интерфейсы, абстрактные классы, overriding, overloading, garbage collector)
    • Умение писать multi-window application (несколько activity)
    • Знание VCS, базовые навыки в Git
    • Знание о существовании потоков (main UI, background), Thread, Runnable
    • Использование библиотек для работы с БД
    • Знание основных моменты активити и фрагметов, вставляет код в более менее правильные места жизненного цикла данных компонентов
    • Умение делать запросы на API
    Junior 2
    Hard skills
    • Умение понимать чужой код
    • Знание и применение SOLID, DRY, KISS
    Soft skills
    • Не отнимать время команды однотипными вопросами
    • Самостоятельно анализировать проблемы и предлагать решения
    Responsibilities
    • Правильно оценивать типовые задачи
    • Писать документации
    Tech skills
    • Умение писать мультипоточный код (переключение между потоками)
    • Умение дебажить HTTP запросы/ответы (Logcat, Debugger)
    • Хороший уровень знаний работы с БД
    • Продвинутая вёрстка XML (constraints, include)
    • Знание Retrofit, OkHttp, сериализация
    • Работать со списками с RecyclerView
    • Знание компонентов Material Design
    • Fragment: отличие от Activity, жизненный цикл, транзакции, backstack
    Junior 3
    Hard skills
    • Проходить код ревью без больших переделок
    • Умение проводить рефакторинг кода
    • Умение писать интеграционные тесты
    • Базовые алгоритмы и структуры данных (алгоритмы сортировки, бинарный поиск)
    Soft skills
    • Умение работать в команде
    • Хорошо знать и понимать бизнес-часть проекта
    • Понимание методологий разработки и планирования (Agile)
    Responsibilities
    • Решать нетиповые задачи
    • Создавать новый функционал
    Tech skills
    • Знание Java Collection API (List, Set), Map -Знание таких компонентов как Service, BroadcastReceivers
    • Transition Animation (между activity, fragments)
    • Понимание архитектурных шаблонов (MVC, MVP, MVVM)
    • Знание Kotlin Coroutines (coroutine builders, context switching, async/await)
    • Знание build types, product flavors -Умение писать unit тесты (тестовые данные, моки)
    • Базовое умение работы с Push уведомлениями (обработка, отображение, открытие нужного экрана)
    • Умение писать кастомные View (простые view, с одним состоянием) -Умение интегрировать сторонние сервисы (Crashlyitcs, Analytics, Cloud messaging, Remote database)
    • Понимание A/B тестирования
    Middle 1
    Hard skills
    • Умение применять паттерны проектирования
    • Улучшение кодовой базы (например, подключение шаблонизатора на весь проект, а не только на свою задачу)
    • Хорошие знания фреймворков, используемых в проекте (описаны в «Tech Skills»)
    Soft skills
    • Самостоятельно общаться с другими командами, правильно решать проблему
    • Менторство
    • Понимание работы в команде, проактивность в улучшении процессов в командной работе
    • Выбор наиболее оптимального способа решения задачи
    • Участие на собеседованиях в роли интервьюера
    • Выступление на внутренних конференциях с докладами
    Responsibilities
    • Поиск в code review слабых мест в коде
    • Решение сложных багов
    • Закрытие технического долга
    Tech skills
    • Уверенное знание Kotlin (Компиляция, Delegates, знаком с рефлексией, понимание Garbage collector, знание разных типов ссылок)
    • Хорошее знание Android SDK (Services, View lifecycle, activity launch modes)
    • Знание принципа работы JVM, Android Runtime
    • Понимание Clean architecture
    • Умение писать Unit (Моки, mockito, spy, coroutine testing)
    • Знание Gradle (понимание как работает сборка, умение писать таски)
    • Опыт реализации архитектуры (MVVM, понимание принципа работы Android ViewModel)
    • Умение писать кастомные View (кастомные аттрибуты, несколько состояний, различия конструкторов)
    • Применение шаблонов проектирования (Singleton, Abstract factory, Factory method, Observer, builder)
    • Понимание принципа работы dependency injection
    Middle 2
    Hard skills
    • Умение вносить доработки в код проекта с учётом нескольких проектов
    • Умение писать надёжный, расширяемый и тестируемый код
    • Умение выделять часто используемые фрагменты кода в библиотеки. Понимание и применение модульности
    • Углубленное понимание технологий, которые используются в проектах (описаны в «Tech Skills»)
    Soft skills
    • Решать задачи, сложность которых растет, правильно их декомпозировать
    • Проверять задачи на соответствие целям ОКР и оценивать их приоритетность
    • Предлагать альтернативные технические решения для задач
    • Понимать бизнес составляющую каждой задачи
    Responsibilities
    • Разработка библиотек, общих для продуктов компании
    • Ведение технической документации
    • Рефакторинг сложных/ответственных частей проекта
    • Профилирование, писать оптимизированный код
    • Своевременное информирование Team Lead/менеджера о возможных рисках
    Tech skills
    • Продвинутое знание языка Kotlin (Lambda, higher-order functions, SAM-conversions, inline functions, generics, reified type, parametrized type, DSL)
    • Android SDK (Animations, Canvas, умение правильно использовать view lifecycle)
    • Умение пользоваться Monitors, Profilers
    • Понимание Websockets, long pooling, server-sent events
    • Понимание жизненного цикла ОС и приложения (Handler, Message queue, Looper)
    • Умение разбивать проект на модули (android library, dynamic feature module)
    • Умение публикации библиотек (jcenter)
    • Понимание принципов реактивного программирования
    • Знание Java concurrency (Latch, Future, Deadlock, race condition, semaphores, атомарность)
    • Уверенное владение уже реализованными архитектурными решениями
    • Понимение потоков данных (Unidirectonal, non-unidirectional data flows)
    • Понимание архитектуры MVI
    • Понимание принципов работы Kotlin Streams and Flow
    • Понимание основ функционального программирования (Чистые функции, функции высшего порядка)
    • Понимание Kotlin Multiplatform (будет плюсом)
    Middle 3
    Hard skills
    • Кросс-командное проектирование архитектуры
    • Хорошие знания технологий, используемых в проекте (базы данных, поисковые решения, кэш — подробнее в «Tech Skills»)
    Soft skills
    • Лидерство в задачах, где надо скооперировать несколько разработчиков или команд
    • Способность заменить тимлида и обеспечить продуктивное закрытие задач в его отсутствие
    Responsibilities
    • Ликвидация факапов и аварий, выстраивание процессов, предотвращающих повторение таких ситуаций
    • Контроль тех. долга
    • Контроль ведения документации
    Tech skills
    • Экспертный уровень знания Android SDK (файловая система, обфускация кода, graphics pipeline)
    • Глубокое понимание принципов работы DI-фреймфорков (Dagger, Koin)
    • Понимание работы Coroutines под капотом
    • Опыт работы RxJava
    • Наличие опыта реализации различных архитектурных решений (MVVM, MVP, MVI и тд)
    • Опыт работы с Kotlin Multiplatform (с нуля)
    • Умение пользоваться инструментами разработчика
    • Понимание разных принципов построения UI (декларативно)
    Senior
    Hard skills
    • Разработка архитектуры систем, хорошее понимание взаимодействия систем компании между собой
    • Принимать оптимальные технологические решения в проекте для бизнеса и команды
    • Отличные знания технологий, используемых в проекте (базы данных, поисковые решения, кэш — подробнее в «Tech Skills»)
    Soft skills
    • Сфера влияния - вся компания
    • Внедрять успешные практики в компании (процессы, технологии)
    • Умение продавать идеи для улучшения продукта, процесса
    • Коммуникативные навыки на высоком уровне
    • Выступление на внешних конференциях
    Responsibilities
    • Стейкхолдинг
    • Решать самые сложные баги связанные с системой либо сторонними библиотеками
    • Участие в развитии технического бренда
    • Настройка и отслеживание технических метрик и ошибок
    Tech skills
    • Экспертный уровень знания Java/Kotlin (Compile time annotation processing, работы GC в под dalvik и под ART)
    • Понимание Java memory model (memory stack, heap, main memory, cache memory)
    • Знание Android NDK
    • Опыт работы CI/CD (развернуть на машине, настроить весь флоу тестов и деплоя)
    • Теоретические знания OpenGL
    • Опыт работы с другими платформами (iOS)
    • Понимание Event sourcing & CQRS
    • Знание продвинутых структур данных и алгоритмов (деревья, графы, динамическое программирование, численные методы)
    Есть комментарии или вопросы по грейдингу?
    Если считаете, что сработаемся, отправьте своё резюме
    Как к вам обращаться
    Как с вами связаться
    Прикрепите резюме в формате DOC или PDF