Según la opinión del ex-desarrollador del equipo de Google Wave Dhanji R. Prasanna, la infraestrutura software de Google está obsoleta.
Dice que:
“Protocol Buffers, BigTable y MapReduce son chirriantes y ancianos dinosaurios en comparación con MessagePack, JSON, y Hadoop. Y los nuevos proyectos como GWT, Closure y MegaStore son lentos y sobrediseñados leviatanes en comparación con herramientas elegantes como jQuery y mongoDB. Diseñados por ingenieros en una torre de marfil antes que por desarrolladores que necesitan herramientas”.
Yo no he trabajado como programador en Google, de modo que el criterio profesional de Prasanna probablemente es más acertado que el mio. Así que en lugar de entrar en un estéril debate sobre si el software de Google está anticuado o no, abordaré una cuestión más general: ¿cuando está un software obsoleto?.
Bien, en mi opinión, un software puede quedarse anticuado principalmente por dos motivos:
1º) el hardware o los protocolos subyacentes ya no soportan los binarios del programa
2º) la productividad de los programadores o el coste de mantenimiento con un nuevo lenguage sería al menos 5 veces mejor
Según esos criterios, Windows XP no estaba obsoleto, Java no está obsoleto y Google tampoco está obsoleto.
Hay una regla del dedo gordo que cualquiera que gestione proyectos de software debe conocer: Si funciona ¡no lo toques!. Esto es debido a que el software es un conjunto de muchas partes interconectadas de forma bastante compleja y con muchas implicaciones sutiles y poco obvias en sus interrelaciones siendo muy difícil determinar con exactitud el impacto que puede tener cualquier cambio.
Existe una tendencia a pensar que el software nuevo es mejor que el viejo, y esto no es así. El buen software envejece como el buen vino, lentamente. Sólo después de decenas de años, al final, empieza a coger un color turbio y sabor moribundamente añejo. De hecho, sucede justamente lo contrario y, por el efecto del segundo sistema, los fabricantes de software tienden a alternar una versión buena con una mala.
La parte de Google que más podría verse afectada por la obsolescencia de la infraestrutura software es Google App Engine. A fin de cuentas, al usuario que busca en Google lo que haya por detrás le da igual. Si funciona bien y rápido, pues ¿a quién le importa cómo lo hagan? Pero este no es el caso de los 100.000 desarrolladores registrados en Google App Engine para quienes la tecnología subyacente sobre la que tienen que programar sí importa.
Yo no recomendaría a nadie que basase su software en Google App Engine pero no por una cuestión técnica sino simplemente por la dependencia que genera, lo mismo que tampoco recomendaría a nadie usar Force.com
Por último, existen por supuesto múltiples razones que no son técnicas por las cuales puede ser conveniente cambiar un software. Reducir costes de licencia, adquirir control sobre el código fuente, homogeneizar tecnologías y un largo etcétera fuera del alcance de este post.
Post relacionado: no adoptes ciegamente debido a una publicidad entusiasta.