Depende do projeto, se você estiver trabalhando sozinho em um projeto pequeno, pode fazer todo o sentido executar sua pesquisa e investigação de tecnologia como parte do desenvolvimento. E, embora não faça parte do Agile, é claro que uma metodologia Agile poderia ser usada para adicionar algum controle a isso. No entanto, isso torna o processo muito difícil de prever / ou caixa de tempo. Pode ser bom, ainda mais rápido, se trabalhar sozinho em um projeto pequeno que é totalmente seu, deixe que seus requisitos se desenvolvam à medida que você os aprende. Use bons princípios ao longo do caminho e seja consistente e você não precisará se refazer tanto.
No trabalho, usamos Kanban, Scrum e outras abordagens tradicionais em cascata. Depende do projeto, acho que desenvolvimentos complexos com requisitos iniciais bem definidos não são mais adequados para o ágil, mas muitos vão discordar.
Antes de começarmos a trabalhar, mesmo em um projeto ágil (exceto o mais simples), criamos alguma documentação. Temos uma simulação (se focada na interface do usuário), um conjunto de requisitos e uma especificação funcional.
Será solicitado ao desenvolvimento que crie as especificações técnicas a partir das especificações funcionais e, durante esse processo, especificaremos a tecnologia e realizaremos todas as pesquisas iniciais necessárias. Esse processo parece tão importante para mim, pois oferece a oportunidade de observar lacunas nos requisitos / especificações funcionais - e fornece grandes decisões de tecnologia antes das pessoas com experiência e conhecimento do sistema para tomar essas decisões.
O importante, no entanto, é que as especificações funcionais podem ser uma lista de tópicos, e as especificações técnicas geralmente serão um modelo, com alguns tópicos e orientações tecnológicas, talvez apenas 3 ou 4 páginas em alguns casos.
Mesmo ao executar um projeto ágil, criamos documentação:
- Toda a documentação tem um custo.
- Desenvolver contra a mudança e definir mal os requisitos de alto nível tem um custo.
- O equilíbrio correto para o exposto acima depende do seu projeto, da cultura e das pessoas.
- Documentamos Bem a tempo, os documentos ficam desatualizados.
- Nós documentamos apenas o suficiente / apenas o suficiente.
- Não mantemos ou atualizamos esses documentos, não colocamos muito esforço neles. Eles são pequenos. Esperamos jogá-los fora.
- Resolvemos grandes incógnitas, como decisões de tecnologia, requisitos nebulosos e arquitetura antecipadamente.
- Sabemos o que estamos desenvolvendo antes de começar.
- Confiamos nos desenvolvedores para tomar decisões informadas sobre a documentação e discutir quaisquer problemas.
- Valorizamos a comunicação em detrimento da documentação, pois esperamos que todos os envolvidos se comuniquem com frequência.
- Documentamos os sistemas (visão geral) após o desenvolvimento, não durante, nem antes.
Você vê que há uma pequena cachoeira em nosso processo ágil.
Se você trabalha sozinho, crie um modelo inicial (diagrama!), Brinque e escolha a tecnologia e, quando tiver esse conceito de requisitos de alto nível, siga em frente e desenvolva-o de maneira iterativa e ágil, mas considere bons princípios e consistência à medida que avança e você precisará refazer menos, mais refatorar à medida que avança.
Mas, em geral, se houver um custo real envolvido (não um hobby), saiba o que você está desenvolvendo antes de escrever o código, mas não perca muito tempo escrevendo documentação que se tornará redundante rapidamente à medida que você mudará de idéia e deve mude de idéia durante o desenvolvimento à medida que você se torna mais informado. E seu projeto pode mudar muito de rumo, mas comece com uma base boa e bem definida.