GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Alguem poderia diferenciar: Scrum, XP, TDD, Modelagem Ágil, DDD, Kanban

Olá amigos, sou novo na área e estou com a seguinte duvida sobre Metodolia Ágeis, quais seria diferença dessas citadas neste topico? em qual nessecidade te consumir cada uma dela de cada forma?

Se for ler sobre cada um deles poderá analisar sobre o que pode ser necessário ou não pro seu caso. Não fique querendo diferenciar pois esses itens podem coexistir.

Das experiências que passei só nunca precisei seguir XP, TDD e DDD. Antes de tudo você precisa ter uma necessidade pra saber o que vai ser útil. Fora isso, só estude sobre cada um deles para conhecer e quando tiver um caso real vai saber avaliar se no saldo final entre prós e contras vale a pena seguir.

A grosso modo, sem ser purista (aka fundamentalista), entendo essa sopa de letrinhas da seguinte forma (você pode a qualquer momento conferir estes termos na wikipedia para melhor entendimento):

Metodologia ágil é uma filosofia de vida, de como os processos para desenvolver algo deveriam ser guiados.

Scrum é uma implementação da metodologia ágil, podendo ser utilizado para qualquer desenvolvimento, não apenas software. Existem equipes de marketing, financeiro, e até mesmo cozinheiros utilizando Scrum no processo diário.

XP também é uma implementação da metodologia ágil, mas se aplica apenas a desenvolvimento de software, uma vez que introduz conceitos como TDD e Pair-programming no processo. Existem semelhanças e diferenças com relação ao Scrum, como a forma de iteração no processo, mas isso pode variar de equipe pra equipe.

TDD, DDD, Pair-programming são técnicas/conceitos aplicados no desenvolvimento de software propriamente dito. Fazem parte da engenharia do processo. TDD é basicamente desenvolver orientado a testes, pensando em como determinada coisa será testada antes de pensar na implementação. Pair-programming é sentar do lado do seu amiguinho e pensar no problema junto com ele, trocando de teclado/computador de tempos em tempos .

Kanban é uma forma de organizar as tarefas. Um quadro ou qualquer coisa que diga o que tem pra fazer, o que está fazendo e o que já está pronto.

Quando utilizar cada um

Em equipes grandes é comum ver separação dos conceitos, uma vez que diferentes roles podem aplicar o processo mais adequado. Por exemplo, uma equipe de negócios pode decidir utilizar Scrum para organizar o processo de como o produto está e para onde vai. Já na equipe mais técnica da mesma empresa, podem decidir utilizar Scrum para organizar o fluxo de trabalho envolvendo o software. Se forem aplicar TDD e Pair-programming com iterações muito frequentes, pode-se dizer que essa equipe faz uso do XP.

Em equipes pequenas é mais comum ver aplicação do XP, embora já vi equipes pequenas utilizarem Scrum propriamente dito, sem TDD e com muito menos iterações.

Ainda assim, o mais comum é: cada um escolhe uma metodologia e molda-a da forma mais adequada para o processo da equipe. Existem casos que o processo foi tão customizado que nem existe mais o rótulo se é Scrum, XP, Scrum + XP ou qualquer outra coisa. E isso não significa estar errado, pelo contrário, IMHO o sucesso do produto ou serviço vem da cultura da equipe, e não apenas do processo.

1 Curtida