Este curso profundiza en los principios de diseño de software, con un enfoque central en los principios SOLID, y en su aplicación práctica para analizar, evaluar y mejorar código escrito en C#, particularmente en escenarios donde dicho código es generado o asistido por herramientas de inteligencia artificial.
En un ecosistema donde la IA genera soluciones funcionales en segundos, el riesgo de acumular deuda técnica acelerada es más alto que nunca. Este curso proporciona a los estudiantes las herramientas para dejar de ser un consumidor pasivo de código y comenzar a estructurar soluciones con criterio de arquitectura. A través de SOLID y principios de diseño limpio, el estudiante aprenderá a identificar y corregir las debilidades estructurales —como el acoplamiento rígido o la lógica dispersa— que los modelos de lenguaje suelen pasar por alto, garantizando software mantenible y escalable en C#.
A diferencia de enfoques tradicionales centrados en la memorización de definiciones o en la aplicación mecánica de buenas prácticas, este curso se orienta a leer y cuestionar código existente, identificar code smells, analizar dependencias y evaluar cómo un diseño responde ante el cambio, fomentando el criterio técnico por encima de la solución inmediata.
La inteligencia artificial se incorpora como un generador de propuestas y escenarios de análisis, produciendo código que cumple con los requisitos funcionales pero que debe ser examinado críticamente. El estudiante aprende a debatir con la IA, solicitar justificaciones, contrastar alternativas y tomar decisiones de diseño fundamentadas, evitando la aceptación automática de soluciones.
Al finalizar el curso, el estudiante contará con un marco mental sólido para evaluar la calidad del diseño de un código, detectar violaciones a principios fundamentales —incluidos los principios SOLID— y proponer mejoras razonadas, sentando una base firme para abordar arquitecturas y soluciones más complejas en etapas posteriores de su formación.
Objetivos
Al finalizar el curso, el estudiante será capaz de:
Audiencia
Este curso está diseñado para desarrolladores que ya escriben código funcional en C#, pero que desean evolucionar de "hacer que funcione" hacia "diseñar software mantenible y escalable".
Este curso es para ti si:
Perfiles típicos:
Reconocerás que necesitas este curso si alguna vez has pensado:
Este curso NO es para ti si:
Requisitos
Para seguir las prácticas y ejemplos, necesitarás un entorno basado en las últimas innovaciones de la plataforma .NET:
Formato del curso
Las sesiones se llevarán a cabo en vivo a través de Microsoft Teams, brindando una experiencia interactiva y enriquecedora.
Durante las sesiones en vivo, los participantes tendrán la oportunidad de interactuar directamente con el instructor y con otros asistentes para resolver dudas y profundizar en los temas abordados.
Todas las sesiones serán grabadas y puestas a disposición para su descarga, permitiendo a los participantes repasar los contenidos a su propio ritmo o recuperar las clases en caso de no poder asistir en vivo. Adicionalmente, en el Team dedicado del curso en Microsoft Teams, los participantes podrán plantear dudas, continuar las discusiones iniciadas en clase y recibir acompañamiento durante el desarrollo del curso, incluso fuera del horario de las sesiones en vivo.
Material para el participante
Cada participante recibirá un manual de estudiante en formato PDF con los temas del curso.
Diploma
Al finalizar el entrenamiento los participantes recibirán un certificado digital de participación.
Fecha de inicio
Martes 3 de marzo de 2026
Horario
Martes y Jueves (dos sesiones por semana).
17:00 a 18:30 horas UTC-06. Tiempo del centro de México.
Duración
24 horas
Costo
El curso tiene un costo de 199 USD o 3,332.00 pesos mexicanos.
Estudiantes sin correo institucional, recien egresados o desempleados, escriban a logistica@ticapacitación.com para solicitar información sobre otros tipos de apoyo.
Registro
Realiza el pago en dólares a través de PayPal o en pesos mexicanos mediante transferencia o depósito bancario y envía tu comprobante a logistica@ticapacitacion.com para confirmar tu participación.
En el caso de pago de un grupo de 2 estudiantes con correo institucional, enviar los nombres y correos de los dos estudiantes junto con el comprobante de pago.
NOTA: Para la emisión de facturas en la república mexicana, el pago deberá ser realizado mediante transferencia o depósito bancario.
Enlace para pago en dólares americanos (USD) mediante PayPal
Datos para pago en pesos mexicanos mediante transferencia o depósito bancario
Si necesitas más información, escribe a logistica@ticapacitacion.com.
El cupo es limitado.
Lección 1
La trampa del código funcionalEn esta lección estableceremos la diferencia entre el código que simplemente cumple una función y el código que está bien diseñado. Describiremos la trampa del código funcional mostrando cómo la IA puede acelerar errores estructurales al dar respuestas que compilan pero que, a largo plazo, dificultan el mantenimiento y el crecimiento del sistema.
Analizaremos por qué el éxito funcional no es suficiente para considerar que una tarea está terminada. Aprenderemos a identificar la deuda técnica que introducen las herramientas generativas y a desarrollar el criterio necesario para evaluar la calidad estructural del código antes de integrarlo a un proyecto.
Introduciremos también el concepto de leer código como ingeniero: la capacidad de analizar no solo qué hace un fragmento de código, sino por qué está estructurado así, qué supuestos asume y cómo responderá ante el cambio.
Esta lección incluye la creación del proyecto que acompañará todo el curso: un sistema de gestión de pedidos generado con ayuda de la IA, que servirá como caso de estudio para analizar, cuestionar y mejorar a lo largo del curso.
Objetivos
Al finalizar esta lección, el estudiante será capaz de:
Lección 2
El principio de responsabilidad única (Single Responsibility Principle)En esta lección aprenderemos a identificar uno de los problemas más comunes en el código generado por IA: clases y métodos que acumulan demasiadas responsabilidades. Analizaremos el concepto de cohesión como guía para determinar qué debe y qué no debe pertenecer a una clase, y aprenderemos a detectar las "fugas de lógica" donde la lógica de negocio se mezcla con la persistencia, la presentación o la validación.
Trabajaremos sobre el proyecto de pizzería generado en la lección anterior, auditando sus responsabilidades implícitas y debatiendo con la IA sobre cómo separar lo que hace demasiado. El objetivo no es dividir por dividir, sino desarrollar el criterio para reconocer cuándo una clase tiene más de una razón para cambiar y qué consecuencias tiene eso en el largo plazo.
Objetivos
Al finalizar esta lección, el estudiante será capaz de:
Lección 3
El principio Abierto/Cerrado (Open/Closed Principle)En esta lección abordaremos uno de los síntomas más costosos del mal diseño: el código que debe modificarse cada vez que el negocio cambia. Analizaremos por qué los modelos de lenguaje tienden a generar soluciones "cerradas al cambio", con condicionales “hardcoded” que crecen con cada nuevo requisito, y aprenderemos a reconocer los puntos de variación donde el diseño debería ser extensible.
Utilizaremos el proyecto de pizzería para simular el dolor del cambio: agregaremos nuevos tipos de descuento y observaremos cómo un diseño rígido obliga a modificar código existente y funcional. A partir de ese experimento, rediseñaremos el sistema para que pueda extenderse con nuevas funcionalidades sin tocar lo que ya funciona, evaluando el balance entre extensibilidad y complejidad innecesaria.
Objetivos
Al finalizar esta lección, el estudiante será capaz de:
Lección 4
El principio de sustitución de Liskov (Liskov Substitution Principle)En esta lección exploraremos uno de los principios más sutiles y frecuentemente violados del diseño orientado a objetos. Aprenderemos que no basta con que una jerarquía de clases compile correctamente: las clases derivadas deben respetar los contratos implícitos de su clase base, garantizando que cualquier sustitución sea transparente para el resto del sistema.
Analizaremos cómo la IA suele generar jerarquías que "funcionan" pero que ocultan violaciones lógicas: métodos que lanzan excepciones inesperadas, precondiciones más restrictivas o comportamientos que contradicen lo que la clase base promete. A través del proyecto de pizzería, identificaremos estas falsas abstracciones y aprenderemos a diseñar jerarquías honestas, evaluando cuándo la herencia es la solución correcta y cuándo la composición es preferible.
Objetivos
Al finalizar esta lección, el estudiante será capaz de:
Lección 5
El principio de segregación de interfaz (Interface Segregation Principle)En esta lección abordaremos uno de los vicios más frecuentes del código generado por IA: la tendencia a crear interfaces sobrecargadas que obligan a sus implementadores a depender de métodos que no necesitan ni usan. Aprenderemos a distinguir entre interfaces que agregan valor real y abstracciones que solo introducen complejidad accidental, desarrollando el criterio para saber cuándo segregar y cuándo simplificar.
Trabajaremos con el proyecto de pizzería para identificar interfaces "fat" creadas durante las refactorizaciones anteriores y evaluaremos si cada cliente realmente necesita todo lo que la interfaz le impone. El énfasis de esta lección no es solo aplicar el principio, sino también cuestionar cuándo su aplicación introduce más problemas de los que resuelve, combatiendo la tendencia dogmática de abstraer todo por defecto.
Objetivos
Al finalizar esta lección, el estudiante será capaz de:
Lección 6
El principio de inversión de dependencias (Dependency Inversion Principle)En esta lección abordaremos el principio que sienta las bases para todo lo que vendrá en el curso de arquitectura: la inversión de dependencias. Aprenderemos por qué el código de negocio no debe conocer los detalles de infraestructura, cómo el acoplamiento rígido a implementaciones concretas destruye la testabilidad y la flexibilidad del sistema, y cómo la inyección de dependencias resuelve este problema de forma elegante en C# moderno.
A través del proyecto de pizzería, identificaremos todas las dependencias ocultas que se han acumulado a lo largo del curso — instanciaciones directas, llamadas estáticas, dependencias del sistema — y las reemplazaremos por abstracciones inyectadas. El resultado será un sistema donde cambiar un mecanismo de persistencia o un canal de notificación no requiere tocar la lógica de negocio, y donde cada componente puede probarse de forma aislada.
Objetivos
Al finalizar esta lección, el estudiante será capaz de:
Lección 7
El criterio por encima de las reglasEn esta lección no aprenderemos principios nuevos de forma aislada: los integraremos todos en un marco de criterio técnico coherente. Revisaremos SOLID como un sistema de decisiones interrelacionadas, donde aplicar bien un principio puede tensionar otro, y donde el juicio del ingeniero está precisamente en navegar esas tensiones con argumentos sólidos y no con dogmatismo.
Incorporaremos principios complementarios que actúan como contrapesos: KISS, YAGNI y DRY para evitar la sobre-ingeniería que SOLID puede provocar cuando se aplica mecánicamente. Introduciremos también dos principios adicionales que amplían el criterio ya desarrollado: Separation of Concerns (SOC) y la Ley de Demeter como herramienta práctica para detectar acoplamiento oculto en el código generado por IA. Ninguno de estos se presentará como una regla adicional a memorizar, sino como una perspectiva que enriquece el juicio técnico.
Realizaremos un code review integral sobre el proyecto de pizzería en su estado final, evaluando las decisiones de diseño tomadas a lo largo del curso: cuáles fueron acertadas, cuáles introdujeron complejidad innecesaria y cuáles representan trade-offs válidos y bien argumentados. Identificaremos las tensiones reales entre principios — los momentos en que aplicar uno correctamente implica ceder en otro — y practicaremos cómo argumentar esas decisiones con vocabulario técnico preciso.
El curso cierra con una mirada hacia adelante: los principios vistos aquí son la base sobre la que el curso de arquitectura construirá soluciones más complejas. El estudiante que termina esta lección no memoriza reglas: ha desarrollado un ojo clínico para leer, cuestionar y mejorar código con criterio de ingeniero.
Objetivos
Al finalizar esta lección, el estudiante será capaz de: