Capitão Óbvio ao Resgate!
Serei o capitão Óbvio aqui e direi que há algum meio termo a ser encontrado.
Você deseja construir para o futuro e evitar se prender a uma opção tecnológica ou a um design ruim. Mas você não deseja passar três meses projetando algo que deve ser simples ou adicionando pontos de extensão para um aplicativo rápido e sujo que terá uma vida útil de 2 anos e é improvável que tenha projetos de acompanhamento.
É difícil encontrar a distinção, porque nem sempre é possível prever o sucesso do seu produto e se você precisar estendê-lo mais tarde.
Construir para agora se ...
- o projeto vai ser descartado
- o projeto tem uma vida útil curta
- o projeto não deve ter extensões
- o projeto não tem um valor de impacto de risco (principalmente em termos de imagem)
Em geral, projetos internos ou algo criado para um cliente devem ser desenvolvidos por enquanto. Certifique-se de ter requisitos diretos e relacione-os conforme necessário para saber o que é necessário e o que não é. Não queira gastar muito tempo com nada que seja "bom de ter". Mas não codifique como um porco também.
Deixe o problema geral para mais tarde, se for necessário e valer a pena:
Construa para o futuro se ...
- o projeto será público
- o projeto é um componente a ser reutilizado
- o projeto é um trampolim para outros projetos
- o projeto terá projetos de acompanhamento ou lançamentos de serviços com aprimoramentos
Se você está construindo para algo público, ou que será reutilizado em outros projetos, você tem uma probabilidade muito maior de que um projeto ruim volte para assombrá-lo, portanto, você deve prestar mais atenção nisso. Mas nem sempre é garantido.
Diretrizes
Eu diria que adote os seguintes princípios da melhor maneira possível e você deve se colocar na posição de projetar produtos eficientes e adaptáveis:
- sabe que YAGNI ,
- KISS ,
- sempre que sentir vontade de coçar e pensar em uma adição, anote-a. Relembre os requisitos do seu projeto e pergunte a si mesmo se as adições são prioridades ou não. Pergunte se eles agregam valor comercial primário ou não.
Eu sei que pessoalmente tenho a tendência de pensar demais e ser engenheiro demais. Realmente ajuda a escrever idéias e, muitas vezes, repensar se eu precisar de recursos adicionais. Frequentemente, a resposta é não, ou "seria legal depois". Essas últimas idéias são perigosas, porque ficam na parte de trás da minha cabeça, e eu preciso me forçar a não planejar.
A melhor maneira de codificar sem a superengenharia e sem se bloquear para mais tarde é se concentrar em um bom design mínimo. Divida as coisas bem como componentes que você pode estender mais tarde, mas sem pensar em como eles podem ser estendidos mais tarde. Você não pode prever o futuro.
Basta construir coisas simples.
Dilema
Overengineering
Essa é uma tendência que os programadores geralmente seguem ao realizar um projeto como esse?
Isso aí. É um dilema conhecido e mostra apenas que você se importa com o produto. Se não, isso é mais preocupante. Há desacordo sobre se menos é sempre realmente mais e se o pior é sempre realmente melhor . Você pode ser do tipo MIT ou New Jersey . Não há uma resposta fácil aqui.
Prototipagem / Rápido-e-Sujo / Menos é Mais
É uma tendência típica apenas misturar um exemplo viável o mais rápido possível?
É uma prática predominante, mas não é assim que a grande maioria dos projetos é abordada. Ainda assim, a prototipagem é uma boa tendência na minha opinião, mas com uma desvantagem média. Pode ser tentador promover protótipos rápidos e sujos para produtos reais ou usá-los como base para produtos reais sob pressão de gerenciamento ou restrições de tempo. É quando a prototipagem pode voltar para assombrá-lo.
Existem vantagens óbvias na criação de protótipos , mas também muito potencial para uso indevido e abuso (muitas exatamente o inverso das vantagens listadas anteriormente como resultado).
Quando usar prototipagem?
Há dicas sobre os melhores tipos de projetos para usar a prototipagem :
[...] a prototipagem é mais benéfica em sistemas que terão muitas interações com os usuários.
[...] a prototipagem é muito eficaz na análise e design de sistemas on-line, especialmente no processamento de transações, onde o uso de diálogos na tela é muito mais evidente. Quanto maior a interação entre o computador e o usuário, maior o benefício [...]
"Um dos usos mais produtivos da prototipagem rápida até hoje foi como uma ferramenta para a engenharia de requisitos iterativos do usuário e o design da interface homem-computador".
Por outro lado:
Sistemas com pouca interação do usuário, como processamento em lote ou sistemas que fazem cálculos, beneficiam-se pouco da prototipagem. Às vezes, a codificação necessária para executar as funções do sistema pode ser muito intensa e os ganhos potenciais que a prototipagem poderia proporcionar são muito pequenos.
E se você tem um monstro verde por perto, mantenha um protótipo dentro do orçamento ...