Cargo Cult: Las trampas de la programación por coincidencia
TRANSFORMACIÓN, TENDENCIAS ALTO NIVEL.La programación o desarrollo Cargo Cult es un concepto que tiene su origen en el término Cultos del Cargo como se conoce en español, que se refiere a un fenómeno social que ocurre cuando una comunidad imita a otra cultura con la esperanza de obtener los mismos beneficios materiales y sociales que esa cultura posee. El término se originó en el Pacífico Sur, durante la Segunda Guerra Mundial, cuando las fuerzas aliadas construyeron bases militares en varias islas de la región. Los habitantes locales, que nunca habían visto tecnología tan avanzada, se sorprendieron al ver aviones aterrizar en las pistas de aterrizaje y a los soldados cargando grandes cantidades de suministros y equipo.
Después de que los aliados se fueron, algunos habitantes comenzaron a imitar lo que habían visto a los soldados hacer en las bases militares. Construyeron pistas de aterrizaje rudimentarias con palos y hojas de palma, encendieron fuegos en forma de torres de control y construyeron aviones falsos hechos de madera y hojalata. Esperaban que, al hacerlo, atraerían a los aviones de vuelta y recibirán los mismos suministros y beneficios materiales que habían visto a los soldados tener.
En una línea similar, la programación Cargo Cult se refiere a la práctica de desarrollar software sin una comprensión adecuada de los lenguajes, herramientas, técnicas y marcos utilizados en el proceso. A pesar de que este término se acuñó hace décadas, todavía es un problema común en la industria de la programación en la actualidad.
Cómo funciona el Cargo Cult en desarrollo web
El fenómeno del Cargo Cult, en el desarrollo de software se refiere a la tendencia de imitar prácticas y tecnologías de empresas más grandes sin entender realmente su propósito o cómo se adaptan a nuestro propio proyecto. Es común ver la adopción ciega de marcos de trabajo o la inclusión de características innecesarias en un sitio web solo porque parecen estar de moda o son utilizadas por grandes empresas.
Sin embargo, esta práctica puede tener consecuencias negativas en el rendimiento y la funcionalidad del sitio web. La inclusión de características innecesarias puede hacer que el sitio web sea más lento y difícil de mantener, mientras que la adopción ciega de marcos de trabajo puede generar problemas de compatibilidad y seguridad.
Es importante estar consciente de esto al contratar servicios de programación y asegurarse de que se esté escribiendo código de calidad y eficiente para evitar caer en la trampa del Cargo Cult.
Este puede tomar varias formas, entre ellas :
Cuando se escribe o se copia código sin entender cómo funciona o sin saber si es necesario para resolver el problema. Por ejemplo, si se copia ciegamente el código de Stack Overflow sin entenderlo, se está practicando una programación de Cargo Cult.
Cuando se utilizan patrones de diseño o estilos de programación sin analizar si son útiles o si deberían usarse para resolver el problema. Por ejemplo, si se implementa una interfaz en cada clase sin analizar si es necesario o no, se está haciendo diseño de Cargo Cult.
Ejemplos comunes de Cargo Cult en programación
Agregar comentarios innecesarios a código que es fácil de entender por sí solo.
Adherirse de manera exagerada a las convenciones de un lenguaje de programación sin comprender completamente su uso y significado.
Copiar y pegar código sin entender cómo funciona o cómo se aplica a un problema específico.
Aplicar un patrón de diseño o estilo de programación sin entender las razones detrás de ese principio de diseño.
Escribir código que solo resuelve un problema específico, en lugar de diseñar una solución que sea escalable y sostenible a largo plazo.
Enfocarse en completar el trabajo lo más rápido posible, en lugar de crear código eficiente y sostenible.
Inconvenientes que deben evitarse
Es importante reconocer que escribir código sencillo y limpio es esencial para el éxito a largo plazo. Aunque puede ser un reto, la simplicidad requiere experiencia para hacer las concesiones adecuadas. Escribir código complejo puede parecer una solución rápida, pero a la larga costará tiempo y dinero en el futuro, cuando alguien tenga que mantenerlo.
Aquí algunos de los inconvenientes más comunes que se presentan con una mala práctica.
El método de “adivinar” el código
Cuando se escribe código sin entender cómo funciona o si es necesario, se puede recurrir a un enfoque de prueba y error en el que se copian muestras de código encontradas en Internet y se ajustan hasta que el código parece funcionar. Sin embargo, este enfoque puede dar lugar a varios problemas:
Es posible que no se identifiquen los riesgos de seguridad, lo que significa que el código no sería seguro.
Es posible que no se gestionen correctamente los casos extremos, lo que dificultaría el uso del código.
Existe la posibilidad de que se utilice una solución subóptima, lo que se traduce en un código más lento o en posibles problemas futuros.
Aunque experimentar con ejemplos de código es un método de aprendizaje habitual, también es importante comprender cómo y por qué funciona el código.
2. Complejidades innecesarias
Si se practica un diseño Cargo Cult, es probable que el código se vuelva innecesariamente complejo. Por ejemplo:
Si se utiliza el patrón de diseño "incorrecto", el código necesario para implementar una característica suele ser más complejo que si utiliza el patrón "correcto".
Si se insiste en que cada clase implemente una interfaz, se creará código más difícil de leer. Si solo hay una implementación de una interfaz, se crea un desorden innecesario que ralentiza la navegación hacia esa implementación.
Si se intenta resolver todos los problemas con programación funcional, el código puede llegar a ser mucho más difícil de leer que el código escrito con programación imperativa. Aunque la programación funcional tiene sus ventajas, hay situaciones en las que un desarrollador ha tenido que reescribir su código con una sentencia if-else porque el revisor prefería la programación funcional. Por desgracia, el código "arreglado" era mucho más difícil de leer que el código original.
Consejos para evitar las prácticas Cargo Cult.
Por desgracia, no hay una forma que garantice evitar que esto ocurra. Sin embargo, hay algunas medidas que se pueden tomar para, al menos, reducir las probabilidades. A continuación, se presentan algunas de ellas.
Se debe tener un equipo de revisión de código/programación
La primera medida que se puede tomar para evitar la programación Cargo Cult es simplemente asegurarse de contar con un segundo par de ojos en el código. Los beneficios de tener más de una persona revisando cada línea de código antes de que pase a producción no son exagerados. Y aunque la revisión de código y la programación en parejas no son equivalentes perfectos, ambas prácticas aportarán este beneficio.
2. Es importante asegurarse de que el equipo realice pruebas periódicas
Se deben escribir pruebas unitarias (y otros tipos de pruebas también). Es importante asegurarse de que las pruebas a la aplicación sean supervisadas por varios. También se debe supervisar la aplicación en producción. Si algo no funciona bien, se debe exigir un benchmark. No se debe permitir que el equipo se limite a suponer cosas.
3. Fomentar la lectura del código entre el equipo
Leer el código de otras personas es una forma estupenda de aprender. Es una herramienta perfecta para comparar las propias ideas y suposiciones con lo que otros desarrolladores están haciendo, exponiendo conceptos novedosos que pueden otorgar una comprensión más profunda de los problemas en cuestión. En la era de GitHub, es fácil hacerlo.
4. Conocimiento profundo de las herramientas disponibles
Actualmente existe una gran cantidad de herramientas que pueden ayudar a un equipo a mejorar la calidad de su código. Sin embargo, no sólo se deben utilizar estas herramientas. También se debe intentar comprender la lógica que las sustenta. ¿Cuáles son los principios y las mejores prácticas que guiaron a sus autores a la hora de crear las reglas?
Lo mismo ocurre con otros tipos de herramientas, e incluso con las advertencias del compilador.
Contáctenos
Somos especialistas en desarrollo y consultoría de tecnologías cloud, y le ayudamos a crear experiencias digitales óptimas para sus clientes. Lo invitamos a conocer nuestros casos de éxito y a contactarnos para discutir las necesidades de sus proyectos.