Skills que aprenderás
Convocatorias
No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.
Recursos
No hay recursos disponibles todavía para esta convocatoria
Curso de nivel intermedio orientado a desarrolladores con al menos 3 meses de experiencia en cualquier lenguaje que quieren escribir código que sus compañeros entiendan, puedan modificar y puedan testear sin tener que pedir explicaciones. Los ejercicios están en Python, pero los principios — code smells, naming, SRP, DRY, KISS, YAGNI, cohesión, acoplamiento — son independientes del lenguaje. El curso parte de código real con problemas concretos: funciones crípticas, duplicación, magic numbers, módulos sin propósito claro. A través de diagnóstico y refactorización guiada, el participante aprende a identificar qué tiene mal el código antes de tocarlo y a aplicar el cambio más adecuado con justificación explícita. Al finalizar, será capaz de configurar un flujo de calidad automatizado con linting y formateo que bloquee código problemático antes de que llegue a la rama compartida.
Al finalizar el curso, el participante será capaz de:
Code smells y diagnóstico Qué es un code smell y por qué no es un bug; catálogo de smells más comunes en Python: Long Method, God Class, Duplicated Code, Magic Numbers, Meaningless Names; criterios de priorización de refactorización: frecuencia de cambio, riesgo de inconsistencia, coste de refactorizar; regla del Boy Scout aplicada pragmáticamente
Naming efectivo y Principio de Responsabilidad Única (SRP) Nombres que revelan la intención: funciones con verbo + objeto, variables con sustantivos, booleanas con prefijo is_/has_/can_; convenciones de naming en Python (PEP 8); SRP en funciones: un único motivo para cambiar, señales de violación (nombre con "y/o", secciones separadas por comentarios, mezcla de niveles de abstracción); refactorización: extraer funciones con responsabilidad única
DRY, KISS y YAGNI DRY (Don't Repeat Yourself): duplicación de conocimiento vs. duplicación de código, cómo extraer lógica común manteniendo la firma correcta; KISS (Keep It Simple, Stupid): preferir la solución más directa sobre la más elegante; YAGNI (You Aren't Gonna Need It): no implementar funcionalidad hasta que sea necesaria, coste del código especulativo; ejercicio integrador: refactorizar código que viola los tres principios con justificación explícita
Cohesión, acoplamiento e inyección de dependencias Alta cohesión: módulos con propósito único, por qué utils.py es un smell de nombre; bajo acoplamiento: dependencias explícitas vs. dependencias ocultas; inyección de dependencias en Python sin framework: pasar dependencias por constructor en lugar de instanciarlas internamente; refactorización: reorganizar un módulo con baja cohesión en módulos especializados
Linting, formateo y code review automatizado Diferencia entre linter y formateador: ruff (detección) vs. black (corrección de formato); configuración en pyproject.toml con coherencia de line-length; pre-commit: hooks que bloquean commits que no pasan los checks de calidad; code review efectivo: comentario con observación específica + impacto + alternativa concreta
ruff, black, pre-commit)No se requieren prerrequisitos formales. Se espera que el participante tenga al menos 3 meses de experiencia escribiendo código en cualquier lenguaje: sabe qué es una función, un módulo, una variable y ha trabajado con algún repositorio de código. No es necesario conocer Python previamente — los conceptos son transferibles y la sintaxis de los ejercicios se introduce durante el curso.