El día de ayer leí un muy interesante post en TechCrunch titulado: "La deuda técnica te matará (si tu se lo permites)", aunque el concepto de deuda técnica no es nuevo, sin embargo no está muy difundido y muchas grandes empresas como RIM, Nokia o Microsoft han dado clara muestra que un elevado nivel de deuda técnica pueden llevar a perder la posición de liderazgo que se tiene. ¿Qué es deuda técnica?, la definición no es sencilla, pero podemos enterderla como todos los compromisos de diseño, programación o implementación de un proyecto de software, que se hicieron para alcanzar una ventaja táctica o estratégica en el mercado, pero que luego muestran sus limitaciones y requiren la inversión de más dinero para resolver los problemas. Me he permitido traducir algunas parter del artículo que me parecieron importantes:
Un proyecto en el que he estado trabajando recientemente para su lanzamiento. Bueno, en realidad relanzamiento. Es una pequeña y elegante aplicación de iPhone que se llama Postography, que le permite al usuario enviar postales con mensajes e imágenes desde tu iPhone. Genial, pero suena bastante sencillo, ¿verdad? Una aplicación que no debería haber tomado demasiado tiempo en ser construida.
Por desgracia, no la estamos construyendo, la estamos reconstruyendo. Y la empresa que puso la primera grieta en ella (sin nombrar nombres aquí) hizo un trabajo bastante bueno en el lado del servidor … pero tuvo una épica falla en la versión inicial de la app en sí misma. Oh, y es que en última instancia se le hizo funcionar, con sus muchos errores y caídas frecuentes. Pero muy aparte de eso, su código base fue un enconado abismo de variables globales, código de espaguetis, hacks, no-ops y las condiciones de operación eran tales que ampliarlo o modificarlo era casi imposible sin una cirugía reconstructiva.
Esto sucede mucho más de lo que nadie quiere admitir. Detrás de las brillantes aplicaciones de interfaz de usuario se esconden muchas arquitecturas dignas de una pesadilla Lovecraftiana, que cuestionan la cordura de toda persona oblugada a darle mantenimiento o agregarle nuevas características. Preguntele a un desarrollador, a cualquier desarrollador, ellos tendrán historias terroríficas que contarle.
Continue reading →