Ruta de aprendizaje
Los temas que considero fundamentales para desarrollar software de forma profesional, con las lecturas, los videos y los capítulos de libros que elegí para aprender cada uno.
El recorrido
Cada etapa mezcla temas de varias materias. Lo básico de TDD va primero, para practicar todo lo demás haciendo TDD.
Etapa 1
TDD y objetos
Arrancás con lo básico de TDD y lo usás desde el primer día en katas simples. Al mismo tiempo aprendés a pensar en objetos y a escribir código limpio.
TestingFundamentos de TDD · TDD as if you meant it · ZOMBIES · Estructura de un test · Principios FIRST · Tests parametrizados · Tests anidados · Transformation Priority Premise · Regla de un solo assert
Lenguajes de programaciónProgramación orientada a objetos
Principios de diseñoClean Code · Encapsulamiento · Ocultamiento de información
RefactoringFundamentos de refactoring · Code Smells · Refactorings básicos
Etapa 2
Principios de diseño
Con TDD ya incorporado, las katas se ponen más difíciles y sirven para practicar los principios que hacen que un diseño sea fácil de cambiar.
Principios de diseñoTell, Don't Ask · Law of Demeter · Las 4 reglas del diseño simple · Command Query Separation · Uniform Access Principle · YAGNI · DRY · Balanced Abstraction Principle · Law of Leaky Abstractions · Principle of Least Astonishment · SOLID · Acoplamiento · Cohesión · Software Design Odors · Diseño por contrato · ETC · Connascence · Composición sobre herencia
RefactoringRefactorings de encapsulamiento · Refactorings para mover funcionalidad · Refactorings para organizar datos · Refactorings de lógica condicional · Refactorings de API · Refactorings de herencia
TestingTest Data Builders · Object Mother · Test Fixtures · Test DSL
Etapa 3
Patrones de diseño
Soluciones conocidas a problemas de diseño que se repiten. Las practicás con TDD para reconocer cuándo simplifican el código y cuándo lo complican.
Patrones de diseñoIntroducción · Patrones creacionales: Factory Method, Abstract Factory, Builder, Prototype · Patrones estructurales: Adapter, Bridge, Composite, Decorator, Façade, Proxy · Patrones de comportamiento: Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor, Null Object · Double Dispatch
CursosPatrones de diseñoEtapa 4
Outside-In y código legacy
Test doubles, TDD de afuera hacia adentro y cómo ponerle tests y refactorizar código que no se escribió pensando en eso.
TestingTest Doubles · Mockist TDD · Classical Outside-In · Tests de integración · Tests end-to-end · Humble Object · Walking Skeleton · Pirámide de tests · Tipos de tests · Código legacy
CursosTDD avanzadoEtapa 5
Arquitectura
Cómo separar el dominio de los mecanismos de entrega y de la infraestructura.
ArquitecturaClean Architecture · Hexagonal Architecture · Interaction Driven Design · Arquitecturas de UI
Patrones de diseñoPatrones enterprise
CursosClean ArchitectureEtapa 6
Prácticas técnicas y agile
Cómo trabaja un equipo para entregar software de calidad de forma sostenida: XP, integración y entrega continua, y agilidad.
Prácticas técnicasFundamentos de Extreme Programming · Tests automatizados · Test First · Refactoring · TDD · Continuous Integration · Continuous Delivery · Pair/Mob Programming · Ritmo sostenible
AgileFundamentos de agile · Cultura agile · Scrum · Economía agile · Lean · Kanban · NoEstimates · User Stories · Deuda técnica · Story Mapping · Elevator Pitch · Organizaciones Teal · Software Craftsmanship
Etapa 7
Domain-Driven Design
Modelar dominios complejos junto al negocio, desde el diseño estratégico hasta los patrones tácticos.
Domain-Driven DesignDDD estratégico · Knowledge Crunching · Integración entre Bounded Contexts · Value Objects · Entidades · Servicios de dominio · Eventos de dominio · Aggregates · Factories · Repositorios · Event Sourcing · Servicios de aplicación · UI en DDD · CQRS · Reportes
KatasMastermindEtapa 8
Arquitectura a escala
Cómo se organiza un sistema más allá de una aplicación: monolitos, microservicios, arquitecturas event-driven y cómo escalar.
Macro arquitecturaMonolitos · Fundamentos de microservicios · Integración de microservicios · Interfaces de usuario · Partir un monolito · Escalar microservicios · Arquitectura en capas · Arquitectura microkernel · Arquitectura orientada a eventos · Serverless · Cloud Native
TestingTests de performance y de carga
Proyecto final
Una red social tipo X, desde la consola hasta la web y mobile, donde aplicás todo junto.
Ver el enunciado
En paralelo
Hábitos y habilidades que se trabajan durante todo el recorrido.
Fundamentos de computación
La base técnica, para ir completando a tu ritmo.