0:00:00.366,0:00:02.092 Metáfora 0:00:04.068,0:00:10.619 Comecei a me interessar sobre a forma como metáforas influenciam o nosso pensamento 0:00:10.619,0:00:13.259 depois de ler o livro de George Lakoff e Mark Johnson 0:00:13.259,0:00:15.184 "Metaphors We Live By". 0:00:15.184,0:00:17.874 Uma ideia importante é a de que 0:00:17.874,0:00:25.257 nós raciocinamos por analogia com metáforas que existem no nosso idioma. 0:00:26.501,0:00:28.086 Dívida 0:00:29.576,0:00:33.568 Eu criei a metáfora da dívida para explicar 0:00:33.568,0:00:38.552 o refatoramento que estávamos fazendo no aplicativo WyCash. 0:00:38.552,0:00:44.823 Era um software escrito em Smalltalk 0:00:44.823,0:00:46.830 e era importante para mim 0:00:46.830,0:00:53.021 que acumulássemos o aprendizado obtido sobre o aplicativo ao longo do tempo 0:00:53.021,0:00:57.568 modificando o programa para que parecesse 0:00:57.568,0:01:02.175 que nós sabíamos o tempo todo o que estávamos fazendo 0:01:02.175,0:01:06.617 e também para parecer que havia sido fácil fazê-lo. 0:01:06.617,0:01:10.845 A explicação que dei ao meu chefe, dado que era um software financeiro, 0:01:10.845,0:01:14.743 foi uma analogia financeira que eu chamei de "a metáfora da dívida". 0:01:14.743,0:01:20.575 Eu disse que se falhássemos em fazer o nosso programa se alinhar 0:01:20.575,0:01:27.809 com o que entendíamos ser a forma apropriada de se pensar a respeito dos objetos financeiros 0:01:27.809,0:01:34.415 então iríamos continuamente tropeçar nesse desacordo, e isso iria deter o nosso avanço, 0:01:34.415,0:01:36.308 seria como pagar os juros de uma dívida. 0:01:36.988,0:01:38.891 Velocidade 0:01:40.312,0:01:45.221 Com dinheiro emprestado você pode fazer coisas mais cedo do que poderia sem ele 0:01:45.221,0:01:51.445 mas até que você pague de volta este dinheiro, você estará pagando juros. 0:01:51.445,0:01:55.780 Eu achava que pegar dinheiro emprestado era uma boa ideia, 0:01:55.780,0:01:59.324 eu achava que entregar software rapidamente, 0:01:59.324,0:02:01.911 a fim de ganhar alguma experiência com ele, era uma boa ideia 0:02:01.911,0:02:07.406 mas é claro, em algum momento você teria que voltar 0:02:07.406,0:02:12.577 e ao aprender coisas a respeito do software, você iria pagar aquele empréstimo 0:02:12.577,0:02:20.063 refatorando o programa para refletir o entendimento que você adquiriu. 0:02:20.063,0:02:22.105 Carga 0:02:23.239,0:02:28.209 Acho que há muitos casos em que as pessoas entregam software rapidamente 0:02:28.209,0:02:34.184 e aprendem coisas, mas nunca colocam aquele aprendizado de volta no programa 0:02:34.184,0:02:39.019 e por analogia, isso é como 0:02:39.019,0:02:43.028 pegar dinheiro emprestado achando que você nunca precisará pagá-lo. 0:02:43.028,0:02:45.155 É claro que, se você fizer isso, 0:02:45.155,0:02:46.922 com seu cartão de crédito, por exemplo, 0:02:46.922,0:02:50.398 eventualmente todo a sua renda será para pagar os juros 0:02:50.398,0:02:52.431 e seu poder de compra vai a zero. 0:02:52.431,0:02:56.223 Da mesma forma, se você desenvolver um programa por um longo período de tempo, 0:02:56.223,0:02:58.368 apenas adicionando funcionalidades 0:02:58.368,0:03:02.898 e nunca reorganizando o código para refletir o seu entendimento dessas funcionalidades 0:03:02.898,0:03:07.271 eventualmente o seu programa não conterá mais nenhum entendimento 0:03:07.271,0:03:11.028 e todos os esforços para trabalhar nesse software tomarão mais e mais tempo. 0:03:11.028,0:03:13.880 Em outras palavras, todo o seu tempo será para pagar os juros 0:03:13.880,0:03:16.013 e você não fará mais nenhum progresso. 0:03:16.385,0:03:18.143 Agilidade 0:03:18.643,0:03:25.169 Muitos bloggers tem explicado a metáfora da dívida 0:03:25.169,0:03:29.352 e eu acho que eles a confundem com a ideia de que 0:03:29.352,0:03:34.281 você poderia escrever código de baixa qualidade com a intenção de melhorá-lo depois 0:03:34.281,0:03:38.465 pensando que seria essa a fonte primária da dívida. 0:03:38.465,0:03:42.071 Eu nunca sou a favor de escrever código de baixa qualidade 0:03:42.071,0:03:47.187 mas sou a favor de escrever código que reflete a sua compreensão atual do problema 0:03:47.187,0:03:50.359 mesmo que essa compreensão seja parcial. 0:03:50.359,0:03:55.461 Se você quiser ser capaz de adquirir uma dívida dessa maneira, 0:03:55.461,0:03:59.352 desenvolvendo um software que você ainda não compreende completamente, 0:03:59.352,0:04:05.262 você deverá fazer esse software refletir o seu entendimento da melhor forma possível 0:04:05.262,0:04:08.652 para que quando chegue a hora de refatorar 0:04:08.652,0:04:11.771 esteja claro o que você estava pensando quando o escreveu 0:04:11.771,0:04:15.985 e fique mais fácil você refatorar para que ele se alinhe com o seu entendimento atual. 0:04:15.985,0:04:18.912 Em outras palavras, a metáfora da dívida, 0:04:18.912,0:04:21.623 ou seja, a habilidade de pagar uma dívida, 0:04:21.623,0:04:24.825 e fazer a metáfora funcionar a seu favor 0:04:24.825,0:04:29.515 depende de você escrever um código limpo o suficiente para que você seja capaz de refatorá-lo 0:04:29.515,0:04:32.266 no momento em que você entender melhor o problema que está tentando resolver. 0:04:32.266,0:04:34.364 Eu acho que essa é uma boa metodogia. 0:04:34.364,0:04:37.235 Ela está no cerne do Extreme Programming, 0:04:37.235,0:04:41.152 e é uma boa explicação, uma das muitas explicações 0:04:41.152,0:04:43.652 de por que o Extreme Programming funciona. 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000