Três anos de Nome do Jogo

8 de fevereiro de 2010  |  Destaques  |  6 Comentários  | 

Foto de michele cat

Hoje completa exatamente três anos desde que comecei a escrever neste blog. São mais de 780 artigos publicados, 3.800 comentários e 19.000 spams recebidos e interceptados pelo Akismet.

Neste intervalo tive a oportunidade de publicar dois livros sobre as principais novidades das versões 2.1 e 2.2 do Ruby on Rails. O mais interessante é que o conteúdo de ambos os livros foram extrações de artigos escritos para este blog.

Outra fase muito legal foi o ano do Rails Podcast Brasil. Onde Fábio Akita e eu gravamos uma série semanal de podcasts com as novidades da semana no mundo do Ruby e Rails.

Para comemorar esta data especial, eu montei uma lista com os 10 artigos mais lidos nestes três anos.

Os 10 mais lidos

Além desses artigos eu gostaria de listar outros que considero importantes na história do blog:

Eu agradeço a todos os leitores, principalmente aqueles que comentam e compartilham os artigos no Twitter, você são o combustível para que eu continue pesquisando e escrevendo.

Como motivar um programador

8 de junho de 2009  |  Destaques, Opinião  |  46 Comentários  | 

O mercado de internet sempre foi super aquecido, e tem se tornado cada dia ainda mais competitivo. Lance um produto de sucesso e em poucos dias haverá dezenas de clones dele. Faça um exercício mental e tente lembrar dos últimos sites que fizerem barulho, agora tente enumerar a quantidade de projetos lançados com o mesmo conceito, mas tentando parecer um pouco diferente.

Lendo o excelente livro StartUp de Jessica Livingston, notei que mesmo o mais confiante empreendedor tem seus temores. Medo de que uma empresa com mais mais recursos produza um software igual ao seu e que consiga levar seus clientes. Mas o que se percebe é que na maioria dos casos, mesmo que o software da concorrência pareça melhor ou tenha sido construído por uma equipe com mais experiencia, normalmente vence a equipe mais apaixonada.

Está revelado o segredo. Para montar uma equipe vencedora, não procure o melhor profissional, procure o profissional mais motivado. Mas não basta somente contratar alguém apaixonado, é preciso manter acesso está paixão. Como?

Salário?

O salário parece ser sempre o principal motivo de descontentamento em uma empresa. É claro que quando estamos falamos de dinheiro, quanto mais melhor. Mas é um fato que bons programadores não levam o dinheiro tão a sério assim. Pessoalmente, eu conheço muitos bons profissionais que mesmo achando que poderiam estar ganhando mais dinheiro em outra empresa, se “sacrificam” para permanecer em um ambiente de trabalho que lhe agrade, onde ele talvez considere que está aprendendo coisas novas ou adicionando algo de valor ao universo.

Eu mesmo passei por uma experiencia parecida há um tempo atrás. Já estava há dois anos trabalhando em um mesmo projeto e havia perdido o interesse naquilo já fazia um bom tempo quando recebi uma proposta de emprego para receber pouco mais do que eu ganhava naquela empresa. Ao avisar que estava saindo, recebi a tentadora proposta de ficar e dobrar o meu salário. Não aceitei, porque não tinha mais a ver com dinheiro e sim com paixão e motivação.

Se quer resultados, desafie

Em meu trabalho com pessoas surdas, certa vez eu acompanhei um amigo em uma aula. Este meu amigo é uma pessoa de natureza séria, e como tal costuma tratar seus alunos com seriedade, embora seja um excelente professor e tenha um profundo conhecimento da língua de sinais (visivelmente maior do que o meu). Mas ele tinha um problema, seus alunos estavam com sérias dificuldades para entender algumas coisas muito simples. Diferente dele, eu costumo ser um pouco mais brincalhão em minhas aulas e me aproximo mais dos alunos. Neste dia, brincando com as crianças eu disse que quem errasse uma pergunta levaria um cascudo na cabeça, mas para cada pergunta certa eu daria um beliscão no professor deles. Adivinhem, tivemos um excelente aproveitamento da aula e não precisei dar cascudo em nenhuma criança. :)

O ser humano precisa ser desafiado. Pagar bem para um profissional fazer um trabalho desinteressante e sem valor não desperta paixão em ninguém. É por isto que uma startup, mesmo com uma equipe menor (e com salários menores também) muitas vezes conseguem competir com grandes corporações. É o desafio que motiva as pessoas a fazerem coisas grandiosas.

Programadores precisam ser desafiados

Não existe ninguém que goste mais de desafios que os programadores. Pegue um código escrito por alguém, e sem avisá-lo altere para deixá-lo mais rápido ou mais elegante, e você com certeza estará ganhando um inimigo mortal. Acho que os quadrinhos abaixo ilustram isto muito bem:

geek-hero-panel-1

geek-hero-panel-2

Alguns anos atrás eu trabalhei em um projeto onde havia um programador na equipe que já estava trabalhando para o mesmo cliente por algum tempo e já possuía um excelente domínio dos negócios daquele cliente. Sendo assim, ele assumiu a responsabilidade de escrever um código que envolvia uma regra de negócio um pouco mais complicada. Lembro que quando vi o código, pela primeira vez depois de pronto, levei um susto tremendo. O código era macarrônico e tinha quase 1.000 linhas. Era simplesmente incompreensível.

Por profundo respeito ao amigo, não comentei nada sobre o código na hora. Depois de algumas semanas houve uma mudança em uma regra que envolvia realizar uma alteração em algum ponto daquele emaranhado de código. Um outro programador da equipe assumiu o desafio. Horas depois ele desistiu. Como o pai da criança estava presente, ele acabou assumindo e resolvendo o problema.

Pressentindo que aquele código poderia se tornar um problema no futuro, o gerente do projeto solicitou ao programador que ele refatorasse o código afim de deixá-lo mais intuitivo e fácil manutenção. Embora ele tenha melhorado um pouco o código, não posso dizer que o resultado era o esperado.

Passaram-se mais alguns dias e mais uma vez tornou-se necessário alterar algo naquele maldito código. Desta vez, outro programador foi designado para fazer isto. Depois de um tempo tentando entender o que aquele código fazia ele também se cansou e após mostrar o código para o gerente do projeto e receber sua aprovação, ele começou a refazer o código de uma forma que todos pudessem entende-lo. Mas como o dia já estava chegando ao fim, ele deixou para terminar o trabalho no dia seguinte.

A surpresa foi que no dia seguinte ao chegar na empresa o programador original do código já havia refeito todo o código de uma forma muito mais inteligente. De alguma maneira ele soube que seu código seria refeito por outro programador, e ao invés de ir para casa ele passou a noite em claro refazendo todo o código. Somente após se sentir desafiado é que aquele profissional se motivou para fazer seu trabalho da maneira certa, e confesso que ele realmente conseguiu acertar.

Claro que existem formas mais elegantes de se desafiar um profissional, mas eu considero interessante analisar o efeito do desafio na vida de uma pessoa. No caso acima, o programador se privou do sono e do seu merecido descanso, afim de encarar um desafio.

Como motivar um programador? Eu acredito seriamente que o segredo está em dar um propósito a ele, incumbi-lo de um trabalho que tenha um verdadeiro valor, que acrescente algo de importante em nosso mundo. Eu quero deixar a minha marca no universo, quero ser desafiado, quero mostrar porque estou aqui. Me dê um desafio a altura e eu te mostrarei o que é paixão.

Só os imaturos não testam

6 de abril de 2009  |  Destaques, Opinião, Remarkable  |  5 Comentários  | 

No sábado passado aconteceu em São Paulo o primeiro evento organizado pelo Guru-SP, o Ruby + Rails no mundo Real 2009. Eu e toda a equipe do Ruby Inside Brasil estivemos presentes no evento. Você pode conferir uma cobertura completa das palestras no site.

