Archive for May, 2008

Acabei de chegar da apresentação do Bruno Pereira sobre WebServices REST no RioJUG, uma que eu havia anunciado aqui. A apresentação foi bem teórica e explicativa no início. Depois, ele apresentou o código-fonte e executou alguns testes para demonstrar o funcionamento. Durante toda a apresentação ele comparou os padrões WS-* e REST. Ele falou também um pouco das motivações que deram origem aos WebServices e qual padrão eles tendem seguir, que o é REST, claro! Pra quem quer saber mais, ele indicou a edição no. 56 da Java Magazine que tem uma matéria dele sobre o assunto.

No final, teve sorteio de brindes - como sempre, não ganhei nenhum - e o Guilherme Chapiewski, disse que o Fábio Kung estará na globo.com na semana que vem palestrando sobre JRuby e que provavelmente, ele fará uma apresentação no RioJUG também.

Foi na apresentação do Guilherme Silveira no Falando em Java 2008 que eu ouvi falar a primeira vez sobre Janelas Quebradas. Depois disso, percebi que este assunto não é nada novo na engenharia de softwares e que ele é abordado num livro que eu acabei de comprar e está na fila pra ser lido: The Pragmatic Programmer: From Journeyman to Master. Trata-se de uma teoria baseada num experimento que criminologistas americanos fizeram:

Um automóvel foi deixado em um bairro de classe alta na Califórnia. Na primeira semana, o carro não foi danificado. Os pesquisadores então quebraram uma das janelas. Poucas horas depois, o carro foi completamente destroçado e roubado por grupos vândalos.

Eu já pude acompanhar este fenômeno duas vezes. Na primeira vez foi um ciclo bem parecido com o experimento original, mas não foi proposital: Eu era criança e morava num prédio onde o irmão de um morador deixou seu carro estacionado. O carro estava bem sujo e meio amassado em algumas partes. Em pouco tempo, este carro virou o assento padrão de todas as crianças do prédio, depois já estava sem as janelas e então mais tarde, dois indivíduos - que não eram crianças - roubaram a bateria do carro. O caso foi sério, no final deu uma grande confusão e os caras que roubaram a bateria acabaram levando a culpa de tudo. Posso apostar que se o carro estivesse em, não vou nem dizer perfeitas, mas em condições normais, assim como todos os carros que estavam na garagem do prédio, isso não teria acontecido.

Na segunda vez que eu vi este fenômeno, ele não chegou a causar muitos estragos. E o que nos poupou de estragos maiores foi o fato das pessoas terem enxergado que tínhamos uma “Janela Quebrada”. Eu falei aqui no blog sobre o Mau Copiador, o cara que senta pra desenvolver o sistema sem saber o que está fazendo e vai copiando o código dos sites, dos outros sistemas da empresa, de todo mundo e de qualquer maneira. Pois é, ele era uma janela quebrada e estava lá na empresa para fazer com que todo um sistema, ou até a empresa inteira fosse por água abaixo, ou melhor, por janela abaixo (com trocadilho).

Acontece que esse cara não era mau em se auto promover para as pessoas que não viam o código que ele gerava e com isso ele acabou ganhando a tarefa de treinar os estagiários que entraram no projeto. E aí não foram só janelas quebradas, foram portas, mesas, cadeiras e tudo mais que viam pela frente até que os gerentes foram alertados e medidas foram tomadas.

Não posso dizer que não houve estragos, eu perdi algumas boas horas corrigindo “cópias mal feitas em larga escala” no sistema, mas nada que um bom Refactoring - e eu gosto de refactoring - não resolvesse.

O Guilherme Silveira apontou o cuidado para não deixar janelas quebradas no sistema como um dos hábitos que os arquitetos de softwares altamente eficazes devem ter.

Eu estou lendo o livro Rails para Desenvolvedores Java que o amigo Rodrigo Allemand me emprestou e está sendo um aprendizado e tanto. Eu nunca tinha nem visto um código-fonte em Ruby antes. Só havia lido (e muito!) sobre tudo que ele faz com o mínimo de linhas de código em todos os fóruns, listas de discussão sobre desenvolvimento. E todo esse hype em torno de alguma coisa te faz ter, pelo menos, curiosidade sobre tal coisa.

Eu cheguei a conhecer o conceito do Rails antes, quando comecei a estudar e usar o Cake PHP. É algo bem parecido. Acho que posso dizer que o Cake está para o PHP, assim como o Rails está para o Ruby. E posso afirmar que o que está sendo interessante pra mim nesta leitura nem é o Rails em sim, mas neste primeiro momento está sendo o aprendizado de Ruby. É uma linguagem genial, eu nunca tinha visto nada tão legal. Já até adicionei na minha lista de livros a ler, alguns sobre Ruby.

Graças ao livro, fui capaz de entender o código que o Fábio Kung escreveu para fazer o sorteio no Falando em Java e tantos outros códigos que tenho visto pela internet. Tenho até criado algumas coisas a fins de aprendizado mesmo.

Eu estava escrevendo um comentário para o artigo “Domain-Driven Design é Simples: Basta Chamar DAOs de Repositórios” do Phillip Calçado, mas acabei escrevendo muito e achei melhor comentar por aqui.

Na empresa onde trabalho, uma empresa de três letrinhas, tentamos implantar DDD em um projeto, mas é difícil fazer isso já que quem tem contato com o cliente não somos nós, os desenvolvedores. O que chega para nós já é a “solução de todos os problemas” que o analista de sistemas criou enquanto conversava com o cliente. Na verdade, a nossa linguagem ubíqua não é feita entre o cliente e nós, mas sim entre nós e o analista.

Eu não acho certo dizer que o sistema está usando DDD também, e achei muito interessante o artigo do Phillip, porque eu estava pensando exatemte nisso outro dia deste. Inclusive, na apresentação de DDD que o Sérgio Lopes fez no Falando em Java 2008, foi a primeira coisa que ele demonstrou: a criação de uma línguagem que fosse clara para o cliente e para o desenvolvedor.

Vai rolar no RioJUG, uma palestra sobre WebServices REST apresentada pelo Bruno Pereira, autor do artigo sobre o mesmo assunto na edição mais recente da revista Java Magazine.

A palestra será realizada na terça-feira, dia 28/05, às 19h no Auditório do SENAC CIT, que fica na rua Santa Luzia, 735, 7o. andar, Centro, Rio. A entrada é gratuita, não há necessidade de inscrição, basta chegar pra assitir e concorrer à vários brindes e assinaturas das revistas Java Maganize, SQL Magazine e Mundo Java.

UPDATE: Seria no dia 27/05, mas devido a problemas de última hora, será no dia 28/05, quarta-feira.