Groovy nos trilhos do desenvolvimento web ágil?

[Novo endereço: leandrosilva.com.br.]

Sei que já não é mais tão novidade assim, mas só agora pude gastar um tempo pesquisando e fazendo uns testes. Do que estou falando? Hammm… O titulo dá uma idéia do assunto… Grails! Ou, para os mais eruditos, Groovy on Rails.

O que Grails, afinal?

Grails é a resposta da Plataforma Java ao desenvolvimento web ágil, dinâmico, sem toda aquela parafernália de 7.203 arquivos XML para configurar, 3.412 classes dos frameworks jAbc, J-XPTO e JSeila Oq+ para estender, e mais uns 1.300 arquivos JAR para “bibliotecar”.

Esta maravilha do mundo Java segue a filosofia de frameworks web full stack, tais como Ruby on Rails e Django. E segue fundamentalmente o conceito de Convention over Configuration, que pode ser resumido em uma simples frase: “É ótimo poder configurar, mas é péssimo ser obrigado a fazer isto”. Sendo assim, tudo tem um padrão de nome a seguir e um local bem definido para estar.

O que está por trás?

Grails não foi construido a partir do nada. Muito pelo contrário. Ele está fundamentado sobre frameworks de mercado mais que consagrados:

Hibernate, sobre o qual esta o GORM (Grails ORM);
Log4J, controle de log;
Spring, injeção de dependência e MVC;
Jetty, web container embutido;
SiteMesh, templates de página web.

E tudo isto sendo “colado” e “manipudalo” pela linguagem Groovy, que para quem viveu os últimos anos em Marte, é uma linguagem orientada a objetos, fortemente tipada e dinâmica, desenvolvida para a Plataforma Java, como alternativa à própria linguagem Java.

Vale a pena usar Grails?

Para o seus projetos, só você mesmo pode responder. Mas o fato é que já existe muita coisa por ai rodando em cima de Grails. Um exemplo? O site da PepsiCo, por exemplo, que é um caso relatado no site do Grails.

Minha opinião? Se você quer uma alternativa dinâmica ao desenvolvimento web rápido para a Plataforma Java, dê uma olhada em Grails. Você não vai se arrepender.

Agora, se para você, desenvolvimento “confiável” e “bem feito” é sinônimo de centenas de milhares de XMLs, JARs, frameworks, e linguagem estaticamente tipada (porque o compilador te faz errar menos), esqueça Grails. (Mas… Uma dica: Sai dessa, meu chapa!!! rsrsrs)

Valeu!

Google Developer Day 2008

Ontem participei do Google Developer Day 2008, evento patrocinado pelo Google. (Tá, tá, isto está óbvio, eu sei!) O evento aconteceu no WTC São Paulo, um lugar bem bonitão e tal; e tudo na faixa. Sim, di gratis.

Gostei bastante do evento, apesar dos assuntos terem sido tratados de maneira muito superficial, deu pra ter uma boa idéia sobre os produtos do Google for developers, que, sinceramente, eu não tinha.

Bom, vamos lá… Das apresentações que eu vi…

AppEngine – Permite que você coloque seu aplicativos Web para rodarem na infra-estrutura do Google. Ele é muito simples, você faz e testa seu aplicativo em sua máquina e, quando estuver pronto, apenas faz upload para o AppEngine e ele está no ar.

Uma das coisas que achei interessantes do AppEngine é que você usa o data store do Google, invés de um banco de dados relacional; e também pode usar o sistema de login do Google para a sua aplicação.

Ah! Um detalhe: Por enquanto, o AppEngine está disponível apenas para aplicações Python. Mas, segundo os apresentadores, outras linguagens estão vindo por ai – Java, Ruby e PHP foram as citadas.

Gears – É uma extesão de browser Web que permite você executar aplicações Web off-line. Ele armazena localmente um banco de dados relacional para seu aplicativo, que pode ser pesquisado e atualizado por JavaScript. E tudo isso de forma assíncrona!

Achei fantástico para aplicativos de uso em campo – como pesquisas e vendas, por exemplo.

OpenSocial – Define uma API comum para aplicativos sociais, permitindo total interoperabilidade entre estes. Com o crescimento dos aplicativos de redes sociais, não precisa nem dizer a importancia de algo assim, né?

Queria também ter visto as apresentações da API de Mapas e do Android, mas… Não se pode ter tudo sempre… ='(

