NICOLÁS BOTTARINI

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.

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

    Testing

    Fundamentos 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ón

    Programación orientada a objetos

    Principios de diseño

    Clean Code · Encapsulamiento · Ocultamiento de información

    Refactoring

    Fundamentos de refactoring · Code Smells · Refactorings básicos

  2. 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ño

    Tell, 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

    Refactoring

    Refactorings de encapsulamiento · Refactorings para mover funcionalidad · Refactorings para organizar datos · Refactorings de lógica condicional · Refactorings de API · Refactorings de herencia

    Testing

    Test Data Builders · Object Mother · Test Fixtures · Test DSL

  3. 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ño

    Introducció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

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

    Testing

    Test 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

  5. Etapa 5

    Arquitectura

    Cómo separar el dominio de los mecanismos de entrega y de la infraestructura.

    Arquitectura

    Clean Architecture · Hexagonal Architecture · Interaction Driven Design · Arquitecturas de UI

    Patrones de diseño

    Patrones enterprise

  6. Etapa 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écnicas

    Fundamentos de Extreme Programming · Tests automatizados · Test First · Refactoring · TDD · Continuous Integration · Continuous Delivery · Pair/Mob Programming · Ritmo sostenible

    Agile

    Fundamentos de agile · Cultura agile · Scrum · Economía agile · Lean · Kanban · NoEstimates · User Stories · Deuda técnica · Story Mapping · Elevator Pitch · Organizaciones Teal · Software Craftsmanship

  7. Etapa 7

    Domain-Driven Design

    Modelar dominios complejos junto al negocio, desde el diseño estratégico hasta los patrones tácticos.

    Domain-Driven Design

    DDD 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

  8. Etapa 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 arquitectura

    Monolitos · 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

    Testing

    Tests de performance y de carga

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