-
Metáfora
-
Comecei a me interessar sobre a forma como metáforas influenciam o nosso pensamento
-
depois de ler o livro de George Lakoff e Mark Johnson
-
"Metaphors We Live By".
-
Uma ideia importante é a de que
-
nós raciocinamos por analogia com metáforas que existem no nosso idioma.
-
Dívida
-
Eu criei a metáfora da dívida para explicar
-
o refatoramento que estávamos fazendo no aplicativo WyCash.
-
Era um software escrito em Smalltalk
-
e era importante para mim
-
que acumulássemos o aprendizado obtido sobre o aplicativo ao longo do tempo
-
modificando o programa para que parecesse
-
que nós sabíamos o tempo todo o que estávamos fazendo
-
e também para parecer que havia sido fácil fazê-lo.
-
A explicação que dei ao meu chefe, dado que era um software financeiro,
-
foi uma analogia financeira que eu chamei de "a metáfora da dívida".
-
Eu disse que se falhássemos em fazer o nosso programa se alinhar
-
com o que entendíamos ser a forma apropriada de se pensar a respeito dos objetos financeiros
-
então iríamos continuamente tropeçar nesse desacordo, e isso iria deter o nosso avanço,
-
seria como pagar os juros de uma dívida.
-
Velocidade
-
Com dinheiro emprestado você pode fazer coisas mais cedo do que poderia sem ele
-
mas até que você pague de volta este dinheiro, você estará pagando juros.
-
Eu achava que pegar dinheiro emprestado era uma boa ideia,
-
eu achava que entregar software rapidamente,
-
a fim de ganhar alguma experiência com ele, era uma boa ideia
-
mas é claro, em algum momento você teria que voltar
-
e ao aprender coisas a respeito do software, você iria pagar aquele empréstimo
-
refatorando o programa para refletir o entendimento que você adquiriu.
-
Carga
-
Acho que há muitos casos em que as pessoas entregam software rapidamente
-
e aprendem coisas, mas nunca colocam aquele aprendizado de volta no programa
-
e por analogia, isso é como
-
pegar dinheiro emprestado achando que você nunca precisará pagá-lo.
-
É claro que, se você fizer isso,
-
com seu cartão de crédito, por exemplo,
-
eventualmente todo a sua renda será para pagar os juros
-
e seu poder de compra vai a zero.
-
Da mesma forma, se você desenvolver um programa por um longo período de tempo,
-
apenas adicionando funcionalidades
-
e nunca reorganizando o código para refletir o seu entendimento dessas funcionalidades
-
eventualmente o seu programa não conterá mais nenhum entendimento
-
e todos os esforços para trabalhar nesse software tomarão mais e mais tempo.
-
Em outras palavras, todo o seu tempo será para pagar os juros
-
e você não fará mais nenhum progresso.
-
Agilidade
-
Muitos bloggers tem explicado a metáfora da dívida
-
e eu acho que eles a confundem com a ideia de que
-
você poderia escrever código de baixa qualidade com a intenção de melhorá-lo depois
-
pensando que seria essa a fonte primária da dívida.
-
Eu nunca sou a favor de escrever código de baixa qualidade
-
mas sou a favor de escrever código que reflete a sua compreensão atual do problema
-
mesmo que essa compreensão seja parcial.
-
Se você quiser ser capaz de adquirir uma dívida dessa maneira,
-
desenvolvendo um software que você ainda não compreende completamente,
-
você deverá fazer esse software refletir o seu entendimento da melhor forma possível
-
para que quando chegue a hora de refatorar
-
esteja claro o que você estava pensando quando o escreveu
-
e fique mais fácil você refatorar para que ele se alinhe com o seu entendimento atual.
-
Em outras palavras, a metáfora da dívida,
-
ou seja, a habilidade de pagar uma dívida,
-
e fazer a metáfora funcionar a seu favor
-
depende de você escrever um código limpo o suficiente para que você seja capaz de refatorá-lo
-
no momento em que você entender melhor o problema que está tentando resolver.
-
Eu acho que essa é uma boa metodogia.
-
Ela está no cerne do Extreme Programming,
-
e é uma boa explicação, uma das muitas explicações
-
de por que o Extreme Programming funciona.
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced