Si, me ha costado años pasar por el aro, inclinar la cabeza y reconocerlo pero, es así, no hay más remedio que mantener la compatibilidad hacia atrás.
Si no mantienes esta compatibilidad es muy difícil “vender” tu solución y atraer a los usuarios. ¿Porqué iban a querer usar tu solución?.
Ahora resulta que tienen que “tirar a la basura” todo lo que ellos ya tenían con su antigua solución, ya estaban entrenados con la antigua solución y saben como trabajar con ella. Posiblemente incluso tenga errores la antigua versión pero han descubierto como “esquivar” estos problemas y sacar su trabajo diario adelante. Además las nuevas versiones de cualquier cosa suelen traer consigo una mayor funcionalidad pero también fallos nuevos.
Como ejemplo, y simplificando bastante en aras de una mayor claridad, he implementado un sistema que a partir de un diagrama UML de máquinas de estados, crea un código neutro descriptivo de la máquina y luego posteriormente una runtime crea la máquina a partir de esta descripción y la ejecuta. Este sistema resuelve varios de los problemas de los que adolece el antiguo sistema que tenemos pero, que curioso, nadie lo usa (excepto yo).
El porque esta claro, la gente está bastante ocupada con su día a día y no se quieren arriesgar a usar algo que puede que tener fallos y encima desconocen (tienen que aprender). Prefieren esperar a que otro la use y además resulta que no la pueden usar en proyectos viejos por no ser compatible.
En fin, la realidad es dura, pero he aprendido del error, hay que mantener a toda costa la compatibilidad hacia atrás. Ahora bien, ¿como hacer esto si el antiguo sistema tiene limitaciones insalvables?. ¿Emulando?, tal vez los tiros vayan por ahi…..
