práticas Ágeis

49
1 blog.fratech.net Praticas Ageis Agile dentro de você! Felipe Rodrigues de Almeida

Upload: felipe-rodrigues

Post on 26-Jan-2015

3.931 views

Category:

Business


5 download

DESCRIPTION

Palestra de Práticas Ágeis apresentada no evento Maré de Agilidade - Swell Salvador

TRANSCRIPT

Page 1: 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

Page 2: Práticas Ágeis

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.

Page 3: Práticas Ágeis

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).

Page 4: Práticas Ágeis

4fratech blog.fratech.net

para pensar!

Não importa o quão longe você foi pela estrada errada,

volte. (Provérbio Turco)

Page 5: Práticas Ágeis

5fratech blog.fratech.net

QUal a sua agilidade?

LebreTartaruga

Page 6: Práticas Ágeis

6fratech blog.fratech.net

Mas...

Page 7: Práticas Ágeis

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)

Page 8: Práticas Ágeis

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)

Page 9: Práticas Ágeis

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)

Page 10: Práticas Ágeis

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

Page 11: Práticas Ágeis

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.

Page 12: Práticas Ágeis

12fratech blog.fratech.net

Adaptação às mudanças

Page 13: Práticas Ágeis

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ê?

Page 14: Práticas Ágeis

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.

Page 15: Práticas Ágeis

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).

Page 16: Práticas Ágeis

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

Page 17: Práticas Ágeis

17fratech blog.fratech.net

user story e épicos

Épico

User Story User Story

User Story User Story

User Story User Story

- INVeSt + INVeSt

Page 18: Práticas Ágeis

18fratech blog.fratech.net

user story e temas

Tema

User Story User Story

User Story User Story

User Story User Story

Page 19: Práticas Ágeis

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ê?

Page 20: Práticas Ágeis

20fratech blog.fratech.net

Safistação do Cliente

Page 21: Práticas Ágeis

21fratech blog.fratech.net

Interação com o Cliente

Page 22: Práticas Ágeis

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

Page 23: Práticas Ágeis

23fratech blog.fratech.net

evitando a multi-tarefa

Fonte: Vinícius Manhães Teles - www.improveit.com.br

Page 24: Práticas Ágeis

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.

Page 25: Práticas Ágeis

25fratech blog.fratech.net

arquitetos Ágeis

Page 26: Práticas Ágeis

26fratech blog.fratech.net

arquitetos devem escrever

Page 27: Práticas Ágeis

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.”

Page 28: Práticas Ágeis

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

Page 29: Práticas Ágeis

29fratech blog.fratech.net

arquitetura ágil

Page 30: Práticas Ágeis

30fratech blog.fratech.net

Simplicidade

evite o complexo de“cérebro”

Page 31: Práticas Ágeis

31fratech blog.fratech.net

Simplicidade

Conceito KISS

Keep It Simple, Stupid!

Page 32: Práticas Ágeis

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.

Page 33: Práticas Ágeis

33fratech blog.fratech.net

outro exemplo de simplicidade

Page 34: Práticas Ágeis

34fratech blog.fratech.net

faça seu código auto-explicativo

Page 35: Práticas Ágeis

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.

Page 36: Práticas Ágeis

36fratech blog.fratech.net

Design Evolutivo

Evolução do aprendizado em forma de baby step’s

Page 37: Práticas Ágeis

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)

Page 38: Práticas Ágeis

38fratech blog.fratech.net

TDD - Test Driven Development

Page 39: Práticas Ágeis

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.

Page 40: Práticas Ágeis

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

Page 41: Práticas Ágeis

41fratech blog.fratech.net

Conversas Cara a Cara

Crie condições para FeedBack

Quebre as barreiras

Diminua os intermediários

Page 42: Práticas Ágeis

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

Page 43: Práticas Ágeis

43fratech blog.fratech.net

Code review

Page 44: Práticas Ágeis

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

Page 45: Práticas Ágeis

45fratech blog.fratech.net

Pair Programming

Escolha dos pares

Reunião em pé Programação em par

Page 46: Práticas Ágeis

46fratech blog.fratech.net

Mantenha o time informado

Page 47: Práticas Ágeis

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.

Page 48: Práticas Ágeis

48fratech blog.fratech.net

Be a Mentor

Page 49: Práticas Ágeis

49fratech blog.fratech.net

That’s all folks!

Obrigado!

www.fratech.netblog.fratech.net