Skip to content

Latest commit

 

History

History
263 lines (204 loc) · 30.9 KB

readme.md

File metadata and controls

263 lines (204 loc) · 30.9 KB

Software Engineers

This page defines the professional career paths (ladder) for software engineers. It represents the way I have decided to build it per our organization, taking into considerations the size of the engineering team, the scale, the skills etc.

Every software engineer employee has a level, which describes the scope, complexity, and impact of their role and factors into compensation. When a new developer joins, we evaluate his abilities and try to classify him based on the interview process and his experience. We understand this may not reflect the actual capabilities, so on his first months we will evaluate him and adapt as needed.

IC is in-depended contributor
EM is engineering manager

IC begin at L1.
EM begin at L4.

image


L1 IC - Software Engineer

Usually referred as Junior Engineer

Scope & Impact

As a L1 developer, you’re at the start of your career. You have a reasonable understanding of core engineering concepts and are focused on expanding that understanding and growing as an engineer. You have a basic understanding of the team’s tools and processes and a broad introduction to engineering best practices and productivity skills. You have an appreciation and understanding of software engineering techniques like testing, source control and agile planning and are focused on learning more about these domains.

Typical Experience

Engineers typically acquire the skills, knowledge, and experience necessary to meet the expectations of this level by earning a related Bachelor's degree. Usually developers with under 0-2 year of experience will be at that level. in some case it is person’s first full-time engineering job.

Responsibility & Growth

Responsibility Growth Behaviors
Execution

- You are able to handle bugs

- Number of bugs you introduce are low and you are able to handle them when they appear

- You are able to handle 0.5-1 point stories with assistance

- You ask good questions

- You produce small & good quality PRs

- The number of iteration on PR is low

- You test your code

- You test for business requirements and e2e

- You update on your progress and when you need help

Technical Proficiency

- You have good knowledge on the IDE

- You understand and using Design patterns

- You write good unit tests

- You know how to debug

- You update Jira properly

- You enriched yourself in the relevant technology stack

Leadership & Collaboration - You and your Team

- You properly communicate with your leaders issues

- You participate in team events & knowledge sharing

- Finds the right balance between persevering on a problem and asking for help

- You understand how your work fits into the larger picture for your team, and can work with product and other engineers to help identify conflicting requirements.

Leadership & Collaboration - You and the R&D N/A
Leadership & Collaboration - You and the company N/A
Business / Domain Knowledge - You gain knowledge on the mission you are allocated and you find your way around it when you need to handle bugs and stories
Culture

- Takes responsibility for their personal development, has a growth mindset

- Good communicator

- Taking responsibility of things you build


L2 IC - Software Engineer

Usually referred as mid level engineer

Scope & Impact

As a L2 developer you are contributor! you understand of core software concepts such as code that performs at scale, resiliency, caching, databases, SOLID, consideration for web development and more. You are growing as a developer, learning the team's tools and current processes, and developing productivity skills. You keep understanding the team's domains and responsibilities. You aim to increase your capacity and value and improve yourself as a technical contributor.

Typical Experience**

Engineers and managers typically acquire the skills, knowledge, and experience necessary to meet the expectations of this level with a relevant Bachelor’s degree 2+ years of relevant industry experience.

Responsibility & Growth

Responsibility Growth Behaviors
Execution

- You are able to handle bugs & HOTFIXes & Tarazans

- Number of bugs you introduce are low and you are able to handle them when they appear

- You are able to handle 1-2 point stories and completing all its tasks in a reasonable time frame with assistance from a lead engineer or team leader

- You are able to perform developing, testing, releasing, monitoring and fixing.

- You have increased your contribution for the team backlog, while making sure you keep a high level of code and deliverables.

- You ask good questions, yet you are more independent.

- You update on your progress and when you need help.

- You documents your work – e.g.: descriptive PRs, READMEs, entries to the wiki (confluence)

Technical Proficiency

- You write SOLID code

- You monitor the environments and able to pick up issues without someone needs to remind you

- You increased your technology proficiency around your chapter

- You enriched yourself in the relevant technology stack

Leadership & Collaboration - You and your Team

- You properly communicate with your leaders issues

- You participate in team events & knowledge sharing

- Finds the right balance between persevering on a problem and asking for help

Leadership & Collaboration - You and the R&D N/A
Leadership & Collaboration - You and the company N/A
Business / Domain Knowledge - You have a very good understanding the team's domains and responsibilities and can quickly gets your feet on any aspect related to it.
Culture

- Good communicator

- Taking ownership and responsibility of things you build

- You keep on sharing the company values and gain more responsibilities and trust.


