comprometimento?
agilidade?
melhor caminho?
organização?
comunicação?
respeito?
motivação?
programação em par?
revisão código?
tdd?
listas atividades?
Apresentação
- Informações e Reflexões
- Metodologias Ágeis ?
- Extreme Programming?
Valores;
Princípios;
Papéis;
Práticas
- Pré Conclusões
- + Informações
- Referências
- Espaço Dúvidas
Informações Importantes
rapidamente...
1o Comunicação ineficiente
2o Sem documentação
3o Projeto muito grande
4o Cliente presente só
no ínicio e final
1° Comunicação!
Mesma Linguaguem
2° Documentação
Documentar é Planejar!
Planejar é Documentar!
3° Divisão
4° Cliente
Cliente é que sabe o quê o software
deve fazer.
Cliente é que vai usar.
Cliente é quem vai pagar!
Porque tais coisas ditas?
Porquê precisa ficar assim?
Se fulano erra, não preciso errar também!
Acertar Metodologias Ágeis
Foco em Projetos Pequenos
(”dividir para conquistar”)
XP/ Scrum/ DSDM
Google/ Yahoo/ Microsoft
”A arte de maximizar a quantidade de software que você não irá fazer.” Vinícius Teles
Ideal equipes pequenas
(<10-15 pessoas)
- Foco em Comunicação Efetiva. Cliente x Programador
- TDD Exaustivamente
- Desenvolvimento Incremental
- Diminuição Custos Mudanças
Valores
Comunicação
- Priorizar entre o Cliente e Equipe
- Equipe x Equipe, uso 1 sala
- Pessoalmente é melhor que
Videoconferência que é melhor que Telefonema que é melhor que e-mail
Simplicidade
- Não fazer mais que a necessidade
- Evitar ”firulas”
- Ver com cliente real necessidade de certas exigências
Feedback
- Fez confirma com o cliente
- Cliente deve dizer um sim/não, nunca talvez
- Quantes antes achar o erro melhor
Respeito
- Aceitar deficiências
- Saber ouvir
- Compreender
- Se importar um com o outro
Coragem
- Aceitar que o cliente pode querer mudar o que está pronto
- Confiar práticas XP
- Mudar, adaptar, refazer parte do software se assim o cliente quiser
Princípios
Ir e vir sem problemas
Diminuir a curva custos
Programador também é gente
Fazer melhor, na próxima interação
Fazer o que da retorno primeiro
Reutilização/ Novas Funcionalidades
Experimentar na busca erro
Feedback concreto
Antes 2x do que 3-4x
Evitar erro = evitar desmotivação
Ver o bom, e o ruim
Deixa pra mim
Deu Ok, passa adiante!
Bom pra um, bom pra todos
Visões diferentes, intuito em comum
Bug? Conhecimento pra todos
Menos é mais
Mais é menos
Práticas
Stand Up Meeting
- Prioridades do Dia
- Olhadela quadro tarefas
- Assumir atividade
Planejamento Interativo
- Entrega Parcelada (Releases)
- Release a cada X tempo
- Melhor Adaptabilidade
- Aprimoramento
(+Isso, -Aquilo, Muda Lá)
- Motiva a Todos
- Receita Antecipada
Ciclo Semanal
- Quadro Histórias
- Planning Poker
- Cliente + Equipe = Desafio Semana
- Planejar atividades da Semana
- Acertos/ Erros semana anterior
Cliente Presente
- Cliente x Programador
- Sucesso e Fracasso é culpa do Cliente
- Software fica pronto + rápido >
- Custo Menor >
- Diminuição de recursos não usados <
Ambiente Informativo
- Informações sobre/ andamento
- Quadros/ Murais
- Avisos – Post it
- Cartões visíveis
Design Incremental
- Software por partes, 1+1+1
- Primeiro o básico depois acessórios
- Só fazer prioridades
- O que pode ser útil no futuro, será feito no futuro
Custo de Mudança torna-se complexidade
E tempo torna-se desmotivação
Fazer 1x por ciclo
Padrões de Codificação
- Todos devem falar a mesma lingua em sentido de regras codificação
Posse Coletiva
- Código pertence a todos
- Eu que fiz, mas outro pode modificar
Teste 10 Minutos - Build
- Teste Automatizado/ Manual
- Tempo Parado
+ Execuções teste
- Erros acumulados
+ Fácil achar erro
TDD
TDD denovo
- Passou 2x sem problemas?
- Acrescenta outra condição no TDD
- E faz denovo
- E denovo
- Blz? Então outra parte
Integração Contínua
- Unificar as partes
- Fez, testou, testou, ta Ok?
Manda Repositório
Trabalho Energizado
mas trabalhar bem
- Mover na direção certa
- Evitar horas-extras
- Evitar déficit de atenção
- 40 horas/semana, 8 horas/dia
Programação em Par
- 2 Cérebros é melhor que 1
- Inspeção código
- Disseminação conhecimento
- + Qualidade Software
- Revisão/ Correção
- Redução Bugs
- Pressão
- Dicas/ Sugestões
- Entrega Rápida
Exemplos
Dojo?
Rally?
Avião?
Retrospectiva iteração
- Não era isso que eu queria
- Agora Sim/ Não
- Isso deu Certo/ Errado
Pré Conclusões
- Comunicação nunca é pouca
- Priorizar o básico, depois firulas
- Não ficar preso a regras/ documentação
- Fazer documentação junto desenvolvimento
- Planejar Software/ Semana/ Mês/ Vida
- Não enrolar senão vai-se o tempo
+ Informações
Muito Papel
Perde-se Tempo
Atraso de Software
Custo Elevado
Pouco Papel
Ganha-se Tempo
Difícil Modifição/ Atualização
Custo Elevado
Documentação errada ínicio = Software errado final
Software mudou = Documentação errada
Documentação após software = Retrabalho
Software não é físico.
Não pense como
Engenharia Civil
Pense como
Administração Empresas
+ Personalizados
- Prateleira
Cliente sabe o que quer e sabe que dá pra fazer!
(embora normalmente não se consegue entender o que ele quer)
Software deve ser adaptável,
deve ser de fácil implementação,
deve ser de fácil implantação,
deve ser livre de erros,
deve ser seguro,
deve ser de fácil expansão,
deve ter boa usabilidade.
Um exemplo?
Linux
Não reinventem a roda
Procurem desafios para aprender
É possível melhorar sempre
Obrigado!
Espaço Dúvidas
críticas?
sugestões?
www.google.com Kent Beck
www.guma-rs.org Kelly Waters
www.extremeprogramming.org James Shore
http://improveit.com.br/xp Vinicius Teles
www.agilealliance.com Brian Behlendorf
www.agile-software-development.com Manoel Pimentel Medeiros
http://computerworld.uol.com.br Jonathan Kohl
www.baguete.com.br Scott Ambler
http://c2.com Vitor Hugo Germano
www.visaoagil.com Alexandre Magno Figueiredo
www.seatecnologia.com.br Alexandre Gomes
http://www.agile-process.org/ Daniel Wildt
algumas imagens
ayagebeely.blogspot.com/2009/10/stand-up-meeting.html
Livro: Software Engineering Economis; Barry W. Boehm
foto gurias fim interação: Laborvox PUC SP
scrumeta.wordpress.com
Motivos?
Gerentes de Projeto
Redatores Técnicos
Designers de Iteração
Basicão da Metodologia de Desenvolvimento XP
Arquitetos
Papéis
Luiz Rauber para o FLISOL 2010 em
Caxias do Sul, 24/04/2010
Programadores
Usuários
Referências
eXtreme Programming
Recursos Humanos
http://luizrauber.blogspot.com
Analista de Testes
Gerentes de Produto
Executivos
Metodologias Ágeis?
Manifesto Ágil
“Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse 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.” (agilemanifesto.org)