O Akita também registrou a sua impressão sobre o evento – a gente se trombou por lá ontem e trocou umas idéias. Um ponto que ele citou e que concordo em genero, número e grau foi falta a Wi-Fi. Meu, precariedade total… Pelo amor de Deus! Levei meu note e quanto tentei conectar a uma rede, nada! Mas quanto a pessoas no note, eu vi bastante gente sim – principalmente com Mac.

(Ah! Tenho um protesto a fazer: Minha camiseta veio GG, eu pedi P!!!)

No geral, gostei muito do evento. Valeu muito a pena…

Quando uma Sprint é bem sucedida?

Às vezes me perguntam quando uma Sprint é considerada bem sucedida. Normalmente respondo com outra pergunta: Qual é o alvo da Sprint?

Notoriamente, todos os itens de um Sprint Backlog são relevantes. Porém, nem sempre todos estes são vitais para o dado momento do projeto – neste caso, é possível viver mais um timebox sem eles. Ter esta percepção te ajuda a descobrir o quando uma Sprint foi bem sucedida.

Scrum é viciado em ROI. Sendo assim, o sucesso da Sprint está intimamente ligado ao ROI do cliente. Se o que o time conseguiu produzir e entregar com total qualidade ao final da Sprint é exatamente o que o cliente precisava para começar (ou continuar) a ter lucro com seu negócio, ótimo, a Sprint foi bem sucedida!

Agora, se ao final da Sprint o cliente não tem nada de relevante e que trague algum valor ao seu negócio, a Sprint foi um fracasso. Talvez, não um fracasso total; mas ainda assim, um fracasso.

Quer sucesso na sua Sprint? Dê lucro ao seu cliente… É o que ele mais gosta…

Até a próxima!

Agile Requirements Workshop!

Sábado passado participei do Agile Requirements Workshop com o Alexandre Magno e o Adail Retamal.

O nível do workshop foi realmente excelente. Muito conteúdo, muita prática, muita discussão, literalmente, muita formação para qualquer profissional ágil. User stories, Features, Mapas Mentais, Engenharia de Requisitos, e outros assuntos foram tratados com muita propriedade pelos dois. =)

Um momento que achei impressionante foi quando o Alexandre, ensinando o valor da comunicação, disparou: “Não combinei nada com o Adail, mas, Adail, fica tranquilo, eu assumo o prejuizo, tá? Quem quiser ir embora ‘só com a apostila’, eu devolvo 90% do valor pago pelo workshop. Você pega a apostila, vai embora, e eu te devolvo 90% agora mesmo. Quem quer?” O que vocês acham que aconteceu? Ninguém nem piscou! Porque o conteúdo que esses caras tem para passar é muito, muito, além do que qualquer apostila. Comunicação é tudo – e, acredite, esses caras sabem bem o que significa isso.

Enfim, ótimo evento, quem não foi perdeu. Mas, como o Alexandre mesmo anunciou, mais edições estão por vir!

Não fique de fora!

Que tipo de líder é levado a sério?

Você se interessa por assuntos ligados a liderança? Eu me interesso. Isso porque lidero – e também sou liderado. Por isso estou sempre lendo a respeito, além de observar e conversar bastante com líderes que considero referênciais.  Afinal de contas, liderar não é só mandar. Mandar, por assim dizer, é a menor das menores partes da liderança.

Um líder precisa conquistar seus liderados com valores humanos, porque pessoas são mais importantes que normas e processos. Precisa ter práticas que sejam coerentes com esses valores; e precisa despertar em seus liderados confiança, respeito e vontade de caminhar junto. Senão, sua voz nunca será relevante.

Há um blog inscrito em meu Google Reader que tem uns artigos muito legais sobre liderança e assuntos diversos, o Efetividade.net. Vale a pela uma olhada.

Hoje li um post muito legal nesse blog que quero compartilhar com vocês: Liderança e motivação: quer ser levado mais a sério?

Boa leitura!

Falando em Java 2008, eu fui!

Ontem estive no evento Falando em Java 2008, organizado pela Caelum, para trazer lenha à fogueira da tecnologia, e também comemorar seu 4o aniversário. Parabéns!

O evento foi ótimo. Organização, coffe break, brunch, palestras, logística. Tudo esta “nos conformes”.

(Os lanches estavam muuuuito bons, como em todos os treinamentos da Caelum. rsrsrs)

Sobre as palestras, um mais que rápido review:

1- Abertura, Paulo Silveira

Fui muito legal saber dos números da Caelum. Tudo que o Paulo Silveira falou, certamente, foi muito inspirador para todos que estão pensando em começar um negócio, ou mesmo já começaram.