L3 IC - Software Engineer

Usually referred to experienced engineer

Scope & Impact

As a L3 developer, you are a solid contributor! you display a solid understanding of core software concepts such as code that performs at scale, resiliency, caching, databases, SOLID, consideration for web development and more. You are able to handle different technologies and you are productive. You understand our infrastructure and how you can use it to leverage your requirements. You also have a strong background in engineering best-practices like testing, source control, and agile planning and estimations.

Typical Experience

Engineers and managers typically acquire the skills, knowledge, and experience necessary to meet the expectations of this level with a relevant Bachelor’s degree and 5+ years of relevant industry experience.

Responsibility & Growth

Responsibility Growth Behaviors
Execution

- You are able to handle 1-2 point stories and completing all its tasks in a reasonable time frame with minimum assistance

- You are able to perform an end to end tasks, which include planning, developing, testing, releasing, monitoring and fixing.

- You have increased your contribution for the team backlog, while making sure you keep a high level of code and deliverables.

- You gained good understand on development process including planning and estimations.

- You have a good contribution to the backlog

- You are able to issue a postmortem

- You are able to create HLD for small issues (PBIs)

- You are able to create LLD for your issues (PBIs)

Technical Proficiency

- You understand software scale, performance and resilience and highly concerned about it.

- You increased your technology proficiency around your chapter and gained overall knowledge on other technologies

- You are open minded and willing to learn new technologies

- Writes performant and secure code – e.g.: avoids n+1 problems, uses database indexes, caches when appropriate, keeps size of payload small, etc.

Leadership & Collaboration - You and your Team

- You assist team members. Team members feels they can contact you for help.

- Collaborate on PRs (not approval rather assisting)

- You able to mentor / on board a new team member in the mission or in the chapter.

- You assist to motivate you team

Leadership & Collaboration - You and the R&D N/A
Leadership & Collaboration - You and the company N/A
Business / Domain Knowledge Same as L2
Culture

- You are not scare and move with confidence

- You are able to take small risks

- You feel accountable for the mission


L4 IC - Software Engineer

Usually referred to senior engineer

Scope & Impact

As a L4 developer strong independent contributor! you display a solid understanding of core software concepts such as code that performs at scale, resiliency, caching, databases, SOLID, consideration for web development and more. You are able to handle different technologies and you are productive. You understand our infrastructure and how you can use it to leverage your requirements. You also have a strong background in engineering best-practices like testing, source control, and agile planning and estimations.

Typical Experience

Engineers and managers typically acquire the skills, knowledge, and experience necessary to meet the expectations of this level with a relevant Bachelor’s degree and 7+ years of relevant industry experience.

Responsibility & Growth

Responsibility Growth Behaviors
Execution

- You are able to perform HLD for mid-large features

- You can gain a responsibility to deliver a feature with one or more stories

- You are able to handle critical bugs & critical HOTFIXes

- You are able to perform research and properly conclude them

- You have a high contribution to the backlog

- You are independent and only mostly ask for guidance questions

- You update on your progress

- You are able to plan and estimate a feature

Technical Proficiency - Able to use the right tool for the job: c#, nodejs, golang, cassandra, elastic, mssql and etc. You are not afraid to try new technologies.
Leadership & Collaboration - You and your Team

- You participate in and contribute to team events & knowledge sharing

- You are identified by your team as a high technical proficiency and team members feels they can contact you for help.

- You perform PRs to other team members and other members of the chapter

- You able to mentor / on board a new team member in the mission or in the chapter.

- You are able to lead small squad (1-2 engineers) the mission

Leadership & Collaboration - You and the R&D - You have an impact on the team and on the department
Leadership & Collaboration - You and the company N/A
Business / Domain Knowledge - You have a very good understanding the team's domains and responsibilities and can quickly gets your feet on any aspect related to it.
Culture

- Team Player

- You focus on Value and impact you produce.

- Taking responsibility of things you and the team build

- Mindful and empathetic in their communication – strives to understand context and assumes best intent from others

- Handles change with maturity, assumes best intent in others

- Displays a strong sense of ownership within the domains

- Communicates the status of their work proactively; stakeholders aren’t left guessing what’s happening

L4 EM - Software Engineer

Usually referred to team leader

Scope & Impact

As a Team Lead:

  • You are allocated with a chapter (technology proficiency)
  • You’re are a direct manager of (usually) 1-5 direct reports within your chapter
  • You are allocated with a mission / application / sub-mission (area in a mission)

You have project management skills and you are comfortable with management practices. You track the team's efficiency and quality of work and regularly assist in adjusting processes and timelines to ensure that they’re meeting expectations. You find ways to keep your team motivated and you make sure that technically the team is aligned with the missions, culture and practices. You produce the high level design for the team and participating with future team feature plannings.

