Práticas Ágeis
-
Upload
felipe-rodrigues -
Category
Business
-
view
3.939 -
download
5
description
Transcript of Práticas Ágeis
1blog.fratech.net
P r a t i c a s A g e i sAgile dentro de você!
Felipe Rodrigues de Almeida
2fratech blog.fratech.net
Who we are?
Felipe Rodrigues de AlmeidaArquiteto de Sistemas responsável por implantação de processos arquiteturais em clientes da Fratech.
3fratech blog.fratech.net
PRáticas ágeis
Por quê?Neste material, Manoel e eu buscamos passar aos participantes alguns princípios por trás das práticas. Muitos desses benefícios já foram vistos ou discutidos por alguns de vocês sob outros títulos, eu sei, não é novidade.
Mas então porque falar sobre essas técnicas? Porque preferimos apresentar a verdadeira lógica por trás das técnicas. Mostraremos aqui quais os conceitos que motivam as práticas mais comuns do mundo ágil. E finalmente porque ninguém o fez ainda. (Não no brasil e em português).
4fratech blog.fratech.net
para pensar!
Não importa o quão longe você foi pela estrada errada,
volte. (Provérbio Turco)
5fratech blog.fratech.net
QUal a sua agilidade?
LebreTartaruga
6fratech blog.fratech.net
Mas...
7fratech blog.fratech.net
O que é Agile? (Visão Geral)
Habilidade de criar e responder à mudanças com eficiência e eficácia dentro de ambientes de negócios turbulentos.
Habilidade de balancear flexibilidade e estabilidade. (Jim Highsmith, 2002)
8fratech blog.fratech.net
alimentando a agilidade
Um projeto ágil requer continuamente práticas que não fazem parte do desenvolvimento por si só, mas que são extremamente importantes para a saúde do time.
Agile requer manutenção. Mas como nos manter atualizados o tempo todo?
Mesmo se você está no caminho certo, você não chegará a lugar algum se ficar sentado. (Will Rogers)
9fratech blog.fratech.net
alimentando a agilidade
Mantendo-se atualizadoAlgumas dicas sobre manter-se atualizado:
Aprenda iterativamente e incrementalmente x
Conheça a ultima buzz x
Participe de grupos de usuários x
Participe de workshops e palestras x
Leia de forma voráz x
Não há nada permanente exceto a mudança. (Heraclitus)
10fratech blog.fratech.net
alimentando a agilidade
CuidadoAlgumas dicas sobre manter-se atualizado:
Muitas idéias nunca tornam-se tecnologia úteis x
Você não pode ser expert em tudo x
Entenda porque uma nova tecnologia é necessária x
Fuja do impulso de converter sua aplicação para a última tecnologia, framework xou linguagem, apenas para aprender
11fratech blog.fratech.net
alimentando a agilidade
Outras dicas úteisSaiba quando “desaprender” x
Velhos hábitos podem atrapalhar o desempenho e o aprendizado
Pergunte até você entender x
Não aceite as explicações somente porque alguém muito bom falou. Questione. “Porque?” é uma ótima pergunta.
Invista no seu time x
Compartilhe suas experiências e conhecimentos com sua equipe. Isso ajuda a nivelar o ambiente criando um padrão. Aceite que os outros compartilhem também. Absorva tudo que for interessante.
12fratech blog.fratech.net
Adaptação às mudanças
13fratech blog.fratech.net
postura em um ambiente ágil
Liberdade é ágilNormalmente, empresas que investem em agile oferecem liberdade para seus empregados. Não deixe que isso atrapalhe sua produção.
Disciplina x
Honestidade x
Transparência x
Humildade x
Dedicação x
Bom Senso x
O que seu chefe espera de você?
14fratech blog.fratech.net
confiança
Confiança traz agilidadeAs práticas ágeis exigem um alto grau de confiança no time. É preciso confiar para que o processo seja agradável e não burocrático.
Além de confiar nos outros garanta que você também é confiável. Essa garantia é facilitada por uma postura aderente à agilidade.
15fratech blog.fratech.net
Gerenciado ROI com Business Value
Business Value será uma moeda de troca durante o projeto e o cliente empresta um determinado valor dessa moeda para a equipe e esta por sua vez, terá que devolver o valor correspondente em forma de software, ou seja, é uma dívida que a equipe assume com o cliente e que deverá ser amortizada a cada ciclo (Sprint), até que a mesma seja totalmente liquidada (zerada).
16fratech blog.fratech.net
o que é uma user story
Descreve uma funcionalidade que deve fornecer valor para o cliente;
INVEST
Independent
Negotiable
Valuable to users or costumers
estimatable
Small
testable
17fratech blog.fratech.net
user story e épicos
Épico
User Story User Story
User Story User Story
User Story User Story
- INVeSt + INVeSt
18fratech blog.fratech.net
user story e temas
Tema
User Story User Story
User Story User Story
User Story User Story
19fratech blog.fratech.net
o que o cliente vê?
Analise o projeto pelos olhos do clienteComo desenvolvedores não somos acostumados a pensar em questões de negócio. Mude isso em você. Tudo que o cliente precisa é de pessoas que pensem em suas necessidades. Veja o que o cliente vê.
O que seu cliente espera de você?
20fratech blog.fratech.net
Safistação do Cliente
21fratech blog.fratech.net
Interação com o Cliente
22fratech blog.fratech.net
Repensando a qualidade do Software
O que é projeto de software com qualidade?
Software entregue no prazo?
Software entregue no custo?
Software entregue de acordo com o escopo?
Software entregue sem defeitos?
Um novo conceito: Software = rOI
23fratech blog.fratech.net
evitando a multi-tarefa
Fonte: Vinícius Manhães Teles - www.improveit.com.br
24fratech blog.fratech.net
trabalhando para entregar
O cliente só quer outputO único objetivo de um projeto de software é produzir software. Dessa forma a produção de software não pode ser deixada de lado para satisfazer desejos pessoais ou profissionais dos envolvidos.
Todos devem trabalhar para entregar software mais rápido e com mais qualidade.
25fratech blog.fratech.net
arquitetos Ágeis
26fratech blog.fratech.net
arquitetos devem escrever
27fratech blog.fratech.net
arquitetura ágil
O Papel do ArquitetoNum time ágil podemos ter a impressão de não precisar de arquitetos, afinal o design é evolutivo e cada um é co-responsável pelo design.
A verdade é que é necessário ter um arquiteto e que pode ser resumido na seguinte declaração de Martin Fowller:
“...o mais experiente e completo membro do time, que ensina outros membros e sempre está lá para as coisas mais complicadas.”
28fratech blog.fratech.net
arquitetura ágil
O Papel do ArquitetoDessa forma podemos concluir algumas das tarefas de um arquiteto em um time ágil.
Entender os requisitos (User Stories, Itens de Backlog, etc...) xFormular o Design Geral do sistema xDisseminar os conceitos da arquitetura xOferecer suporte aos desenvolvedores xVerificar a implementação x
Mais informação em http://www.agilearchitect.org/agile/role.htm
29fratech blog.fratech.net
arquitetura ágil
30fratech blog.fratech.net
Simplicidade
evite o complexo de“cérebro”
31fratech blog.fratech.net
Simplicidade
Conceito KISS
Keep It Simple, Stupid!
32fratech blog.fratech.net
como aumentar a simplicidade
Kent Beck, na segunda edição do Livro Extreme Programming Explained abordou algumas sugestões interessantes para garantir do desenvolvimento de um sofware simples.
apropriado para o público alvo
Não importa o brilhantismo ou “elegância” de um software, se as pessoas que irão trabalhar com ele (usuários ou desenvolvedores) não o compreendem, então ele não é simples para elas.
comunicativo
Os elementos de um software deverá favorecer a boa comunicação com os futuros leitores.
fatorado
Duplicação de lógica ou estrutura, dificultam o etendimento e a modificação do código.
Mínimo
Devido às 3 características acima, o sofware deverá ter um menor número possível de elementos, pois assim, teremos menos “coisas” a serem testadas, documentadas e comunicadas.
33fratech blog.fratech.net
outro exemplo de simplicidade
34fratech blog.fratech.net
faça seu código auto-explicativo
35fratech blog.fratech.net
Escrevendo Código Coeso
Guarda Roupa, Piano, CamaFuja da patente do Guarda Roupa, Piano, Cama, mas lembre-se uma caixa de fibra de algodão não ajuda muito quando você precisa de uma meia.
36fratech blog.fratech.net
Design Evolutivo
Evolução do aprendizado em forma de baby step’s
37fratech blog.fratech.net
Evolução iterativa de um produto
Incremento do ProdutoAprendizagem
Iteração 3
Incremento do ProdutoAprendizagem
Iteração 2
Incremento do ProdutoAprendizagem
Iteração 1
VisãoNecessidade
PreGame (Concepção e Planejamento)
38fratech blog.fratech.net
TDD - Test Driven Development
39fratech blog.fratech.net
TDD - Test Driven Development
E x emplo de P roduc t B ac k L og c om C as o de T es te
Área Atividade Item B us ines s V alue C as o de T es te
S ec. Acadêmica C ontrolar os curs os dis poníveis pela ins tituição 100
S ec. Acadêmica Definir as vagas dis poníveis por curs os 90
G erenciamento
de curs os
- Ao informar o ano letivo,
mos trar os curs os
dis poníveis ;
G erenciamento
de curs os
- Ao informar o ano letivo,
mos trar as vagas
dis poníveis por curs o;
- Ao informar um curs o,
informar quais vagas es tão
dis poníveis no ano atual.
40fratech blog.fratech.net
REFACTORING
Aplicação: Quando apropriada, pois sua necessidade diminui quando o design e o código estão padronizados e simples.
Benefícios: Códigos mais simples, legíveis e com melhor qualidade.
Exemplos: Extração de variáveis locais, Alteração de nomes, Extração de métodos, Extração de classes e interfaces.
Martin Fowler
41fratech blog.fratech.net
Conversas Cara a Cara
Crie condições para FeedBack
Quebre as barreiras
Diminua os intermediários
42fratech blog.fratech.net
Pensando em Negócio
Ter toda equipe, alinhada aos objetivos da
empresa (cliente e/ou fornecedor).
Ter um entedimento o suficientemente alinhado ao
negócio da empresa
43fratech blog.fratech.net
Code review
44fratech blog.fratech.net
Code review
Code Review ChecklistNão há uma regra definitiva para o que devemos procurar num code review, porém há algumas sugestões:
Você pode ler e entender o código? x
Há algum erro óbvio? x
Há algum efeito colateral que atinja outras partes da aplicação? x
Há alguma duplicidade no código (dentro do código mesmo ou com xoutras partes do sistema)?
Há alguma melhora ou refactoring que possa melhorar o código? x
45fratech blog.fratech.net
Pair Programming
Escolha dos pares
Reunião em pé Programação em par
46fratech blog.fratech.net
Mantenha o time informado
47fratech blog.fratech.net
construtivismo
Critique idéias, não pessoasO sucesso de um projeto ágil é altamente acoplado à harmonia entre os integrantes do time. Processos ágeis são muito focados em reuniões e interações face-a-face. Dessa forma, é de extrema importância não criticar as pessoas e sim as idéias propostas, quando aplicável.
Há 3 maneiras de se criticar uma idéia:
Você é estúpido? Não vai dar certo. Isso é obvio.1.
Essa idéia é estúpida! Não vai dar certo. Isso é obvio.2.
Ei, como você pretende resolver esse problema aqui com essa idéia?3.
48fratech blog.fratech.net
Be a Mentor
49fratech blog.fratech.net
That’s all folks!
Obrigado!
www.fratech.netblog.fratech.net