Archive for March 2011

Java Hidden Features

Java possui uma série de features que muita gente não conhece. Algumas são bem esquisitas. Outras, nem tanto. 

Nessa palestra, mostro algumas dessas features.

Em breve atualizo com os exemplos.

O programador Deus Ex Machina

Uma expressão que sempre me intrigou é “Deus Ex Machina”. 

Fui pesquisar dia desses. Olha o que tem na wikipedia: 

Deus ex machina expressão latina vinda do grego ”ἀπὸ μηχανῆς θεός” (apò mēchanḗs theós), significa literalmente “Deus surgido da máquina”.[1].

Sua origem encontra-se no teatro grego e refere-se a uma inesperada, artificial ou improvável personagem, artefato ou evento introduzido repentinamente em um trabalho de ficção ou drama para resolver uma situação ou desemaranhar uma trama. Este dispositivo é na verdade uma invenção grega. No teatro grego havia muitas peças que terminavam com um deus sendo literalmente baixado por um guindaste até o local da encenação. Esse deus então amarrava todas as pontas soltas da história[2].

A expressão é usada hoje para indicar um desenvolvimento de uma história que não leva em consideração sua lógica interna e é tão inverossímil que permite ao autor terminá-la com uma situação improvável porém mais palatável. Em termos modernos, Deus ex machina também pode descrever uma pessoa ou uma coisa que de repente aparece e resolve uma dificuldade aparentemente insolúvel. Enquanto que em uma narrativa isso pode parecer insatisfatório, na vida real este tipo de figura pode ser bem-vindo e heróico[2].

A noção de Deus ex machina também pode ser aplicada a uma revelação dentro de uma história vivida por um personagem, que envolva realizações pessoais complicadas, às vezes perigosas ou mundanas e, porventura, seqüência de eventos aparentemente não relacionados que conduzem ao ponto da história em que tudo é conectado por algum conceito profundo. Essa intervenção inesperada e oportuna visa a dar sentido à história no lugar de um evento mais concreto na trama[3].

tragédia grega de Eurípides era notória em usar este dispositivo na trama[4]. 

Isso parece familiar?

Pra mim sim. Muito. 

Que tal reescrevermos um pouco.

Deus ex machina expressão latina vinda do grego ”ἀπὸ μηχανῆς θεός” (apò mēchanḗs theós), significa literalmente “Deus surgido da máquina”.

Sua origem encontra-se nos projetos GoHorse e refere-se a um inesperado, artificial ou improvável programador, artefato, ferramenta ou processo introduzido repentinamente em um projeto para resolver uma situação ou desemaranhar um papel. Este dispositivo é na verdade uma invenção Go Horse. No projeto Go Horse havia muitos projetos que terminavam com um especialista sendo literalmente inserido por um gerente no local do desenvolvimento. Esse especialista então amarrava todas as pontas soltas do projeto.

A expressão é usada hoje para indicar um desenvolvimento de uma projeto que não leva em consideração sua lógica interna e é tão inverossímil que permite ao gerente terminá-lo com uma sistema improvável porém mais palatável. Em termos modernos, Deus ex machina também pode descrever uma pessoa que de repente aparece e resolve uma dificuldade aparentemente insolúvel. Enquanto que na teoria isso pode parecer insatisfatório, na vida real este tipo de figura pode ser bem-vindo e heróico.

A noção de Deus ex machina também pode ser aplicada a uma design dentro de um projeto criado por um desenvolvedor, que envolva realizações de casos de uso complicadas, às vezes perigosas ou mundanas e, porventura, seqüência de eventos aparentemente não relacionados que conduzem ao ponto do sistema em que tudo é conectado por algum padrão de projeto. Essa gambiarra inesperada e oportuna visa satisfazer os requisitos, no lugar de um design mais apropriado e organizado no sistema.

E agora? Lembrou?

A arrogância do Bozo

Bozo
Estamos tendo diversas discussões no UaiJUG sobre frameworks. E uma dessas discussões me lembrou de uma situação que vejo acontecer em nossa área.
Temos um programador chamado Bozo. Bozo tem um problema para resolver e encontra uma determinada solução (biblioteca | framework | componente). Ele não estuda o componente que vai usar o suficiente (tem Bozo que nem de ler gosta!), então a solução não sai de acordo com o que Bozo esperava.
O que ele faz? Parte para uma solução própria. Reinventa a roda. Porém, sem saber, a faz quadrada.
Em sua sabedoria, ele diz que “essa solução geral sempre tem desempenho ruim justamente por não ser adaptada ao caso dele”. E acha que, se fizer tudo “na unha”, vai atingir os requisitos não funcionais que deseja.
Em sua arrogância, ele sempre acha que sozinho, em 3 meses, com a precária formação que teve, pode fazer um trabalho muito melhor que aqueles 400 idiotas com mestrado/doutorado que trabalham naquele projeto X. Ele acredita que a base de milhares de usuários que testam a ferramenta não fazem diferença. Acha que todos os que alegam que usaram x e tiveram um bom desempenho, usaram magia negra.
O bozo discute com os colegas que gostam de usar soluções prontas. Leva meses programando algo que poderia resolver em um fim de semana com algo já pronto. O Bozo atrasa tudo que é projeto.
Normalmente o que ele acha uma solução inteligente causa ataques de eplepsia nos outros programadores. Sempre que você ver um desenvolvedor falando em comprar uma arma, tenha certeza, esse cara conheceu um Bozo.
E aí? Já conheceu um Bozo? Já foi um Bozo algum dia? Se comporta como um Bozo às vezes?
PS: Essa tirinha foi tirada do http://nerdson.com/blog/