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

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


#1

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?


#2

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.


#3

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.