1 00:00:00,366 --> 00:00:02,092 Metáfora 2 00:00:04,068 --> 00:00:10,619 Comecei a me interessar sobre a forma como metáforas influenciam o nosso pensamento 3 00:00:10,619 --> 00:00:13,259 depois de ler o livro de George Lakoff e Mark Johnson 4 00:00:13,259 --> 00:00:15,184 "Metaphors We Live By". 5 00:00:15,184 --> 00:00:17,874 Uma ideia importante é a de que 6 00:00:17,874 --> 00:00:25,257 nós raciocinamos por analogia com metáforas que existem no nosso idioma. 7 00:00:26,501 --> 00:00:28,086 Dívida 8 00:00:29,576 --> 00:00:33,568 Eu criei a metáfora da dívida para explicar 9 00:00:33,568 --> 00:00:38,552 o refatoramento que estávamos fazendo no aplicativo WyCash. 10 00:00:38,552 --> 00:00:44,823 Era um software escrito em Smalltalk 11 00:00:44,823 --> 00:00:46,830 e era importante para mim 12 00:00:46,830 --> 00:00:53,021 que acumulássemos o aprendizado obtido sobre o aplicativo ao longo do tempo 13 00:00:53,021 --> 00:00:57,568 modificando o programa para que parecesse 14 00:00:57,568 --> 00:01:02,175 que nós sabíamos o tempo todo o que estávamos fazendo 15 00:01:02,175 --> 00:01:06,617 e também para parecer que havia sido fácil fazê-lo. 16 00:01:06,617 --> 00:01:10,845 A explicação que dei ao meu chefe, dado que era um software financeiro, 17 00:01:10,845 --> 00:01:14,743 foi uma analogia financeira que eu chamei de "a metáfora da dívida". 18 00:01:14,743 --> 00:01:20,575 Eu disse que se falhássemos em fazer o nosso programa se alinhar 19 00:01:20,575 --> 00:01:27,809 com o que entendíamos ser a forma apropriada de se pensar a respeito dos objetos financeiros 20 00:01:27,809 --> 00:01:34,415 então iríamos continuamente tropeçar nesse desacordo, e isso iria deter o nosso avanço, 21 00:01:34,415 --> 00:01:36,308 seria como pagar os juros de uma dívida. 22 00:01:36,988 --> 00:01:38,891 Velocidade 23 00:01:40,312 --> 00:01:45,221 Com dinheiro emprestado você pode fazer coisas mais cedo do que poderia sem ele 24 00:01:45,221 --> 00:01:51,445 mas até que você pague de volta este dinheiro, você estará pagando juros. 25 00:01:51,445 --> 00:01:55,780 Eu achava que pegar dinheiro emprestado era uma boa ideia, 26 00:01:55,780 --> 00:01:59,324 eu achava que entregar software rapidamente, 27 00:01:59,324 --> 00:02:01,911 a fim de ganhar alguma experiência com ele, era uma boa ideia 28 00:02:01,911 --> 00:02:07,406 mas é claro, em algum momento você teria que voltar 29 00:02:07,406 --> 00:02:12,577 e ao aprender coisas a respeito do software, você iria pagar aquele empréstimo 30 00:02:12,577 --> 00:02:20,063 refatorando o programa para refletir o entendimento que você adquiriu. 31 00:02:20,063 --> 00:02:22,105 Carga 32 00:02:23,239 --> 00:02:28,209 Acho que há muitos casos em que as pessoas entregam software rapidamente 33 00:02:28,209 --> 00:02:34,184 e aprendem coisas, mas nunca colocam aquele aprendizado de volta no programa 34 00:02:34,184 --> 00:02:39,019 e por analogia, isso é como 35 00:02:39,019 --> 00:02:43,028 pegar dinheiro emprestado achando que você nunca precisará pagá-lo. 36 00:02:43,028 --> 00:02:45,155 É claro que, se você fizer isso, 37 00:02:45,155 --> 00:02:46,922 com seu cartão de crédito, por exemplo, 38 00:02:46,922 --> 00:02:50,398 eventualmente todo a sua renda será para pagar os juros 39 00:02:50,398 --> 00:02:52,431 e seu poder de compra vai a zero. 40 00:02:52,431 --> 00:02:56,223 Da mesma forma, se você desenvolver um programa por um longo período de tempo, 41 00:02:56,223 --> 00:02:58,368 apenas adicionando funcionalidades 42 00:02:58,368 --> 00:03:02,898 e nunca reorganizando o código para refletir o seu entendimento dessas funcionalidades 43 00:03:02,898 --> 00:03:07,271 eventualmente o seu programa não conterá mais nenhum entendimento 44 00:03:07,271 --> 00:03:11,028 e todos os esforços para trabalhar nesse software tomarão mais e mais tempo. 45 00:03:11,028 --> 00:03:13,880 Em outras palavras, todo o seu tempo será para pagar os juros 46 00:03:13,880 --> 00:03:16,013 e você não fará mais nenhum progresso. 47 00:03:16,385 --> 00:03:18,143 Agilidade 48 00:03:18,643 --> 00:03:25,169 Muitos bloggers tem explicado a metáfora da dívida 49 00:03:25,169 --> 00:03:29,352 e eu acho que eles a confundem com a ideia de que 50 00:03:29,352 --> 00:03:34,281 você poderia escrever código de baixa qualidade com a intenção de melhorá-lo depois 51 00:03:34,281 --> 00:03:38,465 pensando que seria essa a fonte primária da dívida. 52 00:03:38,465 --> 00:03:42,071 Eu nunca sou a favor de escrever código de baixa qualidade 53 00:03:42,071 --> 00:03:47,187 mas sou a favor de escrever código que reflete a sua compreensão atual do problema 54 00:03:47,187 --> 00:03:50,359 mesmo que essa compreensão seja parcial. 55 00:03:50,359 --> 00:03:55,461 Se você quiser ser capaz de adquirir uma dívida dessa maneira, 56 00:03:55,461 --> 00:03:59,352 desenvolvendo um software que você ainda não compreende completamente, 57 00:03:59,352 --> 00:04:05,262 você deverá fazer esse software refletir o seu entendimento da melhor forma possível 58 00:04:05,262 --> 00:04:08,652 para que quando chegue a hora de refatorar 59 00:04:08,652 --> 00:04:11,771 esteja claro o que você estava pensando quando o escreveu 60 00:04:11,771 --> 00:04:15,985 e fique mais fácil você refatorar para que ele se alinhe com o seu entendimento atual. 61 00:04:15,985 --> 00:04:18,912 Em outras palavras, a metáfora da dívida, 62 00:04:18,912 --> 00:04:21,623 ou seja, a habilidade de pagar uma dívida, 63 00:04:21,623 --> 00:04:24,825 e fazer a metáfora funcionar a seu favor 64 00:04:24,825 --> 00:04:29,515 depende de você escrever um código limpo o suficiente para que você seja capaz de refatorá-lo 65 00:04:29,515 --> 00:04:32,266 no momento em que você entender melhor o problema que está tentando resolver. 66 00:04:32,266 --> 00:04:34,364 Eu acho que essa é uma boa metodogia. 67 00:04:34,364 --> 00:04:37,235 Ela está no cerne do Extreme Programming, 68 00:04:37,235 --> 00:04:41,152 e é uma boa explicação, uma das muitas explicações 69 00:04:41,152 --> 00:04:43,652 de por que o Extreme Programming funciona. 70 99:59:59,999 --> 99:59:59,999 71 99:59:59,999 --> 99:59:59,999 72 99:59:59,999 --> 99:59:59,999 73 99:59:59,999 --> 99:59:59,999 74 99:59:59,999 --> 99:59:59,999 75 99:59:59,999 --> 99:59:59,999 76 99:59:59,999 --> 99:59:59,999 77 99:59:59,999 --> 99:59:59,999 78 99:59:59,999 --> 99:59:59,999 79 99:59:59,999 --> 99:59:59,999 80 99:59:59,999 --> 99:59:59,999 81 99:59:59,999 --> 99:59:59,999 82 99:59:59,999 --> 99:59:59,999 83 99:59:59,999 --> 99:59:59,999 84 99:59:59,999 --> 99:59:59,999 85 99:59:59,999 --> 99:59:59,999 86 99:59:59,999 --> 99:59:59,999 87 99:59:59,999 --> 99:59:59,999 88 99:59:59,999 --> 99:59:59,999 89 99:59:59,999 --> 99:59:59,999 90 99:59:59,999 --> 99:59:59,999 91 99:59:59,999 --> 99:59:59,999 92 99:59:59,999 --> 99:59:59,999 93 99:59:59,999 --> 99:59:59,999 94 99:59:59,999 --> 99:59:59,999 95 99:59:59,999 --> 99:59:59,999 96 99:59:59,999 --> 99:59:59,999 97 99:59:59,999 --> 99:59:59,999 98 99:59:59,999 --> 99:59:59,999