Incluye Code Reviews

Un verdadero senior no pide permiso para refactorizar

«Cualquiera es capaz de escribir código que una máquina pueda ejecutar. Los buenos programadores escriben código que otras personas pueden entender»

Estas palabras las pronunció Martin Fowler hace más de 20 años y siguen estando más vigente que nunca.

Aún hoy en día la mayoría de los programadores siguen dejando el código a medias.

Y si ChatGPT, Sonet, Llama (pon aquí el LLM que quieras) también.

Digo a medias porque aunque la funcionalidad esté completa el trabajo está sin acabar.

Me explico.

Que el código funcione no significa que esté terminado.

Y es que los developers muchas veces nos olvidamos de la otra mitad del trabajo.

La que tiene que ver con hacer el código sostenible.

Con sostenible me refiero a fácil de mantener.

Y con fácil de mantener quiero decir sencillo de cambiar.

Si, cambiar.

Porque hay una verdad absoluta en el software: si un proyecto tiene cierto éxito cambiará.

¿Y cómo se consigue esto?

Pues escribiendo código basado en la simplicidad.

Y es que como decía Steve Jobs: la simplicidad es la máxima sofisticación.

El problema es que escribir código simple es una tarea tremendamente compleja.

Requiere de un nivel de consciencia y pragmatismo a la hora de codificar totalmente fuera de lo común.

Verás.

Cuando programamos desconocemos tantas cosas que vamos acumulando deuda técnica sin darnos cuenta.

A veces porque no nos preocupamos de pensar si la manera en la que estamos desarrollando una funcionalidad es la más simple.

O quizás sea por las prisas y la sensación de urgencia constante.

Otras ni siquiera somos conscientes de que estamos arruinando el código, simplemente ocurre por desconocimiento o falta de entrenamiento.

Desconocimiento unas veces de las necesidades reales del negocio y otras veces de la propia técnica.

La realidad es que nadie escribe el código perfecto a la primera.

Ni tú.

Ni yo.

Ni nadie.

Por más cuidado que pongas (o por muy bueno que seas) cometerás errores de diseño que solamente se pueden subsanar de una manera:

Mediante la refactorización permanente, diaria. No hay otra.

«El product manager no me deja escribir más condicionales»

Esto no lo escucharás nunca salir de la boca de tu jefe.

Lo que sí escucharás es que no hay tiempo para refactorizar, para hacer tests o para dedicar tiempo a un buen diseño.

Es cierto que existe la posibilidad de que cualquiera de nosotros termine dirigido por un micromanager.

Ya sabes, de esos que están todo el día encima mirando cada detalle.

Aunque admito que esto puede ser un problema, descargar la responsabilidad en otras personas no es la solución.

Tenemos que preguntarnos dónde está el límite entre las tareas de las que somos responsables como programadores y las que son trabajo de otro.

¿A qué no le dices al manager cuantos condicionales o cuantas funciones tienes pensado escribir en el próximo sprint?

Sería ridículo hacerlo, ¿verdad?

Entonces, por qué pedimos permiso para refactorizar, hacer tests o dedicar tiempo a un buen diseño, en lugar de seguir haciendo ñapas…

Déjame adivinar, seguro que te dicen todo el rato:

«Ahora no hay tiempo para refactorizar, ya lo haremos cuando se pueda»

Esta frase tendría sentido si no se abusara de ella.

Hay ocasiones en las que esto es así pero está claro que no es la mayor parte del tiempo.

Y es que un producto de calidad no se puede desarrollar en permanente situación de urgencia.

Importante y urgente no son lo mismo.

Y no todo es igual de importante ni de urgente.

La realidad es que cuando tienes soltura refactorizando desarrollas más rápido que sin hacerlo porque ahorras tiempo depurando.

Verás.

El cuello de botella de los proyectos no está en el teclado.

La mayor parte del tiempo se esfuma tratando de entender el código para averiguar dónde hay que introducir los cambios.

Se malgastan mucho más recursos en leer y depurar el código que en escribirlo.

Por esta razón un verdadero Senior NO pide permiso refactorizar.

Un verdadero senior NO pide permiso para mejorar el código cada vez que tiene ocasión (pero si consensúa las decisiones que impactan en el negocio).

En realidad ningún programador que sepa lo que está haciendo debería pedir permiso para refactorizar.

No tiene que ver con ser junior o senior.

Ahora bien, pedir permiso para formarse es otra cosa…

