Getting stuff done. The level of complexity of tasks that you can undertake and the scale of code that you can write to a production-standard. Remember - everyone needs help and should ask for it! Do not take any of these expectations as a suggestion that you should not seek assistance from your peers.
Level 1
Learning what it takes to deliver code professionally.
- is learning under close instruction.
- follows a combination of self-learning, structured tutorship and shadowing more experienced engineers to learn how to work on projects.
Level 2
Works under supervision but trusted to deliver on their own within clearly defined areas of low complexity.
- works on simple tasks from larger problems that have been broken down and managed for them.
- produces valuable output for their project, but at a slower rate compared to more senior engineers and often with several rework iterations.
- is expected to develop solutions to simple problems independently, submit for peer review and not necessarily be involved in the release process.
- pairs with more senior engineers to tackle harder problems.
Level 3
Trusted to deliver code against pre-designed solutions within their area of expertise to budget.
- provides solutions to simple and medium complexity problems and participates in the release process.
- produces valuable output at a rate comparable to senior engineers when working on challenges within their knowledge domain and up to medium complexity.
- is able to work within estimates they have provided, generally.
- is capable of developing and releasing a medium complexity application with minimal oversight.
- is pragmatic about the time they spend on a problem before escalating to others.
- considers most edge cases when developing their code.
Level 4
Trusted to design the solutions and implement the code for complex work within their area of expertise to budget.
- tackles large components such as integrations or significant features.
- produces valuable output at a consistent rate across most aspects of their work with sufficient domain knowledge and experience to keep learning curves short.
- delivers solutions to more complex problems (e.g. technical design and implementation of a 3rd party integration, setting up the testing architecture for a project, building a library that can benefit multiple projects) with minimal oversight
- is capable of managing a predefined application deployment process.
- understands the principle of feature toggling to streamline lead time and how to introduce it to an in-flight project.
- can analyse legacy systems of medium complexity for maintenance/auditing and smaller improvements within their fields of expertise
- considers edge cases and handles them pragmatically within project constraints.
Level 5
Designs solutions for complex work for their team, supporting and overseeing as well as delivering their own value.
- is capable of architecting full applications or larger complex sub-projects within an area of expertise.
- produces valuable output quickly and efficiently for themselves, although still delivering at rates comparable to a Senior I as they invest more of their time upskilling and unblocking others. Very little rework is required for their PRs
- is capable of building distributed architecture with remote services (via suitable APIs), co-ordinating the transfer of data between multiple systems.
- collaborates with DevOps to define a deployment process suitable for the team, according to project goals and complexities.
- understands the impact of deploying at any given time, any potential downtime, how to rollback and restore to a previous state.
- can analyse legacy systems of high complexity for auditing and ongoing project development.