Devo usar o scrum para grandes projetos? [fechadas]

8

Trabalho como programador em um projeto desenvolvido para software genérico para postos de gasolina (a ser redistribuído para muitos clientes) há 18 meses. O projeto é grande. Hoje temos cerca de 150 mesas. Não usamos uma abordagem específica, ela não foi bem gerenciada.

Hoje, a tabela de pessoas tem cerca de 70 colunas, mas há 15 meses tinha cerca de 30 colunas. Esses novos campos surgiram para integrar outros módulos, como vendas, financeiro e contabilidade. Também muitos campos foram criados e excluídos.

Como resultado, tivemos muitas refatorações e retrabalhos. O projeto nunca fica pronto porque sempre há novos requisitos emergentes.

Aqui está minha dúvida: se tivéssemos usado uma abordagem usual de especificação, teríamos entrevistas, um documento de requisitos, diagramas de atividade, sequência e classe, para sabermos desde o início que a tabela "pessoa" precisaria de 70 campos, então tinha evitado muita refatoração.

O scrum poderia ajudar nesse projeto? Tenho a sensação de que, nesse caso, o scrum também acabaria sendo refatorado.

Sou apenas um programador, não um gerente de projetos. Estou me perguntando como deveria ter sido feito: com scrum ou com um design grande na frente.

Editar

Apenas para complementar o final desta história. Oito meses depois, fiz essa pergunta, depois de colocar o projeto em produção em alguns "clientes de teste", o projeto falhou oficialmente. O proprietário do produto decidiu abandonar o projeto. Ficou difícil corrigir problemas e muitos problemas de desempenho ocorreram.

Murilo
fonte
8
No Scrum, é assumido e aceito que você não pode saber tudo de antemão e que estará fazendo muita refatoração de qualquer maneira.
Bart van Ingen Schenau
2
A refatoração é frequentemente considerada uma parte essencial de qualquer processo ágil; portanto, é provável que o Scrum tenha resultado na mesma quantidade de refatoração ou mais. Suponho que a pergunta seja: por que você acha que isso é um problema? O que o Agile tenta resolver é que a captura e o design dos requisitos iniciais são falhos, e você oferece melhor valor ao cliente de forma incremental para descobrir os verdadeiros requisitos. Se você pudesse garantir um plano perfeito com antecedência, provavelmente poderia fazê-lo dessa maneira e ainda assim agregar valor de forma incremental. Mas essa captura inicial de requisitos teria sido perfeita?
29415 Robin
3
Não sei se o título reflete a pergunta que você está fazendo.
Gbjbaanb
6
@LightnessRacesinOrbit: ele obviamente está falando sobre algum tipo de aplicativo de banco de dados interno, com um esquema de banco de dados com 150 tabelas. Algumas pessoas parecem assumir que não há outro tipo de software. Eu os recomendo a ler os Cinco Mundos de Joel Spolsky .
Doc Brown
2
@Murilo "Algumas mudanças afetam as coisas que estavam funcionando." Esse é um problema comum e esperado com qualquer alteração em um sistema de software, para ajudar a atenuar esse problema. Os testes de unidade podem ser desenvolvidos (juntamente com o desenvolvimento primário) para fornecer informações sobre o efeito da refatoração nos sistemas existentes.
YoungJohn

Respostas:

18

Parece que você agitou o seu caminho em um processo de desenvolvimento descontrolado para criar um sistema de desenvolvimento sem fim. Isso também ocorre em sistemas ágeis.

O problema principal é a falta de requisitos e, embora sua solução possa parecer usar uma metodologia ágil para corrigir isso (como o ágil é projetado para mudar os requisitos), isso não resolveria o problema.

Mesmo métodos ágeis exigem um ponto de partida bastante firme. Eles respondem bem às mudanças de requisitos, mas são tão inúteis quanto qualquer outra metodologia se você começar sem requisitos. Você ainda precisa ter um plano para o qual está se dirigindo antes de começar. O Agile ajuda quando esse objetivo é desviado, mas não ajuda a definir esse objetivo.

Agora, é verdade que um projeto inicial fixo é muito rígido se você não souber exatamente o que está construindo.

