Overview
The Android Engineer will develop and maintain mobile applications targeted at multiple Android versions and devices while employing best practices for creating beautiful and performant apps. In addition, code should follow best practices for programming in a team environment with an emphasis on code clarity and maintainability. The engineer will interact with various product owners including internal departments and directly with external clients. The engineer may be asked to lead technical development on some projects, and follow technical lead on others. Remote work acceptable for US-based engineers.
Responsibilities
- Build beautiful and performant Android apps
- Write clean, readable, and maintainable code
- Develop for a variety of Android devices from phones to TVs
- Create pixel-perfect renditions of design comps
- Work with legacy code as well as create greenfield code
- Work with various data sources and APIs
- Work on bug fixes, application performance and architectural tasks
- Evaluate and implement new libraries, patterns and technologies to solve challenging problems
- Peer review code for correctness, adherence to style norms, efficiency
- Interact directly with product stake holders and collaborate with cross-functional teams
Skills and Experience
- 5+ years shipping Android apps
- Proficient in Kotlin and Java
- Expert understanding of threading/concurrency
- Solid understanding of Dependency Injection, with experience using Dagger
- Solid understanding of Reactive Programming with experience with RxJava and/or Kotlin Flow
- Experienced in writing and maintaining Android apps with MVVM, MVP, MVI (pick 2)
- Strong in the art of Git Fu
- Experience working with small teams and interacting directly with stake holders
This Developer:
- Keeps up with updates to the Android Framework
- Values code simplicity over "cleverness"
- Forms strong opinions on new libraries and programming paradigms before putting them in production code
- Knows when to solicit opinions before they code, and when to demonstrate the solution first
- Holds a strong opinion of their code, but will throw it away when a better solution is needed
- Knows that they don’t know everything
- Wants to teach as much as learn
- Is comfortable in Agile or traditional workflows