Comment équilibrez-vous les besoins contradictoires de compatibilité ascendante et d'innovation?

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

Question

Je travaille sur une application dotée d'une interface graphique (GUI) et d'une interface de script (script). Notre produit a une très grande base installée. De nombreux clients ont investi beaucoup de temps et d’efforts dans la rédaction de scripts utilisant notre produit.

Dans toutes nos conceptions et nos mises en œuvre, nous avons (naturellement) une obligation très stricte de maintenir une compatibilité ascendante à 100% . Un script qui a déjà été exécuté doit continuer à fonctionner de la même manière, sans aucune modification, lors de l’introduction d’une nouvelle version du logiciel.

Malheureusement, cette exigence nous lie parfois les mains derrière le dos, car elle limite réellement notre capacité à innover et à proposer de nouvelles et meilleures méthodes de travail.

Par exemple, nous pourrions proposer un moyen plus efficace (et plus utilisable) de réaliser une tâche déjà possible. Il serait souhaitable de faire de cette meilleure manière la méthode par défaut, mais nous ne pouvons pas le faire car cela pourrait avoir des implications en termes de compatibilité ascendante. Nous sommes donc obligés de laisser la nouvelle (meilleure) façon en tant que mode, selon lequel l'utilisateur doit "activer". avant qu'il ne soit disponible pour eux. À moins qu'ils ne lisent la documentation ou l'aide en ligne (ce que beaucoup de clients ne font pas), cette nouvelle fonctionnalité restera masquée à jamais.

Je sais que Windows Vista a énervé beaucoup de monde lors de sa première utilisation, à cause de tous les logiciels et périphériques qui ne fonctionnaient pas, même lorsqu'ils travaillaient sous XP. C'est pour cette raison que la réception a été plutôt mauvaise. Mais vous pouvez voir que Microsoft a également réussi à faire de grandes innovations dans Vista, au détriment de la compatibilité avec les versions antérieures pour de nombreux utilisateurs. Ils ont pris un risque. Cela a-t-il été payant? Ont-ils pris la bonne décision? Je suppose que seul le temps nous le dira.

Vous trouvez-vous un équilibre entre les besoins contradictoires d'innovation et de compatibilité ascendante? Comment gérez-vous l'acte de jonglage?

Était-ce utile?

La solution

En ce qui concerne mon expérience en programmation, si je veux modifier fondamentalement quelque chose qui empêchera les anciennes données entrantes d'être utilisées correctement, je dois créer une couche d'abstraction pour les anciennes données, qui pourra être convertie pour être utilisée. dans le nouveau format.

Fondamentalement, je règle le paramètre "amélioré". Par défaut, assurez-vous qu’un convertisseur permet de lire les données de l’ancien format, mais enregistrez ou stockez les données dans le nouveau format.

Je pense que l’essentiel ici est d’essayer, d’essayer, d’essayer. La compatibilité avec les versions antérieures ne devrait pas entraver les progrès.

C'est juste mon 2c

Autres conseils

Divisez le développement en deux branches, une qui maintient la compatibilité avec les versions antérieures et l'autre, une nouvelle version majeure, indiquant clairement que la compatibilité avec les versions antérieures est rompue.

La question cruciale que vous devez vous poser est de savoir si les clients veulent / ont besoin de cette "amélioration". même si vous le percevez comme un client, vos clients pourraient ne pas le faire. Une fois qu’une certaine façon de faire a été établie, modifier le flux de travail est une opération très "coûteuse". opération. En fonction de la maîtrise de l'ordinateur de vos utilisateurs, le temps d'adaptation au changement de l'interface utilisateur peut être long.

Si vous avez affaire à des clients, innover pour l'innovation n'est pas toujours une bonne chose, mais aussi amusante que de développer ces améliorations.

Vous pouvez toujours rechercher des moyens novateurs de maintenir la compatibilité avec les versions antérieures.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top