Eu tive o privilégio de participar do evento como palestrante. Minha palestra foi voltada para o público iniciante/intermediário, e falei sobre como os testes são importantes para a evolução profissional de um desenvolvedor. Como não consegui entregar os slides antes do evento, eles não foram impressos nas apostilas distribuídas, então segue abaixo via SlideShare a minha apresentação. Logo deve sair os vídeos do evento!

Livro Grátis: Ruby on Rails 2.2 – O que há de novo?

19 de janeiro de 2009  |  Destaques, Meus Livros  |  24 Comentários  | 

Atendendo a pedidos: O segundo livro extraído deste blog:

livro_capa

Clique aqui para fazer o download

Como sabe já virou tradição por aqui lançar um livro para cada nova versão do Rails, e confesso que cada vez tem ficado mais difícil fazer isto, tanto que para conseguir lançar este segundo livro na data certa tive de fazer alguns sacrifícios.

Espero que você tire o máximo de proveito deste material, assim como todos os que compraram o livro já tiraram. É um livro feito com muito carinho que tem a intenção de mostrar todas as novidades da última versão do Ruby on Rails. O livro está recheado de exemplos, até mesmo para as funcionalidades mais simples.

Algumas pessoas sugeriram que eu colocasse um link de doação no site para que pudessem contribuir para a criação de futuros livros. Isto não é necessário no momento, mas eu agradeceria muito se você fizesse uma das quatro coisas abaixo:

  • Divulgar o link deste post em seu blog para que outras pessoas possam saber mais sobre este livro e sobre o Nome do Jogo.
  • Comunicar seus amigos no Twitter sobre o lançamento deste livro. Meu Twitter: @carlosbrando
  • Me recomendar no site Working with Rails.
  • Deixar um comentário.

Se desejar você também pode fazer o download do primeiro livro: clique aqui.

Italiano

Além da versão em inglês (paga) também já existe uma versão em italiano (grátis), feita pelo meu amigo Carlo Pecchia.

Capa

O responsável pela linda capa do livro é o Renato Carvalho, designer da Surgeworks.

Retrospectiva 2008

31 de dezembro de 2008  |  Destaques, Notícias  |  1 Comentário  | 

3148296014_f549b8c0e4

Último dia do ano e o último artigo publicado este ano. Nada mais justo então do que uma retrospectiva de tudo o que rolou por aqui e comigo neste ano de 2008.

Janeiro

O ano começou muito bom com uma série de screencasts sobre os mais variados assuntos, desde Edge Rails até microformats. Também foi neste mês que saiu o primeiro episódio do nosso querido Rails Podcast Brasil!

Fevereiro

Este foi o mês de lançamento do meu primeiro plugin, o Custom Resource Name. Eu sempre tive um pé no mundo open-source, mas a aceitação do plugin na época foi muito importante para mim, já que me motivou a entrar de cabeça neste mundo.

Março

Em março tivemos a primeira (e única) promoção no Rails Podcast Brasil #9, o sorteio de um cupom do Peepcode. Lembra-se?

Abril

Abril foi o mês do Git. Tivemos a mudança de todo o código fonte do Rails para o GitHub e logo em seguido o Rubyforge também começou a oferecer repositórios em Git.

Maio

Foi neste mês que me rendi ao twitter (para me seguir, clique aqui), que lancei meu primeiro gem, o Autotest Notification e que iniciamos a dura tradução do livro Why’s (Poignant) Guide to Ruby para português.

Junho

Junho foi um mês bem agitado para mim. Com o lançamento do Ruby on Rails 2.1, lancei junto com o Marcos Tapajós o livro “Ruby on Rails 2.1 – O que há de novo?” em português, totalmente de graça. E com a ajuda da comunidade brasileira lançamos o primeiro livro de Ruby on Rails 2.1 do mundo em inglês. Neste mês também lancei a versão Doom Edition do meu gem Autotest Notification.

Julho