Si no tienes experiencia ni haciendo tests, ni refactorizando y quieres empezar a hacerlo tienes que comunicarlo.

Sobre esto no hay duda al respecto.

Hay que entender que refactorizar es más que una tarea técnica.

Refactorizar tiene valor de negocio porque su función principal es asegurar que el lenguaje y el conocimiento del dominio están reflejados en el código.

Por eso hemos creado Refactoring Sostenible: un programa pensado para que aprendas a mantener el legacy code bajo control con un enfoque pragmático que funciona incluso cuando hay prisas, bugs y deadlines imposibles.

refactoring sostenible

Una formación organizada en 14 módulos, con más de 100 vídeos teóricos y prácticos para que aprendas paso a paso. Además contarás con soporte, acompañamiento y code reviews por email.

Módulo 1: La degeneración del código

Pocas cosas motivan más a un desarrollador que empezar un proyecto desde cero, un greenfield project.

Un repositorio vacío, el stack que eliges tú y la idea (ingenua) de que esta vez no habrá dolores de cabeza.

Pero esa sensación de frescura no dura mucho.

Las prisas, la rotación de gente, los atajos “solo por ahora”… y poco a poco el código empieza a torcerse.

No porque el problema sea demasiado complejo, sino por la deuda técnica que vamos acumulando sin darnos cuenta.

Y llega un momento en que ese código, que debería ser un activo, se convierte en un freno.

En algo que nadie quiere tocar. En legacy code.

En este módulo verás:

Módulo 2: Repaso a las reglas del diseño simple y POLA

“Hay dos maneras de diseñar software: hacerlo tan simple que sea obvio que no hay defectos, o tan complejo que no sea obvio descubrirlos.

Por desgracia, la primera opción es mucho más complicada”.

— Tony Hoare

La simplicidad parece fácil… hasta que intentas aplicarla.

Por eso, este módulo es un repaso a lo básico: las reglas del diseño simple de Kent Beck y el Principio de Menor Sorpresa (POLA).

Dos principios que no brillan por sofisticados, pero que separan al código que resiste el paso del tiempo del que se convierte en un lastre que nadie quiere mantener.

En este módulo verás:

Módulo 3: Repaso a cohesión y acoplamiento

“La cohesión y el acoplamiento son las leyes de la física del diseño de software.”

— Kent Beck

Si las reglas del diseño simple son la brújula, la cohesión y el acoplamiento son la estrella polar: marcando el rumbo, aunque muchos desarrolladores las pasen por alto.

En teoría, todos repetimos el mantra: “alta cohesión, bajo acoplamiento”.

En la práctica, casi nadie lo aplica de manera deliberada.

En este módulo verás:

Módulo 4: Theatrical Players Kata

Pocas cosas hay más aburridas que hablar de refactoring en abstracto.

Por eso, en este módulo nos ponemos manos a la obra y empezamos directamente con un ejemplo real: la Theatrical Players Kata, uno de los ejercicios más conocidos de Martin Fowler.

Verás cómo un código aparentemente sencillo se convierte en una maraña de code smells y cómo refactorizarlo paso a paso hasta dejarlo listo para evolucionarlo con seguridad.

En este módulo aprenderás:

Módulo 5: Fundamentos de refactoring

“La perfección no se alcanza cuando no hay nada más que añadir, sino cuando ya no queda nada que quitar.” — Antoine de Saint-Exupéry

El buen código no nace perfecto, se pule cada día a base de pequeñas mejoras.

Refactorizar es ese proceso de quitar ruido, aclarar la intención y dejar el sistema listo para evolucionar con confianza.

En este módulo verás:

Módulo 6: Estrategias de refactoring

Refactorizar no es solo cuestión de técnica: también es estrategia.

Saber cómo dar los pasos marca la diferencia entre un cambio controlado que mejora el sistema… y una refactorización que abre más problemas de los que resuelve.

A veces se trata de avanzar en pequeños movimientos seguros, casi invisibles. Otras, de aplicar métodos más estructurados para no perderte en la complejidad.

Y en ocasiones, lo más inteligente es saber poner un límite, reconocer cuándo parar para evitar el sesgo del coste hundido.

En este módulo verás:

Módulo 7: Técnicas de Refactoring Automático basadas en ROI

Refactorizar no siempre significa lanzarse a cambios profundos y arriesgados.

A menudo, lo que más valor aporta no es una gran reestructuración, sino un cambio tan sencillo como renombrar algo bien.

