В DevCats требуется «Middle Android Developer».
Должностные обязанности:
- Понимать и полноценно применять в работе ООП, базовые структуры данных и алгоритмы, основные паттерны проектирования;
- Понимать и уметь применять паттерны разработки MVC, MVP, MVVM;
- Понимать и уметь применять в работе Android Architecture Component;
- Уметь тестировать собственный код и разбираться в чужом коде;
- Уметь реализовать свои кастомные view-компоненты;
- Уметь работать с RoomDB, SharedPreferences, Local storage;
- Понимать и уметь применять в работе DI (Dagger/Hilt/Koin);
- Понимать и уметь применять в работе API: Retrofit, OkHttp;
- Понимать и уметь применять в работе основные команды GIT;
- Понимать и уметь применять в работе RxAndroid/Coroutines.
Требования к кандидатам:
1. Знания и навыки в ООП и ФП:
* Глубокое понимание принципов объектно-ориентированного и функционального программирования.
* Опыт работы с базовыми структурами данных и алгоритмами.
* Владение основными паттернами проектирования.
2. Архитектурные паттерны:
* Опыт работы с архитектурными паттернами MVVM, MVC, MVP, VIPER, MVI.
3. Тестирование:
* Умение тестировать собственный код.
* Навыки покрытия кода UI и Unit тестами.
4. Работа с данными:
* Понимание принципов шифрования данных.
5. Разработка пользовательского интерфейса:
* Умение строить сложные layout'ы.
6. Подходы DI (Dependency Injection):
* Понимание и применение принципов внедрения зависимостей в разработке.
7. Работа с REST API:
* Опыт работы с RESTful сервисами.
8. Контроль версий:
* Уверенное владение системой контроля версий GIT.
* Понимание основных концепций работы с системами контроля версий.
9. Реактивное программирование:
* Понимание и умение применять принципы реактивного программирования.
Дополнительные требования:
* Высшее образование в области компьютерных наук или эквивалентный опыт работы.
* Способность работать в команде и эффективно коммуницировать с коллегами.
* Умение решать сложные задачи и находить оптимальные решения.
* Желание учиться и развиваться в профессиональной сфере.
Заработная плата обговаривается индивидуально по результатам собеседования.