No mês de julho comemorei o 500º artigo deste blog. O lançamento do livro sobre Rails 2.1 foi um sucesso e foi publicado em 7 línguas diferentes. Também tivemos o anúncio do Rails Summit Latin America.

Agosto

Descobrimos que a idade média dos programadores Rails no Brasil é 24 (ui…) anos. Alguns artigos notáveis deste mês tiveram por tema: “Porque eu defendo o Shoulda” e “Não abrace a sua ignorância“. Também saiu a tradução do livro sobre Rails 2.1 em espanhol, completando 8 línguas.

Setembro

Anunciei que estaria ministrando o novo curso da e-Genial sobre Ruby on Rails 2.2. Outro artigo digno de nota neste mês foi o “Por que o salário dele é maior do que o meu?“.

Outubro

O maior destaque deste mês ficou para o 1º Rails Summit Latin America. Eu também palestrei com o tema “Meu emprego foi para os EUA“. Tivemos vídeos enviados por personalidades do mundo Rails e dois episódios do Rails Podcast Brasil sobre o evento. Neste mês também foi lançado o release candidate do Rails 2.2 e também o meu segundo livro “Ruby on Rails 2.2 – O que há de novo?” em português e inglês.

O primeiro encontro do time da Surgeworks

O primeiro encontro do time da Surgeworks

Novembro

Merb 1.0, finalmente! Também lancei meu segundo gem o Remarkable, que começou como um fork do Shoulda para usuários do RSpec. Também tivemos um episódio do podcast especial sobre o Rails 2.2.

3126559191_e0e7277e4a

O novo logotipo do projeto Remarkable

Dezembro

Terminou o curso de Rails 2.2 da e-Genial e foi muito bom ver alguns alunos já criando seus primeiros projetos em Rails. Lancei o Remarkable 2.0.1 totalmente reformulado e chegamos a 99,9% da tradução do (Comovente) Guia de Ruby do Why. E para fechar o ano com chave de ouro tivemos o anúncio da fusão entre o Rails e o Merb.

Que ano!

Remarkable 2.0.1 e Atualização do (Comovente) Guia de Ruby do Why

Remarkable 2.0.1 e Atualização do (Comovente) Guia de Ruby do Why

19 de dezembro de 2008  |  Destaques, Meus Livros, Open Source, Remarkable, Ruby  |  8 Comentários  | 

Desde que lancei a primeira versão do Remarkable tenho visto cada vez mais pessoas aderindo ao projeto para criar seus testes com maior rapidez. E com uma quantidade maior de pessoas usando nas mais diversas aplicações é claro que os bugs começaram a aparecer.

A maior parte dos problemas ocorriam por uma falha na arquitetura inicial do Remarkable, o que tornou necessário um refactoring no projeto inteiro para estruturá-lo melhor. Na primeira versão, internamente havia uma separação muito clara entre as duas sintaxes que o projeto oferecia. Com a reestruturação não existe mais esta separação, não importa qual é o seu estilo, RSpec ou Shoulda, internamente você sempre usará o mesmo código para realizar os testes.

Desta forma, acabamos por ganhar muitas macros novas.

Enquanto na versão em RSpec isto já era algo comum:

describe Dog do
  it { should belong_to(:user) }
  it { should_not have_many(:fleas) }
end

Na sintaxe do Shoulda apenas possuíamos macros should_[alguma coisa] e quase nenhuma should_not_[alguma coisa]. Mas agora todas as macros possuem as duas opções, assim:

describe Dog do
  should_belong_to :user
  should_not_have_many :fleas
end

Além disso mais testes foram adicionados para garantir que problemas antigos não voltem para nos assombrar.

Para atualizar o Remarkable, execute no terminal (lembrando que no Windows não precisa usar o sudo):

gem sources -a http://gems.github.com
sudo gem install carlosbrando-remarkable

Ainda falta um logo e um site para o projeto. Alguém se habilita?

O (Comovente) Guia de Ruby do Why

wixl-9

