Position: Senior Android developer (product company)
Company: SpellRise Recruitment
Category: Android
Experience: 5y

Про компанію:
Компанія  створює системи безпеки та  smart home пристрої. Мета компанії, щоб кожен будинок став безпечним і надійним, а сигналізації - технологічними, стильними та простими у використанні. Компанія вірить  в інтернет речей і розумну безпеку, як його основу. Це  компанія повного циклу від генерації ідей і R&D до масового виробництва та  продажів. Компанія виробляє фізичні пристрої (система включає в себе багато різних датчиків і хаб), пише для них прошивку, розробляє серверну частину та випускає мобільні додатки. 
Серверна частина - це непомітна для кінцевого користувача, але критична для життєдіяльності всієї системи, частина  продукту. Команда  постійно додає новий функціонал і збільшує стабільність  хмарного додатка.

Необхідний досвід та навички:
- 5+ years of experience in Android development
- Strong familiarity with Java and Kotlin
- Good understanding of the Android ecosystem
- Familiarity with Kotlin coroutines
- Good understanding of the clean architecture approach
- Experience with unit testing
- Familiarity with Android SDK: basic concepts like layouts and views, activities and fragments and their lifecycle, storing data, collection views, and adapters
- Experience with ORM frameworks and basic libraries such as Retrofit2
- Strong understanding of code versioning tools (Git) and experience with Gradle
- Strong understanding of the full mobile development life cycle, OOP principles, and design patterns
- Passion for software engineering, learning, and continuous improvement

Буде плюсом:
- Writing unit tests
- Practical experience with Kotlin Coroutines
- Practical experience with video streams
- Knowledge of Android NDK
- Experience with MVVM
- Experience with Android architecture components
- Practical experience with Kotlin DSL
- Experience with third-party libraries, APIs (Firebase), and custom frameworks

Обов'язки:
- Follow high standards of software quality established in the team
- Design, build and maintain high performance, reusable, and reliable code
- Suggest technical and functional improvements to add value to the product
- Collaborate with cross-functional teams to define, design, and ship new application features