2- Os 7 hábitos dos arquitetos altamente eficazes, Guilherme Silveira

A visão da Caelum para um arquiteto é bem na linha daquilo que eu também acredito, então, foi uma boa palestra para eu ganhar mais embasamento em minhas idéias, sabendo que mais gente (e neste casa, uma pessoa reconhecidamente capaz) pensa como eu penso. Não estou totalmente errado… Uff! =)

Basicamente, a palestra dele colocou o arquiteto no lugar onde ele realmente deve estar: Junto com os desenvolvemores, ajudando no desenvolvimento técnico/profissional deles. É papel do arquiteto estar sempre antenado quanto a tudo quanto é tecnologia que exista por ai. Mas é também papel do arquiteto capacitar (com workshops, coach, pair programming, enfim…) seus desenvolvedores nas tecnologias adotadas num dado projeto que estejam participando.

De que adianta um arquiteto conhecer de mais de uma dada tecnologia, se seu time não conhece, não tem fluência? Adianta se ele capacitar o time. Senão, adianta absolutamente nada. (Porque não adianta um arquiteto decidir por uma dada tecnologia se o time não conhecer essa tecnologia.)

Também é importante que todo arquiteto tenha plena certeza de que NÃO EXISTE A BALA DE PRATA. Entendeu? Não? Vou repetir: NÃO EXISTE A BALA DE PRATA!

Vou falar mais sobre os 7 Hábitos e o papel do arquiteto num próximo post.

3- JAP 2.0, Emmanuel Bernard

Esse cara é o líder da implementação Hibernate da JPA, e também um dos participantes da especificação 2.0 da JPA. Isto além de ser líder do projeto Hibernate Search – que também rendeu palestra.

A palestra dele foi bem legal, deu para ver que eles estão trabalhando numas coisas interessantes para a JPA 2.0. Vamos esperar que tudo dê certo… =)

Uma das principais idéias da JPA 2.0 é expandir a API de forma a padronizar coisas que JÁ EXISTEM no Hibernate, para que também outras implementações tenham compatibilidade entre si; e cada vez menos teremos que usar recursos específicos do Hibernate.

Que venham esses novos recursos, porque depender de TopLink… é… deixa pra lá…

4- Domain-Driven Desig, Sérgio Lopes

Cara, essa palestra foi muito divertida. Muuuuito engraçada mesmo. Parabéns ao Sérgio pela criatividade!

Em termos de conteúdo, ele não pode se aprofundar muito, por conta do curto tempo para sua palestra. Como já estou trabalhando com DDD [num grande projeto] há pelo menos 10 meses, tinha anseio de ouvir coisas um pouco mais avançadas. Mas tudo que ele passou, de maneira simples e didática, creio que toda a galera conseguiu entender.

Paulôôô, da próxima vez, dá mais tempo pro menino!

5- Hibernate Search, Emmanuel Bernard

Essa me surpreendeu, porque eu não fazia muita idéia do poder dessa API. Caraca! O negócio é muito bom mesmo.

A idéia do Hibernate Search é literalmente GOOGLEAR suas pesquisas ao seu modelo de domínio. O que é isso? É você fazer aquelas pesquisas que o Google faz (por exatidão, por proximidade, por relevância, etc, etc, etc) no modelo de domínio (sim, objetos!) da sua aplicação. Seria uma full textual search em cima de objetos persistentes.

Com certeza vou estudar dar um estudada nessa API.

Ah! Acho que vale dizer que Hibernate Search usa recursos do Apache Lucene.

6- JRuby, Fábio Kung

Esta era a palestra que eu estava mais interessado em ver. Por quê? Motivos óbvios, adoro Ruby. JRuby então, vixi! =)

O Fábio falou principalmente sobre a experiência de estar desenvolvendo o GUJ on Rails, que é a versão 3.0 do GUJ (a maior comunidade Java da América Latina) totalmente desenvolvida com JRuby on Rails. Chapante!

E o benchmark? Esse foi de matar… O GUJ 2.0 (Pure Java) atende 20 requisições por segundo; o GUJ 3.0 (JRuby on Rails) atende 140 requisições por segundo.

Hammm… Alguém ai disse que Ruby é lento? É… A história se repete…

Tinha expectativa de ver uns códigos, o processo de deploy, etc. Mas de qualquer forma, valeu bastante a palestra. (Se eu já estava doido para colocar alguma coisa Rails no ar, agora estou completamente maluko!)

Bom, depois dessa palestra tive que ir embora, pois tinha um outro compromisso inadiável.

