Agilidade no nível de
Reduzindo interrupções passivas
codificação
@andreitognologithub.com/[email protected]
Testes unitários
Teste de integração
Deploy QA
Deploy produção
Smoke test
Testes unitários
Teste de integração
DeployQA
Deploy produção
Smoke test
Agilidade no nível de
Reduzindo interrupções passivas
codificação
PassivaInterrupção
Codificação
Agilidade
PassivaCodificaçãoInterrupçãoAgilidade
PassivaCodificaçãoInterrupçãoAgilidade
PassivaCodificaçãoInterrupçãoAgilidade
PassivaCodificaçãoInterrupçãoAgilidade
Much of agile thinking is about setting up feedback loops so that we can learn more quickly
Martin Fowler
Much of agile thinking is about setting up feedback loops so that we can learn more quickly
PassivaCodificaçãoInterrupçãoAgilidade
Martin Fowler
PassivaCodificaçãoAgilidadeInterrupção
PassivaCodificaçãoAgilidadeInterrupção
PassivaCodificaçãoAgilidadeInterrupção
PassivaCodificaçãoAgilidadeInterrupção
PassivaCodificaçãoAgilidadeInterrupção
PassivaCodificaçãoAgilidadeInterrupção
PassivaCodificaçãoAgilidadeInterrupção
PassivaCodificaçãoAgilidadeInterrupção
10-15 minutos! dá tempo de fazer 3 miojos!
Chris Parnin
PassivaCodificaçãoAgilidadeInterrupção
Fluxo de pensamento interrompido
PassivaCodificaçãoAgilidadeInterrupção
Não são apenas
segundos!
Codificar Testar Codificar Testar
Interrupção passiva
{ }Re
star
t Ser
vido
rTestar
Logi
n
Entra
tela
de
incl
uir C
lient
e
Inse
re u
m n
ovo
Clie
nte
Entra
tela
de
cons
ulta
Verif
ica
que
o cl
ient
e fo
i in
serid
o
Empa
cota
r ap
licaç
ão
Com
pila
r
PassivaAgilidadeInterrupçãoCodificação
“Tempo em que estamos sendo interrompidos, esperando feedback para podermos continuar com o fluxo de raciocínio”
Interrupção Passiva
AgilidadeInterrupçãoCodificaçãoPassiva
A interrupção passiva tem efeito similar a interrupção causada por uma
pessoa
Hipótese
Eu não estou sendo interrompido, eu posso ir pensando no próximo passo
Codificar Testar Codificar Testar
Eu não estou sendo interrompido, eu posso ir pensando no próximo passo
Será
30 seg
A interrupção passiva tem efeito similar a interrupção causada por uma
pessoa
Hipótese
É só você codificar mais e testar tudo de uma vez!
É só você codificar mais e testar tudo de uma vez!
Será
Codificar Testar Codificar Testar
30 seg
É só você codificar mais e testar tudo de uma vez!
Será
Codificar Testar
É só você codificar mais e testar tudo de uma vez!
Será
Cod Test Cod Test Cod Test Cod Test Cod Test
?
Bret Victor
“To design quickly and confidently, we need to be able to try out ideas and verify hypotheses
as fast as we think of them”INSTANT
FEEDBACK
As ferramentas que usamos devem ser como extensões do nosso corpo!
Caminhar é mais importante do que chegar
Atenção: Os exemplos aqui apresentados são baseados em fatos reais…
Demonstrações e Exemplos
Cenário: Implementação da funcionalidade de renomear repositório no Snap CI
{ }Testar
Exemplo 1 - Renomear repositório
Exemplo 1 - Renomear repositório
Acessar GitHub
Renomear repositório
Alterar algum arquivo Notificação (web hook)Renomear no Snap
Verificar no Snap que foi realmente renomeado
Exemplo 1 - Renomear repositório
Não são apenas
segundos!
Exemplo 1 - Renomear repositório Interrupção Reduzida V
# # Github rename request # curl -H "Authorization: token $token" -X PATCH -d "{\"name\": \"rename-$2\"}" https://api.github.com/repos/andreitognolo/$oldName !# # Push something # cd ../rename echo $2 > README.md git add . git commit -m "Update readme" git push
rename.sh
Cenário: Você fez uma alteração no JavaScript do botão de salvar empresa
Exemplo 2 - Forms
{ }Testar
Exemplo 2 - Forms
Exemplo 2 - Forms
Exemplo 2 - Forms
Exemplo 2 - Forms
Exemplo 2 - Forms
Exemplo 2 - Forms
Onde a interrupção passiva é maior
Exemplo 2 - Forms
Onde a interrupção passiva é maior
Exemplo 2 - Forms
Não são apenas
segundos!
Exemplo 2 - Forms Interrupção Reduzida V
Simples como implementar um double click…
Cenário: Você fez uma alteração no método de salvar empresa
{ }Testar
Exemplo 3 - Testes
Exemplo 3 - Testes
Mas o que eu quero testar não tem nada a ver com a interface!
Exemplo 3 - Testes Interrupção Reduzida V
Exemplo 3 - Testes
Teste automatizado, de preferência com Test Driven Development (TDD)
In My Humble Opinion...
Codificar
Escr
eve
test
e(q
ue fa
lha)
Roda
o te
ste
Codificar
Mel
hora
o te
ste
(que
falh
a)
Roda
o te
ste
Mel
hora
o te
ste
(que
falh
a)
1 seg? 10 seg? 60 seg?
Teste demora
Tende a não fazer babystep
Sem babystep o TDD perde sua magia :(
O que está matando o TDD são as interrupções passivas!
Exemplo 4 - Raiden
O que torna um teste unitário lento?
O slide a seguir contém cenas explícitas de código Java. Se você não conhece Java, não se apavore, nem vá
embora, vou explicar cada linha...
Exemplo 4 - Raiden
O que pode deixar
esse teste lento?
Exemplo 4 - Raiden
Não são apenas
segundos!
Exemplo 4 - Raiden
If it (test) takes ten seconds just to start testing, toss it! Allow nothing to slow down your tests.
Test Time!03 September 2014
by Robert C. Martin (Uncle Bob)
Exemplo 4 - Raiden
Teste unitários / Micro testes
Serviço
Aceitação
UI
Exemplo 4 - Raiden
Hibernate
JPA
Raiden JPA
(especificação)
(implementação para produção) (implementação para teste)
Exemplo 4 - Raiden
Toasty!
Exemplo 4 - Raiden
github.com/andreitognolo/raidenjpa
Interrupção Reduzida V
A interrupção passiva tem efeito similar a interrupção causada por uma
pessoa
Hipótese
A vida é muito curta para desperdiçarmos tempo com interrupções passivas
Conclusão
http://blog.ninlabs.com/2013/01/programmer-interrupted/
- Bret Victor - http://vimeo.com/36579366 !- Martin Fowler - http://martinfowler.com/bliki/FrequencyReducesDifficulty.html !- Chris Parnin - http://blog.ninlabs.com/2013/01/programmer-interrupted/ !- Uncle Bob - http://blog.cleancoder.com/uncle-bob/2014/09/03/TestTime.html
Referências
Top Related