Então, acho que você terá que passar da atual metodologia de 'caos' para algo mais organizado e terá que implementar uma quantidade razoável de design e planejamento. Você pode tentar fazer isso de uma só vez com uma metodologia pesada ou pode ser mais flexível com uma metodologia ágil. O que você não pode fazer é esperar qualquer metodologia para corrigir sua falta de planejamento inicial.

Aliás, o Kanban parece mais adequado às suas necessidades. O Scrum funciona melhor com pequenas equipes e projetos. O Kanban pode trabalhar com projetos maiores, mas também trabalha com uma abordagem de taxa de transferência de trabalho, para que as alterações no design sejam contínuas e não sejam divididas em sprints. Eu acho que você teria mais sucesso com isso.

gbjbaanb
fonte
Você fez algumas declarações muito boas. Isso é realmente um caos. Eu não estava suficientemente claro: não quero corrigi-lo, porque sou apenas um desenvolvedor do projeto, por isso não tenho como alterá-lo agora, mas estava me perguntando como isso seria feito corretamente. Muito obrigado pela sua boa resposta. Ps.Usamos um quadro Kanban aqui para tentar obter ajuda.
Murilo
2
Sua resposta não é ruim, mas "O problema raiz é a falta de requisitos" ??? Honestamente, para mim, parece exatamente o contrário. O OP já tem muito mais requisitos em jogo do que ele processa e gerencia seriamente.
Doc Brown
@DocBrown Sim, é justo o suficiente - não a falta de requisitos, mas um dos requisitos adequadamente gerenciados e / ou projetados - ou seja, "basta fazer isso" e insuficiente "aqui está sua especificação" - o que deveria ter reduzido a refatoração falou sobre. Talvez eu esteja errado e tenha interpretado mal a pergunta.
Gbjbaanb
@Murilo Com base na minha experiência, se você está se perguntando "como isso seria feito corretamente", a resposta tem muito pouco a ver com as técnicas aplicadas e tudo a ver com as pessoas que implementam as técnicas e gerenciam o projeto.
Cort Ammon
2
"O Agile ajuda quando esse objetivo é desviado, mas não ajuda a definir esse objetivo". : Este é um excelente somatório de ágil:
Bryan Oakley
12

18 meses, 150 mesas e ainda não está em produção? Soa como uma marcha da morte para mim. A única maneira de corrigir isso, se houver alguma chance de salvá-lo agora, é restringir drasticamente o escopo do seu projeto - pelo menos para o seu primeiro lançamento de produção. O que você precisa é de um planejamento adequado de liberação, objetivos pequenos e alcançáveis ​​e levar o sistema ao usuário final o mais rápido possível.

E quando você tiver seu primeiro lançamento em produção, com apenas um décimo dos requisitos implementados, precisará estendê-lo passo a passo pelo próximo bloco de requisitos, o que causará a "refatoração". Você também receberá feedback, o que significa correção de erros e requisitos alterados, o que causará refatoração também.

Agora, para sua pergunta - o Scrum ajudará? Talvez talvez não. O Scrum é uma ferramenta para apoiar o desenvolvimento iterativo e os requisitos variáveis, e focando as coisas importantes primeiro. Outros métodos "Agile" também fazem isso, e um processo não tão formalizado também pode lidar com isso. Mas enquanto você tenta trazer um monstro como esse em um "big bang" para a produção, não importa se você usa o desenvolvimento "ágil" ou "inicial", ambos falharão.

Portanto, antes de pensar no Scrum, primeiro repense seus objetivos e sua estratégia de lançamento e verifique se o Scrum é a ferramenta certa para isso, e não vice-versa.