En este módulo veremos cómo apoyarnos en el refactoring automático para obtener el máximo retorno de inversión (ROI): pequeños pasos con un gran impacto en la claridad y mantenibilidad del código.

Se trata de dejar de ver el refactor como una “macro reforma” y empezar a tratarlo como una rutina ligera, casi como hacer la cama o recoger el escritorio.

Acciones rápidas, seguras y acumulativas que, con el tiempo, marcan la diferencia.

En este módulo verás:

Módulo 8: Refactoring Workshop

En estos últimos módulos hemos visto conceptos, técnicas y estrategias.

Ahora toca la parte divertida, ensuciarte las manos con ejercicios prácticos.

Este workshop está inspirado en el Refactoring Avanzado de Lean Mind, que durante años se ha impartido a equipos y empresas externas como una formación independiente (vendida entre 500 € y 600 €).

Hoy forma parte de este curso.

La dinámica es sencilla: verás el código, los tests y el problema a resolver.

Pausas el vídeo, intentas tu solución, y luego comparas con la propuesta paso a paso.

En este módulo practicarás:

Módulo 9: Code Smells

Malos olores del código.

Tufos.

Hediondez.

Código que huele.

Código que apesta.

Nadie sabe muy bien cómo traducir el término code smell. Pero bueno, eso no es importante. Lo que sí es importante es entender su razón de ser.

El término no es nuevo: apareció en 1999 en el libro Refactoring de Martin Fowler. En aquel capítulo, escrito junto a Kent Beck, describían un catálogo con 22 smells que señalaban posibles problemas de diseño.

El catálogo ofrece ejemplos de código potencialmente problemático, a menudo relacionado con la cohesión y el acoplamiento.

Código que muestra carencias de diseño en cuanto al mantenimiento.

La metáfora viene a decir algo así: “Vaya, hay algo en este código que me huele mal”. Y a cada olor le dan un nombre.

En este módulo aprenderás:

Módulo 10: Testing Legacy Code

Hay una frase célebre de Michael Feathers que resume el problema en una sola línea:

“El legacy code es simplemente código sin tests”.

Porque sin tests, tu código es una caja negra. Tienes que leerlo, simularlo en tu cabeza, imaginarte escenarios y, al final, cruzar los dedos cuando lo cambias.

Es como lanzarte en paracaídas sin haber revisado si se abre, solo lo descubres cuando ya es demasiado tarde.

Por eso, antes de refactorizar necesitamos construir una red de seguridad.

Tests que nos den confianza, que nos avisen cuando rompemos algo y que nos permitan avanzar sin romper nada.

En este módulo va de eso, aquí verás:

Módulo 11: Gilded Rose Refactoring Kata

Un clásico entre clásicos. Un código heredado, lleno de condicionales, reglas cruzadas y nombres crípticos… y lo peor de todo: sin tests.

La kata Gilded Rose es un reto disfrazado de ejercicio.

Te pone delante de un sistema que parece imposible de cambiar sin que algo se rompa.

Justo la situación en la que tarde o temprano te vas a encontrar en un proyecto real.

En este módulo practicarás:

Módulo 12: Refactoring a Arquitectura Hexagonal

Este módulo en sí mismo es una masterclass que podría haber vendido por separado.

Aquí descubrirás cómo aplicar refactoring no solo variables, funciones o clases, sino a toda la arquitectura de un sistema.

Porque la arquitectura no es algo fijo que se diseña al principio y se queda ahí para siempre: es un organismo vivo que evoluciona junto con el software.

Verás cómo pasar de arquitecturas en capas rígidas (que en la práctica se convierten en lasañas imposibles de mantener) a una arquitectura hexagonal flexible, con límites claros entre dominio e infraestructura.

En este módulo aprenderás:

Al terminar, verás la arquitectura como una herramienta que puedes moldear a tu favor, en lugar de una jaula que limita tu código.

Módulo 13: Refactoring Frontend asistido por IA

Otro módulo que podría ser una masterclass a parte.

Aquí trabajarás con un frontend heredado donde toda la lógica de negocio está incrustada en la vista, sin separación de responsabilidades y sin una sola prueba automática que te dé confianza.

El reto es doble, aprenderás a cubrir el sistema con tests antes de tocar nada, y después a ir dividiendo un god component en piezas cohesivas, moviendo la lógica de negocio al dominio y encapsulando la infraestructura en adaptadores.

