3 - Junior Engineer
As a Junior Engineer, you’re at the start of your career. You have a reasonable understanding of core engineering concepts and are focused on expanding that understanding and growing as an engineer. You have a basic understanding of the team’s tools and processes and a broad introduction to engineering best practices and productivity skills. You have an appreciation and understanding of software engineering techniques like testing, source control and agile planning and are focused on learning more about these domains.
You’re capable of taking small well-scoped components of larger projects and features and completing these tasks within a reasonable time frame, with the mentoring and assistance of more seniors engineers. At this level, you work with more senior members of the Engineering team to ensure that you’re making steady progress on your tasks. More senior engineers may also help when you're blocked. You’re
focused on learning about and mastering Engineering principles, tools, practices and with a view to being more self-sufficient.
You and your team
You’re learning how to communicate well and how to deliver feedback to your peers and manager. When given a task with unclear requirements you're learning how to ask for clarification and how to identify underlying assumptions in design and implementation. You understand how your work fits into the larger picture for your team, and can work with Product and other engineers to help identify conflicting requirements. As you progress, you’ll start to participate more in the technical design process, often with guidance from more senior engineers.
At this level, you should be figuring out how to identify issues and learning from them to improve your skills. By the time you’re is ready to be promoted to Engineer, you will not only be successful in all aspects of this role, but also have expertise in Engineering best practices, tools, techniques and possess a solid introduction to the technologies in your domain.
Example skills and behaviors
- Demonstrates solid understanding of programming foundations – e.g.: basic data structures, classes, references, debugger usage
- Comfortable tracing through execution of calls between server and client
- Writes code in a style consistent with the codebase, creates tests for their work
- Builds small features and contributes bug fixes in a reasonable time frame
- Tests code locally and in production; code is only considered shipped when it’s been verified in production
- Actively contributes in team meetings
- Creates pull requests that clearly articulate why the change is being made, and what impact it will have
- Addresses pull request feedback before merging PRs
- Finds the right balance between persevering on a problem and asking for help
- Participates in team events, both within engineering and the broader team at Glossier
- Takes responsibility for their personal development, has a growth mindset