Códigos fuente obsoletos, amenaza a las compañías

La GAO señala que las agencias públicas aún utilizan sistemas programáticos como Cobol, creado en los 60, los cuales pueden generar una “gran bola de lodo”.
Logotipo de la firma británica de mantenimiento y soluciones de "software".
Logotipo de la firma británica de mantenimiento y soluciones de "software". (Eddie Keogh/Reuters)

Los anticuados lenguajes de programación pocas veces llegan a las noticias. Y sin embargo en los últimos meses, Cobol, que se creó hace más de 50 años, lo hizo en dos ocasiones.

En mayo, la Oficina de Responsabilidad Gubernamental de EU (GAO, por su sigla en inglés) destacó que las agencias públicas aún utilizan Cobol. Fue fácil pasar esta noticia por alto, ya que la mayoría de los medios se centraron en el uso de discos flexibles de ocho pulgadas (sí, de ocho pulgadas) por el Pentágono para actividades tan rutinarias como la coordinación de los misiles balísticos intercontinentales, los bombarderos nucleares y apoyo a los aviones cisterna.

La segunda ocasión que salió en las noticias fue más reciente, con la propuesta de fusión de Micro Focus con la división de software de Hewlett Packard Enterprise en un acuerdo de 8 mil 800 millones de dólares. Las operaciones de la compañía británica se centran en la ayuda a los clientes en el mantenimiento de software que se escribió en lenguajes anticuados, como el Cobol.

Lo que me lleva a preguntar: ¿cuántos gerentes, especialmente los que no pertenecen a los departamentos de tecnología, sabrían si su compañía utiliza Cobol? O, ¿qué otros lenguajes se dirigen al basurero digital?

Los que no saben deberían interesarse, entre otras cosas porque conseguir soporte va a ser bastante difícil. La oficina de responsabilidad señala que la Administración de Seguridad Social tuvo que volver a contratar a sus empleados jubilados para que le dieran mantenimiento a los sistemas escritos en Cobol. A menos de que seas Micro Focus, eso es una mala noticia. Las fuerzas de la oferta y la demanda probablemente no resuelvan esto tampoco.

Joel Spolsky, director ejecutivo y cocreador de Stack Overflow, un popular sitio de preguntas y respuestas para desarrolladores, me dijo que “los buenos programadores aceptarán un buen recorte de sueldo para trabajar en algo que les gusta. No son tan mercenarios como uno podría pensar”. Esto va tan lejos como que algunos se muestran renuentes a trabajar incluso para Facebook, dice, ya que la empresa utiliza PHP, un lenguaje de programación que probablemente ya pasó su pico.

Además del lenguaje que se utilizó, un problema más difícil que deben tomar en cuenta los gerentes es la “fragilidad del código”. Aquí es donde un intento de cambio en una parte del código tiene un efecto imprevisto en otra parte. Es como cambiar la cerradura de tu puerta entrada y que de forma inexplicable provoque que se queme un fusible en la cocina.

En una encuesta de 2016 que realizó Stack Overflow, la fragilidad del código se ubicó entre los principales retos a los que se enfrentan los desarrolladores, y cuando tienen mayor experiencia lo ubican en un lugar más alto.

El problema, que puede afectar a todos los lenguajes, tiene muchas causas subyacentes. Para empezar, la mayoría de los equipos de desarrollo tienen un estilo de trabajo que pone énfasis en la entrega frecuente de software en funcionamiento. La presión de las empresas para presentar nuevas funciones y arreglar errores dentro de una gran base de código aumenta el riesgo de que se introduzca una complejidad innecesaria.

Si a eso se le agrega una mala documentación y una frecuente rotación de personal, la arquitectura general puede convertirse en una “gran bola de lodo”. Mucho lodo se traduce en un alto costo por agregar nuevas funciones que la compañía tal vez necesite para mantenerse competitiva.

Mantener el código en un estado ordenado debe ser parte del trabajo. “Pero se requiere de una atención constante para lograr este tipo de higiene”, me dijo Robert Chatley cuando nos reunimos en el Imperial College London, donde enseña a la siguiente generación de científicos computacionales sobre el software en la industria. “Es como cuando te lavas los dientes todos los días y con eso evitas una cirugía dental mayor”.

Sin embargo, es fácil no hacer la limpieza y estropear el código base con el fin de cumplir con los plazos. Sobre todo si los departamentos que no son de tecnología le dan más prioridad a la entrega que a la sustentabilidad.

Un método de moda para tratar de forzar un grado de higiene, y atar las manos de todo el mundo al mástil, es adoptar una arquitectura de “microservicios”. Esta es una manera de organizar el software en módulos separados e independientes, para tratar de evitar una bola de lodo.

Michael Feathers, autor del libro sobre un código heredado, se refiere a este enfoque como “algo a lo que nos obligaron por el hecho de que nosotros, los programadores, somos expertos en superar cualquier tipo de disciplina que tratamos de imponernos nosotros mismos”.

Los partidarios de esto también sostienen que hace que sea más sencillo eliminar gradualmente lenguajes como el Cobol y probar los más nuevos que van atraer a buenos desarrolladores. Pero a menudo es frustrantemente difícil de implementar debido a las grandes interdependencias que suelen tener las bases de código. Puede ser que en algún punto alguien unió la puerta delantera con el fusible de la cocina a propósito. Quién sabe por qué. De cualquier forma, Kenneth ya se jubiló. Probablemente esté en casa. Cuidando su colección de anticuados discos flexibles.

lisa.pollack@ft.com