Atualmente, estou escolhendo entre dois projetos / soluções viáveis de software. A solução 1 é fácil de implementar, mas bloqueará alguns dados em um formato proprietário e dificilmente será alterada posteriormente. A solução 2 é difícil de implementar, mas será muito mais fácil mudar posteriormente.
Devo ir YAGNI nisto ou devo incorporar o custo de saída na tomada de decisão? Ou, perguntando de forma diferente, o custo de saída faz parte do TCO?
Estou pensando em voltar ao cliente para perguntar se ele acha ou não os custos de saída relevantes, mas eu gostaria de saber o que a comunidade pensa primeiro.
PS O custo de saída é o termo correto?
design
architecture
terminology
decisions
dvdvorle
fonte
fonte
Respostas:
O custo de saída faz parte do TCO (o T representa o total ), mas é difícil determinar a menos que você saiba a priori quanto tempo o sistema vai durar. Em outras palavras, se você souber que o sistema será usado por exatamente um ano e custará US $ 52.000 para desativá-lo daqui a um ano, você pode estar bastante confiante em adicionar US $ 1.000 por semana ao orçamento operacional para cobri-lo.
Esse modelo sai pela janela quando você não conhece a vida útil do sistema. O sistema poderia, em teoria, permanecer em uso para sempre, o que significa que não haverá dinheiro gasto para desligá-lo. Qualquer coisa que você incluir agora será em dólares de hoje, e esses números podem não ter sentido daqui a cinco anos, devido a mudanças nas taxas de trabalho e na tecnologia que tornam o processo mais fácil (ou mais difícil).
É melhor dar ao seu cliente uma idéia do que é necessário para se afastar do sistema e deixá-lo levar isso em decisões sobre a substituição quando chegar a hora.
(E agora, depois de escrever esta resposta, posso votar para encerrar isso como um tópico fora do assunto.)
fonte
YAGNI é uma ótima regra em seu lugar, mas não tenho certeza de que deve se aplicar neste caso. Você está estimando custos futuros aqui, uma atividade que deve envolver alguma consideração sobre futuras alterações de requisitos. Se você estivesse escrevendo a implementação, seria uma história diferente!
Eu sugiro que você faça o custeio, mas verifique se o cliente entende por que você o fez. Se eles não forem muito técnicos, não se surpreenda se disserem algo como "não pode ser uma boa solução se você já estiver pensando em usar outra coisa!"
Pode haver alguns aspectos mais detalhados a serem considerados ao fazer / apresentar suas estimativas de custo:
fonte
Trabalhando a partir do seu comentário sobre a situação do arquivo do Excel, considero-o como:
Eu acredito que YAGNI se aplica a essa etapa de análise; certifique-se de manter o conhecimento sobre a estrutura atual, mas não implemente a análise ainda.
Além disso, a estrutura de dados analisados pode não ser tão flexível quanto você pensa; os requisitos também podem ser usados para armazenar informações / arquivos diferentes, o que significa que você precisa atualizar / expandir suas tabelas.
fonte
Se você não tiver 95% de certeza de que será alterado no futuro - Solução 1 - YAGNI =)
Certamente, isso depende de seus clientes e de sua experiência em programar algo para esse cliente.
fonte
Na minha experiência, as rodas reinventadas levam mais tempo para reinventar do que você pensa, e as rodas externas tendem a ser mais fáceis de substituir. Ambos os tipos de rodas tendem a parecer piores depois de comprados do que quando você tomou sua decisão.
Se você realmente acha que o número 1 é fácil de implementar e está questionando quanto tempo o número 2 levará, eu ouviria a pergunta. Implemente o número 1 agora e pense no design maior à medida que avança. Isso o ajudará se você quiser reinventá-lo posteriormente.
Por outro lado, se o item 1 não parecer mais tão fácil quanto você pensava, pule para o item 2.
fonte