Full Code of jorgef/engineeringladders for AI

master 6055355a8817 cached
12 files
45.6 KB
10.9k tokens
1 requests
Download .txt
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.

![Delivery](/charts/dashboard-delivery.png)

| 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.

![Goals](/charts/dashboard-goals.png)

| 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?

![Planning](/charts/dashboard-planning.png)

| 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.

![Oversight](/charts/dashboard-oversight.png)

| 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.

![Relationships](/charts/dashboard-relationships.png)

| 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
Download .txt
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.

Copied to clipboard!