La teoría de las ventanas rotas en desarrollo de software

La teoría de las ventanas rotas en desarrollo de software
Photo by Ian Battaglia / Unsplash

Una de las primeras cosas que se aprende cuando se empieza en el desarrollo de software, es que por desgracia, si no se tiene cuidado, el software tiende al caos. Se pudre. De hecho, creo que:

El software es como la comida 🍔, si no tienes cuidado, se pudre muy rápido.

Algunas personas a este desorden le llaman deuda técnica pues tienen la ilusión de que pagarán su desastre algún día. Pero en mi experiencia, los programadores nunca vuelven a tocar ese código mal hecho.

Creo que existen muchos factores por el que los profesionales del software no pagan la deuda técnica y por ende el software se pudre. Uno de ellos, para mi el más importante, es la cultura del equipo técnico.

Si. Cultura. Como ya lo vimos en la importancia del código limpio es indispensable tener una cultura basada en buenas prácticas para que el desarrollo y mantenimiento de software sea un proceso sencillo.

Te podrás preguntar: "Bueno, muy bien, pero ¿eso que tiene que ver con ventanas rotas?"

De ventanas rotas y deuda técnica

La teoría de las ventanas rotas, es una teoría de criminología y sociología urbana que sostiene que el vandalismo y crímenes menores pueden disminuir si los problemas pequeños se resuelven con velocidad.

Si existe una ventana rota en algún edificio y ésta no se repara, daría una imagen de descuido y falta de mantenimiento. Pronto otra persona romperá una segunda ventana o quizá un grafiti aparecerá en la fachada. Tal vez un poco de basura se empezará a juntar en la entrada. Pronto tendremos un edificio en situación de abandono, libre para ser usado como refugio de actividades nocivas para la comunidad.

Ahora imagina que eres el dueño de ese edificio. Si no fuiste diligente, tardarás mucho tiempo en reparar todos los desperfectos. Incluso, desistirás de hacerlo: ¡Todo por una bendita ventana que no se reparó a tiempo 😔!

black flat screen computer monitors
Photo by Hack Capital / Unsplash

Lo mismo pasa con el desarrollo de software. Si las ventanas rotas (decisiones equivocadas de tecnología, diseños deficientes, código con malas prácticas, etc) no se reparan; pronto aparecerán errores, el mantenimiento será imposible, el equipo se frustrará y los buenos profesionales se irán.

Ahora volvemos al punto inicial. Dejar o no las ventanas rotas en tus proyectos es una situación cultural. Cualquiera que llegue y vea que en el software se puede construir "como sea y sin cuidado" no se lo pensará dos veces y hará lo que los demás: ser negligente. ¡Todos romperán ventanas impunemente!

Como evitar las ventanas rotas en proyectos de software

Tu mi estimado/a lector/a tienes que evitar las ventanas rotas sin importar si acabas de llegar al proyecto o si tienes 20 años ahí.

De hecho, puedes mejorar la cultura del buen gusto profesional y evitar las ventanas rotas si logras:

  1. Implementar prácticas de desarrollo probadas: Fomenta el uso de la revisión exhaustiva de código, la programación en pares y el uso de herramientas como SonarQube y por supuesto, el código limpio.
  2. Actualizar dependencias y tecnologías obsoletas: Si las ventanas rotas están relacionadas con dependencias o tecnologías obsoletas, considera actualizarlas a versiones más recientes y compatibles para resolver los problemas de compatibilidad y seguridad.
  3. Realizar pruebas exhaustivas: Implementa pruebas automatizadas y manuales para detectar y corregir errores en el software.
  4. Refactorización de código: Creo, la más importante de todas pues mejora la estructura y la legibilidad del código y al hacer esto facilita identificar y pagar la deuda técnica.

Conclusion

De ahora en adelante cuestiónate sobre los problemas que traerán tus decisiones o la falta de ellas en el equipo y en tu software. Tal vez ese pequeño pedazo de código que hiciste o no revisaste se vuelva contra ti en el futuro.

Recuérdalo siempre: no te permitas vivir con ventanas rotas. Y si es necesario estar con alguna, intenta repararla rápido. Jamás permitas que tu software tienda al caos.

Aquí te lo dejo, un articulo para reflexionar.