catálogo de roles técnicos y competencias · 891 definiciones · bilingüe EN/ES · cero dependencias · gratis para uso no comercial
$ pip install tech-roles-library
Python ≥ 3.11 · también uv add tech-roles-library
El catálogo, en vivo
Datos reales del paquete, sin maquillar: el rol Backend Developer completo. Cambia de idioma y de nivel — los códigos (BE-L1…BE-L9) son idénticos en ambos catálogos.
Guía de uso · 01
Una clase, carga perezosa: no toca disco hasta la primera consulta. Las salidas de los comentarios son reales, ejecutadas contra la versión publicada.
from tech_roles_library import TechRoles
lib = TechRoles(language="en")
role = lib.get_role("BE-L3")
role.role # Backend Developer
role.level # L3 - Junior II
role.core_competencies[0] # Mastery of RESTful API design and best practicesfrom tech_roles_library import TechRoles
lib = TechRoles(language="es")
role = lib.get_role("BE-L3")
role.role # Desarrollador de Backend
role.level # L3 - Junior II
role.core_competencies[0] # Dominio de diseño de API RESTful y mejores prácticasGuía de uso · 02
Cada idioma es un catálogo completo: nombres, competencias y niveles localizados. Los códigos funcionan como identificador estable entre ambos.
en = TechRoles(language="en")
es = TechRoles(language="es")
en.get_role("PT-L5").role # Penetration Tester
es.get_role("PT-L5").role # Pentester
es.roles()[:3]
# ('Administrador de Bases de Datos', 'Administrador de Sistemas', 'Agile Coach')Guía de uso · 03
Por código o por nombre y nivel. El nivel acepta 3, "3", "L3" o el nombre completo "L3 - Junior II".
role = lib.get_role("AAG-L5") # por código, sin distinguir mayúsculas
role.role # AI Agent Engineer
role.years_range # YearsRange(min=5, max=7)
lib.get_role_by_name("Backend Developer", 3)
[e.code for e in lib.get_levels("Data Engineer")]
# ['DE-L1', 'DE-L2', ..., 'DE-L9']role = lib.get_role("AAG-L5") # por código, sin distinguir mayúsculas
role.role # Ingeniero de Agentes de IA
role.years_range # YearsRange(min=5, max=7)
lib.get_role_by_name("Desarrollador de Backend", 3)
[e.code for e in lib.get_levels("Ingeniero de Datos")]
# ['DE-L1', 'DE-L2', ..., 'DE-L9']Guía de uso · 04
Cada rol-nivel tiene competencias core, complementarias e indicadores observables. Y una vista acumulada desde L1, sin duplicados.
c = lib.get_competencies("Backend Developer", "L3")
len(c.core), len(c.complementary), len(c.indicators) # (8, 3, 3)
c.indicators[0] # Completes complex features with minimal supervision
acc = lib.get_accumulated("Backend Developer", 5)
len(acc.core) # 40 — todo lo dominado de L1 a L5c = lib.get_competencies("Desarrollador de Backend", "L3")
len(c.core), len(c.complementary), len(c.indicators) # (8, 3, 3)
c.indicators[0] # Completa funcionalidades complejas con mínima supervisión
acc = lib.get_accumulated("Desarrollador de Backend", 5)
len(acc.core) # 40 — todo lo dominado de L1 a L5Guía de uso · 05
Vista completa de carrera, salto al siguiente nivel con las competencias nuevas, y nivel recomendado por años de experiencia.
path = lib.get_career_path("Backend Developer", "L5")
[e.level_number for e in path.mastered] # [1, 2, 3, 4]
[e.level_number for e in path.growth] # [6, 7, 8, 9]
nxt = lib.get_next_level("Backend Developer", "L3")
nxt.next.code # BE-L4
nxt.new_competencies[0] # Ability to design distributed systems and microservices
lib.get_by_experience("Backend Developer", 5).level # L4 - Mid-Level Ipath = lib.get_career_path("Desarrollador de Backend", "L5")
[e.level_number for e in path.mastered] # [1, 2, 3, 4]
[e.level_number for e in path.growth] # [6, 7, 8, 9]
nxt = lib.get_next_level("Desarrollador de Backend", "L3")
nxt.next.code # BE-L4
nxt.new_competencies[0] # Capacidad de diseñar sistemas distribuidos y microservicios
lib.get_by_experience("Desarrollador de Backend", 5).level # L4 - Nivel Medio IGuía de uso · 06
Búsqueda con puntuación que normaliza guiones ("fullstack" encuentra Full-Stack Developer) y filtros por categoría y nivel.
for r in lib.search("data", limit=3):
print(r.role, r.score, r.matched_in)
# Data Analyst 15 both
# Data Architect 15 both
# Data Engineer 15 both
[e.code for e in lib.filter(category="Design", level=3)]
# ['ACC-L3', 'CD-L3', 'PD-L3', 'UXD-L3', 'UXR-L3']for r in lib.search("datos", limit=3):
print(r.role, r.score, r.matched_in)
# Analista de Datos 15 both
# Arquitecto de Datos 15 both
# Científico de Datos 15 both
[e.code for e in lib.filter(category="Diseño", level=3)]
# ['ACC-L3', 'CD-L3', 'PD-L3', 'UXD-L3', 'UXR-L3']Guía de uso · 07
Diferencias entre niveles del mismo rol o entre dos roles al mismo nivel, y export de cualquier resultado a JSON o Markdown.
cmp = lib.compare_levels("Backend Developer", 3, 4)
len(cmp.added) # 11 competencias nuevas en el salto
cmp = lib.compare_roles("Data Engineer", "Analytics Engineer", 3)
cmp.only_a, cmp.only_b # lo exclusivo de cada rol
print(lib.export(lib.get_competencies("Backend Developer", 3), "markdown"))
# # Backend Developer
# ## L3 - Junior II
# ### Core competencies ...cmp = lib.compare_levels("Desarrollador de Backend", 3, 4)
len(cmp.added) # 11 competencias nuevas en el salto
cmp = lib.compare_roles("Ingeniero de Datos", "Ingeniero de Analítica", 3)
cmp.only_a, cmp.only_b # lo exclusivo de cada rol
print(lib.export(lib.get_competencies("Desarrollador de Backend", 3), "markdown"))
# # Desarrollador de Backend
# ## L3 - Junior II
# ### Core competencies ...Guía de uso · 08
Toda excepción hereda de TechRolesError, y los "no encontrado" sugieren alternativas.
from tech_roles_library import RoleNotFoundError
try:
lib.get_role_by_name("Bakcend Developer", 3)
except RoleNotFoundError as e:
print(e)
# Role not found: 'Bakcend Developer'.
# Did you mean: Backend Developer, Game Developer, Blockchain Developer?
lib.validate_role("Backend Developer") # True
lib.validate_level("Backend Developer", 10) # Falsefrom tech_roles_library import RoleNotFoundError
try:
lib.get_role_by_name("Desarrollador Backend", 3)
except RoleNotFoundError as e:
print(e)
# Role not found: 'Desarrollador Backend'.
# Did you mean: Desarrollador de Backend, Desarrollador Blockchain, Desarrollador Frontend?
lib.validate_role("Desarrollador de Backend") # True
lib.validate_level("Desarrollador de Backend", 10) # FalseCatálogo completo
Despliega cada categoría para ver sus roles con el código y el nombre en ambos idiomas.
Escalera de niveles
| Nivel | EN | ES | Años |
|---|---|---|---|
| L1 | Trainee | Aprendiz | 0-1 |
| L2 | Junior I | Junior I | 1-2 |
| L3 | Junior II | Junior II | 2-3 |
| L4 | Mid-Level I | Nivel Medio I | 3-5 |
| L5 | Mid-Level II | Nivel Medio II | 5-7 |
| L6 | Senior I | Senior I | 7-10 |
| L7 | Senior II | Senior II | 10-12 |
| L8 | Staff/Principal | Staff/Principal | 12-15 |
| L9 | VP/CTO | Vicepresidente o Director de Tecnología | 15+ |
Cero dependencias. Tipado completo. El mismo catálogo en inglés y en castellano, con los códigos como identificador común. 78 tests lo vigilan.