La informática ha evolucionado mucho en los últimos años, pasando de ser un hobby de unas pocas personas, a un sector profesional cada día más importante en los países desarrollados. Sin embargo, ¿estamos haciendo mejor software ahora que antes?, este debate es el que os propongo hoy, entorno a los proyectos frankenstein.
Tabla de contenidos
Leyendo el interesante blog de Javi Santana y su artículo que os recomiendo especialmente: Algunos consejos para diseñar un API leí una frase que me marcó muchísimo y no era capaz de quitarme de la cabeza:
“Recuerda que ahora la gente no programa, busca el ejemplo más cercano a lo que necesitan y los modifican.”
Esta frase creo que resume de manera bastante adecuada el flujo de trabajo de la mayoría de los desarrollos actuales. Lo que nos lleva al software frankenstein.
Como los más antiguos recordarán y otros conoceremos por libros y buenas series como Halt and Catch Fire, al principio los conocimientos de desarrollo se compartían por las siguientes vías:
Como se puede apreciar, según avanzó la informática, estas vías no eran escalables, cada vez había más que comunicar y los soportes eran limitados. Además, estos soportes solían tener cierto coste, que no todo el mundo se podía permitir.
En esta época, al programador de turno no le quedaba otra que leerse el manual de su magnífico equipo, los últimos artículos de las revistas de rigor y ponerse manos a la obra, a diseñar y crear software. El resultado medio, es el que todos conocemos como código spaguetti.
Si no conoces el concepto de código spaguetti, este hace referencia a un tipo de código donde todo está muy mezclado y es muy complejo seguir el hilo de ejecución del programa. Esto básicamente ocurría/ocurre porque no se separa las responsabilidades de los métodos, se abusa de condicionales, visibilidades compartidas y la utilización del malogrado goto.
Sin embargo, en esta primera época de la informática hacer cualquier cosa era complicado, ni tenían las herramientas que tenemos ahora, ni el conocimiento y la experiencia actual. Así que hay que reconocer que en aquella primera edad había gente con un nivel espectacular, que sentaron las bases de todo lo posterior.
En contraposición a la primera etapa, actualmente sí contamos con buenas herramientas, equipos, experiencia, lenguajes para distintos propósitos y comunidades para compartir conocimiento como GitHub o StackOverflow. Aunque, paradójicamente, el código actual no parece que sea varios órdenes de magnitud mejor que el que se hacía en la primera época.
Como decía Javi Santana, sería aquél proyecto que se ha creado copiando y pegando código de distintos sitios, adaptándolo para cumplir los requisitos de la empresa y añadiendo algo de código pegamento, para que todo se mantenga. Estas son algunas maneras de detectarlo:
Viendo las características anteriores, seguramente te vengan a la mente multitud de proyectos que conoces que podrían ser catalogados como proyectos frankenstein. Esto lleva a preguntarnos, ¿por qué hay tantos?. La respuesta como siempre, es compleja y se debe más a una suma de factores que a una cuestión concreta, yo he identificado los siguientes:
Una de las formas más sencillas para detectar estos tipos de proyectos y huir de ellos, es ver cómo funciona la empresa y su equipo de desarrolladores. Para medirlo, una de las formas más comunes es utilizar el test de Joel, uno de los creadores de StackOverflow, que evalúa lo bien que trabaja un equipo. Para ello atiende a distintos factores como las herramientas que usan, la manera de afrontar los errores o las condiciones de trabajo.
Para cerrar este artículo, que espero cree debate, me gustaría recordar la cita con la comienza el famoso libro Clean Code:
“Writing clean code is what you must do in order to call yourself a profesional. There is no reasonable excuse for doing anything less than your best”
Un saludo.
Hoy queremos hablaros de Docker un proyecto que cada día es más usado, porque permite…
Cada vez estamos más acostumbrados a usar código para generar la infraestructura (IaC), documentar nuestro…
Uno de los problemas que se presentan con una mayor frecuencia hoy en día, es…
Uno de los problemas que solemos tener los programadores, es que nos gusta estar a…
Docker es una de las herramientas más usadas por los desarrolladores, sin embargo, usarlo en…
Como seguramente sabrás el uso de JavaScript ha crecido exponencialmente en los últimos tiempos, sin…