Acabei de atualizar o livro com novas traduções e correções. Devido a minha falta de tempo, acabei demorando para aplicar alguns dos patches que me foram enviados.

Na maioria das vezes, os colaboradores são rápidos demais e várias pessoas corrigem o mesmo texto de formas diferentes, e isto complica um pouco na hora de aceitar uma atualização. Eu tenho de olhar arquivo por arquivo antes de decidir qual será aplicado. Mas isto é bom, porque garante uma maior qualidade à tradução, embora torne o processo um pouco mais lento.

O livro pode ser encontrado na url: http://why.nomedojogo.com. Também existe uma versão para impressão em http://why.nomedojogo.com/print.html.

A processo de tradução já foi finalizado, todo o livro já está em português. Ainda falta ajustar algumas imagens e formatações de texto, mas acredito que se conseguirmos mais colaboradores teremos o livro completo e finalizado até o fim do ano.

Quer ajudar? Comece lendo o livro e quando encontrar algo errado altere aqui.

Shoulda for RSpec is Remarkable!

18 de novembro de 2008  |  Destaques, English, Open Source  |  23 Comentários  | 

For a long time I was evangelizing Shoulda at Surgeworks and used it in my personal projects. The fact is, I didn’t have much success in convincing my co-workers to adopt Shoulda. On the other hand, they managed to convince me to learn and use RSpec.

RSpec is a very interesting Testing Framework. But I start to like it more after I started to use the Cucumber.

The great thing about Shoulda is that it’s simplifies tests for trivial things.

I got to like RSpec more and more, so I decided to adopt it as my official testing framework from now on. But I can no longer live without the resources that Shoulda offers me. So I decided to scratch my itch.

Remarkable

Initially, the main objective of Remarkable is to port all Shoulda macros to RSpec, but of course the plan is more ambitious than that. I have other ideas that will hopefully be especially useful for Rspec users.

At this point you may ask: “But aren’t there already plug-ins that do the same thing, such as skinny and rspec-on-rails-matchers. Why build something else?”

First, this isn’t simply “another” plugin with RSpec matchers. It also does a lot of things differently that I feel are better than other approaches.

Here are some of the things that make Remarkable special:

  1. It is not a plug-in; it’s a gem.
  2. All currently Shoulda macros are ported to RSpec.
  3. It has two different test syntaxes: one for those who like the RSpec style and another for those who are migrating their projects from Shoulda to RSpec.
  4. Tests.
  5. More tests.
  6. And a few more tests.

Unlike other similar projects, Remarkable is the only one that tests itself, and this is a big difference, believe me! How can we trust in a project that has no tests? How can you develop an open-source project with no tests? How do you ensure that the last commit didn’t break anything?

Install

Install Remarkable is very easy. It is stored in GitHub, so if you have never installed a gem via GitHub run the following:

gem sources -a http://gems.github.com

Then install the gem:

sudo gem install carlosbrando-remarkable

In RAILS_ROOT/config/environment.rb:

config.gem "carlosbrando-remarkable",  :lib => "remarkable", :source => "http://gems.github.com"

Using

All Remarkable macros can be accessed in two different ways. For those who prefer the Shoulda style, let’s look at some model tests:

describe Post do  fixtures :all

  should_belong_to :user  should_belong_to :owner  should_belong_to :user, :owner

  should_have_many :tags, :through => :taggings  should_have_many :through_tags, :through => :taggings  should_have_many :tags, :through_tags, :through => :taggings

  should_require_unique_attributes :title  should_require_attributes :body, :message => /wtf/  should_require_attributes :title  should_only_allow_numeric_values_for :user_idend

Like Shoulda, right? That’s the idea! This syntax is for those who wish to migrate their Shoulda tests to RSpec. You basically just have to change context to describe and wrap your should statements with it {}.

But if you don’t like this syntax, you can also create the same tests as follows:

