¿Cómo se equilibran las necesidades conflictivas de compatibilidad e innovación hacia atrás?

StackOverflow https://stackoverflow.com/questions/160968

Pregunta

Trabajo en una aplicación que tiene una interfaz GUI (gráfica) y API (scripting). Nuestro producto tiene una base instalada muy grande. Muchos clientes han invertido mucho tiempo y esfuerzo en escribir scripts que utilizan nuestro producto.

En todos nuestros diseños e implementación, nosotros (comprensiblemente) tenemos un requisito muy estricto de mantener el 100% de compatibilidad con versiones anteriores . Un script que se ejecutó antes debe continuar ejecutándose exactamente de la misma manera, sin ninguna modificación, cuando presentamos una nueva versión de software.

Lamentablemente, este requisito a veces nos atas las manos a la espalda, ya que realmente restringe nuestra capacidad para innovar y encontrar nuevas y mejores formas de hacer las cosas.

Por ejemplo, podríamos encontrar una manera mejor (y más útil) de lograr una tarea que ya sea posible. Sería deseable hacer que esta mejor manera sea la predeterminada, pero no podemos hacerlo ya que puede tener implicaciones de compatibilidad hacia atrás. Por lo tanto, nos quedamos con el hecho de dejar la nueva (mejor) forma como modo, que el usuario debe " activar " antes de que esté disponible para ellos. A menos que lean la documentación o la ayuda en línea (lo que muchos clientes no hacen), esta nueva funcionalidad permanecerá oculta para siempre.

Sé que Windows Vista molestó a mucha gente cuando salió por primera vez, debido a todo el software y los periféricos que no funcionaban, incluso cuando trabajaban en XP. Recibió una recepción bastante mala debido a esto. Pero se puede ver que Microsoft también ha logrado hacer algunas grandes innovaciones en Vista, a costa de la compatibilidad con versiones anteriores para muchos usuarios. Tomaron un riesgo. ¿Valió la pena? ¿Tomaron la decisión correcta? Supongo que solo el tiempo lo dirá.

¿Se encuentra balanceando las necesidades conflictivas de innovación y compatibilidad con versiones anteriores? ¿Cómo manejas el acto de malabarismo?

¿Fue útil?

Solución

En lo que respecta a mi experiencia de programación, si voy a cambiar de manera fundamental algo que impida que los datos entrantes se utilicen correctamente, debo crear una capa de abstracción para los datos antiguos, donde se puede convertir para su uso en el nuevo formato.

Básicamente configuré el " mejorado " de manera predeterminada y asegúrese de que a través de un convertidor puede leer datos del formato anterior, pero guardar o almacenar datos como el nuevo formato.

Creo que la gran cosa aquí es la prueba, prueba, prueba. La compatibilidad hacia atrás no debería obstaculizar el progreso hacia adelante.

Eso es solo mi 2c

Otros consejos

Dividir el desarrollo en dos ramas, una que mantiene la compatibilidad con versiones anteriores y otra para una nueva versión principal, donde deja en claro que la compatibilidad con versiones anteriores se está rompiendo.

La pregunta crítica que debe hacer es si los clientes quieren / necesitan esta " mejora " incluso si lo percibes como uno de tus clientes, tal vez no. Una vez que se ha establecido una determinada forma de hacer las cosas, cambiar el flujo de trabajo es muy costoso. operación. Dependiendo de la habilidad informática de sus usuarios, puede llevarle mucho tiempo adaptarse al cambio en la interfaz de usuario.

Si se trata de clientes, la innovación por el bien de la innovación no siempre es algo tan divertido como podría ser para usted desarrollar estas mejoras.

Siempre puedes buscar formas innovadoras de mantener la compatibilidad con versiones anteriores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top