Promovi na HP Enterprise Service no dia 05/07/2013 um workshop que abordou o tema ágil. Neste workshop tive a oportunidade de debater sobre o que de fato faz parte da filosofia ágil de desenvolvimento de software. Sabemos que muito se fala sobre esse modelo, mas também sabemos das dificuldades em entender porque existem essas implementações chamadas ágeis. Tentamos então de forma sucinta conhecer as origens dessas práticas, seus princípios e os conceitos que os fazem tão relevantes para enfrentar os desafios de criar sistemas no século 21. Também discutimos algumas maneiras de identificar o melhor momento para adoção de uma prática ágil, e mostramos como avaliar se as equipes estão preparadas para essa abordagem.
Além disso, relembramos as peculiaridades dos modelos tradicionais e com uma análise comparativa apuramos as causas que dificultam o uso de processos que requerem escopo de negócio fechado. O dinamismo da informação altera as necessidades constantemente e inevitavelmente os sistemas precisam acompanhar essas mudanças, portanto, a utilização da prática de iteração e a aceitação de mudanças se tornaram itens básicos para o novo ciclo de desenvolvimento de software.
No entanto, muitas equipes decidem usar métodos ágeis sem avaliar se estão preparadas, logo, se deparam com um processo indisciplinado e um cenário de caos em seu ambiente de trabalho. O não entendimento da filosofia ágil impede que as equipes obtenham as vantagens alcançadas com ciclos ágeis, assim, dando origem a metodologias customizadas de forma amadora e inconsequente, chamado pelo Ken Schwaber de ScrumBut (http://blogs.hp.com/architecturebrazil/2013/06/18/os-perigos-por-tras-do-scrumbut/)
Estas e outras questões foram discutidas no workshop Introdução ao Desenvolvimento Ágil usando Scrum.
Agenda do workshop
- Um pouco de contexto sobre o desenvolvimento de software nas últimas décadas
- O que é desenvolvimento ágil
- frameworks de desenvolvimento ágil
- Manifesto Ágil
- O que é SCRUM
- Desenvolvimento com SCRUM
- ScrumBut
- Certificações
2. Agenda
Um pouco de contexto sobre o
desenvolvimento de software nas
últimas décadas
O que é desenvolvimento ágil
Frameworks de desenvolvimento
ágil
Manifesto Ágil
O que é SCRUM
ScrumBut
Certificações
Referências
Q&A
3. Flávio Secchieri Mariotti
Solutions Architect at HP
• Arquiteto e Especialista em desenvolvimento de
software e defensor afinco de métodos ágeis.
• Mestrando em Engenharia da Computação com
ênfase em Engenharia de Software e Pós Graduado
em Engenharia de Software baseado em SOA.
@FlavioSMariotti
4. Um pouco de contexto sobre o
desenvolvimento de software
nas últimas décadas
5. A importância do software
Desenvolvedores
A importância dos software nos negócios
Quem fez a arquitetura desse projeto?
Comercial
A importância da informática na gestão das empresas é
inquestionável. Empreendimentos de todos os portes ganham
agilidade, confiabilidade e, principalmente, uma redução de
despesas operacionais com a adoção de softwares de gestão.
Cliente
Arquiteto
Para desenvolver esse software
precisamos usar alguns designer
patterns só assim vamos criar um
software escalável, flexível e eficiente.
Precisamos de novos sistemas. Contrate algum estudante
de informática e peça para ele desenvolver um software
para a próxima semana.
Testadores
Os programadores não enviam uma
versão sem bug, não sei qual a
dificuldade nisso.
6. A importância do software
A importância dos software nos negócios
Qual a real importância?
...
7. Taxa de sucessos dos projetos
Global study on success rate of IT projects
Estatística
Expectativas
37% atendem às
expectativas.
Qualidade
57% dos sistemas
são entregues
sabendo-se que têm
defeitos
42% dos sistemas não
funcionam como o
planejado ou nunca
serão usados
21% fracassam
integralmente.
Fonte: Standish Group; CHAOS Manifesto 2011.
Prazo
68% dos projetos
são entregues com
atraso
Custo
50% dos projetos
custam mais do
que o planejado.
8. Funcionalidades do software
Frequência de utilização das funcionalidades nos softwares
Frequência
7%
13%
45%
16%
45% Nunca
19% Raramente
16% As vezes
13% Frequentemente
7% Sempre
19%
20% do software é realmente útil.
Fonte: Standish Group;
9. Por quê?
Algumas questões para reflexão
Por que os projetos falham tanto?
O que temos feito de inadequado ao longo dos anos?
Por que somos incapazes de cumprir os prazos e custos?
Por que somos incapazes de entregar aquilo que o cliente deseja?
10. Modelos tradicionais
Desenvolvimento de software com os modelos tradicionais.
• Cascata
Venda
Desespero
Comemoração
• Prototipação descartável
Justifico
Planejamento
Preocupação
Revisão
• Modelo Espiral
• Modelo de Reuso
• Codificação e correção
11. Modelo Cascata
Desenvolvimento de Software com o modelo mais tradicional (waterfall)
Planejado
Requisitos
Análise
Jun/2013
Jul/2013
Construção
Teste
Ago/2013
Implantação
Set/2013
Out/2013
Real
Análise
Requisitos
Jun/2013
Jul/2013
Ago/2013
Construção
Set/2013
Teste
Implantação
Um dia...
13. Desenvolvimento ágil
O que é Desenvolvimento ágil de software?
Podemos definir desenvolvimento ágil de software como um conjunto de métodos e práticas de
construção de software. Desenvolvimento ágil é termo abrangente que engloba alguns conceitos que
vem evoluindo desde a década de 1990, tais como:
Desenvolvimento
iterativo
Desenvolvimento
incremental
Time auto
organizáveis
Times
multifuncionais
Envolvimento
ativo dos
usuários
Maximização do
ROI
14. Desenvolvimento ágil
O desenvolvimento ágil compreende vários frameworks
O desenvolvimento ágil compreende vários frameworks e metodologias de desenvolvimento de
software:
Extreme Programming XP
DSDM
OpenUP
Scrum
FDD
Modelagem ágil
TDD
HP Agile Development - EDGE
17. Manifesto ágil
Origem das abordagens ágeis
Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e
ajudando outros a fazê-lo. Através deste trabalho, passamos a valorizar:
Indivíduos e interação entre eles mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano
“Ou seja, mesmo havendo valor nos itens à direita,
valorizamos mais os itens à esquerda.”
http://manifestoagil.com.br
18. Manifesto ágil
Princípios por trás do manifesto ágil
Nossa maior prioridade é satisfazer o cliente, através da entrega
7.
Software funcional é a medida primária de progresso.
adiantada e contínua de software de valor.
1.
8.
Processos ágeis promovem um ambiente sustentável. Os patrocinadores,
Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento.
desenvolvedores e usuários, devem ser capazes de manter
Processos ágeis se adequam a mudanças, para que o cliente possa tirar
2.
indefinidamente, passos constantes.
vantagens competitivas.
3.
9.
Entregar software funcionando com frequência, na escala de semanas
10. Simplicidade: a arte de maximizar a quantidade de trabalho que não
até meses, com preferência aos períodos mais curtos.
Contínua atenção à excelência técnica e bom design, aumenta a agilidade.
precisou ser feito.
4.
Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em 11. As melhores arquiteturas, requisitos e designs emergem de times auto
conjunto e diariamente, durante todo o curso do projeto.
organizáveis.
5.
Construir projetos ao redor de indivíduos motivados. Dando a eles o
ambiente e suporte necessário, e confiar que farão seu trabalho.
6.
12. Em intervalos regulares, o time reflete em como ficar mais efetivo, então,
se ajustam e otimizam seu comportamento de acordo.
O Método mais eficiente e eficaz de transmitir informações para, e por
dentro de um time de desenvolvimento, é através de uma conversa cara
a cara.
http://manifestoagil.com.br
20. Scrum
Visão geral
Scrum: Um framework dentro do qual pessoas podem tratar e
resolver problemas complexos e adaptativos, enquanto produtiva e
criativamente entregam produtos com o mais alto valor possível.
Leve
Simples de entender
Extremamente difícil de dominar
21. Scrum
O que é o Scrum?
O framework Scrum consiste nas equipes do Scrum associadas a
papéis, eventos, artefatos e regras. Cada componente dentro do framework serve a
um propósito específico e é essencial para o uso e sucesso do Scrum.
Scrum é fundamentado nas
teorias empíricas de controle de
processo, ou empirismo.
Baseadas no que é conhecido.
22. Scrum
Pilares do Scrum
Três pilares apoiam a implementação de controle de processo empírico:
Transparência
Inspeção
Adaptação
24. Iterativo
Características do Scrum: Iterativo e Incremental
Fonte: Don’t know what I want, but I know how to get it.
http://www.agileproductdesign.com/blog/dont_know_what_i_want.html
25. Incremental
Características do Scrum: Iterativo e Incremental
Fonte: Don’t know what I want, but I know how to get it.
http://www.agileproductdesign.com/blog/dont_know_what_i_want.html
28. Características do Scrum
Cliente é considerado um parceiro
Envolvimento do cliente ao longo de todo o projeto
Disponível sempre e quando necessário para tirar dúvidas
Mas colaboração e menos discussão de contrato
Mudanças de requisitos são bem-vindas
35. ScrumBut
Os perigos por trás do ScrumBut
"ScrumButs são razões pelas quais as equipes não podem
tirar proveito do Scrum para resolverem seus problemas e
perceberem os reais benefícios no desenvolvimento de
produtos utilizando o framework Scrum".
By Ken Schwaber
37. ScrumBut
Exemplos de Scrumbut
“Nós usamos Scrum, mas implementar a Daily Scrum todos os dias sobrecarrega a
equipe e não é produtiva, de modo que só temos uma por semana.”
“Nós usamos Scrum, mas as retrospectivas são um
desperdício de tempo, por isso não implementamos.”
“Nós usamos Scrum, mas não podemos construir uma
funcionalidade em quatro semanas, por isso, nossos
Sprints são de seis ou oito semanas de duração.”
38. ScrumBut
Razões pelas quais equipes adotam ScrumBut
Clientes não querem ser envolvidos, simplesmente
querem o produto pronto.
A empresa não está disposta a mudar seus processos.
A empresa não quer ser envolvida e não respeita a
decisões de prioridade do Product Onwer.
Nem sempre conseguimos reunir todos os integrantes da
equipe para reuniões de retrospectiva.
O Scrum Master não respeita as decisões da equipe e decide o
que cada uma deve ou não fazer.
Os gerentes e diretores interessados no produto, não podem
Não foi possível convencer o gerente de TI dos benefícios
ficar de fora e precisam participar das reuniões e, se
de permitir a equipe Scrum ser autogerenciável.
necessário, determinar prazo para finalização de cada Sprint.
Nem todos da equipes estão disponíveis para trabalharem
de forma integral para o projeto ou Sprint.
A equipe não sente necessidade das reuniões diárias.
Nem todos da equipe tem condições de se responsabilizar
por pedaços de funcionalidades requeridas no Sprint.
O Scrum Master não está comprometido com o Scrum, ao ponto
que ele ou ela não remove os obstáculos destacados pelo time
Scrum.
O Product Onwer não está comprometido com o Scrum e não
auxilia a equipe Scrum com duvidas e priorização de atividades.
39. ScrumBut
Riscos e consequências
O Scrum é considerado imutável, ou seja, embora seja possível
implementar partes do Scrum, o resultado final não é considerado
Scrum.
conflitos internos
perda do controle
atraso nas entregas
falta de gestão
clientes insatisfeitos
perda de tempo
40. ScrumBut
Como evitar o ScrumBut
Discussões regulares sobre os valores do Scrum.
Discussões regulares sobre os princípios do manifesto ágil.
Debates sobre o que o Scrum significa para cada membro.
Inspeções constantes sobre os benefícios e resultados obtidos com Scrum.
Permitir que o time Scrum se autogerencie dentro de um time-box.
Questione-se regularmente se os processos Scrum estão sendo respeitados.
Identifique e evite qualquer ação de heroísmo individual.
42. Certificações
Validando seus conhecimentos
Existem algumas certificações profissionais relacionadas com o
tema ágil e são oferecidas por organizações como:
Scrum.org, ScrumAlliance, ICAgile, PMI, dentre outras.
43. Scrum.org
Modelos de certificações do Scrum.org
O Scrum.org é uma organização fundada em 2009 por Ken
Schwaber, um dos criadores do Scrum. Apesar de ser uma
organização nova, já é reconhecida mundialmente.
O Scrum.org mantém um programa de certificação para
profissionais que trabalham ou pretendem trabalhar com o
Scrum, são eles: Profissional Scrum Master; Profissional Scrum
Developer; Profissional Scrum Product Owner.
45. Referências
Livros, Blogs, Frameworks, e mais...
HP Agile Development
http://processviewer.corp.hp.com/app/viewer?id=595
HP Agile Development Pattern
http://processviewer.corp.hp.com/app/viewer?id=608
HP Agile Transformation Journey
http://processviewer.corp.hp.com/app/viewer?id=596
Scrum.org
http://www.scrum.org/
Ken Schwaber’s Blog
http://kenschwaber.wordpress.com/
Scaled Agile Framework – Big Picture
http://scaledagileframework.com/
http://scaledagileframework.com/blog-2/
Book: Agile Project Management with Scrum
By Ken Schwaber