describe Post do  fixtures :all

  it { should belong_to(:user) }  it { should belong_to(:owner) }  it { should belong_to(:user, :owner) }

  it { should have_many(:tags, :through => :taggings) }  it { should have_many(:through_tags, :through => :taggings) }  it { should have_many(:tags, :through_tags, :through => :taggings) }

  it { should require_unique_attributes(:title) }  it { should require_attributes(:body, :message => /wtf/) }  it { should require_attributes(:title) }  it { should only_allow_numeric_values_for(:user_id) }end

Now with an RSpec style!

Macros

Here are all the available macros:

For Shoulda style, click here.
For RSpec style, click here.

Finalizing

This project has already reached the first goal, which was to port all Shoulda macros to RSpec. This has been done with great care and attention to detail, and I have tried to write lots of tests. But there is no substitute for using it in real life and finding areas that could use improvement.

Please use Remarkable and help me to make it even better!

Rails Podcast Brasil – Episódio 36

5 de novembro de 2008  |  Destaques, Podcasts  |  6 Comentários  | 

De volta a nossa programação normal, um podcast com as últimas noticias desta e da última semana. Neste episódio falamos sobre o Rails Rumble, a polêmica do Nokogiri, Paperclip, o novo gem de autenticação Authlogic e CouchDB.

Estamos preparando um episódio especial sobre o Rails 2.2, em breve!

Neste Episódio

Download: Episódio #36
iTunes: http://podcast.rubyonrails.pro.br/rss
Episódios anteriores: http://podcast.rubyonrails.pro.br/

Novo livro e screencast: Ruby on Rails 2.2 – O que há de novo?

24 de outubro de 2008  |  Destaques, Meus Livros, Rails 2.2, Vídeos  |  38 Comentários  | 

Já faz alguns dias que estou batalhando para publicar mais um livro sobre o Ruby on Rails 2.2, assim como fiz no começo deste ano com a versão 2.1. Vocês não imaginam o trabalho que dá analisar cada commit realizado no Rails, testar as novas implementações e documentar isto.

Tentei de todas as maneiras conseguir um patrocinador, alguma empresa interessada em promover o livro, que pudesse me financiar para escreve-lo, já que este é um trabalho que consome muitos dias. O máximo que consegui foram algumas empresas oferecendo uma miséria em troca de propaganda.

Foi quando Gregg Pollack me procurou e sugeriu juntarmos este livro e o seu novo screencast do Rails 2.2 e vendermos em um pacote promocional. Não preciso dizer que aceitei!

Neste momento já está disponível para compra o meu livro “Ruby on Rails 2.2 – O que há de novo?” em português e inglês (traduzido por Carl Youngblood) por 9 dólares no site do Envycasts. Você também pode comprar o pacote promocional que vem com as duas versões do livro e mais um screencast gravado pelos engraçadissimos Gregg Pollack e Jason Seifer, por apenas 16 dólares.

O livro (120 páginas) cobre todas as principais novidades do Rails 2.2 e está recheado de exemplos para que você possa testá-las. Se você costuma acompanhar a série Edge Rails deste blog, com certeza vai gostar do conteúdo do livro, que contém muito mais do que já foi publicado por aqui.

Rails Podcast Brasil – Episódio 35 (Especial Rails Summit #2)

23 de outubro de 2008  |  Destaques, Podcasts  |  24 Comentários  | 

Se você ainda não ouviu a primeira parte deste podcast, clique aqui.

Conforme prometido a segunda parte do especial Rails Summit no Rails Podcast Brasil. Este episódio já começa com a leitura da palestra de Chris Wanstrath, que fechou o primeiro dia do evento e comentários sobre a desconferência que rolou no mesmo dia.

Na sequencia comentamos sobre o segundo dia de palestras e o que rolou depois do fim do evento!

Não sei porque mas o site oficial do podcast está fora do ar, por isto coloquei o episódio no meu servidor, então se você costuma usar o iTunes para ouvir o Rails Podcast Brasil e não quiser esperar até que o site volte, terá de fazer o download por aqui mesmo usando os links abaixo.