Typical Experience

Engineers and managers typically acquire the skills, knowledge, and experience necessary to meet the expectations of this level with a relevant Bachelor’s degree and 7+ years of relevant industry experience.

Responsibility & Growth

Responsibility Growth Behaviors
Execution

- Drives execution by organizing team work, setting goals, and holding the team accountable.

- Monitors and escalates issues with team pace.

- Empowers team members to own their work.

- Works with their team and adjacent teams to solve problems. Escalates problems that have wider scope.

- You spend less time writing code, but there is an expectation that you still engage in some technical deliverables such as bug fixes and small features, without blocking or slowing down your team’s progress.

- More than writing code, you’re responsible for identifying process bottlenecks and clearing any potential roadblocks to success for your team.

- You make sure that the backlog is ready for the team and you produce HLD design based on the architects vision.

- You conduct frequent PRs and insuring the team is produced high quality software with SOLID principles.

- You try to increase the capacity of your mission and your chapter and focus on value.

- You train your chapter and your mission employees as needed

- You’ll partner closely with architect and the PO to manage feature and story scope and ensure that technical deliverables are met.

- You are also expected to identify areas of technical debt, to carry out cost/benefit analyses for resolving it, and communicating suggested timelines to the Product and Engineering teams in order to do so

- Your team handles issues reported quickly and efficiently

- Understands the prioritization process, and how projects need to fit into broader goals for the company

- Proactively identifies and addresses potential roadblocks before they impact the team

Technical Proficiency

- Is accountable for the technical output of the chapter.

- Is accountable for the technical output of the mission.

- You build yourself and your chapter knowledge constantly with technologies, tools and practices

- Guides others on the team through change

Leadership & Collaboration - You and your Team

- Communicates strategy, rationale, and progress within the team and to external stakeholders.

- Resolves interpersonal and technical conflict within the team.

- Coaches, provides timely, actionable feedback, and invests time in career development of team members; e.g., via 1:1s and aligning employee growth with opportunity.

- Responsible for performance reviews, performance management, promotions, career planning, managing low performers, promotions, and terminations.

- You identify personal issues and work to resolve them

- You are responsible for the direct reports retention

- Facilitates healthy discussions across the Engineering team

- Helps team understand the broader context behind change so that trust is fostered across the company

Leadership & Collaboration - You and the R&D

- You are a great leader

- You are able to perform 1 on 1

- You are able to recruit and dismiss employees

- You are able to run performance reviews and you provide meaningful feedback

Leadership & Collaboration - You and the company

- Collaborates with stakeholders including product managers, and others in development and execution of the team’s road-map.

- Works with leaders across Design/UX, Data, and Product to ensure product being built satisfies business objectives

Business / Domain Knowledge - Very strong domain / mission / application knowledge
Culture

- You make sure all team members are aligned with the culture and values. You encourage the team to gain responsibility and trust.

- You derive your team to be communicative and focus on value

- Coaches towards mindful communication

- Your team is accountable

- Everyone loves working with you

- Lead company culture.


L5 IC - Software Engineer

Usually referred to tech leader

Scope & Impact

You’re at a level where you’re seen as extremely reliable and a master of at your domains. You can own your independent any level of feature or epic, from small-complex, all the way through from high level design, to low level design to launch with proper code review and pull requests. You’re capable of owning high level design and low level design for most tasks, and understand the tradeoffs in creating good software, e.g. performance vs scale vs latency vs velocity and more. You hold a depth of knowledge in systems that enable you to debug them effectively without issues. In addition to writing consistently high-quality code, you're aware of industry best practices and trends. You are productive with high capacity and you take the initiative to fix issues before being assigned them.

Typical Experience

Engineers and managers typically acquire the skills, knowledge, and experience necessary to meet the expectations of this level with a relevant Bachelor’s degree and 7+ years of relevant industry experience.

Responsibility & Growth

Responsibility Growth Behaviors
Execution

- You are able to perform HLD for epics

- You can gain a responsibility to deliver an epic from end to end

- You are able to perform research and properly conclude them

- You require very little oversight beyond high-level direction; you can take a complex user story.

- You show initiative beyond knocking tasks off a list; you're able to identify and suggest areas of future work for yourself or your team.

- You are able to plan and estimate an epic

- You are concerned with productivity of yourself and for the team.

- You're responsible for complex tasks and complete them despite roadblocks, grabbing others for help or insight as necessary.

- You deliver products with confidence.

