Eu trabalho para uma pequena empresa baseada em produtos. Estamos prestes a reescrever nosso produto existente do zero. Estamos planejando adotar a metodologia Agile para o nosso desenvolvimento. Agora, minha pergunta é: como temos todos os requisitos antes mesmo do início do projeto (como estamos reescrevendo o produto existente), vale a pena mergulhar no mundo Agile? O ágil não é mais útil quando você não possui todos os requisitos antecipadamente e recebe seus requisitos em fases?
Em segundo lugar, digamos que, se pularmos para o Agile, qual é a melhor prática para criar banco de dados? Digamos que em nossa primeira iteração, apenas criamos um sistema de login (o usuário pode fazer login, sair etc.). Nós apenas precisamos criar a tabela Users sem nos preocupar com outras tabelas? E outras tabelas seriam desenvolvidas à medida que nosso produto progredisse?
Respostas:
Sim.
Falso.
Quando você não possui todos os requisitos, é a única maneira de progredir. Qualquer outra coisa requer suposições fantasiosas que acabarão por se provar falsas. O Agile simplesmente faz menos suposições fantasiosas.
Quando você possui todos os requisitos, ainda deve seguir todos os princípios do Agile.
Leia isso antes de prosseguir: http://agilemanifesto.org/
Todos esses pontos são verdadeiros, não importa o quanto você saiba dos requisitos.
Você ainda se beneficia do uso de um método Agile como o Scrum, porque terá expectativas mais realistas.
Que primeira iteração terrível.
Sim. Você cria o banco de dados incrementalmente.
Você faz tudo de forma incremental.
Você prioriza com base no que cria mais valor para os usuários . Considerações técnicas não fantasiosas (e tolas).
fonte
Sim, embora eu imagine que provavelmente haja mais do que algumas mudanças possíveis no modo como o aplicativo foi projetado atualmente, pois seria o momento de limpar várias dívidas técnicas para ter um design mais limpo, com as informações conhecidas agora.
Você está confiante de que esses requisitos não serão alterados à medida que você cria o aplicativo novamente? Tem certeza de que o design que está sendo executado nunca será refatorado?
Existem muitas opções diferentes aqui. Faça apenas o suficiente para fazê-lo funcionar. Se a tabela Usuários é tudo o que é necessário, ótimo. Se houver algumas outras tabelas que alguém deseje ter, de modo que o banco de dados esteja em uma forma mais normalizada, isso poderá facilitar o processo. Você não será perfeito na primeira vez, e o Agile é um método de tentativa e correção, pois quando você mostra o que tem, o usuário geralmente recebe um feedback que mantém o Agile indo e vindo ... (Também onde os novos requisitos virão, pois as pessoas também poderão começar a pedir coisas)
fonte
Uma pequena empresa (gerência) que planeja usar práticas ágeis está em uma excelente posição inicial, pois seus desenvolvedores costumam impulsionar a adoção. Eu recomendaria que você identificasse líderes dispostos a continuar impulsionando a adoção no nível da equipe (treinamento, institucionalização etc.)
Com os requisitos em mãos, pergunte aos usuários o que eles gostariam de ver em uma iteração. Então, entregue. Faça novamente a próxima iteração e novamente. Os usuários que podem tocar seu trabalho mais cedo ajudarão a refinar os requisitos à medida que avança. Se você não possui processos automatizados agora ou a equipe não entende o desenvolvimento contínuo, programe o tempo para garantir que sim.
fonte
O Agile é aplicável a qualquer projeto de desenvolvimento, e não especificamente a projetos greenfield completos que ainda não possuem requisitos especificados. O gerenciamento ágil de projetos torna o seu projeto autoaprendizado e auto-aperfeiçoado , executando pequenas etapas, revendo suas etapas frequentemente e melhorando as próximas etapas. Existem muitos blogs no Agile. Google é seu amigo ...
Em relação à sua pergunta específica sobre desenvolvimento de banco de dados Agile, você está no caminho certo. Você pode desenvolver o gerenciamento de usuários sem se preocupar com o resto a princípio. Provavelmente, isso acabará sendo retrabalhado quando você se aprofundar no projeto, mas isso pode ser considerado um custo para fazer pequenas iterações focadas. Uma abordagem no meio da estrada investigaria seu modelo de banco de dados um pouco mais cedo e criaria um design que pudesse funcionar alguns sprints à frente. Dessa forma, você terá menos retrabalho.
fonte
Tenha cuidado ao exagerar nessa abordagem. Pode ser como construir uma casa e tentar terminar um banheiro completamente enquanto a fundação ainda está assentada. As probabilidades são de que você precisará refazer completamente partes significativas do seu trabalho se a base do aplicativo, o banco de dados e o modelo de objeto subjacente não estiverem maduros ou estáveis o suficiente para suportar a estrutura.
Além disso, lembre-se de que dizer que você está usando o Agile / Scrum não o dispensa de usar boas práticas de engenharia de software, como testes de unidade adequados e banco de dados sólido e design de objetos. Quando o Agile é mal aplicado, ele pode facilmente cair em um código e corrigir um projeto de espiral mortal que pode ser muito doloroso ou mesmo impossível de recuperar.
fonte
Agile significa mais produtividade e flexibilidade . Por que você está reescrevendo seus aplicativos? Os motivos podem ser:
Por qualquer um desses motivos, você não entregará seu produto da noite para o dia e, é claro, isso levará tempo.
Ter uma lista de pendências de produtos é apenas um dos itens que o Agile recomenda. O que você diz sobre conhecer toda a empresa significa que você já possui muitos PBIs no backlog do seu produto.
Mas não é melhor você entregar partes do seu novo produto no final de cada sprint? Isso não o tornará mais ágil e responsivo às mudanças. Por exemplo, imagine que você está tentando tornar o novo aplicativo bonito. Não é ruim saber depois de 10 meses que seu novo design não é aceitável? Não será uma boa prática se você for informado após 2-3 semanas sobre isso?
Minha resposta para sua pergunta é:
O desenvolvimento ágil definitivamente tem muitas coisas a oferecer, mesmo para aplicativos reescritos.
fonte
Talvez. Tentar algo novo pode ser arriscado, especialmente se for novo para todos. Pessoalmente, acho o Agile útil quando feito corretamente .
Pode ser útil para ajudar a direcionar requisitos, se você ainda não os tiver. No entanto, isso não significa que sua utilidade esteja limitada apenas aos requisitos de direção.
Iterativamente. Use migrações de banco de dados.
Sugestões
Se você quer fazer o Agile, isso é ótimo. Eu tentaria pedir a alguém que já fez isso antes para ajudá-lo no processo.
As pessoas geralmente ignoram a etapa de refatoração quando tentam o Agile pela primeira vez. Não. Isso matará o projeto.
Pense em fatias verticais (recursos) em vez de camadas. Implemente fatias verticais para que você tenha um sistema operacional após a conclusão do primeiro cartão de recurso. Quando estiver funcionando, mantenha-o funcionando e adicione-o a cada placa de recurso.
fonte
Usamos o Agile em um projeto que envolve a mudança de um aplicativo antigo para um novo conjunto de aplicativos e uma nova arquitetura. Nossa situação é um pouco diferente, pois estamos tentando não apenas refazer o aplicativo existente (usado internamente por nossos departamentos de vendas, finanças, suprimentos e armazém), mas estamos tentando melhorar a experiência de cada departamento ao longo do caminho. Um desafio que vimos usando o Agile é que o valor comercial para mover partes da funcionalidade para uma determinada unidade de negócios é alto, mas outras é baixo. Portanto, nos encontramos criando novos aplicativos e mantendo o aplicativo antigo em execução enquanto fazemos a transição. Estamos com problemas para conseguir que a empresa veja o valor de se concentrar em mudar um "cliente" para um aplicativo completamente novo. No entanto, estamos recebendo muitas histórias de alto valor em nossos sprints. Eu acho que em breve chegaremos a uma cerveja em breve, quando tivermos que convencer os negócios de que precisamos nos concentrar em uma unidade de cada vez.
Portanto, para responder à pergunta original, sim, o Agile é um bom caminho a percorrer. Esteja preparado para que algumas dependências surjam e guie algumas das decisões da equipe ao longo do caminho.
fonte
O mais importante é que o processo scrum seja útil para você. Quero dizer, se seu trabalho será melhor, apenas aceite. Mas você nunca saberá a menos que tente.
Outro ponto é que não há necessidade de executar o processo scrum pelo livro. Basta levar as coisas que irão funcionar para você. Nossa equipe, por exemplo, não possui um quadro de scrum. Porque nós não precisamos disso.
Quanto ao design, você deve tentar projetar de tal maneira que as alterações futuras não demorem muito tempo. Seu sistema deve ser robusto.
fonte