Lançamento do Infoq Brasil

No dia 01 de novembro tem o evento de lançamento do portal InfoQ Brasil (Info Queue Brasil) organizado pela Fratech.

Eu vou nesse evento, que vai ter muitas coisa interessante como: Futuro do Java (Yara Senger), .NET (Rafael Steil), Ruby on Rails (Fábio Akita), Agile (Manoel Pimentel), SOA (Alexandre Gomes), Arquitetura (Wagner Santos) e alguns painéis com a participação de Floyd Marinescu (criador do InfoQ.com)

O local é na Universidade Anhembi Morumbi da Vila Olímpia – São Paulo. Essa é mais uma oportunidade para encontrar com pessoas e fazer muito networking.

Faça sua inscrição e compareça!

Rails Summit – Eu Fui!

Estive no evento Rails Summit e foi espetacular. Muito parabéns para a Locaweb, o Fábio Akita e todos que se esforçaram para fazer desse evento um sucesso! Inclusive a blogosfera que ajudou a divulgar o maior evento de Rails da América Latina.

As palestras foram excepcionais e pretendo comentar sobre elas mais tarde. Portanto vou falar sobre outros acontecimentos.

Com um bando de nerds reunidos em salas lotadas, só poderia acontecer uma coisa: o surgimento de um novo projeto Open Source chamado morena_opensource. 🙂 Esse projeto surgiu por causa das modelos contratadas pela Locaweb que desviavam nossas atenções. Não demorou e o pessoal começou a comitar as fotos no projeto criado no GitHub.

Outra coisa muito legal foi que estava todo mundo twittando durante as palestras e eu também twittei. E graças ao palestrante Manoel Lemos (criador do BlogBlogs e da Brasigo), tudo o que se escrevia sobre o #railssummit ficou centralizado no LiveStream do Rails Summit.

Hugo, André Faria, Akita e eu.

No final do evento fizemos um Happy Hour num restaurante Japonês, junto com alguns palestrantes internacionais, tudo em ritmo do Hino Nacional Brasileiro. 🙂

O primeiro da direira é o Fabio Akita, principal responsável pela organização do evento.

 

Destaque nessa foto para o Dr Nic, vestindo a camiseta da Seleção Brasileira.

 

Juan, eu e Akita

 

O Carlos Brando disponibilizou o video que o pessoal engraçado do Rails Envy fez para o Summit. Veja aqui.

O Luiz da Bluesoft comentou sobre o primeiro e segundo dia de evento.

Para ver mais fotos clique aqui.

Foi muito bom encontrar ou conhecer o pessoal no evento. Segue alguns nomes:

Anderson Vaz, André FariaBruno CarvalhoBruno PedrosoCarl YoungBloodCarlos BrandoDanilo SatoElomar FrançaFábio AkitaFábio KungGeorge GuimaraesGuilherme ChapiewskiHenrique BastosHugoJuan BernabóLeandro SilvaLuiz Faias JrMauricio LealPhillip CalçadoRafael LimaRenato WilliRodrigo YoshimaTony FabeenVinicius Teles.

Publicado em eventos, rails. 1 Comment »

TDD é realmente necessário?

Antes de mais nada assistam esse video muito engraçado, que diz Test All the F***in Time! 

 

O TDD é fundamental para um time ágil por alguns motivos que vou citar agora. 
  • O desenvolvimento guiado a testes influencia o time a fazer design simples para desenvolver somente o que é realmente necessário para passar no teste.
  • Influencia o time a ter uma boa cobertura de testes, o que possibilita mudanças no código mais facilmente.
  • A equipe tem mais confiança para fazer refatorações, deixando o código mais simples e limpo.
As ferramentas que temos hoje facilita muito esse tabalho, como por exemplo a família xUnit, Selenium, Mocks, cobertura de testes etc. Porém as ferramentas são para auxiliar e não devem ser impedimento para fazer TDD. Por exemplo, mesmo que alguma linguagem ainda não tenha um suporte tão bom para testes, nada impede que a gente crie nossas próprias assertions. 
Na estimativa tem que ser considerado os testes, para a própria segurança do time. Porém acontece o caso que o cliente pede para deixar os testes para depois. Nesse caso podemos dizer ao cliente que estamos estimando a construção do comportamento do software. Reparem que os testes são parte do comportamento do software!
BDD = TDD + DDD. Behaviour-Driven Development (BDD) é o desenvolvimento de software dirigido ao seu comportamento. É a união de desenvolvimento guiado por testes(TDD) e Design dirigido ao domínio da aplicação (DDD). 

Testar é investir! Ou seja, se as pessoas não conhecem a sintaxe de xUnit, nunca usaram Selenium ou se deparam com a necessidade de criar mocks para eliminar a dependência de outras classes que não são interessantes para o teste de unidade, eles terão que considerar esse tempo de aprendizagem dentro do sprint. Porém depois de familiarizado com a ferramenta/framework, os testes podem ser executados sem mesmo precisar subir um servidor de aplicação, aumentando assim a produtividade da equipe. 

