Caros colegas,
Meu último relato de evento escrito para o Ensinar já continha o prenúncio para esse post (…Já estou em vias de escrever um novo relato, relacionado ao evento “Ruby + Rails no mundo real 2009″, que presenciei no último sábado (04-04-09) em companhia de alguns colegas de empresa... (06-04-09″)).
Enfim, “cá” estou para falar dele! ( e me desculpem mais uma vez pela demora dos relatos. Como diria Milton Neves, que o Fabrício Campos diz que é o melhor comentarista do Brasil, “O tempo urge pra mim!”)
Não esperem nesse post análises mais técnicas, pois não domino a linguagem e este foi meu primeiro evento relacionado a Ruby.
Panorama geral
O “Ruby + Rails no Mundo Real 2009“, como já foi dito, aconteceu em 04 de Abril de 2009 e o pessoal da Voice Technology estava presente, prestigiando e adquirindo conhecimento. Éramos eu, André Pantalião, Joemir Luchetta, Natália Freitas e Eduardo Zaghi. Foi muito bem organizado pela Tempo Real Eventos, com preço bem acessível no começo das inscrições (R$ 50,00), facilidade de acesso ao local, apostila, brindes e coffee-break. Fora a presença de palestrantes com alto nível de conhecimento em Ruby, como o Fábio Kung e o pessoal do Guru-SP. O evento respondeu as minhas espectativas, pois a maioria das palestras tinham conteúdo não muito técnico, facilitando o entendimento do assunto.
Palestras
Criando um Instant Messenger usando Rails – Vinícius Baggio Fuentes
Vinicíus, como já diz explicitamente o título, mostrou como se implementar um comunicador instantâneo usando Rails e o protocolo XMPP/Jabber. Sua introdução mostrou o motivo de “experimentar” Rails, pela sua rapidez de retorno de resultados, criatividade, liberdade de programação e o envolvimento e força da comunidade Rails. Após isso ele mostrou como realmente implementar o projeto (a “mão na massa”), com tópicos envolvendo troca de XML‘s pela rede, JID (Jabber ID), Autenticações, Web Services, Messages, possíveis integrações com outros serviços de mensagens (GTalk (que também usa XMPP), MSN, Yahoo! entre outros (protocolos proprietários)) e finalizando com Distributed Ruby (DRb). Gostei do conteúdo da palestra mas percebi que em alguns momentos o palestrante se mostrava inseguro para passar alguns conceitos, mas nada que pudesse prejudicar o resultado positivo da palestra.
Ruby, Rails e empreendedorismo – Hugo Lima Borges
Hugo apresentou a palestra, que na minha concepção, foi a mais interessante do evento, apesar de não ser apresentado um “case de sucesso” para embasar o assunto. Conseguiu unir o útil ao agradável, mostrando como são os meios de fazer empreendedorismo ná área de tecnologia e programação (da forma mais correta) e como unir isso a praticidade do Rails. Apresentou o panorama dos empreendedores no Brasil, com algumas informações interessantes:
- O Brasil é o 8º país, dentre 43, que mais empreende;
- O brasileiro geralmente é “aventureiro”, muito pela necessidade;
- Os que não se aventuram por necessidade tem medo de falhar;
- Nós somos movidos a fazer empreendedorismo muito mais pelo motivo de ser “eficiente” do que ser “inovador” e “gerador de tecnologia”;
Um livro indicado para o assunto foi “Start-Up” (Jessica Livingston), que não é difícil de adquirir.
Quais os passos para empreender? Eis abaixo:
- Procure fazer com que os outros assimilem as idéias. Tente começar por grupos pequenos, pois eles são ideais para “espalhar”;
- Faça “antropofagia”! Comece “comendo” idéias de projetos de sucesso;
- Mude ou inove com o decorrer do tempo, tendo o “timing” correto para implementação das idéias. Deixe as “Killer App‘s (aplicações suicidas)” para depois…;
- Não pense somente em software ou projetos open source, deixando os “softwares pagos” de lado, e vice-versa. Se usar open source então procure contribuir; se usar software pago procure pagar!
- Uma das alternativas para “se dar bem” : Rails! ;
Alguns outros poréns devem ser levados em conta, como meios de conseguir dinheiro (“3 F’s: Family, Friends & Fools”, BNDES, FINEP, FAPESP e o próprio bolso), conciliação de tempo e montagem de equipe (talentosos, marqueteiros, especialistas e etc.). Boa palestra Hugo!
Integrando Ruby e Java para facilitar a vida – Marcelo Castellani
Na verdade, essa palestra foi um “comparativo” de ferramentas ligadas a Ruby (toolkits), que podem auxiliar em um projeto Java. Foi muito mais uma mostra de quais são os desempenhos que cada uma tem, em diferentes sistemas operacionais, e qual a abordagem de desenvolvimento delas. As ferramentas apresentadas na palestra foram:
- FXRuby ( plataforma Windows e aplicado em ERP, IDE e aplicações OpenGL, por exemplo);
- Ruby GTK+ (ambientes GTK, como Ubuntu, OpenSolaris e BSD, e aplicado em criação de interfaces gráficas);
- RubyCocoa & MacRuby (plataforma Mac e aplicado a desenvolvimento de aplicações para o Mac OS X);
- Shoes ( qualquer tipo de plataforma (!), poderoso e praticamente aplicável para desenvolvimento de qualquer um dos tipos de aplicações já citadas acima).
Marcelo mostrou exemplos de códigos apenas no slide. Fiquei com o sentimento de “falta alguma coisa a mais”, como algum exemplo “real”, rodando para visualização do público. Fora isso não posso discutir o conteúdo de forma mais aprofundada.
Outsorcing, ou como trabalhar para as empresas gringas – Rodrigo Franco
“O Caffo”, como é conhecido na comunidade Rails, mostrou as vantagens e desvantagens de se trabalhar para os clientes gringos, nos mais diversos projetos e tipos de remuneração (agradáveis ou não, depende do seu ponto de vista).
- Vantagens: melhor remuneração; receber dinheiro em dólar; trabalho do programador brasileiro é bastante valorizado pelo gringos; custos menores com transporte, alimentação e vestuário; horário flexível no home office ( pode ser bom ou ruim, dependendo do fuso horáro e tipo de cliente a tratar) e melhor controle da sua produtividade;
- Desvantagens: o espaço de casa pode influenciar na produtividade, seja na aquisição de conteúdo de estudo ou no trabalho; dificuldade em mostrar trabalho;
Caffo explicou quais são as melhores maneiras de receber salário no Brasil pagando menos imposto (Pessoa física – 27.5%; Empresa – 7.5% e PayPal – 0%), e como “chamar” a atenção dos gringos para o seu trabalho, fazendo com que venham a existir mais recomendações de projetos para você ( faça um portfólio, participe de projetos open source, tenha um blog ativo e uma página com pessoas recomendando o seu trabalho). Trabalhar para consultorias virtuais ( Ex.: O’Desk e RentACoder ) são um bom modo de angariar fundos e reconhecimento na comunidade. A palestra foi muito interessante e deu um novo panorama para o pessoal que busca alternativas de trabalho no exterior, por mais que seja “home office”.
GlassFish on Rails: Escalabilidade e Confiabilidade – Maurício Leal
Foi muito mais uma palestra comercial do que explicativa ou técnica. Já tinha assistido uma outra palestra dele no “Profissão Java” (Tema: Como trabalhar com Java no exterior) que falava de um assunto parecido ao do Caffo nesse evento ; a anterior foi melhor e mais interessante. Fora a imparcialidade (“jabá” da SUN) ele explicou os conceitos do Glassfish (servidor de aplicação) e como ele vem evoluindo ao decorrer das versões EE (Enterprise Edition) do Java. O objetivo era mostrar como o Glassfish, dando suporte a Rails, pode trabalhar em conjunto com o Java permitindo escalabilidade e eficiência (Glassfish + Rails dá suporte a clusterização, gerenciamento de carga e alta disponibilidade). Para os interessados eu coloco os links mais interessantes da palestra do Maurício:
Acredito que o foco da palestra poderia ser mais direto, conciso e com mais conteúdo.
Só imaturos não testam – Carlos Brando
Carlos Brando fez uma apresentação sobre o porque, o quando e como testar em Ruby on Rails. O nome da palestra foi exemplificado com um trecho do filme “Stallone Cobra“, onde ele confronta um bandido dizendo duas frases marcantes: “Você é um imaturo, você é um cocô, eu vou matar você!” e “Você é a doença, eu sou a cura”. Com essa pitada de humor ele quis “linkar” a falta de maturidade do bandido frente a situação com a realidade daqueles que desenvolvem sem ao menos testar, seja no início, meio ou fim do processo. Após o introdutório ele colocou as 7 fases para se chegar ao nível de excelência no desenvolvimento. Veja onde você se encaixa e quais os passos a serem seguidos para se tornar um “desenvolvedor avançado”:
- Eu posso desenvolver qualquer coisa? (fase de participação em processos fáceis);
- Tem alguma coisa que eu não sou capaz de desenvolver? (fase de participação em processos difíceis);
- Eu posso corrigir isso? (fase onde a prioridade é a manutenção de código);
- É possível fazer algo sem que eu precise corrigir isso depois? (fase de questionamento);
- Talvez eu deva escrever alguns testes… (fase de procura de “verdadeiras” soluções);
- Eu vou testar isso, mas só depois de terminar de codificar (fase onde a “teoria da janela quebrada” está presente);
- Eu escrevo testes PRIMEIRO, e só depois eu codifico (Bingo! Meus parabéns, agora você é um desenvolvedor avançado!).
E quais as vantagens de ser um “desenvolvedor avançado” ? Se você escreve testes antes de codificar o seu código é melhor; você reduz o “código especulativo”, pois os requisitos e o que deve conter na aplicação já está descrito (nada mais, nada menos); você cria documentação (o terror dos desenvolvedores, seja em questão de software ou teste) e aumenta a qualidade do seu código. Esses preceitos ditados são a base do TDD e BDD. Como o Ruby detém ferramentas muito boas para testes e tem uma relação muito grande com o “desenvolvedor avançado”, é altamente indicado para desenvolver com rapidez e qualidade , além de ser usado para testar outras linguagens (Ruby testando Java, por exemplo). Ferramentas : RSpec e Remarkable, por exemplo. Finalizando sobre a palestra, gostaria de deixar os parabéns ao Carlos Brando pela ótima apresentação e dizer aos desenvolvedores: “Testem seus imaturos!” (rs).
O que é e como funciona o RubyLearning (mini-palestra) – Willian Molinari
Willian Molinari mostrou de uma forma simples e direta como funciona e o que é o RubyLearning, ferramenta de aprendizado que oferece cursos online para interessados em Ruby. Podem participar desde iniciantes na linguagem até conhecedores de nível intermediário ou avançado. Falou sobre seus fundadores, quem ministra o curso, o seu funcionamento, materiais de estudo, fórum e etc. Apesar de todo material ser em inglês, as pessoas que se consideram “ruim de inglês” conseguem “se virar”, pois o conteúdo é bem intuitivo. Para os interessados em informações mais completas, favor acessar a página do próprio Molinari, que é um dos mentores do projeto, e ver a sua apresentação comentada slide a slide.
Ruby, muito mais do que reflexivo! – Fábio Kung
Para aqueles que estavam esperando “conteúdo de verdade” sobre Rails, o momento tinha chegado (“Antes tarde do que nunca”!). Na minha opinião se fosse no começo do evento seria mais interessante, “prendendo” bem mais a atenção do público. Ficando para o final foi um pouco “cansativo”, depois de um dia todo de palestras. Mas Fábio deu ao público o que ele esperava : código! Mostrou muitos exemplos e ferramentas para análise e desenvolvimento, quase todos práticos. Foi uma palestra verdadeiramente técnica, mostrando o quanto Ruby é dinâmico, metaprogramável (código que gera código em execução, sem alterar o mesmo) e reflexivo. Como não tenho conhecimento suficiente para analisar desenvolvimento em Ruby e abordar de forma mais técnica o assunto, vou apenas enumerar as ferramentas apresentadas por Fábio nessa apresentação, e que são indispensáveis no auxílio ao desenvolvedor:
- SexpProcessor: análise e geração de relatório de código estático;
- Flog: análise de complexidade do código;
- Roodi: análise estática de código a partir de parâmetros pré-definidos;
- Heckle: roda testes no código, modifica o código e tenta falhar os testes escritos para o código, verificando se a cobertura dos testes está sendo feita;
- ParseTree;
- Rfactor;
- Ruby2Ruby;
- Ruby2Java;
- Ruby2Js.
Conclusão
Achei meu primeiro contato com Ruby proveitoso, devido as várias palestras conterem muitos pontos não-técnicos, facilitando a assimilação de conceitos. Os pontos negativos foram alguns palestrantes fazendo propaganda própria (“jabá” da empresa ou projeto no qual trabalham e desenvolvem) ou comentando de maneira imparcial a respeito de Ruby frente a outras linguagens (Java, por exemplo). Só porque algumas pessoas “ostentam” conhecimento de Ruby (em qualquer nível), tem um Mac e usam camisas de cunho “inteligente”, isso não dá a elas o direito de dizer que Ruby é superior, mais “bonito e “perfeito” que outros tipos de programação; ou que programar em Java, PHP, .Net ou outras linguagens é “feio”, não tem “estilo”. Quando você faz “crítica” a uma linguagem, na verdade você deve fazer em nível de análise de um ou mais pontos, e não fazendo piadas (pejorando). Acredito que deveria haver um respeito igualitário para qualquer tipo de linguagem. Todas tem suas qualidades e peculiaridades, cabe a cada um de nós escolhê-las.
Bom, espero ter respondido a expectativa de vocês. Abaixo coloco alguns links a respeito do evento:
Aguardem o próximo relato.
Até!