# Making a Career (Draft)


That is a draft page.

These are the expected competencies of team members at our company by job grade.

# Mastery levels for software engineers

# Intermediate Engineer

Leadership competencies

  • Communicates in a clear and effective manner.
  • Understands organization processes.
  • Largely concentrates on growing themselves.
  • Often works with other team members to grow their own understanding of the team’s domain through code reviews.
  • Writes RFC.
  • Participates in code reviews and uses best practices when giving and receiving feedback.
  • Provides positive publically and negative feedback.
  • Makes responsible decisions, identifying the consequences of each option, evaluating trade-offs and seeking advice from others when necessary.
  • Thinks critically by understanding why something needs to be done, determining the root cause of the problem, identifying objectives and examining previous efforts.
  • Shares knowledge with team members after becoming a domain expert.
  • Gives positive feedback in public and negative feedback privately with care.
  • Executes tasks in team projects, demonstrating ownership of them from conception to completion.
  • Requires supervision to deliver projects in time, growing bias for action.
  • Recognises complexity of the team’s product or the team’s process, and proposes solutions accordingly.
  • Capable of implementing solutions based on the complexity, and asks for guidance when the complexity increases unexpectedly.
  • Analyzes team processes and proposes areas where efficiency improvements can be made.
  • Requests expert help from others recognizing that diverse opinions/experience improve the quality of their solution.
  • Balances short term gains and long term benefit with team’s help. For example, advocating for technical debt resolution and understanding the opportunity cost in comparison to a quick customer win.
  • Creates RFC for their team that clearly defines the problem, offers alternatives, and proposes a solution. These RFC are small in scope, looking to address problems with a small surface area.
  • Incorporates Iteration in every aspect of your job.

Technical competencies

  • Considers quality, security, and performance on the tasks.
  • Seeks guidance when blocked and iterates to a solution.
  • Writes tests with every MR and works to uplift the quality of the code.
  • Is aware of company established development processes.
  • Able to detect security issues in other's code.
  • Proactively looks for opportunities to eliminate technical debt by creating technical debt issues, resolving technical debt issues and writing quality code that reduces additional technical debt.
  • Performs thorough reviews within their domain and submits helpful comments.
  • Understands how to debug performance problems.
  • When working in an existing code area, leaves it in a better state than before.
  • Proficient or fluent with one or more database languages to design, create and manage databases.
  • Proficient or fluent with programming languages and their frameworks.
  • Aware of every code guidelines we follow.
  • Able to use monitoring tools (site24x7, sentry, grafana).
  • Develops documentation and instructions.

# Senior engineer

Leadership competencies

  • Communicates clearly and effectively, both written and verbally, when advising, setting expectations, or suggesting. improvements. This applies whether interacting with team members and customers.

  • Able to deliver work, even when given unclear requirements, within the context of their team.

  • Able to suggest alternative solutions to customer problems based on what they know about other areas of the product.

  • Looks for opportunities for process improvements within their team and works with others to implement process changes.

  • Leads technical architecture discussions and help drive technical decisions

  • Performs Code Reviews on a regular cadence

  • Engages with the stable-counterparts for their team looking at how to improve the working relationships and processes.

  • Represents their team, and considers the impact to the team, when in conversations with others.

  • Provides feedback that focuses on the business impact of the behaviour.

  • Demonstrates ownership of projects that require collaboration with other teams.

  • Leads conversations towards action and encourages bias for action to deliver results.

  • Helps others in their team to achieve their team's goals.

  • Follows up on suggestions that they make and issues that they create.

  • Seeks out ways to be more effective in their role, while also starting to mentor others in ways to work efficiently.

  • Proactively takes on work that enables greater efficiency of others in the team.

  • Seeks out diverse opinions to improve the quality of the team's work, for example through code review from outside the team.

  • Uses people's talents to maximize the results of their group.

  • Independently balances short term gains and long term benefit.

  • Creates RFC for the team that have a wide scope but still contain an iterative proposal for delivering the outcome.

  • Identifies opportunities to improve the processes around iteration.

  • Holds their team to a high standard of transparency and encourages others to work in the open.

  • Takes part in the hiring process to help ensure that we bring in a wide variety of experience into our teams.

Technical competencies

  • Contributes to the team’s understanding of quality and how it impacts the team’s domain with respect to their role.
  • Able to resolve complex challenges and performance issues.
  • Mentors others on best practices.
  • Coaches others on improving their tests.
  • Always looks to improve our test coverage with every MR coded or reviewed.
  • Ensures security best practices are followed across many domains and escalate security risks
  • Able to take on large issues with vague requirements and design an implementation.
  • Implements the Iteration value when faced with an issue that grows in size or complexity by converting the issue into an Epic or breaking it down into smaller issues.
  • Helps to set and enforce coding standards.
  • Looks to maintain coding consistency across the code base.
  • Identifies slow and inefficient code produced by team members
  • Provides high level of expertise in programming languages that our company use.
  • Understands the DB constraints.

# Staff engineer

Leadership competencies

  • Continually works with others across the organization to help team members grow their understanding of their team’s domain and technology.

  • Communicates clearly and effectively, both written and verbally.

  • Makes responsible decisions, and evaluates tradeoffs.

  • Exhibits a deep understanding of our products, how customers use them, and how they fit into the larger business.

  • Looks for opportunities for process improvements and opportunities to exhibit leadership for organizational initiatives.

  • Able to recognize a good solution when they see one, and able to clearly explain its merits to team members, community members, managers or customers.

  • Leverages their increasingly on-demand time to help others, efficiently unblock them and enable them to move forward.

  • Able to deliver results despite starting from unclear requirements.

  • Works frequently with other teams to coordinate major changes leading to efficient solutions

  • Performs Code Reviews across the projects on a regular cadence

  • Is able to take a long term goal and turn this into small actionable steps that can be implemented in an iterative way.

  • Champions a no-blame culture and encourages learning from mistakes.

Technical competencies

  • Has a broad skill-set with in-depth expertise in several areas.
  • Blends technical, product and design strategy, helping the team to be more productive while interfacing with teams.
  • Reaches beyond immediate needs, independently considering the longer-term, and is always looking beyond for ways to have a broad impact.
  • Addresses cross-team challenges related to customers, quality and security.
  • Able to take on cross-team complex requirements and decompose them into a proposal of small deliverables.
  • Engages in the Architecture Practice to contribute to and help with the most challenging technical initiatives.
  • Advocates for quality and makes sure it is everyone's responsibility.
  • Mentors others on how to maintain and continue to raise the level of quality in everything we produce.
  • Holds MRs to the high standards of our definition of done and collaborate with others to improve their implementation, tests and prevent any future regressions.
  • Advocates for tech debt, customer issues, and high severity bugs.
  • Advocates for security.
  • Able to take on complex requirements and decompose them into a proposal of small deliverables.
  • Able to quickly pivot a solution based on feedback or complexity.
  • Acts as a gate keeper for quality.
  • Vast knowledge of programming languages and their frameworks that our company use.
  • Improves engineering standards, tooling, and processes