- You understand the business that their code supports and use this knowledge to influence your task prioritization. In general, you can identify risks in code, features, and design, and communicate these to the appropriate parties.

- Defines technical strategy and executes to improve products, infrastructure, processes, or organizations.

- Makes pragmatic design decisions; identifies risks, trade-offs, and alternative solutions to be considered

Technical Proficiency

- You are very technical and have high technology proficiency in frontend, backend and devops

- You are able to evaluate new technologies and you feel comfortable learning new tools, new languages and new practices

- You are a great delegate / proxy person. You know who know what and you are able to proxy issues or questions to the proper person

- You constantly enriched yourself in the relevant technology stack

Leadership & Collaboration - You and your Team

- You perform PRs to other team members and other members of the chapter and across missions

- Assist in the team HLD reviews

- You are able to lead a squad (1-4 engineers) the mission

Leadership & Collaboration - You and the R&D

- You have an increased impact on the team and on the department

- You impact other teams

- Mentors other engineers across the team

- Influences senior leaders on engineering strategy

- Ensures technical designs are properly evaluated for important projects and advises teams to improve execution.

- Uses negotiation and patience to collaborate with other senior leaders, ensuring progress and setting the example for others.

Leadership & Collaboration - You and the company

- You work effectively with non-tech members of the organization.

- Collaborates effectively with peers in product management, design/UX, and data

- Builds relationships outside their direct team, including with business stakeholders

Business / Domain Knowledge

- You have excellent knowledge of your business domain / mission.

- You have a reasonable understanding of all the domains and missions.

- You understand other domains and how they fit in the bug picture

Culture

- You gain responsibility and trust and you influence others in the team to also do so.

- Builds strong, collaborative relationships in and out of the team

L5 EM - Software Engineer

Usually refers to senior team leader

Scope & Impact

As a Senior Team Lead:

  • You are allocated with a chapter (technology proficiency) and you lead a chapter Guild
  • You’re are a direct manager of (usually) 3-8 direct reports within your chapter
  • You are allocated with a mission

You have demonstrated ability to successfully lead people, teams or projects multiple times in different contexts. People love working with you and evaluate your leadership and technical skills.

Typical Experience

Engineers and managers typically acquire the skills, knowledge, and experience necessary to meet the expectations of this level with a relevant Bachelor’s degree and 9+ years of relevant industry experience.

Responsibility & Growth

Responsibility Growth Behaviors
Execution

- Implements effective processes to ensure their team is communicating effectively and work is on track

- Scopes work on complex projects involving multiple engineers, and ensures the team delivers on time

- Based on team size, you are expected to contribute to the team burn-down. If properly managed, as a team leader you should be able to achieve at least 15% hands-on.

- Measure and monitor the impact of your deliverables

Technical Proficiency - As Team Lead, you are expected to have good time management skills.
You and your Team - Strikes the right balance between finding opportunities for the team to learn/improve, and shipping projects on time
You and the R&D

- In addition to focusing your team’s efforts, you’re capable of identifying head count needs, as well as planning and recruiting as needed.

- You're comfortable managing team members whose skills may differ from your own. You communicate expectations clearly to all team members - soliciting and delivering individual feedback often.

- Share knowledge between chapters and guilds

You and the company - Contribute to companies activities
Business / Domain Knowledge

- Has deep expertise across multiple domains and missions

- Familiar with each mission road-maps, concerns and targets

Culture

- You focus on Value and impact you produce.

- Makes pragmatic design decisions; identifies risks, trade-offs, and alternative solutions to be considered

- Mindful of including others so that they can jointly participate in decision-making

- Sets an example for giving effective feedback


L6 IC - Software Engineer

Usually referred to Architect levels

Scope & Impact

As Software Engineering Architect L5, you have strategic impact over the department. As an Architect, you have a significant strategic vision and can take a high-level business plan for growth and translate it into a strategic technology road-map. You’re super technically savvy and your primary job is focusing on long-term architectural and technology needs to grow the business. You understand the CTO technical vision and missions and reflect them on the features and the teams. You make sure that all the teams are aligned with the system architecture.

Typical Experience

Engineers and managers typically acquire the skills, knowledge, and experience necessary to meet the expectations of this level with a relevant Bachelor’s degree and 9+ years of relevant industry experience.

Responsibility & Growth

Responsibility Growth Behaviors
Execution

- Building an autonomous team

- You create architecture that shapes large parts of our business.

- Sets architectural direction for the missions and helps evolve systems toward it.

- Has a track record of influencing and delivering projects with organizational impact and priority.

- You understand the trade-offs between different solutions and you make the best solution which fit the concerns. Sometimes, quick and dirty, other times highly scalable solutions.

