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