Career
Software Engineer // Progression Framework
The progression framework is a tool for the individual contributor to see where their responsibilities lie and what they should be focusing on in their current role. It gives an overview of a developer’s progression through their time in Abtion.
We know that there are as many combinations of skill sets as there are people; The framework is not meant to be a perfectly precise description of reality but is meant as a guideline for developers.
The framework is comprised of six roles:
- Associate Software Engineer
- Software Engineer
- Seasoned Software Engineer
- Senior Software Engineer
- Lead Software Engineer
- Principal Software Engineer
Each role contains descriptions of what is expected from an employee. When taking on a new role, all the descriptions from previous roles still apply.
The descriptions are split into the following categories:
Scope
The scope describes what part of a project’s life cycle the employee is expected to participate in or drive. See an overview of the stages of a project and their drivers here:
Project lifecycle - Roles and their responsibility
Good code
In Abtion we believe that robust and maintainable code makes for future-proof systems for our clients. Therefore we focus on themes like readability, test coverage, and instant feedback.
Good colleague
In Abtion we work closely in teams and across departments to share knowledge and ideas that can benefit everyone.
Therefore it is important for us that our employees show good colleagueship through respectful communication and constructive feedback.
Recognized as
This will hold a selection of recognitions typically held by an employee within that role.
Each role also has a section called Additional reading with useful concepts.
Associate Software engineer
Developers usually spend 1 year in this role.
Scope
- You focus on the task at hand.
Good code
-
You write simple code that is easy for others to understand.
-
You write code that passes CI.
Good colleague
-
You care about your work.
-
You keep your peers updated on your situation.
-
You seek to improve your work.
-
You grow through pair programming with team members of various seniority.
Recognized as
-
Someone who consistently completes work on a task-level.
-
Someone who delivers tested code.
-
Someone who proactively seeks to improve themselves and their work.
-
Someone who reaches out for help when appropriate.
Additional reading
- The Testing Pyramid
- Red-green-refactor
- Basic git concepts
- Terminal
- Linting
- Basic data structures
- APIs
- eXtreme Programming concepts
Software engineer
Developers usually spend 2 years in this role.
Scope
-
You focus on the task and collaborate on the current feature.
-
You help setup projects.
Good code
-
You document your choices around your code.
-
You deliver features by merging small incremental changes.
-
You write tests for your code.
Good colleague
-
You deliver work that is relevant within the current milestone of a project.
-
You respect the client’s goals.
-
You give feedback on colleagues’ work.
-
You understand the benefits and drawbacks of your framework and tools of choice.
-
You identify unclear requirements.
-
You communicate promptly when issues arise.
Recognized as
-
Someone who consistently closes tasks in their area of expertise collaborating with less experienced developers.
-
Someone who works within the limitations of the project scope.
Additional reading
- Acceptance testing
- Test isolation vs test speed
- Spike solutions
- ABC metric
- SQL
- HTTP protocol and requests
- Mocking and stubbing
Seasoned Software Engineer
Developers usually spend 3 years in this role.
Scope
-
You drive features.
-
You set up projects with additional tools, eg. CI, error monitoring, and infrastructure.
-
You help with estimations.
Good code
-
You understand and use different types of tests and testing concepts.
-
You think long-term usability into your work.
-
You work test-driven.
Good colleague
-
You are able to prioritize tasks.
-
You can give a high-level overview of the project.
-
You unblock the project.
-
You actively give feedback.
-
You enforce a culture of knowledge sharing, eg. through pair programming.
Recognized as
-
Someone who shows ownership of the project and is comfortable across the stack.
-
Someone who’s a driving force during the entire project lifecycle.
-
Someone who uses their technical knowledge to deliver business value.
-
Someone who can distinguish unimportant details from critical tasks that deliver value to the client.
Additional reading
- Design patterns
- Trunk based development
- Feature flags
- Docker
- Web app monitoring
- Lean
Senior software engineer
Developers usually spend 4 years in this role.
Scope
-
You partner with product managers and designers to drive technical decisions based on the highest output for all parties.
-
You drive tasks from client research to client acceptance.
Good code
-
You understand how to balance technical, analytical, and product needs.
-
You reinforce a culture of testing.
-
You leave codebases better than how you found them.
Good colleague
-
You share ownership of the entire project, including areas outside of the codebase.
-
You can give a detailed overview of the project.
-
You reinforce a culture of knowledge sharing.
-
You build strong relationships with your client, team, manager, and department.
-
You help your team members grow through various means of feedback.
-
You raise awareness of unsustainable pace within a team.
Recognized as
-
Someone who embraces big challenges and turns them into successes.
-
Someone who can solve a bottleneck.
-
An expert in at least one area of technology, eg. browser rendering or TDD.
-
Someone who handles highly complex technical challenges across the entire stack.
-
Someone who has designed and built long-standing solutions.
-
Someone who works with uncertainty.
-
Someone who produces quality code.
-
Someone who makes others better through code reviews, documentation, technical guidance, mentoring, etc.
Additional reading
- SOLID principles
- FIRST principles
- Testing of third-party integrations
- Scalability
- Integration design patterns
- Docker, kubernetes and other cloud-hosting technologies
- Performance testing
- Creating a startup (references such as “The Lean Startup”)
- Non-violent communication
Lead Software Engineer
Scope
-
You take on a bigger role in researching and consulting projects.
-
You transform clients’ needs to a foundation for your team members to continue working on through conversations with the client.
-
You take part in discussions about development strategy.
Good code
-
You architect systems that can handle many potential futures.
-
You architect solutions that are easily maintained over time.
-
You propose strategies around technical problems on your team.
-
You set standards for your team.
-
You foresee technical issues at the product stage.
-
You make your technical decisions based on the business context.
Good colleague
-
You handle miscommunications before they become a problem.
-
You identify areas of improvement for the team.
-
You warn relevant stakeholders of potential issues.
-
You ensure collective product ownership so the team is not dependent on any team member.
Recognized as
-
A helpful consultant that consistently delivers high-value solutions for real problems.
-
Someone who knows how to transform a legacy system into a successful project.
-
Someone who leads their team from initial client meeting to delivery.
-
A strong technical leader that proactively identifies and clarifies issues whether technical or business-related.
-
Someone who understands the broad architecture of the entire system and is capable of explaining the technical decisions taken by the team.
-
Someone who is sought out for technical guidance.
-
Someone who has turned around highly complex projects so that less experienced developers can collaborate on them.
Additional reading
- Tech Leadership skills
- How TDD influences code structure
- Product Life Cycle
- Techniques for dealing with uncertainty and ambiguity
- Consulting techniques
Principal Software Engineer
Scope
-
You focus on shaping our upcoming projects from tooling to sales.
-
You focus on strategic decisions in the technical department.
-
You focus on growing other developers.
-
You have significant ownership in areas such as tooling, scalability, security, processes, design.
Good code
-
You lay out strategies on legacy projects.
-
You think sales into your decisions on strategy.
-
Your technical decisions are based on the highest output value for the business.
-
You bring new working-methods that improve the company’s overall performance.
Good colleague
-
You collaborate with sales about high-level estimates and prioritization.
-
You collaborate with sales on how to sell projects.
-
You focus on the growth of your team’s productivity and career.
-
You provide executives high-level guidance on technical decisions when necessary.
-
You mentor other engineers to reach your level (and surpass it).
Recognized as
-
Someone who plays a key role in the technical direction of the company and has introduced positive changes across multiple teams.
-
Someone who has solved bottlenecks in several projects throughout the years, making themselves replaceable after a planned period of time.
-
Someone who has mentored several teams on how to reduce the complexity of projects, services, and processes to get more done with less work.
-
A technical leader with a cross-organizational mindset.
-
Someone who excels at getting teams to focus on delivering high-impact value.
-
Someone who creates a plan to simplify complex apps that the team can implement.
-
Someone who has a long track record in the technical industry.
Additional reading
- Security tests
- Organizational leverage
- Change management
- How professional service firms operate and succeed