Agora, fora as palestras que foram muito legais, o evento também serviu pro famoso network, ou troca de idéia, ou o que você queira chamar.

Conheci pessoas novas, como o Tony, que trabalha num time Scrum na Abril; o Guilherme Chapiewski, que é ScrumMaster/Tech Lead na Globo.com. E também reencontrei uns caras que não via há um tempo, como o Fábio Akita.

Enfim, valeu de mais o evento!

Mais uma vez, Caelum: Parabéns!

Fui…

Ubuntu, eu também!

Ah!!! Até que enfim!!! Instalei o Ubuntu 8.04 no meu [notebook] Toshiba STI Dual-core 1.73Gb, etc, etc, etc… blá, blá, blá… que alegria!!!

Já tinha tentado instalar a versão anterior, mas não deu certo, porque não havia suporta à minha placa de video. Mas, graças ao bom Deus, agora estou escrevendo este post do meu Firefox on Ubuntu.

Bom, é isso… queria muuuuito contar esta novidade… só isso…

(Agora só preciso arranjar um adesivo do Ubuntu pra cobrir o do Vista que veio no note.)

Até mais!!!

Falando em Java 2008

Dia 18 de Maio acontece a 2ª edição do Falando em Java, evento promovido pela Caelum.

Esse ano, entre outras “atrações”, o evento traz [dos EUA] Emmanuel Bernard, líder da implementação JPA do Hibernate e membro do time de especificação da JPA 2.0. Sem dúvida alguma, uma palestra imperdível.

Além desse figura, outras também muito tarimbadas da comunidade brasileira: Paulo e Guilherme Silveira, Alexandre Magno, Fábio Kung, entre outros.

Com certeza, eu vou!

A gente se vê por lá…

Há quanto tempo?

Mais de dois meses se passaram desde meu último post. Quanto tempo, não? É, pois é… Andei mesmo muito ocupado desde 14 de fevereiro, por isso estive sumido. I’m so sorry!

Mas então, o que fiz de bom nesse tempo todo?

Fiz um excelente curso de Scrum na Caelum, com o Alexandre Magno. Com certeza valeu cada centavo e tempo que gastei investi nesse treinamento. O Alexandre é um cara muito experiênte em métodos ágeis; e também muito bom instrutor. No decorrer do treinamento pude identificar vários pontos a serem melhorados em nosso Scrum. Treinamento 100% recomendado!

Programei bastante em Ruby on Rails num projeto pessoal. Não é nada grande não, só um pequeno aplicativo pra atender a umas necessidades pessoais. Quem sabe quando ele estiver concluído eu não posto algo aqui. = )

Ministrei um treinamento de Java para Web em um centro de treinamentos situado na Vila Mariana. O lugar nem vale a pena citar, mas a turma foi show de bola. Volta e meia ainda troco e-mails com alguns deles. (Se estiverem lendo este e-mail, galera, valeu de mais!)

Trabalhei, trabalhei… e trabalhei muuuuito aqui na CVC Turismo. Foram Sprints e mais Sprints. Graças a Deus – e a muita dedicação -, tudo correu bem, cumprimos todos os nossos prazos, deixamos todos os nossos clientes felizes da vida. Aliás, ontem mesmo tivemos um Sprint Review, onde apresentei [a um grupo de desenvolvedores] a arquitetura concebida para o nosso novo projeto. Mais uma vez, sucesso total. Parabéns à equipe de arquitetura da CVC Turismo: Nosso time marcou mais um ponto!

Fora do mundo dos codes & bytecodes, também trabalhei – e ainda estou trabalho. (Gostaria que meu dia tivesse pelo menos mais umas 20 horas.)

Além de tudo isso, ainda dei um jeitinho de passar ótimos momentos com minha lindíssima esposa; ir ao cinema; assistir vááários episódios de Doutor House (essa é a nossa série do momento; minha esposa comprou as três temporadas); e ir ao show do KoRn no Palestra Itália.

Bom, é isso!

Espero poder postar umas coisas legais logo, logo.

Abraço!

Projeto Da Vinci Machine

A Sun caminha a passos cada vez mais largos em direção à consolidação da Plataforma Java como tecnologia de base para multiplas linguagens de programação, tal como a plataforma .Net da Microsoft. Assunto que abordei em um de meus posts recentemente.

Mais um grande esforço neste sentido é o projeto Da Vinci Machine, que visa facilitar a implementação de outras linguagens para a JVM.

New York Times/IDG: Sun’s Da Vinci Machine Broadens JVM Coverage.