Además te mostraré cómo apoyarte en la IA para acelerar el proceso de refactorización sin perder el control del diseño.

En este módulo verás como:

Módulo 14: Estrategias para migrar la arquitectura legada

El código heredado merece respeto, es el que paga las facturas.

Pero también exige paciencia, lo que degeneró durante años no se arregla en unas semanas.

La clave está en migrar sin romper, construyendo alrededor del sistema heredado mientras sigues entregando valor al negocio.

En este módulo aprenderás:

Si aún no lo tienes claro, aquí tienes los contenidos detallados

Se trata de una formación de alto nivel organizada en 16 módulos que incluye más de 100 videos teóricos y prácticos.

Las lecciones son concisas, valoramos tu tiempo tanto como el nuestro, así que no te haremos perderlo dando rodeos.

Módulo 1: La degeneración del código
1.1. Introducción a la formación
EMPEZAR
1.2. La degeneración del código
EMPEZAR
1.3. Qué significa Legacy Code
EMPEZAR
Módulo 2: Repaso: Las reglas del Diseño Simple y POLA
2.1. Las cuatro reglas
EMPEZAR
2.2. Pasa los tests
EMPEZAR
2.3. Código con intencionalidad
EMPEZAR
2.4. DRY
EMPEZAR
2.5. YAGNI y KISS
EMPEZAR
2.6. POLA
EMPEZAR
Módulo 3: Repaso: Cohesión y Acoplamiento
3.1. Cohesión y acoplamiento
EMPEZAR
3.2. Midiendo el acoplamiento
EMPEZAR
3.3. Hablemos de la cohesión
EMPEZAR

Y lo más importante: el soporte y las code review

En esta formación no hay grupos de Slack. Ni canales de Discord. Ni foros donde preguntas y nadie contesta.

Aquí me tienes a mí.

Si te atascas, si algo no te queda claro o si necesitas revisar un ejercicio, me escribes directamente por email.

Y te respondo personalmente.

Además, durante los primeros 6 meses puedes enviarme tus soluciones a las katas del curso y recibir feedback detallado sobre tu código.

Sin bots.
Sin asistentes.
Sin "tutores certificados".

Solo tú, tu código y yo.

La mejor forma de aprovechar este acompañamiento es esta:

Primero haces el ejercicio por tu cuenta.

Me mandas tu solución. Reviso el código y te doy feedback concreto.

Después ves cómo lo resuelvo en los vídeos del curso. Comparamos enfoques, criterios, decisiones de diseño.

Y una vez lo has visto, vuelves a escribir tu propia solución. Me la envías de nuevo.

Y revisamos juntos qué ha mejorado… y qué detalles aún pueden afinarse.

Ahí es donde de verdad interiorizas lo que has aprendido.

Porque no se trata de ver cómo lo hago. Se trata de que lo pienses tú, lo hagas tú y lo trabajemos juntos.

Este servicio de acompañamiento y Code Reviews te lo podría vender perfectamente por 100 €/mes (o lo que es lo mismo: 600 € los 6 meses).

Tú te lo llevas incluido, sin pagar un euro más.

Muy bien, pero ¿cuál es el precio de una formación tan completa?

Como dice Warren Buffet: “Precio es lo que pagas, valor es lo que recibes.”

O dicho de otra forma: "solo el necio confunde valor con precio".

La pregunta es: ¿cuánto vale para ti algo así?

No solo por la calidad y cantidad del contenido, más el acompañamiento y las Code Reviews.

Yo tengo claro lo que habría pagado:

¿1000€?

¿1500€?

(¿1000 o 1500€, Miguel? Exagerado…)

Te aseguro que he pagado formaciones mucho más caras que esta, y con mucho menos valor.

Pero claro, yo soy yo, y mis circunstancias.

La verdad que he tenido problemas para poner el precio… ¿Por qué? Porque esto no es solo otro curso online, es más de un año de trabajo y en parte, también estoy vendiendo mi tiempo.

Aun así, había que poner una cifra. Y esta es la de ahora (que no será la definitiva y seguirá subiendo).

400€ impuestos incluidos. Pago único.

Fin de la historia.

Si quieres entrar a Refactoring Sostenible solo tienes que darle al botón de comprar hoy. En menos de 3 minutos estarás dentro.

