Agilidade no nível de
Reduzindo interrupções passivas
codificação
@andreitognolo
github.com/andreitognolo
andreitognolo@gmail.com
Testes
unitários
Teste de
integração
Deploy
QA
Deploy
produção
Smoke
test
Testes
unitários
Teste de
integração
Deploy

QA
...
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...
Much of agile thinking is about setting up feedback loops so that we
can learn more quickly
PassivaCodificaçãoInterrupçãoA...
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
{ }RestartServidor
Testar
Login
Entratelade
incluirCliente
Insereumn...
“Tempo em que estamos sendo interrompidos, esperando feedback
para podermos continuar com o fluxo de raciocínio”
Interrupç...
A interrupção passiva tem efeito
similar a interrupção causada por uma
pessoa
Hipótese
Eu não estou sendo interrompido, eu...
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 t...
É 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 ...
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...
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" ...
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
Escreveteste

(quefalha)
Rodaoteste
Codificar
Melhoraoteste

(quefalha)
Rodaoteste
Melho...
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...
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...
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.
T...
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
- Bret Victor - http://vimeo.com/36579366
!
- Martin Fowler - http://martinfowler.com/bliki/FrequencyReducesDifficulty.htm...
@andreitognolo
github.com/andreitognolo
andreitognolo@gmail.com
Obrigado!
is hiring!
http://join.thoughtworks.com/
Próximos SlideShares
Carregando em…5
×

Agilidade no nível de codificação reduzindo interrupções passivas

1.695 visualizações

Publicada em

Um dos principais pilares da cultura ágil é termos rápido feedback sobre o que desenvolvemos. Essa busca por rápido feedback fica evidente no ciclo de desenvolvimento Scrum, por exemplo. Essa palestra é um convite para a análise do feedback a nível da codificação. Quanto tempo leva para termos o feedback da última linha de código que escrevemos? Se esse feedback não é instantâneo, nosso fluxo de raciocínio é interrompido, e essa interrupção traz sérias implicações na forma que desenvolvemos. Iremos denominar esse tipo de interrupção como interrupção passiva, e iremos trazer exemplos do dia a dia que irão ajudar o congressista a identificar e mitigar esse tipo de interrupção.

Vídeo de introdução para essa palestra: https://www.youtube.com/watch?v=-ZpQDxrtEAg

