Principal Software Engineer - Android
Description
The Principal Software Engineer will report to the Software Development Manager of Smart Device Software and will evaluate and select technology and architecture that is appropriate for the desired customer experience, establish patterns, procedures and practices that enable the highest quality standards as well as will be responsible for developing mobile applications appropriate for desired customers and utilized by thousands of home automation systems. This position will help develop the Home Control Customer Interface for Android mobile apps and embedded devices (i.e. touch panels and set top boxes) utilizing programming languages Java and Kotlin. This position will act as a leader and mentor for the team therefore should be a motivated self-starter who can manage working in a fast-paced environment and manage multiple projects simultaneously. The Principal Software Engineer will work cross functionally and should be able to influence both their team and other team members without direct authority. This role requires the ability to effectively articulate a viewpoint and will need high attention to detail with excellent communication and presentation skills. The Principal Software Engineer will need to demonstrate the ability to think outside the box in order manage both technical and analytic challenges presented within the business and should possess exceptional problem-solving skills.
Responsibilities
- Drive the technical direction of the codebase, CI/CD and testing infrastructure, operational metrics capabilities, and all related pieces of the Android Control4 ecosystem.
- Work closely with UX designers, product managers, and engineering leadership to craft best-of-class, delightful user experiences
- Collaborate with other client and backend engineers, to architect and implement solutions that are built to last.
- Mentor team members of all levels and support peers through code review and pair programming.
- Identify areas for growth within the team processes and develop new systems for collaboration.
- Manage production issues and solve novel problems.
- Ensure parity between Android and iOS apps by working with the iOS developers
- Use Test Driven Development to speed feature delivery and reduce the bug count while increasing test code coverage as well as perceived customer quality
Required Qualifications
- Minimum of 7+ years of experience
- Bachelor’s degree in computer science, Information Systems, Software Engineering, or comparable field of study, and/or equivalent work experience.
- A deep understanding of the Android SDK, Activity and Fragment lifecycles, thread management, custom views, and animations
- Expert knowledge of Android app architecture patterns (MVVM, MVP, etc.) and design principles
- Experience integrating with backend systems, web services, and third-party software
- Proven understanding and experience using reactive frameworks such as RxJava or Kotlin Coroutines
- You build high-quality code by always writing tests and using performance and static analysis evaluation tools
- Experience with test automation, dependency injection, and continuous integration
- Familiarity with Scrum and Agile methodologies
- Excellent communicator who collaborates well across teams, while also being able to work fully independently when needed
Preferred Qualifications:
- Experience building UI for embedded hardware devices (Set top boxes, appliances, auto displays)
- Experience with streaming video and codecs (h.264, h.265)
- Experience with telephony technologies like SIP, WebRTC, or LiveKit
- Direct experience mentoring or managing others