Job Description
The Principal Software Engineer – Android designs, develops, troubleshoots and debugs mobile applications. This includes developing software components including Networking, Frameworks, Views, Utilities, Deployment and Automation tools. Passionate and hands-on to solve complex problems with elegant and not over-engineered code solutions. Demonstrates technical leadership via individual contributions as well as providing guidance and mentorship to the team.
QUALIFICATIONS AND REQUIREMENTS:
- Bachelor’s Degree in Computer Science or equivalent
- 8 years of industry experience in developing mobile applications, web and/or large-scale enterprise products
- Mobile Development Experience: Kotlin, Java and Android Studio
- Strong knowledge of Material Design and Android Architecture components
- Experience with package management and app deployment pipelines
- Deep experience with standard mobile architectures (MVC, MVVM, MVP, etc)
- Ability to effectively apply software design patterns and architectural principles
- Expertise in building complex user interfaces
- Experience with SQL and relational databases
- Skillful at writing effective unit and behavioral tests
- Experience with software development processes (Agile, Scrum, Kanban, etc)
- Familiar with git branching strategies and semantic versioning
- Knowledge of mobile continuous integration best practices and tooling
- Skillful at reviewing new feature impact on an application and recognizing potential risks
- Uses time effectively and efficiently
- Quickly learns new technologies
- Detailed oriented, professional and possesses a positive work attitude
- Communicate professionally both verbally and in writing
- Experience mentoring software engineers on complex technical issues
PRINCIPAL DUTIES AND RESPONSIBILITIES:
- Be a technical lead throughout the development lifecycle, from scoping, planning, conception, design, implementation, and testing, to documentation, delivery, and maintenance
- Develops software solutions by studying information needs, conferring with users, studying systems flow, data usage, and work processes, investigating problem areas, following the software development lifecycle
- Collaborates with Engineering Managers and Mobile Architects on engineering design and implementation
- Decomposes and delegate work to junior engineers
- Brainstorms with Product Managers and designers to conceptualize and estimate new features
- Collaborates with backend engineers to efficiently build out new API for mobile apps
- Researches and promotes internal best practices and coding conventions to write and execute tests for your own code, including creating comprehensive automated tests
- Contributes to System Architecture documentation
- Develop shared tooling and SDKs for use by multiple teams across the company
- Takes an active interest in mobile application quality across all product lines
- Identifies and pragmatically addresses technical debt
- Requests constructive feedback for designs early in the process
- Communicates successfully across departments with large teams and many personalities
- Provides mentorship for Software Engineers and participates in interview panels to hire new Software Engineers
- Assists in removing obstacles for the team to yield successful sprints
- Monitors health of app releases and responds to any mobile escalations
- Performs peer code reviews to ensure quality of the codebase
- Occasional on-call duty rotation to respond to after-hours mobile incidents
- Updates job knowledge by studying state-of-the-art development tools, programming techniques, and computing equipment; participating in educational opportunities; reading professional publications; maintaining personal networks; participating in professional organizations
- Works effectively with multiple projects and departments
- All other duties as assigned