¿Qué es este curso?

El curso de diseño de software avanzado 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ía 1:1

    Tendrás apoyo adicional en una sesión de mentoría privada 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. ¡Te damos la bienvenida!

    2. Tu mapa del curso

    3. Qué necesitas para afrontar esta formación

    4. Cómo entrar a la comunidad

    5. Metodología de este curso

    6. Calendario del curso (¡compruébalo a menudo!)

    1. El principio "Just sharing"

    2. Excelencia vs Perfeccionismo

    3. Entregarse al proceso vs dogmatismo

    4. El poder de los hábitos y la mejora continua: El programador 1.1x

    5. La disciplina del programador: cómo estudiar y practicar

    6. Reconecta con tu pasión

    7. DIRECTO: Sesión de grupo 1

    1. Objetivos del diseño de software

    2. Complejidad accidental vs complejidad esencial

    3. BDUF vs Just enought design up front

    4. Buen diseño = diseño simple

    5. Diseño ágil

    6. Wrap up

    7. DIRECTO: Sesión de grupo 2

    1. TDD como workflow de diseño incremental

    2. La mecánia de test-driven development, explicada

    3. DEMO: Workflow de TDD con Leap Year Kata

    4. Rediseño via Micro-refactoring continuo, explicado

    5. DEMO: Cómo practicar Micro-refactoring con Refactoring Golf

    6. Cómo practicar Test-driven development

    7. Conoce tus herramientas: Refactoring, IA y cómo combinarlas

    8. PROYECTO (1.1). Servidor web HTTP

    9. PROYECTO (1.2). Refactoring de la lógica de respuesta HTTP

    10. TDD por sí solo no garantiza un buen diseño

    11. DIRECTO: Sesión de grupo 3

    12. DIRECTO: Sesión de grupo 4

    1. Desarrollo incremental: Empezar por un primitive whole + continuar con incrementos

    2. Cómo identificar el primitive whole + incrementos el método de lo hamburguesa

    3. Cómo comenzar el flujo de TDD para implementar el primitive whole: el Walking Skeleton

    4. Extraer responsabilidades para hacer crecer la solución

    5. Refactorizando los tests: descendiendo en la pirámide de tests

    6. Tips para diseñar una API simple: CQS principle + niveles de aislamiento + dependencias

    7. PROYECTO (2.1). Routing

    8. PROYECTO (2.2). Gestión de errores en código de usuario

    9. PROYECTO (2.3). Permitir pasar path params

    10. DIRECTO: Sesión de grupo 5

    11. DIRECTO: Sesión de grupo 6

    1. El diseño es mindfulness: Cómo tomar mejores decisiones de diseño escuchando al código

    2. Code Smells: Definición y Origen

    3. Principales smells (1/4): Duplicated Code

    4. Principales smells (2/4): Primitive Obsession

    5. Principales smells (3/4): Feature Envy

    6. Principales smells (4/4): Message Chain

    7. Categorías (1/5): Bloaters

    8. Categorías (2/5): Object oriented abusers

    9. Categorías (3/5): Change preventers

    10. Categorías (4/5): Couplers

    11. Categorías (5/5): Dispensables

    12. Ejercicio: The code smell explorer

    13. PROYECTO (3.1). Refactoring de path params matching

    14. DIRECTO: Sesión de grupo 7

    15. DIRECTO: Sesión de grupo 8

About this course

  • €597,00
  • 78 lecciones
  • 8 horas de contenido de video

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