Doc Brown
fonte
1
Eu diria que "trazer um monstro como esse tudo de uma vez para a produção" não é nada ágil. Como o OP alega estar usando o kanban , o foco em um produto mínimo viável parece ter sido completamente perdido desde o início do projeto.
@ MichaelT: Concordo, é discutível se um chamado "desenvolvimento ágil" sem fornecer algo utilizável pode realmente ser chamado "ágil":
Doc Brown
Eu concordo com esta resposta. Você precisa começar de algum lugar, começar pequeno, publicar seu código, obter feedback, desenvolver o feedback, é apenas um ciclo interminável. Pelo menos nesse ponto, você tem alguém usando essa ferramenta.
21715 JonH
1
@ MichaelT onde trabalho, as equipes de projeto são ágeis, mas a infraestrutura de suporte definitivamente não é. Portanto, como equipe, entregamos algo que pode ser usado a cada poucas semanas, mas temos apenas uma produção implantada a cada 3-4 meses, na melhor das hipóteses, que é o estado do que está pronto para produção naquele momento. Organização em fluxo, espero. Levou três meses para obter um servidor de teste, por exemplo. Então, nós apenas fez ver com um laptop como um servidor de teste interno projeto até que o tempo ...
jwenting
8

Se você não pode gerenciar requisitos e não possui pessoas capazes de implementá-los adequadamente, o SCRUM não vai ajudá-lo (muito), e esse parece ser o verdadeiro problema que você está enfrentando.
O SCRUM pode ajudá-lo a lidar melhor com os requisitos em mudança do que com os sistemas mais estáticos de gerenciamento de projetos, mas não é o santo graal que fará magicamente tudo funcionar. De fato, a menos que seu pessoal esteja a bordo, disposto e capaz de trabalhar com a SCRUM, assim como o resto da organização, isso pode acabar piorando as coisas.

Se você tem uma tabela que cresceu tanto para caber em coisas para vincular com outros sistemas, eu postulo que o design do seu banco de dados é seriamente defeituoso, por exemplo. Nenhuma quantidade de SCRUM melhorará o design do seu banco de dados sem que você inclua pessoas que são boas no design do banco de dados em sua equipe e não tenham medo dessas alterações no design e nas mudanças que eles causarão no restante do sistema.

jwenting
fonte
2

Observe que, quando escrevi esta resposta, não percebi que o sistema ainda não estava em produção.

Da maneira que você descreve seu produto, não acho que seu problema imediato seja o gerenciamento de requisitos, nem o processo de desenvolvimento. É o da arquitetura do seu sistema.

Você conseguiu criar um monólito - e bastante grande nisso. 150 mesas é muito para um sistema *. Em particular, você menciona que possui 40 novos campos nos últimos 15 meses apenas para integrar sistemas externos. Eu consideraria seriamente dividir seu sistema em vários serviços autônomos, provavelmente começando com serviços para integração a sistemas externos - mas depois identificando áreas de negócios separadas implementadas em seu monólito e, talvez, dividi-las em serviços separados.

Se você conseguir dividir esse monólito em bases de código manteníveis separadas, também poderá dividir seus desenvolvedores em equipes menores, com responsabilidades bem definidas em áreas específicas da sua empresa, e poderá ter várias equipes ágeis menores mantendo sua própria base de códigos, em vez de todos os hackers na mesma base de código.

Quanto ao motivo de você ter chegado a essa arquitetura, a causa raiz do seu problema, pode haver muitas respostas. Talvez esteja enraizado no seu processo de desenvolvimento, talvez todos os seus desenvolvedores só tenham experiência com software consistente transacional ou talvez seja uma consequência de como sua organização está estruturada (você é vítima da Lei de Conway ). Eu acho que há uma boa chance de que seja uma combinação dos dois últimos.

Eu não acho que implementar o scrum ou ser melhor no gerenciamento de requisitos ajudará a resolver seu problema imediato, nem a causa raiz. Ajustar a arquitetura para a complexidade do seu sistema e abordar a causa raiz do motivo pelo qual você construiu esse sistema.

* Alguns provavelmente argumentam que eles podem manter um sistema com 150 tabelas - ou eles mantiveram sistemas muito maiores, mas acredito que a maioria dos desenvolvedores considerará isso um grande número de tabelas para um sistema.

Pete
fonte
1
Isso me parece uma sugestão técnica para um problema organizacional - que, para minha experiência, raramente funciona. Uma arquitetura de sistema com 150 tabelas para um único sistema pode ser boa - os problemas começam quando você tenta desenvolver e implantar esse sistema em um "big bang".
Doc Brown
@ DocBrown - eu concordo com você. No momento em que escrevi essa resposta, não estava claro que o projeto ainda não estava em produção. Eu então incorretamente adivinhei que era.
Pete