Como você equilibra as necessidades conflitantes de compatibilidade e inovação para trás?

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

Pergunta

Eu trabalho em um aplicativo que tem um tanto de uma interface API (scripting) GUI (gráfica) e. Nosso produto tem uma grande base instalada. Muitos clientes têm investido muito tempo e esforço para escrever scripts que usam nosso produto.

Em todos os nossos projetos e implementação, (compreensivelmente) tem uma exigência muito rigorosa para manter 100% compatibilidade com versões anteriores . Um script que decorreu antes de continuar a executar exatamente da mesma maneira, sem qualquer modificação, quando introduzimos uma nova versão do software.

Infelizmente, este requisito, por vezes, amarra as mãos atrás das costas, como ele realmente restringe nossa capacidade de inovar e chegar a novas e melhores formas de fazer as coisas.

Por exemplo, podemos chegar a um melhor (e mais utilizável) maneira de conseguir uma tarefa que já é possível. Seria desejável para fazer este caminho melhor a forma padrão, mas não podemos fazer isso, pois pode ter implicações para trás compatibilidade. Portanto, estamos preso com deixando a nova (melhor) maneira como um modo, que o usuário deve "ligar" antes que se torne disponível para eles. A menos que eles ler a documentação ou a ajuda on-line (que muitos clientes não fazer), esta nova funcionalidade vai permanecer escondidos para sempre.

Eu sei que o Windows Vista irritou muita gente, quando ele saiu primeiro, por causa de todo o software e periféricos que não funcionou nele, mesmo quando eles trabalharam no XP. Ele recebeu uma muito má recepção por causa disso. Mas você pode ver que a Microsoft também conseguiram fazer algumas grandes inovações no Vista, à custa de compatibilidade com versões anteriores para um grande número de usuários. Eles assumiram um risco. Será que compensa? Será que eles tomar a decisão certa? Eu acho que só o tempo dirá.

Você encontra-se equilibrar as necessidades conflitantes de compatibilidade inovação e para trás? Como você lida com o ato de malabarismo?

Foi útil?

Solução

No que diz é a minha experiência de programação está em causa, se eu vou mudar fundementally algo que vai impedir que os dados de entrada do passado para ser usado corretamente, eu preciso para criar uma camada de abstração para os dados antigos, onde ele pode ser convertido para o uso no novo formato.

Basicamente eu definir o caminho "melhorado" como padrão e certifique-se através de um conversor que pode ler dados do formato antigo, mas salvar ou armazenamento de dados como o novo formato.

Eu acho que a coisa mais importante aqui é testar, testar e testar. Backwards compatibilidade não deve progresso dificultar a frente.

Isso é apenas minha 2c

Outras dicas

desenvolvimento dividido em dois ramos, um que mantém compatibilidade com versões anteriores e um para uma nova versão principal, onde você deixar claro que a compatibilidade para trás está sendo quebrado.

A questão fundamental que você precisa perguntar é wether os clientes desejam / necessitam esta "melhoria" mesmo se você percebê-lo como um seus clientes talvez não. Uma vez que uma certa maneira de fazer as coisas foi estabelecido mudando o fluxo de trabalho é uma operação muito "caro". Dependendo do savyness computador de seus usuários, pode levar algum um longo tempo para se adaptarem à mudança na interface do usuário.

Se você está lidando com a inovação clientes por causa da inovação nem sempre é uma coisa boa tão divertido quanto poderia ser para você desenvolver essas melhorias.

Você pode sempre procurar formas inovadoras para manter a compatibilidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top