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

1.749 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.749
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/

×