We are looking for a senior mobile android developer to work on a our dedicated mobile Point Of Sale handheld and tablet devices. These are standalone locked down devices running a dedicated app. The app communicates with limited hardware, such as printers and credit card terminals.
Responsibilities:
- Build new native Android application written in Kotlin, Java or a mix of both
- Work on all aspects of Android development, from the network layer all the way up to the UI.
- Help make major architecture decisions and enforce Android best practices
- Follow Git best practices, and write clean, readable code, maintaining documentation for other teammates where necessary
- Work with a technical Product Manager to help define technical requirements, make estimates, scope tickets and help plan Agile sprints
- Collaborate with other developers, and backend engineers on a regular basis
Skills Requirements:
- 3 years of experience developing native Android applications
- Full Android stack: Activities, Fragments, Views, Services, Broadcast Receivers, Content Providers, SQLite, etc.
- Experience with commonly used Android libraries and SDKs, both from Google and third parties, for networking; persistence; multi-threading; messaging; code reduction; and optimization. (OkHttp, Retrofit, Picasso, etc.)
- Experience with system integrations such as payment processors, banking systems, customer support, etc.
- Experience of commonly-used Android testing libraries for both unit testing and functional testing
- Experience with TDD and creating clean, testable code
- Experience with reactive architectures, MVVM, MVP, data binding, and other common design patterns which cleanly separate business logic from UI
- Experience with Gradle build system
- A strong understanding of REST API Design
- Strong understanding of Android Material Design
- Experience with Android testing frameworks (JUnit, Mockito, etc.)
- Experience with Design and User Experience (simple designs, but solid)
- Experience with deployment and management of production devices (i.e. MDM)
Optional Skills or Qualifications (Nice to Haves):
- Understanding of the Google Play ecosystem, dashboards, beta and release versioning, and developer tools.
- Experience and / or working knowledge of distributed systems
- Functional programming knowledge, such as with Haskell, OCaml, ReasonML or similar languages
- Experience with setting up continuous integration and delivery pipelines
- BS in Computer Science, Math, EE, or other applicable degrees
- Experience as a Product Manager.