How To Grow And Level Up As A Software Engineer
Based on CircleCI Engineering Competency Matrix, let's learn more about different growth opportunities as well as how we can level up our career.
Table of Contents
Guidelines
- A numbered list is used for each theme, where the higher the number is, the higher seniority level one has. Usually, each is built on top of the previous one.
- Junior-Senior levels generally focus on engineers executing works (number 1 and 2) while Staff-Principal levels focus on mentoring and guiding others in their work (number 3 and above).
- Competencies scale through impact: task → project → milestone → team → across teams → organization.
- Competencies also scale through increased frequency: sometimes → usually → always.
Technical skills
Writing code
- Consistently writes code that are testable, easily understood by other developers.
- Document effectively.
Testing
- Understands the testing pyramid (unit test, integration test, end-to-end test) and ensures that they are in good places.
- Understands the team testing approach, works to recommend solutions accordingly.
- Works with other teams to recommend solutions
- Drives the company wide testing strategy.
Debugging
- Uses a systematic approach to debug issues located within a single device.
- Proficient at using systematic debugging to diagnose cross services issues.
- Leads incident response across the organization.
Observability
- Is aware of the team monitoring philosophy.
- Uses it as a basis for suggesting stability and performance improvements.
- Drives monitoring works
- Fosters a culture of observability across several teams and organization.
Understanding code
- Understands a portion of the team domain, knows how to work productively within it.
- Understands the team’s domain at a high level, has expertise in a portion.
- Has expertise in the team’s domain, including the breadth of services, how they interact, and data flows between systems.
- Has expertise in a set of related teams’ domains and organization’s architecture.
Software architecture
- Designs functions what are aligned with the overall architecture.
- Utilizes abstractions and code isolation effectively.
- Architects scalable services and systems, makes design decisions, weights trade-offs.
- Guides several teams to foster a culture of scalable architecture.
Security
- Approaches all engineering work with a security lens, actively looks for vulnerabilities both in code and peer reviews.
- Fosters a security first mindset across the teams/organization.
Delivery
Work breakdown
- Review tasks critically and ensures that they’re appropriately scoped for continuous integration and incremental delivery.
- Reviews epics and projects and ensures that they’re broken down, prioritized properly and well understood by the team.
- Reviews cross-team works and ensures that they’re well understood by all teams.
Prioritisation
- Ensures that tasks are prioritised and dependencies are noted correctly.
- Works within team to foster a culture of priority setting and urgency in alignment with organizational strategy.
- Identifies dependencies across organization and work with individual team to resolve them before they become an issue.
Dealing with ambiguity
- Handles risk and uncertainty within your personal scope responsibly and effectively.
- Effectively handles risk within the team.
- Effectively handles risk within the across several teams and organization.
Reliability
- Understands the priorities and deliver upon them accordingly.
- Anticipates and communicates blockers, delays before they require escalation.
- Ensures expectations with the team and external stakeholders are clarified.
- Successfully manages cross-team commitments, progress, and roadmap to delivery.
Economic thinking
- When taking action, weighs cost and value in order to make the most economic action.
- Uses this well and make suggestion to teammates.
- Fosters a culture within their team where people apply economic thinking to make timely decisions.
- Fosters a culture across several teams and within the organization.
Feedback, communication, collaboration
Delivering/seeking feedback
- Delivers praise and constructive feedback to their team, teammates, and manager in a useful manner.
- Delivers feedback to their team’s business stakeholders when opportunities arise.
- Fosters a culture of delivering praise and constructive feedback within the team, across several teams and organization.
Effective communication
- Communicates effectively, clearly, concisely in written and verbal form both technical and non technical subjects.
- Is able to communicate effectively with a diverse team, set of team, across the organization.
Knowledge sharing
- Understand your domain, share your knowledge and contribute to the team’s documentation frequently.
- Fosters a culture of documentation and knowledge sharing within the team, across team and organization.
Team work
- Consistently helps their teammates overcome obstacles, resolve blockers, and complete work tasks.
- Consistently works across the organization to enable teams to support each other.
Relationship building
- Works to build strong relationships with teammates, manager, and senior engineers across the organization.
- Works to build strong relationships across the organization and leverage those to better plan for the engineering organization.
Handling disagreement
- Approaches disagreement with teammates non-defensively and uses contradictory opinions as a basis for constructive, productive conversations.
- Encourages teammates to do the same.
- Foster a culture where people are encouraged to share opinions and contribute to discussions in a respectful manner.
Leadership
Decision making
- Strives to be objective, reflects on your own biases, and holds yourself accountable for decision and outcomes.
- Takes ownership of decisions made in their team by helping teammates make clear decisions in alignment with organizational goals, backing decisions made, and taking responsibility for their success.
- Takes ownership of decisions made across teams and organization.
Driving alignment
- Strongly oriented towards goals and ensures the team is continuously working towards shared goals.
- Fosters a culture within the team of having conversations based on organizational strategy and principles to create alignment.
- Fosters a culture across several teams and organization.
Process thinking
- Regularly thinks about team practices and processes and discusses improvements with team.
- Thinks about practices and processes that affect several teams, discusses improvements with appropriate parties, and drives implementation.
- Takes ownership and responsibility for organizational practices and processes and their continuous improvement.
Facilitation
- Facilitates discussions within the team, ensuring that everyone has an opportunity to share their opinion and be heard, and no one person dominates the conversation.
- Facilitates discussions across teams, guides discussions toward decisions, clarifies and gets buy-in.
- Facilitates organization-wide discussions.
Mentoring
- Seeks out mentorship to grow their own experience.
- Seeks out mentoring opportunities specifically to create team redundancy and backfill ability.
- Mentors across teams and organization in an open, respectful, flexible, empathetic manner.
Strategic impact
Business acumen
- Has a thorough understanding of their team’s domain, and how it contributes to overall business strategy.
- Has a thorough understanding of adjacent teams’ strategies and how they map to their team and interaction points.
- Has a thorough understanding of the entire business, including individual domains, and how they contribute to overall business strategy.
Strategic work
- Understands the organization’s engineering strategy.
- Collaborates and decides on their team’s engineering work based on organization’s engineering strategy.
- Leads cross-team and organization strategic efforts, influencing decisions to achieve cross-team alignment on major goals.
Product thinking
- Understands product area of focus, how it fits into the overall business.
- Looks for opportunities to simplify product & technical design.
- Evaluates and creates new product features in collaboration with the product team.
- Recognizes product opportunities and differentiators in relation to the competition.
- Actively seeks to create or redefine roadmaps across the organization with product & business counterparts.
References:
- https://docs.google.com/spreadsheets/d/1mtn4QTvqCiS_sf6uxtCiexTo03FVjSbnwbZXE46NdQE/edit?usp=sharing
Tagged: #blog, #outlier, #success