Devemos adotar uma metodologia ágil ao reescrever um aplicativo existente do zero?


8

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?


10
Você me perdeu em "estamos prestes a reescrever nosso produto existente do zero". Leia esta antiga jóia antes de prosseguir com "Coisas que você nunca deve fazer, parte 1": joelonsoftware.com/articles/fog0000000069.html
JohnFx

2
Usar uma metodologia que você não conhece por nenhuma razão convincente é um risco injustificável. É bom que você esteja descobrindo sobre o Agile, certifique-se de ter boas razões para escolher esse método em detrimento de outras técnicas.
NoShance

2
Um dos principais benefícios do Agile é responder às mudanças. Presumivelmente, reescrever o produto existente levará um tempo considerável. Você acredita sinceramente que os requisitos não serão alterados durante esse período?
TrueWill 19/09/11

1
@TrueWill - Como uma metodologia de software 'responde à mudança'? Isso não faz nenhum sentido. Não é AI ...? Ri muito.
Anônimo

Meu local de trabalho é um bom exemplo para a adoção de métodos Agile sem reescrever, mas executando pequenas etapas incrementais.
Yam Marcovic

Respostas:


10

vale a pena mergulhar no mundo ágil?

Sim.

O ágil não é mais útil quando você não possui todos os requisitos antecipadamente e recebe seus requisitos em fases?

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.

Qual é a melhor prática para projetar banco de dados? Digamos que em nossa primeira iteração, apenas criamos um sistema de login (o usuário pode fazer login, sair etc.).

Que primeira iteração terrível.

Nós apenas precisamos criar a tabela Users sem nos preocupar com outras tabelas? E outras tabelas seriam desenvolvidas à medida que nosso produto progredisse?

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).


2
Penso que a sua afirmação "é a única maneira de progredir" é uma suposição, não um fato verdadeiro.
NoChance

@Emmad Kareem: "Qualquer outra coisa requer suposições fantasiosas". Você pode chamar isso de "progresso" se quiser. No entanto, afirmo que suposições fantasiosas não são realmente um progresso. Pressupostos aleatórios como forma de fazer "progresso" são apenas pontilhados aleatórios. Não é um avanço para uma conclusão definitiva. É apenas atividade aleatória, uma porcentagem da qual está na direção correta. O restante da atividade são apenas suposições sendo invalidadas à medida que os requisitos são reunidos.
S.Lott

@Emmad Kareem: Ajuda a fornecer a correção que você gostaria de ver. "não é um fato verdadeiro" não me diz como consertar, não é?
S.Lott 19/09

2
Obrigado pelo esclarecimento. Meu argumento era que o Agile é apenas uma metodologia entre muitas outras, e dizer que "é a única maneira" me parece uma suposição. Sua visão pessoal é obviamente respeitada.
NoChance

@Emmad Kareem: "Agile é apenas uma metodologia entre muitas outras". Agile não é uma metodologia única. É uma abordagem que leva a uma variedade de metodologias. Existem "muitas outras" metodologias que não podem e não funcionam com requisitos incompletos. Existem muitas metodologias ágeis, todos os que fazem o trabalho com requisitos incompletos.
S.Lott

1

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?

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.

O ágil não é mais útil quando você não possui todos os requisitos antecipadamente e recebe seus requisitos em fases?

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?

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?

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)


1

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?

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.


0

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.


0

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?

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.


0

Agile significa mais produtividade e flexibilidade . Por que você está reescrevendo seus aplicativos? Os motivos podem ser:

  1. Alterando a plataforma (do Windows para o Linux, por exemplo)
  2. Alterando o idioma (por exemplo, do ASP.NET para PHP)
  3. A quantidade de refatoração é tão alta que torna a reescrita uma opção de economia de custos
  4. Os negócios mudaram muito; portanto, você está criando um novo aplicativo (uma nova música, com base no mesmo tema, se desejar)

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.


0

vale a pena mergulhar no mundo ágil?

Talvez. Tentar algo novo pode ser arriscado, especialmente se for novo para todos. Pessoalmente, acho o Agile útil quando feito corretamente .

O ágil não é mais útil quando você não possui todos os requisitos antecipadamente e recebe seus requisitos em fases?

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.

Qual é a melhor prática para projetar banco de dados?

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.


0

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.


0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.