- You see the "big picture" and properly communicate it to peers and downstream development teams.

- You generate epic and milestone based architecture involving different domains.

- Leads the overall architecture aspects that have strategic impact at organization.

- Architect feature and epics and milestones.

- Introduces improvements that help the entire teams become more productive and ship higher quality work

- You understand the company road maps and milestones and contribute to it.

- Breaks down complex projects into epics that can be effectively built and maintained by missions and can be estimated

- Based on team size, you are expected to contribute to the team burn-down. If properly managed, as an architect you should be able to achieve at least 30% hands-on.

Technical Proficiency

- You have a track record of anticipating technical problems during the development of major products and designing solutions to overcome them.

- You’re deeply knowledgeable in major parts of our technology stack. You have a sustained track record of creating major improvements in large business-critical systems around stability, performance, and scalability.

- You know microservices and microfrontend

- You have great knowledge in frontend, backend, databases, devops and tools.

You and your Team - You are able to lead a 1-2 squads if needed
You and the R&D

- The impact of your work is felt across the teams in the quality of the engineering that we produce, the ways we write code, the architecture generated and the underlying design of systems.

- You have excellent abilities to influence without requiring reporting authority to do so. You effectively facilitate cross-team work and are influential far beyond your individual group.

- You constantly sit with the team leaders making sure that the overall vision and missions are met.

- You work closely with the product team, team leaders and CTO on building the development backlog and translating business requirements into development tasks.

- You’re sought-after for technical guidance across the teams.

- Conduct R&D meetups.

- Guides the development of common tools and libraries

- Mentors other senior engineers or managers on strategy, collaboration, influence, execution, and other aspects of leadership

You and the company

- Partners effectively with business stakeholders on strategic projects

- Builds network outside organization, can identify and sell talent on working at organization

Business / Domain Knowledge

- Has deep expertise across multiple domains and missions

- Familiar with each mission road-maps, concerns and targets

Culture

- You focus on Value and impact you produce.

- You focus on growing the teams around you

- great communicator

- Makes pragmatic design decisions; identifies risks, trade-offs, and alternative solutions to be considered

- Mindful of including others so that they can jointly participate in decision-making

- Sets an example for giving effective feedback

L6 EM - Software Engineer

Usually referred to R&D manager

As an Engineering Manager, you have proven yourself as a team leader. You are now a mature leader which understand the way the company values and the department culture; You master the different practices of team leadership, including HLD, Code Reviews, 1 on 1, communication, escalation and more.

As Engineering Manager, you may keep on leading a team; In addition, you will inspire other team leaders and team members, not as a direct manager, rather as mentor.

You're not generally expected to write code on a day-to-day basis, but in some cases it may be required. You should, however, have a strong technical background and spend some of their time researching new technologies and staying abreast of trends in the tech industry. You will be expected to help debug and triage critical systems and should understand the systems you oversee well enough to perform code reviews and help research problems as needed.

You should contribute to the architecture and design efforts of the teams and relevant domains primarily by serving as the technically-savvy voice that asks business and product questions of the engineers on their teams, ensuring that the code we are writing matches the product and business needs and can scale appropriately as those needs grow.

Responsibilities

Like a team leader, you’re responsible for leading a dedicated team. In addition, you will be a mentor for junior team leaders, making sure they become a successful and capable leaders. You will inspire junior leaders and assist them in becoming high performance, high-velocity, high functioning, motivated teams, measuring and iterating on processes as we grow and evolve as a business.

You will identify talents, and future leaders, cross all teams and working with other leaders to growing the next generation of tech leadership and management.

As mentor, it is expected of you to sponsorship your junior leader and make sure:

  • best practices are used.
  • pragmatic approach.
  • leadership skills VS management skills.
  • Company culture.
  • Increased capacity.
  • HLD meet our standards.
  • Code quality produced by the team is high.
  • Proper handling of escalation and domain issues.
  • Making the right decisions.

You and Your Team

You’re an inspiring leader and set the example for cross-functional collaboration across teams and with other areas of the company. You’re a very strong communicator and can simplify technical concepts for non-technical partners. Likewise, you can also take business direction and explain it to the development team in a way that inspires and guides them. You monitor the team leaders, making sure they meet the culture, missions and responsibilities. You contribute to a positive public presence for organization engineering and can "promote" the company to potential candidates.

Example skills and behaviors

  • You lead your team.
  • You mentor your sponsorship junior leaders.
  • You participate in the backlog preparations and planning for all sponsorship teams.
  • You make sure the velocity and capacity of your team and sponsorship teams increase.
  • Develops leadership talent within the team