Salary- 115-120k base
A Software Engineer II- Android Developer is proficient with the most-often used features of the programming language, its core library, commonly used 3rd party libraries, and commonly used code management and build tooling.
Initially a Software Engineer II is expected to be able to develop a medium set of defined, inter-related modules, articulate why the code and application they are working on are designed the way they are, and be able to provide some instructive feedback to newer developers through code reviews and in-person Q&A. As they progress, they should be able to implement smaller subsystems independently, begin to design small portions of the systems, and begin to understand the design principles and practices that cut across all the applications.
The goals of a Software Engineer II-Android Developer are:
- Develop an understanding of why some libraries, frameworks, and tooling are designed the way they are: what tradeoffs were made? why might the developer have done that? Through this work, develop an understanding of the practical use of design patterns.
- Begin to understand some of the externalities associated with running an application: performance, security, operations, monitoring, etc.
- Be able to troubleshoot application, infrastructure, and environment issues.
Or, more succinctly, the Software Engineer II- Android Developer is gaining the ability to determine why things are done in a particular way and apply that knowledge to new situations.
Development - 90%
- Produces estimates for their assigned tasks given well defined business requirements
- Produces quality code that meets internal and industry standards
- Promotes reusability within the application they are developing
- Writes performant code according to industry standards and project/organizational KPIs
- Understands business concepts in their area of focus
- Writes clear documentation to ensure code is understandable to provide wider focus and understanding into design decisions
- Provides input into designs for assigned tasks
- Translates designs into code for their assigned tasks
- Understands build/deployment processes and can support moving their code and any other changes (ex: database) through these phases.
- Creates build/deployment artifacts as needed
- Supports production systems through troubleshooting/triaging issues and providing on-call support where needed
Mentoring - 10%
- Participates in PR reviews with others on their team
- Provides feedback by answering questions from newer developers