Repository: jorgef/engineeringladders
Branch: master
Commit: 6055355a8817
Files: 12
Total size: 45.6 KB
Directory structure:
gitextract_9up6ustv/
├── .gitignore
├── CNAME
├── Developer.md
├── EngineeringManager.md
├── LICENSE
├── Managing-Managers.md
├── README.md
├── TechLead-EngineeringManager.md
├── TechLead.md
├── TechnicalProgramManager.md
├── _config.yml
└── charts/
└── charts.pptx
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
.DS_Store
================================================
FILE: CNAME
================================================
www.engineeringladders.com
================================================
FILE: Developer.md
================================================
# Developer
Role also known as programmer or software engineer, requires a deep level of technical expertise.
| Level | Senior | Position |
| :---: | :---: | :---: |
| 1 | No | [D1 - Developer 1](#d1---developer-1) |
| 2 | No | [D2 - Developer 2](#d2---developer-2) |
| 3 | No | [D3 - Developer 3](#d3---developer-3) |
| 4 | Yes | [D4 - Developer 4](#d4---developer-4) |
| 5 | Yes | [D5 - Developer 5](#d5---developer-5) |
| 6 | Yes | [D6 - Developer 6](#d6---developer-6) |
| 7 | Yes | [D7 - Developer 7](#d7---developer-7) |
## D1 - Developer 1
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/developer-1-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/developer-1.png">
<img alt="Developer 1" src="/charts/developer-1.png">
</picture>
* **Adopts**: actively learns and adopts the technology and tools defined by the team
* **Enhances**: successfully pushes new features and bug fixes to improve and extend the system
* **Learns**: quickly learns from others and consistently steps up when it is required
* **Follows**: follows the team processes, delivering a consistent flow of features to production
* **Subsystem**: makes an impact on one or more subsystems or team pods
## D2 - Developer 2
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/developer-2-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/developer-2.png">
<img alt="Developer 2" src="/charts/developer-2.png">
</picture>
* **Adopts**: actively learns and adopts the technology and tools defined by the team
* **Designs**: designs and implements medium to large size features while reducing the system's tech debt
* **Supports**: proactively supports other team members and helps them to be successful
* **Enforces**: enforces the team processes, making sure everybody understands the benefits and tradeoffs
* **Subsystem**: makes an impact on one or more subsystems or team pods
## D3 - Developer 3
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/developer-3-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/developer-3.png">
<img alt="Developer 3" src="/charts/developer-3.png">
</picture>
* **Specializes**: is the go-to person for one or more technologies and takes initiative to learn new ones
* **Designs**: designs and implements medium to large size features while reducing the system's tech debt
* **Supports**: proactively supports other team members and helps them to be successful
* **Challenges**: challenges the team processes, looking for ways to improve them
* **Team**: makes an impact on the whole team, not just on specific parts of it
## D4 - Developer 4
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/developer-4-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/developer-4.png">
<img alt="Developer 4" src="/charts/developer-4.png">
</picture>
* **Evangelizes**: researches, creates proofs of concept and introduces new technologies to the team
* **Owns**: owns the production operation and monitoring of the system and is aware of its SLAs
* **Mentors**: mentors others to accelerate their career-growth and encourages them to participate
* **Challenges**: challenges the team processes, looking for ways to improve them
* **Team**: makes an impact on the whole team, not just on specific parts of it
## D5 - Developer 5
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/developer-5-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/developer-5.png">
<img alt="Developer 5" src="/charts/developer-5.png">
</picture>
* **Masters**: has very deep knowledge about the whole technology stack of the system
* **Evolves**: evolves the architecture to support future requirements and defines its SLAs
* **Mentors**: mentors others to accelerate their career-growth and encourages them to participate
* **Adjusts**: adjusts the team processes, listening to feedback and guiding the team through the changes
* **Multiple Teams**: makes an impact not only on the whole team but also on other teams
## D6 - Developer 6
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/developer-6-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/developer-6.png">
<img alt="Developer 6" src="/charts/developer-6.png">
</picture>
* **Creates**: designs and creates new technologies that are widely used either by internal or external teams
* **Leads**: leads the technical excellence of the system and creates plans to mitigate outages
* **Mentors**: mentors others to accelerate their career-growth and encourages them to participate
* **Adjusts**: adjusts the team processes, listening to feedback and guiding the team through the changes
* **Company**: makes an impact on the whole tech organization
## D7 - Developer 7
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/developer-7-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/developer-7.png">
<img alt="Developer 7" src="/charts/developer-7.png">
</picture>
* **Creates**: designs and creates new technologies that are widely used either by internal or external teams
* **Leads**: leads the technical excellence of the system and creates plans to mitigate outages
* **Mentors**: mentors others to accelerate their career-growth and encourages them to participate
* **Adjusts**: adjusts the team processes, listening to feedback and guiding the team through the changes
* **Community**: makes an impact on the tech community
# Other Pages
* [**Introduction**](README.md)
* [**Tech Lead**](TechLead.md)
* [**Technical Program Manager**](TechnicalProgramManager.md)
* [**Engineering Manager**](EngineeringManager.md)
* [**Tech Lead vs Engineering Manager**](TechLead-EngineeringManager.md)
* [**Managing Managers**](Managing-Managers.md)
================================================
FILE: EngineeringManager.md
================================================
# Engineering Manager
Role also known as dev manager, is responsible for the consistent delivery, career growth and level of happiness of the team.
| Level | Senior | Position |
| :---: | :---: | :---: |
| 5 | Yes | [EM5 - Engineering Manager 5](#em5---engineering-manager-5) |
| 6 | Yes | [EM6 - Engineering Manager 6](#em6---engineering-manager-6) |
| 7 | Yes | [EM7 - Engineering Manager 7](#em7---engineering-manager-7) |
If you have other managers as direct reports, you might want to read the [Managing Managers](Managing-Managers.md) section since it provides more information about the "Manages People" aspect of the role.
## EM5 - Engineering Manager 5
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/engineeringmanager-5-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/engineeringmanager-5.png">
<img alt="Engineering Manager 5" src="/charts/engineeringmanager-5.png">
</picture>
* **Evangelizes**: researches, creates proofs of concept and introduces new technologies to the team
* **Owns**: owns the production operation and monitoring of the system and is aware of its SLAs
* **Manages**: manages the team members' career, expectations, performance and level of happiness
* **Adjusts**: adjusts the team processes, listening to feedback and guiding the team through the changes
* **Team**: makes an impact on the whole team, not just on specific parts of it
## EM6 - Engineering Manager 6
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/engineeringmanager-6-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/engineeringmanager-6.png">
<img alt="Engineering Manager 6" src="/charts/engineeringmanager-6.png">
</picture>
* **Evangelizes**: researches, creates proofs of concept and introduces new technologies to the team
* **Evolves**: evolves the architecture to support future requirements and defines its SLAs
* **Manages**: manages the team members' career, expectations, performance and level of happiness
* **Defines**: defines the right processes for the team's maturity level, balancing agility and discipline
* **Team**: makes an impact on the whole team, not just on specific parts of it
## EM7 - Engineering Manager 7
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/engineeringmanager-7-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/engineeringmanager-7.png">
<img alt="Engineering Manager 7" src="/charts/engineeringmanager-7.png">
</picture>
* **Evangelizes**: researches, creates proofs of concept and introduces new technologies to the team
* **Evolves**: evolves the architecture to support future requirements and defines its SLAs
* **Manages**: manages the team members' career, expectations, performance and level of happiness
* **Defines**: defines the right processes for the team's maturity level, balancing agility and discipline
* **Multiple Teams**: makes an impact not only on the whole team but also on other teams
# Other Pages
* [**Introduction**](README.md)
* [**Developer**](Developer.md)
* [**Tech Lead**](TechLead.md)
* [**Technical Program Manager**](TechnicalProgramManager.md)
* [**Tech Lead vs Engineering Manager**](TechLead-EngineeringManager.md)
* [**Managing Managers**](Managing-Managers.md)
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: Managing-Managers.md
================================================
# Managing Managers
## Introduction
When you get to higher levels of the manager's ladder, chances are that some of your direct reports will be other managers.
The manager's actions have a bigger impact on their teams and therefore you need to set expectations differently.
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/dashboard-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/dashboard.png">
<img alt="Dashboard" src="/charts/dashboard.png">
</picture>
How do you assess the managing skills of other managers?
Managers face conflicting forces all the time, and a big part of their job is to keep things balanced.
In order to set the right expectations and measure the manager's success, it is important to evaluate how balanced the following areas are:
## Delivery
Managers constantly face push from the Business to deliver value quickly while feeling the pressure from the team to deliver high-quality solutions.

| Business Impact | Technical Excellence |
| :--- | :--- |
| Speed | Quality |
| Customer Feedback | Code Maintainability |
| Opportunity Cost | Tech Debt Cost |
## Goals
Aligning the team's goals and the individual's goals is critical to ensure a scenario where the team delivers value to the organization while its members make progress in their careers. The manager should try to create a win-win scenario where both sides (team and individual) get something in return.

| Team | Individuals |
| :--- | :--- |
| Business Needs | Career Focus |
| Team Expectations | Personal Interests |
| Group Performance | Individual Performance |
## Planning
Although short-term vs long-term planning is sometimes seen as a "business vs tech" type of discussion (see [Delivery](#delivery)), this is not always true. In many cases, the manager needs to balance the trade-offs between a quick business (or technical) solution and a long-term one. Do we fix this bug quickly or invest in a proper technical solution? Do we create a quick throw-away spike or we invest in a well-designed feature?

| Short-Term | Long-Term |
| :--- | :--- |
| Weekly Plan | Quarterly Plan |
| Spike | Well Thought Out Design |
| Solve Quickly | Solve Properly |
## Oversight
Managers usually have a hard time balancing how to delegate effectively without losing the control over their teams. Staying connected to the details without interfering is certainly one the most difficult tasks for a manager (especially for managers of managers). It is important for managers to empower the team to make decisions while being on top of what is going on.

| Control | Delegation |
| :--- | :--- |
| Micromanaging | Empowerment |
| Connected to Details | Big Picture |
| Auditing | Trust |
## Relationships
Most managers will excel at building relationships with their direct reports (managing down) and with their supervisor (managing up), but they tend to undervalue their relationships with the rest of the organization (managing across). Lack of focus on horizontal relationships adds risk to cross-team initiatives and reduces the manager's visibility of the team's impact.

| Vertical (Managing Down / Up) | Horizontal (Managing Across) |
| :--- | :--- |
| Supervisor(s) | Stakeholders |
| Direct Reports | Peers / Other Teams |
| Indirect Reports | Users |
## Conclusion
Assessing managers requires a slightly different perspective, their actions have a bigger impact on their teams and therefore they are in charge of keeping things balanced.
Managers should balance each area —delivery, goals, planning, oversight and relationships— in a way that is sustainable over time. Not all areas might require to be balanced the same way; the seniority of the team, company culture, and business context might move the arrow closer to one side or the other, the green area is a range and not a single value. Having said that, it is important to avoid getting too close to any of the extremes.
In summary, understanding how each manager is performing on every area is a good way to assess their performance and therefore a great opportunity to have meaningful career conversations with them.
# Other Pages
* [**Introduction**](README.md)
* [**Developer**](Developer.md)
* [**Tech Lead**](TechLead.md)
* [**Technical Program Manager**](TechnicalProgramManager.md)
* [**Engineering Manager**](EngineeringManager.md)
* [**Tech Lead vs Engineering Manager**](TechLead-EngineeringManager.md)
================================================
FILE: README.md
================================================
# Introduction
This framework allows software engineering managers to have meaningful conversations with their direct reports around the expectations of each position and how to plan for the next level in their career ladder.
Although the framework uses roles and levels that are somewhat standard in the US tech industry, every company is different. Please use the information provided as a baseline and feel free adjust it to your needs.
The framework relies heavily on radar charts to visually represent the different perspectives and expectations of a given position:
<picture>
<source media="(prefers-color-scheme: dark)" srcset="charts/template-dark.png">
<source media="(prefers-color-scheme: light)" srcset="charts/template.png">
<img alt="Template Chart" src="charts/template.png">
</picture>
# Career Ladders
The framework has 4 different ladders:
* [**Developer**](Developer.md): role also known as programmer or software engineer, requires a deep level of technical expertise
* [**Tech Lead**](TechLead.md): role also known as dev lead, is the owner of the system and requires a unique balance between hands-on development, architecture knowledge and production support
* [**Technical Program Manager**](TechnicalProgramManager.md): role responsible for coordinating and driving to completion initiatives that span multiple teams
* [**Engineering Manager**](EngineeringManager.md): role also known as dev manager, is responsible for the consistent delivery, career growth and level of happiness of the team
If you are confused about the difference between a [Tech Lead](TechLead.md) and an [Engineering Manager](EngineeringManager.md), please refer to the [Tech Lead vs Engineering Manager](TechLead-EngineeringManager.md) page for a detailed comparison.
| Level | Senior | [Developer](Developer.md) | [Tech Lead](TechLead.md) | [Technical Program Manager](TechnicalProgramManager.md) | [Engineering Manager](EngineeringManager.md) |
| :---: | :---: | :---: | :---: | :---: | :---: |
| 1 | No | [D1](Developer.md#d1---developer-1) | | | |
| 2 | No | [D2](Developer.md#d2---developer-2) | | | |
| 3 | No | [D3](Developer.md#d3---developer-3) | | | |
| 4 | Yes | [D4](Developer.md#d4---developer-4) | [TL4](TechLead.md#tl4---tech-lead-4) | [TPM4](TechnicalProgramManager.md#tpm4---technical-program-manager-4) | |
| 5 | Yes | [D5](Developer.md#d5---developer-5) | [TL5](TechLead.md#tl5---tech-lead-5) | [TPM5](TechnicalProgramManager.md#tpm5---technical-program-manager-5) | [EM5](EngineeringManager.md#em5---engineering-manager-5) |
| 6 | Yes | [D6](Developer.md#d6---developer-6) | [TL6](TechLead.md#tl6---tech-lead-6) | [TPM6](TechnicalProgramManager.md#tpm6---technical-program-manager-6) | [EM6](EngineeringManager.md#em6---engineering-manager-6) |
| 7 | Yes | [D7](Developer.md#d7---developer-7) | [TL7](TechLead.md#tl7---tech-lead-7) | [TPM7](TechnicalProgramManager.md#tpm7---technical-program-manager-7) | [EM7](EngineeringManager.md#em7---engineering-manager-7) |
(click on position name for more details)
# Axes
The chart shown above has the following 5 axes:
* **Technology**: knowledge of the tech stack and tools
* **System**: level of ownership of the system(s)
* **People**: relationship with the team(s)
* **Process**: level of engagement with the development process
* **Influence**: scope of influence of the position
The **influence** axis can be seen as a *different dimension* since it is orthogonal and applies to all the other axes.
Each axis has 5 different levels of performance. It is important to highlight that every level includes the previous one(s). For example, someone that *evangelizes* technology, *specializes* and *adopts* it as well.
Keep reading to better understand each level.
# Levels
## Technology
1. **Adopts**: actively learns and adopts the technology and tools defined by the team
2. **Specializes**: is the go-to person for one or more technologies and takes initiative to learn new ones
3. **Evangelizes**: researches, creates proofs of concept and introduces new technologies to the team
4. **Masters**: has very deep knowledge about the whole technology stack of the system
5. **Creates**: designs and creates new technologies that are widely used either by internal or external teams
## System
1. **Enhances**: successfully pushes new features and bug fixes to improve and extend the system
2. **Designs**: designs and implements medium to large size features while reducing the system's tech debt
3. **Owns**: owns the production operation and monitoring of the system and is aware of its SLAs
4. **Evolves**: evolves the architecture to support future requirements and defines its SLAs
5. **Leads**: leads the technical excellence of the system and creates plans to mitigate outages
## People
1. **Learns**: quickly learns from others and consistently steps up when it is required
2. **Supports**: proactively supports other team members and helps them to be successful
3. **Mentors**: mentors others to accelerate their career-growth and encourages them to participate
4. **Coordinates**: coordinates team members providing effective feedback and moderating discussions
5. **Manages**: manages the team members' career, expectations, performance and level of happiness
## Process
1. **Follows**: follows the team processes, delivering a consistent flow of features to production
2. **Enforces**: enforces the team processes, making sure everybody understands the benefits and tradeoffs
3. **Challenges**: challenges the team processes, looking for ways to improve them
4. **Adjusts**: adjusts the team processes, listening to feedback and guiding the team through the changes
5. **Defines**: defines the right processes for the team's maturity level, balancing agility and discipline
## Influence
1. **Subsystem**: makes an impact on one or more subsystems
2. **Team**: makes an impact on the whole team, not just on specific parts of it
3. **Multiple Teams**: makes an impact not only his/her team but also on other teams
4. **Company**: makes an impact on the whole tech organization
5. **Community**: makes an impact on the tech community
# FAQs
**What if some of the people don't meet all the points?**
That is very normal, people are usually stronger in some areas and weaker in others. The framework should not be used as a checklist to promote people but instead as guidance to have meaningful career conversations.
**What if my organization's career ladder is different?**
Since the framework is open source, you have the opportunity to adapt it to your organization. Feel free to use the [chart template](charts/template.png) to define your own levels.
**When is a person ready to move to the next level?**
Companies usually expect a person to be performing at the next level *consistently for several months* before formalizing a promotion.
**How do I collect evidence to support the discussion with my direct reports?**
Different teams collect evidence in different ways. A recommended approach is to use a combination of:
* 1:1 conversations
* Feedback from peers and other teams
* Self-evaluation
**Could the framework provide more specific examples of behavior to support each level?**
Specific examples of behavior require knowledge about the way that the team works, the system architecture and its technology stack. It is recommended to allow each team to define their own examples.
**Why does the framework stop at level 7?**
Levels 8 and above vary drastically from company to company. Organizations of different sizes tend to assign a diverse level of scope to positions so high in their structure.
**Do you have any additional resources about the topic?**
* [The Manager's Path](http://shop.oreilly.com/product/0636920056843.do): Camille Fournier does an excellent job at describing the expectations and challenges of many engineering positions. Also, she provides good advice about writing a career ladder in chapter 9.
* [How to Be Good at Performance Appraisals](https://store.hbr.org/product/how-to-be-good-at-performance-appraisals-simple-effective-done-right/10295): Dick Grote explains in simple terms how to define job responsibilities and how to evaluate performance (results and behaviors).
# Other Pages
* [**Developer**](Developer.md)
* [**Tech Lead**](TechLead.md)
* [**Technical Program Manager**](TechnicalProgramManager.md)
* [**Engineering Manager**](EngineeringManager.md)
* [**Tech Lead vs Engineering Manager**](TechLead-EngineeringManager.md)
* [**Managing Managers**](Managing-Managers.md)
================================================
FILE: TechLead-EngineeringManager.md
================================================
# Tech Lead vs Engineering Manager
It is very common for companies to mix the Tech Lead and Engineering Manager roles. Although both roles have some overlap, their focus is different: the Tech Lead is in charge of the *System* while the Engineering Manager is in charge of the *People*.
If the team is small and/or the leader has a lot of experience as Engineering Manager and Tech Lead, the same person might perform both roles. But as the system and team grow in size and complexity, there might be an opportunity to have different people for each role.
The following is a non-exhaustive list that exemplifies some of the different responsibilities of each role:
| [Tech Lead](TechLead.md) (System) | [Engineering Manager](EngineeringManager.md) (People)|
| :--- | :--- |
| Technical Excellence and Innovation| Career Planning, Promotions and Coaching |
| Architecture and System Integration | Headcount Planning and Hiring |
| Tech Mentoring, Adoption and Alignment | Team Planning and Delivery |
| Technical Spikes and Experiments | Objectives, Performance and Feedback |
| Code Reviews and Feedback | One on Ones |
| System Design Presentations | Participation in Technical Decisions |
| Technical Capacity Planning | Cascading Communications |
| Production Issues Escalation | Team Building Activities and Culture |
| System SLAs, Metrics & Monitoring | Team Protection and Happiness |
| Platform Direction, Patterns and Practices | Team Productivity and Metrics |
| Alignment with other Tech Leads | Alignment with other Dev Managers |
| Hands-On Coding 30% to 70% of the Time | Hands-On Coding 0% to 30% of the Time |
| System Roadmap (shared) | System Roadmap (shared) |
| Development Process (shared) | Development Process (shared) |
| Team Visibility and Recognition (shared) | Team Visibility and Recognition (shared) |
| Ability to Act as Engineering Manager when Required | Ability to Act as Tech Lead when Required |
The last point on each role highlights the fact that the lists are not mutually exclusive, and therefore many of the points from one side are also important on the other side too. An Engineering Manager that can't understand the technical challenges that the team is facing won't be successful at the role, the same is true for a Tech Lead that doesn't understand the career paths of the engineers in the team.
Having said that, although it is important for an Engineering Manager to be able act as a Tech Lead and vice versa, it also critical for them to focus and excel at the right things. Although there is a clear overlap and an opportunity for collaboration, both positions must know well who is responsible for what to avoid conflicts and misunderstandings.
# Other Pages
* [**Introduction**](README.md)
* [**Developer**](Developer.md)
* [**Tech Lead**](TechLead.md)
* [**Technical Program Manager**](TechnicalProgramManager.md)
* [**Engineering Manager**](EngineeringManager.md)
* [**Managing Managers**](Managing-Managers.md)
================================================
FILE: TechLead.md
================================================
# Tech Lead
Role also known as dev lead, is the owner of the system and requires a unique balance between hands-on development, architecture knowledge and production support.
| Level | Senior | Position |
| :---: | :---: | :---: |
| 4 | Yes | [TL4 - Tech Lead 4](#tl4---tech-lead-4) |
| 5 | Yes | [TL5 - Tech Lead 5](#tl5---tech-lead-5) |
| 6 | Yes | [TL6 - Tech Lead 6](#tl6---tech-lead-6) |
| 7 | Yes | [TL7 - Tech Lead 7](#tl7---tech-lead-7) |
## TL4 - Tech Lead 4
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/techlead-4-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/techlead-4.png">
<img alt="Tech Lead 4" src="/charts/techlead-4.png">
</picture>
* **Specializes**: is the go-to person for one or more technologies and takes initiative to learn new ones
* **Owns**: owns the production operation and monitoring of the system and is aware of its SLAs
* **Coordinates**: coordinates team members providing effective feedback and moderating discussions
* **Adjusts**: adjusts the team processes, listening to feedback and guiding the team through the changes
* **Subsystem**: makes an impact on one or more subsystems or team pods
## TL5 - Tech Lead 5
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/techlead-5-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/techlead-5.png">
<img alt="Tech Lead 5" src="/charts/techlead-5.png">
</picture>
* **Evangelizes**: researches, creates proofs of concept and introduces new technologies to the team
* **Evolves**: evolves the architecture to support future requirements and defines its SLAs
* **Coordinates**: coordinates team members providing effective feedback and moderating discussions
* **Defines**: defines the right processes for the team's maturity level, balancing agility and discipline
* **Team**: makes an impact on the whole team, not just on specific parts of it
## TL6 - Tech Lead 6
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/techlead-6-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/techlead-6.png">
<img alt="Tech Lead 6" src="/charts/techlead-6.png">
</picture>
* **Masters**: has very deep knowledge about the whole technology stack of the system
* **Leads**: leads the technical excellence of the system and creates plans to mitigate outages
* **Coordinates**: coordinates team members providing effective feedback and moderating discussions
* **Defines**: defines the right processes for the team's maturity level, balancing agility and discipline
* **Multiple Teams**: makes an impact not only on the whole team but also on other teams
## TL7 - Tech Lead 7
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/techlead-7-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/techlead-7.png">
<img alt="Tech Lead 7" src="/charts/techlead-7.png">
</picture>
* **Masters**: has very deep knowledge about the whole technology stack of the system
* **Leads**: leads the technical excellence of the system and creates plans to mitigate outages
* **Coordinates**: coordinates team members providing effective feedback and moderating discussions
* **Defines**: defines the right processes for the team's maturity level, balancing agility and discipline
* **Company**: makes an impact on the whole tech organization
# Other Pages
* [**Introduction**](README.md)
* [**Developer**](Developer.md)
* [**Technical Program Manager**](TechnicalProgramManager.md)
* [**Engineering Manager**](EngineeringManager.md)
* [**Tech Lead vs Engineering Manager**](TechLead-EngineeringManager.md)
* [**Managing Managers**](Managing-Managers.md)
================================================
FILE: TechnicalProgramManager.md
================================================
# Technical Program Manager
Role responsible for coordinating and driving to completion initiatives that span multiple teams.
| Level | Senior | Position |
| :---: | :---: | :---: |
| 4 | Yes | [TPM4 - Technical Program Manager 4](#tpm4---technical-program-manager-4) |
| 5 | Yes | [TPM5 - Technical Program Manager 5](#tpm5---technical-program-manager-5) |
| 6 | Yes | [TPM6 - Technical Program Manager 6](#tpm6---technical-program-manager-6) |
| 7 | Yes | [TPM7 - Technical Program Manager 7](#tpm7---technical-program-manager-7) |
## TPM4 - Technical Program Manager 4
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/technicalprogrammanager-4-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/technicalprogrammanager-4.png">
<img alt="Technical Program Manager 4" src="/charts/technicalprogrammanager-4.png">
</picture>
* **Specializes**: is the go-to person for one or more technologies and takes initiative to learn new ones
* **Designs**: designs and implements medium to large size features while reducing the system's tech debt
* **Coordinates**: coordinates team members providing effective feedback and moderating discussions
* **Adjusts**: adjusts the team processes, listening to feedback and guiding the team through the changes
* **Multiple Teams**: makes an impact not only on the whole team but also on other teams
## TPM5 - Technical Program Manager 5
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/technicalprogrammanager-5-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/technicalprogrammanager-5.png">
<img alt="Technical Program Manager 5" src="/charts/technicalprogrammanager-5.png">
</picture>
* **Specializes**: is the go-to person for one or more technologies and takes initiative to learn new ones
* **Designs**: designs and implements medium to large size features while reducing the system's tech debt
* **Coordinates**: coordinates team members providing effective feedback and moderating discussions
* **Defines**: defines the right processes for the team's maturity level, balancing agility and discipline
* **Multiple Teams**: makes an impact not only on the whole team but also on other teams
## TPM6 - Technical Program Manager 6
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/technicalprogrammanager-6-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/technicalprogrammanager-6.png">
<img alt="Technical Program Manager 6" src="/charts/technicalprogrammanager-6.png">
</picture>
* **Specializes**: is the go-to person for one or more technologies and takes initiative to learn new ones
* **Owns**: owns the production operation and monitoring of the system and is aware of its SLAs
* **Manages**: manages the team members' career, expectations, performance and level of happiness
* **Defines**: defines the right processes for the team's maturity level, balancing agility and discipline
* **Company**: makes an impact on the whole tech organization
## TPM7 - Technical Program Manager 7
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/charts/technicalprogrammanager-7-dark.png">
<source media="(prefers-color-scheme: light)" srcset="/charts/technicalprogrammanager-7.png">
<img alt="Technical Program Manager 7" src="/charts/technicalprogrammanager-7.png">
</picture>
* **Specializes**: is the go-to person for one or more technologies and takes initiative to learn new ones
* **Evolves**: evolves the architecture to support future requirements and defines its SLAs
* **Manages**: manages the team members' career, expectations, performance and level of happiness
* **Defines**: defines the right processes for the team's maturity level, balancing agility and discipline
* **Community**: makes an impact on the tech community
# Other Pages
* [**Introduction**](README.md)
* [**Developer**](Developer.md)
* [**Tech Lead**](TechLead.md)
* [**Engineering Manager**](EngineeringManager.md)
* [**Tech Lead vs Engineering Manager**](TechLead-EngineeringManager.md)
* [**Managing Managers**](Managing-Managers.md)
================================================
FILE: _config.yml
================================================
theme: jekyll-theme-cayman
title: Engineering Ladders
description: A framework for Engineering Managers
gitextract_9up6ustv/
├── .gitignore
├── CNAME
├── Developer.md
├── EngineeringManager.md
├── LICENSE
├── Managing-Managers.md
├── README.md
├── TechLead-EngineeringManager.md
├── TechLead.md
├── TechnicalProgramManager.md
├── _config.yml
└── charts/
└── charts.pptx
Condensed preview — 12 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (48K chars).
[
{
"path": ".gitignore",
"chars": 1810,
"preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
},
{
"path": "CNAME",
"chars": 27,
"preview": "www.engineeringladders.com\n"
},
{
"path": "Developer.md",
"chars": 5947,
"preview": "# Developer\n\nRole also known as programmer or software engineer, requires a deep level of technical expertise.\n\n| Level "
},
{
"path": "EngineeringManager.md",
"chars": 3322,
"preview": "# Engineering Manager\n\nRole also known as dev manager, is responsible for the consistent delivery, career growth and lev"
},
{
"path": "LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "Managing-Managers.md",
"chars": 4675,
"preview": "# Managing Managers\n\n## Introduction\n\nWhen you get to higher levels of the manager's ladder, chances are that some of yo"
},
{
"path": "README.md",
"chars": 8550,
"preview": "# Introduction\n\nThis framework allows software engineering managers to have meaningful conversations with their direct r"
},
{
"path": "TechLead-EngineeringManager.md",
"chars": 2993,
"preview": "# Tech Lead vs Engineering Manager\n\nIt is very common for companies to mix the Tech Lead and Engineering Manager roles. "
},
{
"path": "TechLead.md",
"chars": 3718,
"preview": "# Tech Lead\n\nRole also known as dev lead, is the owner of the system and requires a unique balance between hands-on deve"
},
{
"path": "TechnicalProgramManager.md",
"chars": 4142,
"preview": "# Technical Program Manager\n\nRole responsible for coordinating and driving to completion initiatives that span multiple "
},
{
"path": "_config.yml",
"chars": 104,
"preview": "theme: jekyll-theme-cayman\ntitle: Engineering Ladders\ndescription: A framework for Engineering Managers\n"
}
]
// ... and 1 more files (download for full content)
About this extraction
This page contains the full source code of the jorgef/engineeringladders GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 12 files (45.6 KB), approximately 10.9k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.