Refactoring SostenibleRefactoring SostenibleTécnicas para mantener el Legacy Code bajo control400COMPRAR HOYpaymentsSecured by Stripe with AES-256 Encryption
Una formación de alto nivel que incluye:
  • Acceso de por vida, nada de suscripciones.
  • Más de 100 videos teóricos y prácticos. Son lecciones concisas, no te haremos perder el tiempo dando rodeos.
  • Katas, ejercicios y repositorios de código para que aprendas haciendo.
  • Acceso a las actualizaciones que hagamos en las futuras ediciones del curso.
  • Soporte y revisiones de código durante 6 meses.

Preguntas que quizás te estás haciendo

- ¿Qué conocimientos previos?

Esta formación está pensada para programadores profesionales.

Vale tanto para juniors como para seniors, pero si partes desde cero, no es el momento. Tener experiencia haciendo tests de ayudará a sacarle más partido.

- Programo en otro lenguaje, ¿me sirve?

Sí. El 90% del contenido es transversal y aplicable en cualquier lenguaje.

He elegido TypeScript como vehículo porque está creciendo rápido y es muy versátil. Pero el foco está en el diseño, no en el stack.

- ¿Desde cuándo tengo acceso?

Desde el momento en que haces la compra.

- ¿Tiene fechas o plazos?

No, tú decides cuándo la empiezas y cuándo la acabas. Una vez terminada podrás consultarlo las veces que quieras.

Esta no es la típica suscripción que tienes que pagar cada mes o cada año, pagas una vez y tendrás acceso para siempre.

- ¿Hay grupo de soporte?

Esto es importante que lo tengas claro: No hay grupo de Facebook, ni Slack, ni Discord.

Hay algo mejor.

Si tienes dudas (que las tendrás) me escribes directamente a mí por email. Te responderé personalmente.

Además, podrás enviarme tu solución sobre los ejercicios y katas propuestas para recibir feedback durante los 6 primeros meses tras la compra.

- Quiero aprovechar la oferta pero no voy a poder empezar el curso, ¿puedo posponer el soporte?

Sí. Escríbeme en cuanto hagas la compra y lo tengo en cuenta. Eso sí: si pasa un año y no has empezado, caduca.

- ¿Me revisas cualquier código?

No. El soporte no es una mentoría personalizada. Reviso los ejercicios y katas propuestas en el curso, no proyectos externos.

- ¿Hay garantía de devolución?

No, en ningún caso. Si no tienes claro que te compense, mejor no la compres.

- ¿Podemos comprar una sola licencia para varios miembros del equipo?

No. La licencia es individual.

Aunque el formato sea digital, incluye soporte personalizado, revisiones de código y corrección del ejercicio.

Cada persona que accede necesita su propia inscripción. Si son varios en el equipo, cada desarrollador debe realizar su propia compra.

- ¿No es caro 400€ por un curso online?

El soporte por sí solo ya vale más que eso.

Si te parece caro, o no puedes permitírtelo, no la compres.

- ¿Se puede pagar a plazos?

Sí, con Klarna puedes dividir el pago en 3 cuotas sin intereses (disponible en varios países).

- ¿Puedo pagar por transferencia o criptomonedas?

Sí. Escríbeme a miguel.gomez@softwarecrafters.io y te explico cómo.

- ¿Haces factura?

Sí. Solo tienes que rellenar tus datos de facturación al comprar y la recibirás en 48h.

- ¿Es bonificable por FUNDAE?

No. Superamos el límite de alumnos permitido para estas ayudas.

Tampoco la diseñé pensando en ayudas públicas sino en contenido que realmente sirva.

- ¿Haces descuentos?

Nunca. Por simple respeto a los alumnos que ya están dentro. Ni por Black Friday, ni por Navidades, ni por el día del programador.

Hoy es el mejor precio al que puedes entrar. Mañana será igual o más alto. Nunca más bajo.

Refactoring SostenibleRefactoring SostenibleTécnicas para mantener el Legacy Code bajo control400COMPRAR HOYpaymentsSecured by Stripe with AES-256 Encryption
Una formación de alto nivel que incluye:
  • Acceso de por vida, nada de suscripciones.
  • Más de 100 videos teóricos y prácticos. Son lecciones concisas, no te haremos perder el tiempo dando rodeos.
  • Katas, ejercicios y repositorios de código para que aprendas haciendo.
  • Acceso a las actualizaciones que hagamos en las futuras ediciones del curso.
  • Soporte y revisiones de código durante 6 meses.

Una colaboración de:

Colaboración