No livro do Vinícius Teles tem uma metáfora muito interessante com a saúde das pessoas. O que é melhor: prevenir ou remediar?

É interessante lembrar que os Testes estão muito ligados a outra prática ágil como a Integração Contínua.

Sei que todos concordam que os testes são imprescindíveis. Portanto o cerne da discussão desse tópico é fazer os testes antes ou não. Porém acredito que fazer teste antes traga mais valor ao cliente.

Conclusão, só não testa quem realmente não quer. 😉

Eu escrevi alguns posts sobre esse assunto, quem quiser pode dar uma lida e fiquem a vontade em comentar aqui e aqui

Comendo pelas Beiradas (Rails)

Rails Summit Latin America

Antes de falar sobre o Rails eu quero falar do Java, porém a intenção desse post não é causar nenhuma flame sobre essas duas tecnologias, mas apenas fazer um breve comparativo e expressar minha opinião sobre o assunto.

O Java é uma plataforma muito poderosa não só por causa da linguagem. A linguagem permite Orientação a Objetos, porém ainda são desenvolvidos muitos sistemas completamente estruturados no Java. A Java Virtual Machine (JVM) é umas das melhores coisas da plataforma, pois por causa dela uma aplicação acaba se tornando mais rápida do que se fosse desenvolvida em outras linguagens, como por exemplo a linguagem C. Isso acontece graças ao JIT que, com a ajuda dos Hotspots, tem um algoritmo poderosíssimo que transforma códigos do java em linguagem de máquina em runtime. Isso não acontece no C pois ao ser gerado o executável não dá mais para alterá-lo em tempo de execução.

Depois que o Java virou moda muitas aplicações foram migradas para Web utilizando essa linguagem da Sun. Assim como outras aplicações Web, escritas em PHP, ASP, Perl, também foram migradas. E para todas as novas aplicações, sejam elas grandes ou pequenas, a única coisa que vinha na cabeça das pessoas era fazer tudo em Java.

“Com apenas uma ferramenta para trabalho, o martelo, todos os problemas viram pregos”

Porém em meados de 2000 a 2002 o java não tinha nenhuma padronização de trabalho para a Web. Não havia padronização de framework e nem de estrutura de pastas. Apenas os velhos conhecidos WEB-INF e META-INF e só. Aconteceu que cada projeto era uma aventura difetente, e se mudasse de projeto teria que reaprender tudo de novo. Por causa dessa falta de padronização surgiram framworks como o Struts e o Hibernate. Na época o Struts até que facilitou pois é melhor do que não usar nada. Porém hoje ninguém é louco de fazer algo com Struts pois já existem frameworks MVC muito mais simples e produtivos. Já o Hibernate é um excelente projeto e continua cada vez mais evoluindo.

Hoje existe a comunidade JCP onde muitos profissionais de renome do mundo todo discutem sobre o futuro do Java. Isso é bom por um lado pois eles entram em acordo para definir o que será padronizado, porém muito processo acaba que retardando o crescimento do Java.

Comendo pelas beiradas, surgiu o Ruby on Rails. Um framework totalmente pensado para o desenvolvimento Web, através da linguagem Ruby. O Rails juntou a padronização e produtividade com a simplicidade e expressividade do Ruby. O Ruby é uma linguagem dinamicamente tipada, totalmente Orientada a Objetos e também pode ser usada como lingagem de “scripting” (não gosto muito desse termo). O Rails, ao contrário do Java, vem crescendo com uma velocidade espantosa. Quem quiser ficar por dentro desse crescimento o blog do Carlos Brando é um ótimo caminho.

Hoje em dia muitas Empresas estão adotando Metodologias Ágeis, e se tratando de Time-to-Market, o Rails sai muito na frente do Java. Por isso um time que trabalha com Rails + Git tem muito para ser verdadeiramente ágil. As empresas no Brasil que usam Rails ainda são muito poucas comparado à quantidade de empresas exterior. E por que não usar Rails na sua Empresa contando que o Rails também é Enterprise? Em Abril de 2008 e Junho de 2008, Phusion Passenger e Ruby Enterprise Edition, respectivamente, foram liberados. Phusion Passenger é um servidor de aplicação para Ruby on Rails no Apache e quando combinado ao Ruby Enterprise Edition, permitem que o servidor faça muitas técnicas de otimização e possibilitando a aplicação escalar melhor.

A linguagem Ruby pode ser usada junto ao Java utilizando o JRuby, unindo a produtividade do Ruby com todo o poder da plataforma Java. O Fábio Kung escreveu esse post e vai falar sobre JRuby on Rails no Evento Rails Summit.

E para nossa diversão o pessoal da Rails Envy fez esse screencast aqui:

Publicado em rails. Tags: , , . 2 Comments »