¿Qué es este curso?

El curso de diseño de software avanzado con Java es un programa de 12 semanas con el que mejorarás tus habilidades de diseño de software y aprenderás a hacer código más mantenible y con menos bugs, y lo harás online, a tu ritmo e integrando los conceptos en un proyecto realista.

Para quién es este curso

Desarrolladores de software, con un mínimo de experiencia profesional, que:

  • Buscan dar un salto de calidad en el código que escriben.
  • Aspiran a aportar el máximo valor posible con su trabajo.
  • Están comprometidos en su desarrollo profesional y la mejora continua.

Qué vas a aprender

  • Fundamentos de diseño evolutivo de software y mentalidad de software crafter.

  • Una forma de programar adaptada a explotar el potencial de la IA, las herramientas modernas y capaz de adaptarse al cambio, con Test-driven development y Refactoring.

  • Cómo producir diseños mantenibles desde el principio y hacerlos crecer incrementalmente.

  • Conceptos clave de programación orientada a objetos y programación funcional, y cómo utilizarlos.

  • Cómo tomar decisiones de diseño en base a anti-patrones y balancear propiedades del código, en lugar de principios dogmáticos.

  • Cómo evitar bugs creando diseños resilientes, que protejan las reglas de negocio más importantes por diseño.

  • Patrones de diseño y sus usos en la actualidad, y cómo aplicarlos en el momento más adecuado.

  • Cómo integrar tus diseños con sistemas externos usando dobles de test.

  • Cómo documentar y comunicar el diseño.

¿Cómo lo vas a aprender?

  • 12 semanas

    Plan de 12 semanas en el que aprenderás todos los conceptos de diseño en el orden más eficiente.

  • Píldoras de teoría

    Estudiarás cada concepto con píldoras de teoría en videos breves de menos de 10 minutos.

  • Proyecto integrador

    Desarrollarás un proyecto del mundo real, de principio a fin, en el que aplicarás progresivamente lo aprendido.

  • Mentorías 1:1

    Tendrás apoyo adicional en 2 sesiones de mentoría privadas 1:1 con el profesor del curso para resolver todas tus dudas

  • Sesiones de reimpulso

    Participarás en sesiones semanales en grupo de reimpulso y resolución de dudas.

  • Comunidad de estudiantes

    Participarás en una comunidad con el resto de alumnos y profesores, donde podrás resolver cualquier duda.

  • Acceso de por vida

    Tendrás acceso para siempre a todos los materiales del curso, así como a las nuevas actualizaciones del mismo.

Temario del curso

  • 1

    Filosofía del diseño evolutivo

    • Mentalidad de software crafter

    • Aportar valor, hábitos y mejora continua

  • 2

    Workflow de diseño: TDD y refactoring

    • Test-driven development

    • Empezar por un entero primitivo

    • Desarrollo incremental: grados de libertad

    • Refactoring continuo

  • 3

    Fundamentos de diseño

    • Funciones puras, side effects y los tres niveles de aislamiento

    • Inmutabilidad: Value objects

    • Encapsulación y protección de invariantes: Entidades y agregados

    • Servicios

  • 4

    Code whispering

    • Tomar decisiones de diseño basadas en el código

    • Code smells

    • Bloaters

    • Couplers

    • Change preventers

    • Object orientation abusers

  • 5

    Patrones de diseño

    • Refactoring to patterns

    • Patrones Gang of Four y su uso en la actualidad

    • Patrones funcionales: Mónadas y funciones de orden superior

  • 6

    Más allá de SOLID

    • Pensando en propiedades

    • Legibilidad

    • Propósito único

    • Código idiomático

    • Componibilidad

    • Especificidad en el dominio

    • Predictibilidad

    • Cohesión y acoplamiento

  • 7

    Diseño contra interfaces

    • Diseño con dobles de test

  • 8

    Gestión de errores

    • Gestión de errores funcional

    • Opcionalidad y gestión de valores nulos

  • 9

    Documentación del diseño

    • Diagramas UML

    • Documentación asistida con IA

  • 10

    Potenciación del desarrollo con IA

    • Generación de código con LLMs (ChatGPT, Copilot)

    • Herramientas de refactoring (IntelliJ)

    • Análisis de código con IA

  • 11

    Proyecto integrador: Micro-framework web

    • Práctica: Servidor HTTP

    • Práctica: Kernel y Router

    • Práctica: Contenedor de dependencias

    • Práctica: Renderizador de plantillas HTML

    • Práctica: Middleware de autenticación

    • Práctica: Event Dispatcher

Proyecto integrador: micro-framework web

Desarrollarás tu propio micro-framework web, similar a Spring Boot, ASP.NET Core o Symfony.

Implementarás un framework en el que desarrollarás los siguientes componentes, desde cero:

  • Servidor web HTTP
  • Enrutador las peticiones HTTP a los controladores de usuario
  • Contenedor de inyección de dependencias
  • Renderizador de plantillas HTML
  • Middleware de autenticación
  • Event dispatcher
  • ¡… y más!


Desarrollarás este framework de principio a fin con TDD, aplicando todos los conceptos, patrones y técnicas que verás en el curso.

El desarrollo del proyecto estará disponible íntegramente en video, para que puedas elegir entre seguir el paso a paso o desarrollarlo tú mismo.

Profesor

Technical Coach

Pedro Pardal

Software engineer y tech lead con +12 años de experiencia construyendo aplicaciones web escalables en el cloud, y liderando equipos multidisciplinares usando metodologías ágiles. Inspirado por los valores de Software Craftsmanship y prácticas de Extreme Programming y DevOps, poniendo especial énfasis en la entrega temprana de valor, comunicación transparente con el cliente y excelencia técnica.

Qué dice nuestro alumnado

Victoria Kovaleva - Junior Software Engineer

Cuando hablo con personas con 10 o 20 años experiencia, me dicen que ojalá ellos hubieran podido aprender al principio todo lo que yo sé ahora

David Lorenzo - Software Engineer

Aprender con Pedro fue un punto de inflexión en mi carrera profesional

Samuel Álvarez - Software Engineer @ Voxel Group

Lo que tú enseñas es una forma de desarrollar software, son muchas piezas que se juntan para formar un puzzle.

Meri Herrera - Software Engineer @ Voxel Group

"El training de legacy code de Exeal me dejó un montón de tips útiles que vienen muy bien para aplicar en el día a día. Además de aprender y reforzar estrategias existentes para que el código legacy sea un poco más amigable y no tan temido. ¡Lo súper recomiendo!"

Hemos formado a los developers de estas empresas

Kairos Digital Solutions
Mango
Zooplus
Voxel
Stradivarius
Domingo Alonso Group
Wolters Kluwer
Z1
DevoluIVA

Reserva tu plaza

La próxima edición comienza el 23 de Septiembre de 2024. ¡Reserva tu plaza ya para asegurarla!