Mid-Level Software Engineer
Purpose of the role
The overarching purposes of the Mid-Level Software Engineer (MSE) role are:
- To reliably execute and own value delivery: The Mid-Level Software engineer consistently completes significant features or scoped projects from start to finish with high quality, speed, seeking support as required. This demonstrates they are a core, dependable contributor to the team's output.
- To broaden knowledge for strategic impact: The Mid-Level Software engineer actively seeks out, understands and applies design principles, system knowledge, and customer context to build breadth of knowledge and experience. This ensures that the MSE is not just executing on tasks but building the foundational understanding necessary to make strategic decisions.
The central purpose of the Mid-Level Software Engineer role is to serve as a stage for developing expertise while continuing to deliver products. It is the period of intensive, practical learning where the engineer broadens their technical skills, system knowledge, and understanding of the product. The MSE proves they can reliably deliver high-quality work without constant supervision while actively taking on challenging tasks, making necessary mistakes (and learning from them!), and accumulating the experience required to become an expert.
About the role
A Mid-Level Software Engineer is a reliable and effective team member who demonstrates ongoing growth in technical skills. The MSE continuously expands and applies their knowledge of design principles and testing methods across various systems and technologies, actively building the foundational breadth of expertise required for technical decision making. Mid-Level Software Engineers are accountable for independently delivering significant features from inception to completion, thereby gaining valuable experience in navigating ambiguity, addressing unforeseen complexities, and making critical technical trade-offs.
Beyond code, the MSE actively seeks out what customers need, and understand the team's business goals, ensuring technical choices deliver real value. They also contribute to the team capacity by sharing their newly acquired knowledge and giving helpful, teaching-focused feedback to improve everyone's craft.
Competencies
A mid software engineer will be consistently doing / exhibiting most of the points below.
Leadership
Leadership is demonstrated through internal influence and a commitment to making the everyday work of the team better.
- Contribution to Engineering Improvement: Seeks out and implements meaningful improvements to team processes, tools, and shared infrastructure. Ensures the benefits are visible to the whole team.
Mentorship
Mentorship is focused on accelerating their own learning and immediately sharing that fresh, hard-earned knowledge with peers and less experienced engineers to accelerate their learning too.
- Self-Directed Learning: Seeks out and uses new knowledge, technologies, and practices proactively. Has become a versatile engineer with a wide range of skills spanning multiple systems.
- Peer Support: Consistently and measurably improves the team's technical capability through mentorship, pairing, and knowledge sharing. A reliable source of support for colleagues.
Technical Expertise (was Role Specific)
This competency is where fundamental knowledge is forged into practical expertise. It's the period of broadening skills by actively seeking and applying new architectural knowledge.
- Design & Architecture: Leads design discussions within the team. Articulates trade-offs clearly and helps others develop their design thinking. Technical decisions are well-reasoned and consider the wider system.
- High-Quality Code Standards: Consistently produces code of a high standard and actively raises the bar in code review. Their work is used as a reference point by peers.
- System Health & Code Refinement: Develops and progresses a coherent view of system health across multiple areas. Identifies structural problems and drives refactoring efforts to simplify complexity at scale.
- Reduces Complexity: Acts as a consistent voice for simplicity in technical discussions. Proactively surfaces over-engineered solutions and helps the team converge on clearer alternatives.
Communication
The Mid-Level Software Engineer expands communication from team-level clarity to influencing across the technical organisation.
- Cross-Functional Clarity: Proactively communicates technical context and constraints to drive better decisions across product, design, and engineering. Rarely needs prompting.
- Constructive Dialogue: Consistently leads technical discussions to positive outcomes. Known for well-reasoned contributions that help the team reach better decisions faster.
- Documentation: Produces authoritative documentation that is widely referenced. Establishes templates or standards that improve documentation quality across the team.
Emotional Intelligence
This competency focuses on the resilience needed to grow through mistakes and maintain a positive, constructive attitude during the challenges of the Mid-Level journey.
- Growth and Resilience: Consistently models resilience and a growth mindset. Helps create a team culture where mistakes are handled openly and learning is prioritised.
- Empathy and Collaboration: Consistently puts user needs and team dynamics at the centre of their work. Acts as a calming, connective presence in cross-functional collaboration.
Delivery
This is the competency of independent ownership and accountability, where the Mid-Level Software Engineer gains experience to be able to manage the ambiguity and unexpected challenges of real-world projects.
- End-to-End Feature Delivery: Delivers complex features with confidence and minimal supervision. Anticipates risks early and adapts plans to stay on track.
- Process Contribution: Takes a leading role in scoping and breaking down work. Identifies and mitigates delivery risks proactively, helping the team plan with confidence.
- System Ownership: Takes clear ownership of production issues from detection to resolution. Leads the investigation, communicates clearly throughout, and drives preventative action afterwards.
- Production Troubleshooting: Leads incident response confidently. Identifies systemic root causes and drives lasting fixes that prevent recurrence.
Business Knowledge
This focus is on building the foundation to connect code to customer needs and team objectives.
- Wider System Awareness: Actively uses system-wide awareness to inform technical decisions. Identifies risks and opportunities that span team or system boundaries.
- Challenging Product Decisions: Regularly brings customer and business context into engineering discussions. Challenges assumptions constructively and helps the team make better product-engineering trade-offs.