segunda-feira, 11 de maio de 2009

NerdAndGeek on Rails na Caelum

Eu já tinha uma pilha de livros de Ruby e de Rails para ler.

Mas sabe quando nunca dá tempo, ou pq vc tem que ficar correndo atrás do preju de Java e Scrum, ou pq vc viu programação o dia inteiro e só quer passar o fds na farra? Pois é.

O problema é que vc compra uma série de livros, coloca tudo no backlog, prioriza, mas conforme a carruagem anda, as prioridades vão mudando com o que é urgente para o momento, e RoR sempre ficava para depois.. =\

Mas dessa vez, surgiu uma oportunidade e fiz o treinamento de Ruby on Rails na Caelum ministrado pelo (excelente) Fábio Kung.

<-- Sou totalmente adepto ao auto-aprendizado, e acho que não é preciso nenhum curso para se aprofundar em nenhum assunto, porém, devo confessar que fazer um curso, assinar um contrato e, principalmente, pagar o curso, nos força a tomar uma atitude de, no mínimo, ir ao curso e aprender! Logo é uma maneira de nos forçar a estudar. Tendo tempo ou não! rs.. --!>

Sabe akelas aulas que vc fica com sono, e não sabe quando vai terminar e fica bocejando, navegando no Orkut, só ouvindo besteiras do instrutor e quando sai da aula vc pensa: "porque diabos estou perdendo meu tempo com isso?"?

Pois é, não é assim!

Vc fica vidrado, nem vê o tempo passar e quando sai vc pensa: "cara, foi do cacete!"! =)

É um treinamento de duas semanas, onde a primeira é focada no Ruby e a segunda no Rails.

Mas não pense que fica nisso não, viu! Pq todo dia é uma aula de POO, arquitetura, história da programação, dicas de excelentes livros, patterns, boas práticas e muito, muito mais!!!

Vou comentar brevemente sobre o treinamento (juro que não estou ganhando nada por isso! rs..)

O ruby?
puts "caraca!"
Nossa, como é gostoso aprender uma nova linguagem de programação, totalmente diferente das linguagens que agente está habituado como Java, C# e etc. XD

Ruby - se diz "rubi" e não "rãbi" - é muito diferente de Java e C#, absurdamente orientada a objetos e feita para ser estupidamente fácil de ser lida.

Para se ter uma idéia da legibilidade, segue um exemplo muuito legal: (baseado no exemplo do blog do Fábio Kung):
contaOrigem = Conta.first
contaDestino = Conta.last

transferir quantia: 10, de: contaOrigem, para: contaDestino
Agora me diz: quanto milissegundos vc demorou para entender o que esta acontecendo aí em cima?

Acredite ou não, essa é uma chamada de um método com argumentos e tudo!

Sem palavras, né? =D
Outra característica muito interessante é ter a tipagem dinâmica e fraca! Cara, que característica estranha (muito) num primeiro momento.

Suas raízes funcionais também causam espanto, para quem não está acostumado (como eu).

Mas o que eu achei mais da hora, é o fato de ela não ser baseada em classes, como Java, C# e etc.

Ah não! Outra coisa que é mto dahora é como ela é dinâmica! Vc acrescenta comportamentos e atributos aos objetos a todo momento. Durante a execução. D+

Poutz, são tantas coisas da hora que é difícil resumir em um único post. =/

O rails?
Abracadabra!

Essa história de "convenção sobre configuração" torna o desenvolvimento no rails extremamente rápido. A idéia é simples: o que era para ser pensado sobre ambiente, estrutura e etc já foi pensado e vc se concentra no desenvolvimento do que realmente importa: as funcionalidades!

Ele já é MVC por padrão, já pensa em três ambientes para vc (dev/homologação/produção), já fornece os artefatos necessários para - e incentiva inclusive - o TDD e isso tudo só é o começo.

Vc pode até apelar nele se quiser, mas no final é mais gostoso fazer "na mão"! E por "na mão" entende-se "fazer metade, ou menos, do que faria com Java/C# etc para fazer o mesmo"! =P

algumas IDE's interessante para ele, que 'facilita' algumas tarefas, mas eu gostei mesmo foi de fazer o curso no gedit customizado mesmo! =P

O ActiveRecord é animal, e aquele eskema do Rails de tratar o Method Missing das Entidades para montar uma consulta a partir da chamada do método é de outro mundo!! =D

Caraca! Mas RoR é só maravilha assim?

Bom, como o Fábio
costuma dizer durante o curso: "não é o caso de melhor ou pior, é mais uma questão de vantagens e desvantagens".

Tanto na questão de que "se RoR é adequado para o meu projeto" quanto em questões mais de baixo nível como: "ah, quer dizer que eu tenho que 'criar a tabela' antes da classe?". Pois é. Demora um pouco para acostumar.

O Fábio costumava dizer que o Rails não esconde que vc está trabalhando com um banco de dados. E isso é meio estranho para quem está acostumado com Hibernate's da vida.

Outra coisa que demora um pouco para acostumar de alguem que vem do mundo dos Hibernate's, são as migrations. É que agente acaba acostumando a nem tocar no banco de dados (o hibernate cria/atualiza tudo automaticamente, mesmo..)

E a escola? E o
instrutor?
A Caelum sempre tem um atendimento rápido e eficiente. A sala é boa, tem um quadro enorme, o coffe-break é ótimo (custo/benefício) e, o mais legal: as máquinas são todas boas e ubuntu! =D

O Fábio Kung é dakeles caras que começaram a programar com 12 anos de idade. Já viu né?

Quando vc acha que está manjando tudo da sua linguagem preferida, ou entendendo tudo sobre Patterns, ou mandando bem em POO, vc precisa ter uma aula com o Fábio! E vc vai ver o que é mandar bem de verdade!! =)

Quando o Fábio começa a despejar 3% do seu conhecimento como, por exemplo, sobre programação funcional, vc pensa "cara, e eu pensando que sabia programar!" hauhauha!

Ok, o mais importante, é que ele tem uma didática muito boa e tem o domínio (pratico e teórico) sobre o assunto e tudo o que o envolve!

E vale a pena?
IMHO, o curso vale cada centavo e tempo investido!

É uma linguagem que está em alta no momento, com grande procura e com cases de sucesso bem legais.

É totalmente Orientada a Objetos (alguns dizem que é mais que Java/C#, etc..) e o rails segue vários padrões de mercado, além de ser fácil e pragmático.

Claro que é sempre mais proveitoso se vc já tiver um conhecimento inicial sobre o RoR, POO e etc.

Porém, se vc está pensando em começar com programação e tem algum conhecimento de web, algum conhecimento (mínimo) de POO, já tem um mínimo de lógica de programação esse curso também serve para vc!!

Vc verá POO a fundo (passo a passo se for o caso), arquitetura, padrões e etc!

E vc estará aprendendo com alguem quem realmente entende do assunto, não com akele seu outro professor que acha que a herança é a característica mais importante da OO. =/

É isso!

Marcadores:

0 Comentários:

Postar um comentário

Assinar Postar comentários [Atom]

<< Página inicial