pesquisavel e sua posicao no array original. Esse array seria ordenado pelo tal atributo pesquisavel. Para isso, implementei um BubleSort e uma busca binaria, ambos customizados para trabalhar com arrays de objetos. Levei algumas horas para terminar essa solucao e, no final, me senti orgulhoso por ter realizado aquele trabalho arduo. Mas, no dia seguinte, ao explicar minha solucao para um colega no escritorio, todo meu orgulho foi por agua abaixo.Antes que eu terminasse minha explicacao ele perguntou: Por que voce nao usou um hashtable? Entao, minha ficha caiu. Todo objeto JavaScript e um hashtable! E o pior e que eu ja sabia disso. Eu nao precisava implementar ordenacao nem busca. Bastava, ao inves de usar o segundo array, usar um objeto cujos atributos fossem os valores do campo pesquisavel e cujos respectivos valores fossem sua posicao no array original.Por que eu implementei uma solucao muito mais complexa do que era necessario quando eu tinha total condicao de conceber uma solucao extremamente mais simples? Apos refletir um pouco, identifiquei pelo menos dois motivos:Parei de pensar em alternativas na primeira solucao que me veio a mente;Me apeguei (ainda que temporariamente) aquela solucao.O resultado foi comparavel a lampada incandescente de Edison. Funciona, mas gasta mais energia produzindo calor que luz.Como seria a moda Tesla"Se quiser derrubar uma arvore na metade do tempo, passe o dobro do tempo amolando o machado." (Proverbio chines)Esse proverbio se encaixa muito bem no estilo pragmatico de Tesla. Infelizmente, o problema que acabei de contar nao aconteceu num dos meus dias mais pragmaticos. Se eu tivesse pensado um pouco mais nas solucoes possiveis para aquele problema, provavelmente teria chegado na solucao mais simples e obvia. Ou, se tivesse praticado o desapego a minha ideia e chamado o meu colega no GTalk para conversar sobre o problema, provavelmente ele teria me sugerido a solucao mais simples.No final das contas, levei cerca de 5 minutos para reescrever a minha solucao Edison usando a abordagem Tesla. Evidentemente, esse retrabalho nao fui inutil porque o aprendizado que vem da tentativa e erro tem o seu valor. Foi o que Edison quis dizer ao citar suas 700 tentativas de acertar. Mas, como Tesla nos lembrou, um pouco de teoria e calculo podem economizar muito trabalho.Edison e Tesla: estilos complementaresNo dia a dia do desenvolvimento de software, encaramos problemas que exigem tanto um perfil Edison quanto um perfil Tesla. Disposicao para encarar os desafios e aprender com os proprios erros e fundamental, mas se fizermos uma pausa antes de colocar as maos no teclado e pensarmos de maneira analitica sobre as solucoes possiveis, economizaremos tempo e "energia". Se for possivel compartilhar esse momento analitico com mais alguem, melhor ainda. E preciso apenas cuidar para nao ficar pensando indefinidamente.De hoje em diante, tenho um lema: antes de gastar energia resolvendo um problema, preciso pensar se e hora de ser um Edison ou um Tesla.Que achou desse artigo? Deixe seu comentario.—Foto: Globo de plasma, uma das invencoes de Nikola Tesla. (Wikipedia)[1] ^ Scott Berkun. "Edison vs. Tesla: two approaches to problem solving"Para saber mais:Arnaldo Vasconcellos. "Edison, homem de