Ruby Sadism - Ryan Davis

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    4 Favorites

    Ruby Sadism - Ryan Davis - Presentation Transcript

    1. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb www.akitaonrails.com (Fabio Akita) goruco2008.confreaks.com/04_davis.html GoRuCo 2008
    2. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Machucando Código por Diversão e Lucro GoRuCo 2008
    3. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Criando Expectativa • 142 slides em 30 minutos. • Isto será rápido. • Não é a forma como normalmente apresento. • É mais sobre melhorar você do que o código. GoRuCo 2008
    4. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Uma História GoRuCo 2008
    5. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb GoRuCo 2008
    6. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Código Legado • Qualquer código que você não escreveu é legado. • Toda empresa tem tonelada de legados. • Mesmo startups. GoRuCo 2008
    7. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb GoRuCo 2008
    8. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb GoRuCo 2008
    9. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb GoRuCo 2008
    10. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb GoRuCo 2008
    11. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb GoRuCo 2008
    12. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb GoRuCo 2008
    13. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Ou: GoRuCo 2008
    14. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb New Place, Inc. GoRuCo 2008
    15. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb GoRuCo 2008
    16. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb GoRuCo 2008
    17. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb GoRuCo 2008
    18. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb @#$%!!! GoRuCo 2008
    19. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb K! AC CR GoRuCo 2008
    20. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb M! A BL GoRuCo 2008
    21. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb BAM!!! ! K AC SN R ICK C ! GoRuCo 2008
    22. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb YAY! GoRuCo 2008
    23. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Moral desta história? GoRuCo 2008
    24. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Pessoas vão te incriminar se machucá-las GoRuCo 2008
    25. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Código não. GoRuCo 2008
    26. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Esta apresentação é um evento de “saída” para mim GoRuCo 2008
    27. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Meu nome é Ryan, e… GoRuCo 2008
    28. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb …adoro machucar código… GoRuCo 2008
    29. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb …e estou Bem! GoRuCo 2008
    30. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Por que machucar código? • Machucar código é divertido! • Pode te tornar um programador e testador melhor. • Pode tornar o código mais limpo, claro e fácil de testar, escrever e manter ... até pode torná-lo mais rápido. GoRuCo 2008
    31. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Sadismo Ruby: nome A tendência de derivar prazer infringindo dor ao software. Esp. mal software. GoRuCo 2008
    32. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb É apenas outra maneira de enxergar desenvolvimento de software GoRuCo 2008
    33. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Eu dou risada toda vez que acho código que posso punir. GoRuCo 2008
    34. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Código com complexidade que conheço, eu posso resolver. GoRuCo 2008
    35. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb É sobre mudar sua perspectiva sobre código ruim. GoRuCo 2008
    36. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Torne divertido descobrir e corrigir e fará isso mais vezes. GoRuCo 2008
    37. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Sadismo Ruby vêm em várias formas: GoRuCo 2008
    38. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Matar um bug escrevendo um teste. GoRuCo 2008
    39. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Lendo código esperto demais e se coçar para quebrá-lo em pedaços. GoRuCo 2008
    40. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Explodindo mal design, tornando-o mais rápido com menos código. GoRuCo 2008
    41. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb e muito, muito mais. GoRuCo 2008
    42. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Um Exemplo • Um projeto rails de mídia social de 2 meses foi arrastado por 12 meses. • Ligando ActiveRecord a WebDAV. Emulando o banco de dados inteiro via propriedades WebDAV. Desnecessariamente complexo e lento! • Então, arranquei o WebDAV num fim de semana. GoRuCo 2008
    43. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Antes: Terminado em 74.77783 segundos. 622 testes, 2502 asserções Depois: Terminado em 5.258559 segundos. 330 testes, 961 asserções GoRuCo 2008
    44. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Tempo de Teste em 6 Meses DAV Post DAV GoRuCo 2008
    45. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Por alguma Razão as pessoas amam complexidade. GoRuCo 2008
    46. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Elas festejam nisso. GoRuCo 2008
    47. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb A comunidade Ruby não se parece única nesse sentido. GoRuCo 2008
    48. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Eu não sou uma dessas pessoas. GoRuCo 2008
    49. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Mas, eu costumava ser uma delas. GoRuCo 2008
    50. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Eu melhorei... GoRuCo 2008
    51. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb ...e você também pode melhorar. GoRuCo 2008
    52. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Minha História de Programação 10 9 8 7 6 Fu/Style Units Ruby Sadism/ 5 Asceticism Perl/ 4 Ruby Python/ UNIX/ etc Smalltalk/ 3 OO Epiphany Pascal 2 C++ 1 Logo C BASIC 0 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002 2004 2007 Year GoRuCo 2008
    53. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Ascetismo Ruby: noun Caracterizado por ou sugerindo a prática de severa auto-disciplina & abstenção de todas as formas de indulgência. GoRuCo 2008
    54. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Flageladores GoRuCo 2008
    55. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Testar Antes é uma forma de auto- disciplina. GoRuCo 2008
    56. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb YAGNI é uma forma de abstenção. GoRuCo 2008
    57. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Ascéticos: Vida Real™ Ruby Evite possessões Evite complexidade materiais. extra. Auto-disciplina para Auto-disciplina para chegar à alta melhor entender a si e espiritualidade. a mente do código. GoRuCo 2008
    58. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb O que é indulgência? • Código desnecessariamente complexo e que tenta se esperto demais. • Código ou design que você não imediatamente precise. Os “e se”. • Débito Técnico. GoRuCo 2008
    59. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Débito Técnico • Pular design é como pegar dinheiro emprestado. • Refatoramento é como o princípio de pagar de volta. • Juros são pagos com tempo gasto com complexidade. —Ward Cunningham–ComplexityAsDebt, c2.com GoRuCo 2008
    60. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb 80:20 ou Princípio de Pareto • Na maioria dos sistemas existe desequilíbrio entre produtores/consumidores, dinheiro/pessoas, etc. • 85+% da terra é ocupada por 5% das pessoas. • 80% do tempo é gasto com 20% do código. • Use essa tendência para focar esforços de forma eficiente e objetiva. GoRuCo 2008
    61. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Sinal : Barulho • Normalmente relacionado a 80:20. • Foque no que é importante. • Minimize interrupções e tarefas irrelevantes para ter mais tarefas reais concluídas. • Como meu gerente favorito gosta de falar: • Grandes Crocodilos, Pequenos Crocodilos, Pântano. GoRuCo 2008
    62. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Em outras palavras: “A obrigação do desenvolvedor é garantir que o código sendo escrito mostre da maneira mais clara sobre como a solução foi entendida no momento da sua escrita.” –Ward Cunningham, c2.com GoRuCo 2008
    63. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Um Exemplo • test/unit & rspec são reis de testes/specs mas são realmente grandes. • O mspec de Brian Ford (do rubinius) é mais novo, pequeno, & compatível com rspec. • O bacon de Christian Neukirchen & test/spec são alternativas minimalistas de spec. • miniunit vai mais fundo: test+spec+mock < 1kloc. GoRuCo 2008
    64. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb lib test/spec 15,000 12,862 11,250 7,500 7,785 6,476 3,750 3,571 2,763 2,464 0 test/unit mspec rspec GoRuCo 2008
    65. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb lib test/spec 15,000 11,250 7,500 3,750 1,115 833 0 578 395 310 298 bacon miniunit test/spec GoRuCo 2008
    66. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb lib test/spec 1,200 1,115 900 833 600 578 395 300 310 298 0 bacon miniunit test/spec GoRuCo 2008
    67. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Acredito que sadismo e ascetismo Ruby são muito poderosos. GoRuCo 2008
    68. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Mas chegar lá não é fácil. GoRuCo 2008
    69. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Requer entender a si mesmo tão bem quanto se entende o código. GoRuCo 2008
    70. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Desenvolvimento Orientado a Introspecção GoRuCo 2008
    71. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Como faço melhor? Como não vi aquele bug? Onde estou perdendo em clareza? Como posso usar melhor minhas ferramentas? Onde desperdiço meu tempo? Como me foco melhor? Onde estou me segurando? estou errado? GoRuCo 2008
    72. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Faça essas perguntas constantemente! GoRuCo 2008
    73. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Auto-Melhoria: Leia! • 1 livro nerd / mês = 12× média da indústria. • c2.com & outros wikis c/ pessoas espertas. • Fique tão próximo dos experts quanto posssível. • Alguns blogs espertos. GoRuCo 2008
    74. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Ignorância NÃO é boa “Pessoas que fazem coisas de mal jeito, [...] normalmente são altamente confiantes em suas habilidades, de fato, mais do que pessoas que fazem as coisas direito.” Erica Goode, NYT reportando em Dr. David Dunning, Cornell GoRuCo 2008
    75. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Auto-Melhoria: Foco! • Fique longe de: • WTF, coding horror, forums idiotas. • Um bilhão de blogs em seu leitor de feed. • Toneladas de mailing lists super-ativas. • Trabalhe no que é realmente importante. GoRuCo 2008
    76. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Urgente Não Urgente Prevenção Pressão Planejamento Pró-ativo Importante Apagar Incêndios Implementando Sistemas Projetos orientados a datas Prevenção de Cansaço Não Interrupções TV Apagar alguns Incêndios Youtube Importante Maioria das Reuniões Outras perdas de tempo –7 Habits of Highly Effective People–Covey GoRuCo 2008
    77. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Auto-Melhoria: Cresça! • Aprenda uma nova linguagem por ano. • Aprenda suas ferramentas, a fundo. Agora mais a fundo. • Examine seus hábitos de desenvolvimento. • Codifique com outras pessoas. • Estude alguma coisa não orientada a código. • Pessoas de multi-disciplinares sempre são mais interessante e codificam melhor. GoRuCo 2008
    78. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Auto-Melhoria: Empurre! Escreva mais código. Muito. Quantidade > Qualidade (algumas vezes) GoRuCo 2008
    79. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Desafio dos Potes • Um professor de potes disse à metade da classe que suas notas dependeriam de uma única peça que eles produziriam no final do curso. • Ele disse à outra metade que suas notas seriam baseadas no volume de todas as peças criadas. • Qual metade você acha que produziu melhores peças ao final? GoRuCo 2008
    80. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb “A função da grande maioria dos trabalhos artísticos é simplesmente lhe ensinar como fazer a pequena fração de sua arte que levanta vôo. Uma das lições básicas e difíceis que todo artista precisa aprender é que mesmo as peças fracassadas são essenciais.” —Art & Fear—Bayles & Orland GoRuCo 2008
    81. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Auto-melhoria: Pressione, mais! • Seja competitivo. Competição é prática. • Desafie o Status Quo. • Eles estão quase sempre errados. • (Mesmo quando estão certos) GoRuCo 2008
    82. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Não seja uma ovelha! GoRuCo 2008
    83. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Auto-melhoria: Sinta! • Deixe as opiniões fluírem. Tenha opinião! • Mas não as deixe mandar em você. • zentest, flog, & heckledesenvolvimento. amor por todos vieram do boas ferramentas de • vlad & image_science vieram do ódio de código impossivelmente complexo. • Eu gastei 10 hrs debugando UM problema de capistrano antes de escrever vlad. GoRuCo 2008
    84. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Auto-melhoria: Feedback • Use feedback: • Peça por ele. • Ouça ele. • Retroalimente o feedback. GoRuCo 2008
    85. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Auto-melhoria: Feedback • Use feedback: • Peça por ele. • Ouça ele. • Retroalimente o feedback. GoRuCo 2008
    86. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Encontre seu balanço GoRuCo 2008
    87. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Ferramentas que podem ajudar GoRuCo 2008
    88. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb autotest • Você provavelmente não tinha percebido que usar autotest é uma forma de sadismo e ascetismo ruby, não é? • Pobre cara do Doom ... GoRuCo 2008
    89. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb autotest • Você provavelmente não tinha percebido que usar autotest é uma forma de sadismo e ascetismo ruby, não é? • Pobre cara do Doom ... GoRuCo 2008
    90. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Flog class Test • Relator de complexidade def blah # 11.2 = a = eval \"1+1\" # 1.2 + 6.0 + if a == 2 then # 1.2 + 1.2 + 0.4 + baseado em métricas ABC. puts \"yay\" # 1.2 end • Nota Flog é correlato com end end complexidade de teste. Test#blah: (11.2) 6.0: eval • Quanto maior a nota flog, 1.2: branch 1.2: == 1.2: puts mais difícil de ter um teste 1.2: assignment completo (& bom). 0.4: lit_fixnum GoRuCo 2008
    91. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Complexidade Desnecessária 1 if MODELS.keys.inject(true) {|b, klass| b and klass.constantize.columns.map(&:name).include? association.options[:foreign_key]} then # ... end main#none: (22.9) 1 linha if(!) 7.0: to_proc_normal 3.3: assignment 3.1: branch 132 caracteres 2.0: inject 1.8: constantize 1.8: association 132 méd carac 1.6: columns 1.6: options 1.4: [] 22.9 flog 1.4: block_pass 1.4: map 1.2: include? 1.2: keys GoRuCo 2008
    92. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Complexidade Desnecessária 2 fk = association.options[:foreign_key] if MODELS.keys.inject(true) {|b, klass| b and klass.constantize.columns.map(&:name).include? fk} then # ... end main#none: (23.5) 3 linhas 7.5: to_proc_normal 4.7: assignment 3.4: branch 144 caracteres 2.2: inject 1.9: constantize 1.7: columns 48 méd carac. 1.5: block_pass 1.5: map 1.5: association 23.5 flog 1.3: include? 1.3: keys 1.3: options 1.1: [] GoRuCo 2008
    93. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Complexidade Desnecessária 3 fk = association.options[:foreign_key] columns = MODELS.keys.map { |key| key.constantize.columns.map(&:name) } if columns.inject(true) {|b, column| b and column.include? fk} then # ... end main#none: (22.8) 4 linhas 7.0: assignment 6.0: to_proc_normal 4.5: branch 182 caracteres 2.3: map 2.2: inject 1.6: constantize 45 méd caract 1.5: association 1.4: columns 1.3: include? 23.5 flog 1.3: options 1.3: keys 1.2: block_pass 1.1: [] GoRuCo 2008
    94. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Complexidade Desnecessária 4 fk = association.options[:foreign_key] columns = MODELS.keys.map { |key| key.constantize.columns.map(&:name) } if columns.all? {|column| column.include? fk} then # ... end main#none: (20.8) 4 linhas 6.0: to_proc_normal 4.6: assignment 3.3: branch 165 caracteres 2.3: map 1.6: constantize 1.5: association 41 méd carac 1.4: columns 1.3: keys 1.3: options 20.8 flog 1.2: block_pass 1.2: include? 1.1: [] 1.1: all? GoRuCo 2008
    95. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Complexidade Desnecessária 5 fk = association.options[:foreign_key] columns = MODELS.keys.map { |key| key.constantize.columns.map { |c| c.name } } if columns.all? {|column| column.include? fk} then # ... end main#none: (15.9) 4 linhas 5.9: assignment 4.5: branch 2.3: map 172 caracteres 1.6: constantize 1.5: association 1.4: columns 43 méd carac 1.3: name 1.3: options 1.3: keys 15.9 flog 1.2: include? 1.1: [] 1.1: all? GoRuCo 2008
    96. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Complexidade Desnecessária 5 fk = association.options[:foreign_key] columns = MODELS.keys.map { |key| key.constantize.columns.map { |c| c.name } } if columns.all? {|column| column.include? fk} then # ... end main#none: (15.9) 4 linhas 5.9: assignment 4.5: branch 2.3: map 172 caracteres 1.6: constantize 1.5: association 1.4: columns 43 méd carac 1.3: name 1.3: options 1.3: keys 15.9 flog 1.2: include? 1.1: [] 1.1: all? Muito mais limpo, claro e rápido GoRuCo 2008
    97. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Ferramentas de Cobertura São excelentes para mostrar buracos. GoRuCo 2008
    98. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb …mas… GoRuCo 2008
    99. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb De jeito nenhum significam qualidade dos testes. GoRuCo 2008
    100. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb \"Temos 100% de cobertura\" GoRuCo 2008
    101. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb … E daí?!? GoRuCo 2008
    102. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Você pode ter 100% de cobertura com 0 asserções. GoRuCo 2008
    103. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb (ou, mais freqüente: más asserções) GoRuCo 2008
    104. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Exemplo absurdo class Vida VIVA! def significado 42 100% de end cobertura! end class TestVida < Test::Unit::TestCase def test_significado real = Vida.new.significado esperado = 6 * 9 assert_equal esperado, real end end GoRuCo 2008
    105. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb O que 100% de cobertura significa então? GoRuCo 2008
    106. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Cobertura é o Raio-X do mundo do código. GoRuCo 2008
    107. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Raios-X são ótimas ferramentas, mas não a use quando você está sangrando. GoRuCo 2008
    108. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Heckle • Ferramenta mais sádica que escrevi. • Muda sua implementação (em tempo real) para verificar se seus testes são bons. • Se seus testes passam depois disso, você está perdendo casos. GoRuCo 2008
    109. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Para Repetir GoRuCo 2008
    110. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Divirta-se machucando código ruim e você terá menos deles com o tempo. GoRuCo 2008
    111. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Pratique severa auto- disciplina & abstenção. GoRuCo 2008
    112. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Evite complexidade. GoRuCo 2008
    113. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Pratique Desenvolvimento Orientado à Introspecção. GoRuCo 2008
    114. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Conheça-te. Melhora-te. GoRuCo 2008
    115. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Use todas as ferramentas que puder. GoRuCo 2008
    116. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Mas use a ferramenta certa para o trabalho. GoRuCo 2008
    117. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Tenha uma opinião & Sinta seu código GoRuCo 2008
    118. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Para Fechar GoRuCo 2008
    119. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Frank Herbert estava errado GoRuCo 2008
    120. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Medo não é o assassino da mente GoRuCo 2008
    121. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Apatia é o assassino da mente GoRuCo 2008
    122. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Você precisa se importar pelo código GoRuCo 2008
    123. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Ame-o GoRuCo 2008
    124. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb ou o Odeie GoRuCo 2008
    125. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Qualquer um é melhor do que Apatia GoRuCo 2008
    126. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Preferível ao desenvolvedor que diz GoRuCo 2008
    127. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb “Apenas sou pago para escrever código” GoRuCo 2008
    128. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Você vai acabar tendo que manter o código deles GoRuCo 2008
    129. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb (porque eles vão embora) GoRuCo 2008
    130. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Odiando o código deles. GoRuCo 2008
    131. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb O impacto deles no projeto. GoRuCo 2008
    132. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Na produtividade e moral da equipe. GoRuCo 2008
    133. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Portanto, Ame o código… GoRuCo 2008
    134. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb …ou o Odeie. GoRuCo 2008
    135. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Se você o amar: GoRuCo 2008
    136. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Cuide dele. GoRuCo 2008
    137. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Faça o crescer. GoRuCo 2008
    138. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Torne-o maravilhoso. GoRuCo 2008
    139. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Se você o odiar: GoRuCo 2008
    140. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Machuque-o. GoRuCo 2008
    141. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Despedace-o. GoRuCo 2008
    142. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Reescreva-o. GoRuCo 2008
    143. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Seja apaixonado pelo que está trabalhando. GoRuCo 2008
    144. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Caso contrário você está morto por dentro GoRuCo 2008
    145. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb …assim como seu código. GoRuCo 2008
    146. Machucando Código por Diversão e Lucro Ryan Davis, Seattle.rb Obrigado. GoRuCo 2008

    + Fabio AkitaFabio Akita, 2 years ago

    custom

    3319 views, 4 favs, 8 embeds more stats

    Versão em português da apresentação "Hurting Co more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 3319
      • 2882 on SlideShare
      • 437 from embeds
    • Comments 0
    • Favorites 4
    • Downloads 70
    Most viewed embeds
    • 343 views on http://www.akitaonrails.com
    • 56 views on http://akitaonrails.com
    • 20 views on http://videos.nomedojogo.com
    • 12 views on http://www.akitaonrails.com.br
    • 2 views on http://akitaonrails.com.br

    more

    All embeds
    • 343 views on http://www.akitaonrails.com
    • 56 views on http://akitaonrails.com
    • 20 views on http://videos.nomedojogo.com
    • 12 views on http://www.akitaonrails.com.br
    • 2 views on http://akitaonrails.com.br
    • 2 views on http://www.fabioakita.com
    • 1 views on http://fabioakita.com
    • 1 views on http://www.akitaonrails.com.

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories