View
836
Download
0
Category
Preview:
DESCRIPTION
Essa é a tradução para português-brasileiro da apresentação do Henrik Kniberg entitulada "Technical Debt - how not to ignore it" apresentada no Agile 2008 em Toronto.
Citation preview
Henrik Kniberg - Crisp ABMentor de Agile & cara de Java
Agile 2008Toronto
Dívida TécnicaComo não ignorá-la
Co-fundador / CTO de Goyada (serviços de mobile)30 desenvolvedores
Arquitetro-chefe na Ace Interactive (jogos)20 desenvolvedores
Chefe de desenvolvimento na Tain (jogos)40 desenvolvedores
henrik.kniberg@crisp.se+46 70 4925284
Tradução: Demetrius Nunes (www.demetriusnunes.com)
O que é Dívida Técnica?
Qualquer coisa que atrasa o desenvolvimentoPor exemplo, quebrar as regras do Kent Beck para Código Simples1. Executa todas os testes corretamente
2. Não contém duplicação
3. Expressa todas as idéias que tivemos sobre o programa
Metáfora por Ward Cunningham (OOPSLA 1992?)
2
3. Expressa todas as idéias que tivemos sobre o programa
4. Minimiza o número de classes e métodos
Outros exemplos:Não consertar o build
Rotinas manuais e ineficientes de lançamento de versões
Henrik Kniberg 2
Por que é um problema?Quase todo mundo temAcaba com planejamentoAcaba com produtosAcaba com empresasDesmotiva todo mundoÉ caro de consertarÉ um desperdício
Pontosrestantes
300
400Vamos
acabar no sprint 10!
33
1
Sprint
2 3 4 5 6 7 8 9 10 11 12 13 14 15
100
200
300
Oops... Vamos acabar quando estiver pronto!
sprint 10!
Foi mal, atrasamos! Com certeza acabamos
até o sprint 12!
Henrik Kniberg
Como se detecta?
Esse código é vergonhoso!
Sentimento do desenvolvedorSentimento do cliente
Funcionalidades ficavamprontas muito mais rápido!
• Duplicação• Cobertura de testes• Tamanho de métodos& classes
• Velocidade
Métricas
4Henrik Kniberg 4velocidade
sprint #
Por que acontece?
Pensamento de curto-prazo
Pressão &falta de ”folga” &ritmo insustentável
Estimada Real
40 35
35 30
30 25
30
25
20
”A gente conserta depois que lançar a versão.”
”Tudo TEM que ficar pronto até o natal. Trabalhem mais!”
”Não gostamos de reclamações”
Velocidade
5
Não falar a respeito
Falta de competênciatécnica
Síndrome da Janela Quebrada
Henrik Kniberg
Vmax
Vreal
velocidade
tempo
de reclamações”
”Qual o problema com variáveis globais?”
”E daí, esse códigojá está uma droga
mesmo”
Como evitar?Fale a respeito
Pull scheduling
TDD
Definição de DONEVmax
Definição de Pronto
• .... bla bla ....
• Não há aumento da dívida técnica
Burndown
Not
checked out Done! :o)
W ri t e f a i l i n g t e st
D A O
2 d
D epos it
SPRINT GOAL: Beta-ready release!checked out
6Henrik Kniberg 6
Vmax
velocidade
tempo
Vreal
Ritmo sustentável!
Unplanned items
D B d e s i g n
I n t e g r t e s t
M igr at ion
t ool
W r i t e f a i l i n g t e s t
G U I s pe c
T ap e s tr y s p i k eI m p l .
m i g ra t i o n
C o d e
c l e a n u p
2d1 d 0 . 5 d
1d
2 d
8d
1 d2d
2d
B a c k o f f i c e
L o g i n
Ba c k o ffic e
U s e r a d m in
W r i t e f a i l i n g t e s t
3 d
2 d
1 d2 d
I m pl G U I
1 dI n t e g r . w i t h J B o s s
2 d
W r i t e f a i l i n g t e s t
3 d
I m pl G U I
6 d
C l a r i f y r e q u i r e -m e n t s
2 d
G U I d e s i g n ( C SS)
1 d
F i x m e m o r y l e ak( J I R A 1 2 5 )2 d
S a l e s s u ppo r t
3 d Writ e w h it e p a p e r
4 d
Next
W i t h d r a wP e r f t e stWi t h d r a w
W r i t e f a i l i n g t e s t
O que fazer a respeito?
Opção 1: IgnorarDeixe o sistema decair até a morte por entropia e reze pra queninguém precisa mais dele até lá.
Opção 2: RefazerRefaça o sistema do zero usando TDD e outras boas práticas de engenharia.
Opção 3: Resolva pontualmente
Arriscado! Caro! Como saber que não irá acontecer de novo?
Não gera aprendizado.
Não consertao processo
7
Opção 3: Resolva pontualmenteUm time separado e dedicadoconserta os problemas.
Opção 4: Melhoria incrementalConserte um pouco a cada sprint, enquanto ainda entrega-se valor de negócio e funcionalidades
... ou “Sprints de Refatoramento” dedicadas de vez em quando
Henrik Kniberg 7
aprendizado. o processo
Abordagem preferida
Lidando com dívida técnica
Vmax
Vreal
velocidade
Primeiro passoReduza o ritmoPare de acumular dívida técnica!
Segundo passo(se for economicamente viável)
Reduza ainda maisComece a pagar a dívida!
Ritmo sustentável
8
Falea respeito!
Henrik Kniberg
tempo
Definição de Done
• .... bla bla ....
• Não há aumento da dívida técnica
Definição de Done
• .... bla bla ....
• Dívida técnica diminui
Conserte o processo, não apenas o produto!Problemas técnicos são sintomas de problemas de processo
Quando um defeito passar e entrar numa versão
Conserte o defeito
Analise a causa do defeito
Melhore o processo para reduzir o risco desse tipo de defeito ocorrer novamente.
Exemplo: Servidor de produção cai quando mais de 100 usuários se logam
Pergunta Resposta Melhoria
9Henrik Kniberg 9
Por que o servidor caiu?
Por que o bug não foi detectadoantes de lançar a versão?
Por que os testes não foramescritos antes?
Por que o time não tirou tempo para aprender?
SessionHandler usa pool de conexões com tamanho 100
Não existem testes de performance automatizados
Ninguém sabia como fazer
Muita pressão no time
Rejeite requisições de forma amigável quando pool de conexões estiver cheio
Escreva testes de performance automatizados
Dê tempo ou treinamento para que as pessoas aprendam
Reduza pressão reduzindo escopo do projeto. Introduza pull scheduling
Backlog de automação de testes
Alterar o skin
Alerta de segurança
Histórico de transações
Bloquear conta
Passo 1: Liste seus testes
10
Bloquear conta
Adicionar usuário
Ordenar resultado de consulta
Depositar dinheiro
Validar transferência
Henrik Kniberg 10
Caso de teste
Alterar skin
Alerta de segurança
Histórico de transações
RiscoCusto de Testes
Manuais
Custo de Automação
baixo 0,5 hrs 20 pt
alto 1 hrs 13 pt
médio 3 hrs 1 pt
Passo 2: Classifique cada teste
Backlog de automação de testes
11Henrik Kniberg 11
transações
Bloquear conta
Adicionar usuário
Ordenar consulta
Depositar dinheiro
Validar transferência
médio 3 hrs 1 pt
alto 5 hrs 0,5 pt
baixo 0,5 hrs 3 pt
médio 2 hrs 8 pt
alto 1,5 hrs 1 pt
alto 3 hrs 5 pt
Passo 3: Escolha suas prioridades e ordene a lista
Por exemplo, priorize por:1. Custo de testes manuais2. Risco3. Custo de automação
Caso de teste
Alterar skin
Alerta de segurança
Histórico de transações
RiscoCusto de Testes
Manuais
Custo de Automação
baixo 0,5 hrs 20 pt
alto 1 hrs 13 pt
médio 3 hrs 1 pt
Backlog de automação de testes
12Henrik Kniberg 12
transações
Bloquear conta
Adicionar usuário
Ordenar consulta
Depositar dinheiro
Validar transferência
alto 5 hrs 0,5 pt
baixo 0,5 hrs 3 pt
médio 2 hrs 8 pt
alto 1,5 hrs 1 pt
alto 3 hrs 5 pt
Exemplos:
“A cada sprint vamos implementar testes automatizados para uma funcionalidade"
“A cada sprint vamos implementar até 10 pontos de testes automatizados"
“A cada sprint vamos gastar até 10% do nosso tempo automatizando testes"
Passo 4: Automatize alguns testes a cada sprint
Backlog de automação de testes
Caso de teste
Alterar skin
Alerta de segurança
Histórico de transações
RiscoCusto de Testes
Manuais
Custo de Automação
baixo 0,5 hrs 20 pt
alto 1 hrs 13 pt
médio 3 hrs 1 pt
13
nosso tempo automatizando testes"
“A cada sprint, vamos terminar as funcionalidades novas primeiro, e entãogastar o resto do tempo automatizandotestes"
“O Product Owner vai colocar no backlog do produto as histórias de automação de testes e priorizá-las como qualquer outra história."
Henrik Kniberg 13
transações
Bloquear conta
Adicionar usuário
Ordenar consulta
Depositar dinheiro
Validar transferência
alto 5 hrs 0,5 pt
baixo 0,5 hrs 3 pt
médio 2 hrs 8 pt
alto 1,5 hrs 1 pt
alto 3 hrs 5 pt
Pra lembrar
Fale a respeito!”Dívida Técnica” é uma ótima metáfora para se comunicar com não-técnicos!
Pare de acumular dívida!Não importa o quão ruim já esteja
14
Não importa o quão ruim já esteja
Conserte incrementalmente!Decida por um ritmo de pagamento da dívida viável
Evite re-escrever do zero ou tratar pontualmente
CONSERTE O PROCESSO, NÃO APENAS O PRODUTO!
Henrik Kniberg 14
É isso! Perguntas?
15
Recommended