Sencillez como tercer pilar del diseño

Resumen

La sencillez es el tercer pilar para construir soluciones de software sostenibles, junto con la reusabilidad y la extensibilidad. Si escribes código que tú mismo no entiendes meses después, algo falla. Aquí te muestro cómo aplicar este principio cuando resuelves problemas y diseñas patrones.

¿Por qué la sencillez importa tanto como la reusabilidad?

La reusabilidad te permite aprovechar clases, funciones y módulos que ya construiste. La extensibilidad te ayuda a integrar cambios nuevos sin tocar demasiado lo existente. Ambas son útiles y vas a verlas presentes a lo largo de cualquier curso de patrones de diseño.

Pero falta algo: mientras más sencilla sea tu solución, más fácil será de comprender. Para ti y para tus compañeros de equipo. Piensa en el escenario clásico, escribes algo, vuelves unos meses después y ya no recuerdas cómo funciona porque lo hiciste demasiado complejo.

¿Qué significa sencillez en el diseño de software? Es priorizar soluciones claras y directas que funcionen primero, antes de optimizar o agregar abstracciones. Si tu compañero no la entiende en una lectura, probablemente sea muy compleja.

¿Cuál es el proceso para resolver un problema con sencillez?

Existe un flujo de cinco pasos que puedes aplicar no solo al construir software, sino a casi cualquier problema:

  1. Pensar el problema y entenderlo bien.
  2. Implementar algo intuitivo y sencillo, con las primeras ideas.
  3. Esperar a que aparezcan nuevos requerimientos.
  4. Planear en términos de reusabilidad y extensibilidad.
  5. Regresar al paso dos y repetir hasta lograr estabilidad.

Este ciclo iterativo es lo que mantiene tu solución viva sin que se vuelva un monstruo difícil de mantener.

¿Cómo aplicar la sencillez en procesos de selección?

Si has estado en entrevistas técnicas, sabes que el tiempo es vital. Cuando te piden implementar un algoritmo, es fácil paniquearse porque tienes muchas ideas en la mente y no priorizas lo sencillo. A veces ni siquiera entiendes bien el problema.

La próxima vez, sigue este orden:

  • Entender el problema antes de tocar el teclado.
  • Dibujar una solución sencilla en papel o pseudocódigo.
  • Hacer que funcione primero, optimizar después.

¿Qué hago si me bloqueo en una entrevista técnica? Vuelve al problema. Reformúlalo en voz alta, identifica entradas y salidas, y empieza con la implementación más obvia aunque no sea elegante. Funcionar primero, refinar después.

¿Qué relación tiene la sencillez con los patrones de diseño?

Si replicas este proceso una y otra vez para problemas parecidos, terminas detectando soluciones recurrentes. Ahí entran los patrones de diseño: recetas para problemas comunes que ya alguien resolvió antes.

Los patrones son parte de tu caja de herramientas como desarrollador. No los memorices por presumir, úsalos cuando el problema lo pida y siempre con la sencillez como filtro. Si un patrón te complica más de lo que te ayuda, probablemente no es el indicado para ese caso.

La fórmula completa queda así, reusabilidad más extensibilidad más sencillez. Haz que funcione primero, después piensa en lo que lo hace verse mejor. Cuando alguien te pregunte si tú lo implementaste, vas a poder responder con orgullo que sí.

¿Qué patrón te ha costado más entender por su complejidad? Cuéntame en los comentarios.