Publicada em: Software
3 comentários
9 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
1.695
No SlideShare
0
A partir de incorporações
0
Número de incorporações
65
Ações
Compartilhamentos
0
Downloads
26
Comentários
3
Gostaram
9
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Agilidade no nível de codificação reduzindo interrupções passivas

  1. 1. Agilidade no nível de Reduzindo interrupções passivas codificação
  2. 2. @andreitognolo github.com/andreitognolo andreitognolo@gmail.com
  3. 3. Testes unitários Teste de integração Deploy QA Deploy produção Smoke test Testes unitários Teste de integração Deploy QA Deploy produção Smoke test
  4. 4. Agilidade no nível de Reduzindo interrupções passivas codificação
  5. 5. PassivaInterrupção Codificação Agilidade
  6. 6. PassivaCodificaçãoInterrupçãoAgilidade
  7. 7. PassivaCodificaçãoInterrupçãoAgilidade
  8. 8. PassivaCodificaçãoInterrupçãoAgilidade
  9. 9. PassivaCodificaçãoInterrupçãoAgilidade Much of agile thinking is about setting up feedback loops so that we can learn more quickly Martin Fowler
  10. 10. Much of agile thinking is about setting up feedback loops so that we can learn more quickly PassivaCodificaçãoInterrupçãoAgilidade Martin Fowler
  11. 11. PassivaCodificaçãoAgilidadeInterrupção
  12. 12. PassivaCodificaçãoAgilidadeInterrupção
  13. 13. PassivaCodificaçãoAgilidadeInterrupção
  14. 14. PassivaCodificaçãoAgilidadeInterrupção
  15. 15. PassivaCodificaçãoAgilidadeInterrupção
  16. 16. PassivaCodificaçãoAgilidadeInterrupção
  17. 17. PassivaCodificaçãoAgilidadeInterrupção
  18. 18. PassivaCodificaçãoAgilidadeInterrupção
  19. 19. 10-15 minutos! dá tempo de fazer 3 miojos! Chris Parnin PassivaCodificaçãoAgilidadeInterrupção
  20. 20. Fluxo de pensamento interrompido PassivaCodificaçãoAgilidadeInterrupção Não são apenas segundos!
  21. 21. Codificar Testar Codificar Testar Interrupção passiva { }RestartServidor Testar Login Entratelade incluirCliente Insereumnovo Cliente Entratelade consulta Verificaqueo clientefoi inserido Empacotar aplicação Compilar PassivaAgilidadeInterrupçãoCodificação
  22. 22. “Tempo em que estamos sendo interrompidos, esperando feedback para podermos continuar com o fluxo de raciocínio” Interrupção Passiva AgilidadeInterrupçãoCodificaçãoPassiva
  23. 23. 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
  24. 24. Codificar Testar Codificar Testar Eu não estou sendo interrompido, eu posso ir pensando no próximo passo Será 30 seg
  25. 25. 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!
  26. 26. É só você codificar mais e testar tudo de uma vez! Será Codificar Testar Codificar Testar 30 seg
  27. 27. É só você codificar mais e testar tudo de uma vez! Será Codificar Testar
  28. 28. É só você codificar mais e testar tudo de uma vez! Será Cod Test Cod Test Cod Test Cod Test Cod Test ?
  29. 29. 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!
  30. 30. Caminhar é mais importante do que chegar
  31. 31. Atenção: Os exemplos aqui apresentados são baseados em fatos reais… Demonstrações e Exemplos
  32. 32. Cenário: Implementação da funcionalidade de renomear repositório no Snap CI { }Testar Exemplo 1 - Renomear repositório
  33. 33. 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
  34. 34. Exemplo 1 - Renomear repositório Não são apenas segundos!
  35. 35. 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
  36. 36. Cenário: Você fez uma alteração no JavaScript do botão de salvar empresa Exemplo 2 - Forms { }Testar
  37. 37. Exemplo 2 - Forms
  38. 38. Exemplo 2 - Forms
  39. 39. Exemplo 2 - Forms
  40. 40. Exemplo 2 - Forms
  41. 41. Exemplo 2 - Forms
  42. 42. Exemplo 2 - Forms Onde a interrupção passiva é maior
  43. 43. Exemplo 2 - Forms Onde a interrupção passiva é maior
  44. 44. Exemplo 2 - Forms Não são apenas segundos!
  45. 45. Exemplo 2 - Forms Interrupção Reduzida V Simples como implementar um double click…
  46. 46. Cenário: Você fez uma alteração no método de salvar empresa { }Testar Exemplo 3 - Testes
  47. 47. Exemplo 3 - Testes Mas o que eu quero testar não tem nada a ver com a interface!
  48. 48. Exemplo 3 - Testes Interrupção Reduzida V
  49. 49. Exemplo 3 - Testes Teste automatizado, de preferência com Test Driven Development (TDD)
  50. 50. In My Humble Opinion... Codificar Escreveteste (quefalha) Rodaoteste Codificar Melhoraoteste (quefalha) Rodaoteste Melhoraoteste (quefalha) 1 seg? 10 seg? 60 seg?
  51. 51. 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!
  52. 52. 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...
  53. 53. Exemplo 4 - Raiden O que pode deixar esse teste lento?
  54. 54. Exemplo 4 - Raiden Não são apenas segundos!
  55. 55. 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)
  56. 56. Exemplo 4 - Raiden Teste unitários / Micro testes Serviço Aceitação UI
  57. 57. Exemplo 4 - Raiden Hibernate JPA Raiden JPA (especificação) (implementação para produção) (implementação para teste)
  58. 58. Exemplo 4 - Raiden Toasty!
  59. 59. Exemplo 4 - Raiden github.com/andreitognolo/raidenjpa Interrupção Reduzida V
  60. 60. A interrupção passiva tem efeito similar a interrupção causada por uma pessoa Hipótese
  61. 61. A vida é muito curta para desperdiçarmos tempo com interrupções passivas Conclusão
  62. 62. - 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
  63. 63. @andreitognolo github.com/andreitognolo andreitognolo@gmail.com Obrigado! is hiring! http://join.thoughtworks.com/

×