Posted on

Hamburguesas de software

Hamburguesa

En junio de 2014 Apple anunció el lanzamiento de Swift, un nuevo lenguaje de programación llamado a sustituir al veterano Objective-C. El cambio se antoja enormemente complejo, teniendo en cuenta que la compañía atesora más de 20 años de código escrito en Objective-C. Sin embargo, es evidente que Apple ha diseñado una transición muy progresiva y lenta, que supone soportar ambos lenguajes durante varios años en todas sus herramientas, empezando por Xcode. Es un plan ideado para conceder tiempo al proceso de maduración de Swift y a la migración de todos los assets de la compañía.

Apple podría haber tomado otro camino: tirar todo su código base y empezar de cero con el nuevo Swift. Es el starting from scratch del desarrollo de software. Joel Spolsky, CEO y cofundador de Stack Overflow, escribió en el año 2000 un recomendable artículo sobre esta idea, a la que califica como “el peor error estratégico que puede cometer una empresa de software”. En él reflexiona sobre el impacto que tuvo para Netscape el parón de 2 años mientras se afanaba en reescribir completamente el código de su nuevo navegador, el Netscape 6.

En la última década he sido testigo de varios proyectos que encajarían perfectamente con el espíritu del “vamos a desechar todo lo que tenemos y a empezar de cero”. A diferencia de los ejemplos anteriores, éstos fueron proyectos para empresas que no se dedican al desarrollo de software, pero que dependen de él para procesos que son críticos en su negocio. Lo más sorprendente es que empezar todo de cero se ha convertido en algo tan habitual que en muchos casos son más los años en los que han estado reescribiendo código que los que han tenido una versión estable de ese código. ¿Cómo puede suceder de forma habitual algo que varios expertos han calificado como gran error estratégico?

When you start from scratch there is absolutely no reason to believe that you are going to do a better job than you did the first time. – Joel Spolsky, Things You Should Never Do

Las empresas que no se dedican a escribir y vender código tienen, por lo visto, un gran problema con el software. Dado que no es el core de su negocio, han caído en la trampa de la externalización, y han cedido el desarrollo y mantenimiento del software ha grandes consultoras. Éstas, en su afán de abaratar costes, han creado el concepto de la factoría de software.

Las factorías son al desarrollo software lo que el McDonalds es a la restauración: entregan un producto básico y sin ninguna diferenciación, con recursos cuya relación con el negocio es nula, y con el objetivo único de producir barato. Pero no nos engañemos, el software no es una hamburguesa: no debería fabricarse en 1 minuto, ni debería consumirse a toda prisa. De hecho, ni siquiera creo que la palabra fábrica pueda aplicarse al desarrollo de aplicaciones. Tirar líneas de código es un trabajo íntimamente ligado a la creatividad, la innovación y el diseño. Nada de eso me hace pensar en una fábrica.

Si hubiera que comparar el software con algo material, sería más como una planta en una maceta: crece lentamente y se disfruta todos los días. Además, como en el caso de la planta, el código hay que cuidarlo, o mejor aún, mimarlo, corrigiendo errores, refactorizando los componentes que presentan ineficiencias, eliminando las funciones que ya no se utilizan, actualizando las librerías… Este mantenimiento evolutivo es muy difícil en las factorías de software, porque requiere recursos especializados que conozcan en profundidad el software y el modelo de negocio que sustenta, y que tengan libertad para emplear su tiempo en una actividad aparentemente improductiva, que los tipos con corbata de la última planta no comprenden.

Estamos viviendo la condena a muerte de buena parte del software de empresas cuyo negocio depende, en mayor o menor medida, de sistemas informáticos. Porque los financieros de esas empresas decidieron hace años externalizarlo, decidieron que su negocio sigue funcionando igual con hamburguesas de software. Decenas de aplicaciones IT de esas empresas están ahora plagadas de errores e ineficiencias, después de años de abandono. Otras presentan lentitud o son totalmente inadecuadas para soportar los procesos corporativos. Pero ahora ya no hay nadie que conozca cómo funcionaban esas aplicaciones, cuál era su arquitectura, con qué otros sistemas se comunicaban… Empezar de cero parece la única opción.

Puede que lo sea. O puede que se haya cometido un gran error estratégico: externalizar el desarrollo y mantenimiento del software. No lo sé. Yo, por si acaso, sigo regando mis plantas todos los días.

Tweet about this on Twitter
Twitter
Share on Facebook
Facebook
0Share on LinkedIn
Linkedin
email hidden; JavaScript is required