PM-87 | Práticas ágeis de desenvolvimento de Software
[ 20 horas aula ]
O mercado reclama cada vez mais de dificuldades típicas enfrentadas por uma equipe de desenvolvimento de software. Os métodos ágeis tentam, então, resolver diversos desses problemas através de práticas que favorecem o produto final e os problemas que o cliente deseja resolver.
Dos próprios princípios ágeis: "Atenção contínua a excelência técnica e bom design engrandecem a agilidade."
Neste curso prático de 20h voltado para desenvolvedores ágeis, apresentaremos práticas de desenvolvimento de software comprovadamente eficazes, sempre sob a ótica dos métodos ágeis. É um curso baseado na experiência real dos instrutores da Caelum com XP e Práticas Ágeis desde 2005 em equipes locais e remotas, em projetos internos, em clientes, consultorias e projetos open source.
As práticas reconhecidas do XP e algumas outras são abordadas durante esse curso, fazendo com que o desenvolvedor trabalhe o tempo todo em equipe para vivenciar os problemas do dia a dia de um projeto. Entre os assuntos, abordamos testes automatizados, design patterns, refatoração, processos de build, integração contínua, deploy contínuo, programação pareada e o uso de controle de versão. A valorização do código e do produto final a ser entregue ao cliente será frisada durante todo o curso, bem como as vantagens da entrega de um produto funcional ao fim de cada iteração.
Esse curso faz parte da Formação Ágil junto com o curso PM-83. Curso novo, primeira turma em Dezembro/2010.
Pré-requisitos: Cursos FJ-11 e FJ-21 ou: Java, Orientação a Objetos, Collections, JSP, JSTL básico, MVC, Hibernate/JPA, patterns DAO e Factory. Desejável noções básicas de metodologias ágeis.
Posts relacionados no blog
- Medindo a complexidade do seu código
- Facilitando seus testes de unidade no Java: um pouco de Mockito
- Agile 2011, dívida técnica e o Hard Choices
- Perdendo ou ganhando tempo com testes de unidade
- Novo curso PM-87 de Práticas Ágeis e nova Formação Ágil
- Seu cliente precisa saber o andamento do projeto
- Prática: melhore a qualidade do código para evitar uma enchente de bugs
- Integração Contínua e o processo Agile
A opinião de quem fez o PM-87
Confesso que eu conhecia pouco da Caelum, porém muito me surpreendeu ao ser motivado pelo treinamento e pelo instrutor, conhecer a estrutura, os profissionais e o alto envolvimento com a preparação de conhecimentos a assuntos dos mais variados e de grande importância, principalmente na área do desenvolvimento de software.
Rafael Gomes Vieira, Porto Velho - RO em 12/09/2011
Os conhecimentos obtidos no curso trouxeram qualidade, agilidade e eficácia ao nosso processo de desenvolvimento.
William Ferreira Coutinho, Porto Velho – RO em 12/09/2011
Próximas Turmas do PM-87
| Data | Período | Cidade | Comentário |
|---|---|---|---|
| 02/04 a 06/04 | Noturno (19:00 as 23:00) | São Paulo | |
| 12/05 a 26/05 | Sábado (9:00 as 17:00) | Rio de Janeiro | |
| 18/06 a 22/06 | Noturno (18:00 as 22:00) | Rio de Janeiro |
Conteúdo detalhado do PM-87
O medo de se adaptar
- Problema: código desconhecido
- Problema: entregas demoradas
- Outros problemas
- Enfrentando o medo com práticas ágeis
Controle de versão
- Problema: o medo de remover código
- Solução: Controle de versão
- Métodos não utilizados
- Em casa: treinando usar auxílio da IDE
- Problema: imprevistos
- Solução: Controle de versão com Git
- Exercício: Mexendo com o git
- O que vem de brinde?
- Para saber mais: Outros sistemas de controle de versão
- Criando um projeto usando git
- Exercício: iniciando um novo repositório
- Trabalhando com Branches
- Exercícios
- Para saber mais: hooks
Conhecendo o sistema
- Problema: Primeiro contato com o sistema
- Exercício: Primeiro contato com o sistema
- O código fonte
- O medo de quebrar algo
- Programação pareada
- Exercício: exercitando coragem
Bugs e testes
- Problema: o bug
- Exercício: identificando um bug em cenário complexo
- Resolvendo bugs
- Replique o problema, então corrija
- Exercício: resolvendo bugs para que não voltem
- Presença de testes vs. segurança
- Exercício: eliminando testes duplicados
- Testes como documentação
Qualidade do código
- Problema: o único que entende sai de férias
- Solução: dividir mais o conhecimento
- O ambiente de trabalho
- Exercício: troca de informações
- Refatoração
- Exercício
- Desenvolvimento incremental
- Qualidade do código é importante! Mas como medir?
- Refatorando e testando código legado
Parar, pensar e adaptar
- O que desejamos desenvolver?
- Fugindo do design antecipado
- Escrevendo testes antes
- Teste primeiro, codifique depois
- Faça funcionar e, então, melhore
- Um passo de cada vez
- Mudanças simples x Soluções simples
- Exercicios: TDD
E se eu falhar? Integrando continuamente
- Problema: ::merge hell:: (merges infernais)
- Integração contínua
- Solução: Build automatizado com Ant e Ivy
- Dependências com Ivy
- Build contínuo com o Hudson
- Exercicio: instalando e configurando o Hudson
- Para saber mais: MAVEN
Release e entrega
- Problema: não funciona em produção
- Acelerando o processo de deploy
- Solução: homologação contínua
- Exercício: Deploy para homologação
- Exercício: Deploy para produção
- Problema: só entrego a cada 6 meses
- Releases curtos e frequentes
- Solução: deploy e entrega contínua
- Build pipeline
- Funcionalides e branches
Testes de aceitação
- Na minha máquina funciona!
- Exercício: uma nova feature
- Mas não era bem isso
- Problema: definição ambígua
- Solução: definindo um critério de aceitação
- Transformando critérios em testes
- Exercícios
Apêndice - Acompanhamento do projeto
- Quanto estamos desenvolvendo?
- Release vs. Iteração
- Techtalks e Brownbags
- Em busca de uma métrica
- Exercício
* Os apêndices listados são conteúdos adicionais que não fazem parte do curso regular.

