práticas Ágeis

Post on 26-Jan-2015

3.931 Views

Category:

Business

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

top related