Rails não é solução para tudo

2008 December 18, 11:03 h

Vou me repetir sobre o que eu já disse em outro artigo, porque muita gente ainda não entendeu: Ruby on Rails não é a salvação que muitos pensam. Isso é bem óbvio, mas o próprio DHH resolveu dizer isso. Assistam a apresentação que ele deu na RailsConf Europe, em Berlim, este ano:


David Heinemeier Hansson’s keynote at RailsConf Europe 2008.

Essa apresentação se chama Legacy Software. Muita gente entra de cabeça em Ruby on Rails acreditando que ele é o Salvador da Pátria. Basta usar Rails que as aplicações serão magicamente perfeitas. Nada feito em Rails se torna “legado”. Legado é Java, PHP, etc.

Esse é exatamente o jeito errado de se pensar sobre Rails. Eu repeti isso em muitas das minhas palestras e pelo visto o DHH ouve as mesmas coisas por lá. O importante não é o Rails: é quem faz uso dele e como. E não tem jeito: todo software sempre vai virar legado. E isso tem que acontecer porque hoje, você faz o melhor software que consegue e para você está perfeito. Mas amanhã, você já aprendeu dezenas de coisas novas, e olhando de volta, é claro que você não vai gostar do seu código antigo. Pensará “porque eu fiz isso desse jeito se hoje tem maneiras melhores?” O você de hoje sempre será pior que o você de amanhã. Rails é uma ferramenta que vai ajudá-lo a resolver alguns dos problemas de hoje, mas isso não o torna capaz de prever os de amanhã. Para que seu código não se torne um daqueles legados horríveis, ele precisa evoluir junto com você.

Estou falando exatamente do caso onde alguns acham que tudo tem que ser resolvido com Rails. Como eu já disse também, um especialista numa coisa só, é simplesmente um amador em todas as demais. A entrevista que fiz com o Ola Bini em São Franscisco (Parte I e Parte II) tinha como objetivo justamente mostrar todas as coisas legais que existem em outras linguagens. Saber apenas uma coisa é a velha história de “quando tudo que você conhece é um martelo, todos os problemas parecem pregos.” Pelo mesmo motivo, um ano atrás, eu entrevistei dois não-Railers: Avi Bryant e Adrian Holovaty.

Por outro lado, claro, é muito difícil virar especialista em muitas coisas. Você normalmente tem uma plataforma favorita onde é mais fluente, mas o truque é não virar as costas para o resto e, frente a um novo problema, sempre avaliar qual a melhor forma. Um amigo meu costuma usar SWOT para fazer esse tipo de avaliação.

Numa linha parecida, me perguntaram num comentário o que eu acho de .NET? Pessoalmente, eu considero uma linguagem mais bonita do que Java. Aprendi .NET em 2000 quando, se não me engano, ainda era Beta 1. Usei até 2003, embora tenha usado pouco ASP.Net em si, mas o desenvolvimento desktop e o Compact Framework porque fiz uma solução mobile.

Mas tenho muitas restrições. É um pouco do que o Richard Stallman reclamava do Java até pouco tempo (sim, também considero ele um extremista :-), chamando de Armadilha Java. A mudança para Free Software (OpenJDK) amenizou isso. No caso do .NET isso ainda não aconteceu e provavelmente nao vai acontecer. Meu receio? VB6 e ASP se tornaram plataformas mortas. Quando eu usava elas, entre 1998 e 2000 ninguém pensava que isso fosse acontecer. Muito software feito sobre essas plataformas terão que ser reescritas se quiserem evoluir mais e cada vez mais vai rarear quem sabe dar manutenção nelas. Se fossem abertas, na pior das hipóteses, uma pequena comunidade interessada poderia ter continuado a evoluí-las. Isso não é exclusivo da Microsoft. Nos anos 80 eu usava dBase e Clipper, depois Paradox. Elas também já se foram. Delphi, que eu usava desde 1997 também está mais para lá do que para cá. Entenda-se: as comunidades se foram. Tirando esse ponto, tecnicamente tem outro problema: ser obrigado a desenvolver no Windows. Nesse caso é mais gosto pessoal.

Finalmente, há quem pense que tudo que se aprende de novo tem que ser aplicado na prática para se ganhar dinheiro rápido. Seria o ideal, mas o objetivo de aprender algo novo não é esse. Aprender Erlang, por exemplo, dá novos horizontes no seu pensamento como programador em linguagens até como Java. Não quer dizer que seu próximo sistema tem que ser em Erlang.

Como evangelista, muita gente deve pensar, erroneamente, que eu defendo Ruby on Rails a qualquer custo. Muito pelo contrário ;-) Quem já assistiu uma de minhas palestras ao vivo sabe disso. Quem só fez o download de alguma delas no SlideShare pode ter perdido o contexto (minhas palestras só fazem sentido quando eu estou falando). Um dos slides tem uma imagem dizendo Java Evil Edition. Fora de contexto parece que estou falando mal de Java. É o contrário: essa é a parte onde eu digo: “e para quem acha que eu, como evangelista Rails, vou falar mal de Java, .NET, etc está enganado: esse é o jeito errado de se evangelizar qualquer coisa.”

Então, para quem é Ruby on Rails? Sempre partindo da premissa que você investiu um pouco de tempo aprendendo Ruby, aprendendo Rails, é para pessoas que querem desenvolver aplicações web no estilo 37signals. Não é qualquer aplicação web, é um subset menor. Rails é principalmente para quem gosta de estar na comunidade Rails. Quem não gosta deveria desistir do Rails, porque parte do que é legal é justamente a comunidade. Se não se está nela, vejo poucos motivos para continuar. Claro, há quem não goste de Rails mas ganha dinheiro com isso. É um motivo válido, também já usei tecnologia que não gosto por dinheiro, por outro lado nesse caso eu não discutia publicamente sobre isso.

Isso é outra coisa que digo nas minhas palestras: boa parte do que é legal no Rails, é sua comunidade. Nós somos todos seres humanos, não somos perfeitos. Já vi muita discussão sem sentido na lista, mas pelo menos vejo que ela é bem ativa e empolgada. Também, ao contrário do que muitos pensam, os Railers não são tão extremistas mesmo quando evangelizam. É o contrário: os detratores de Rails sempre são mais barulhentos (de onde acham que vem o repetitivo “Rails não escala”? – aliás, não deixem de assistir a palestra que o Koziarski deu na Paris on Rails sobre performance este ano). Os Railers demonstram onde o Rails é bom, não mais onde os outros são ruins. E é justamente assim que um evangelista tem que fazer.

Na Locaweb, por exemplo, temos várias equipes, uma usa Java, outra PHP, outra .NET, tem até ASP antigo e uma nova equipe usando Rails. Minha equipe Linux escolheu Python. Obviamente, não tenho nenhum problema em nenhuma dessas escolhas. Cada uma teve seu motivo. Novamente, como evangelista Rails, muita gente lá deve ter imaginado que eu ficaria pregando cegamente que deveriam estar usando Ruby ou Rails. De jeito nenhum. Eu falo de Rails para quem está interessado. Estou usando Rails onde acho que faz sentido. Todas decisões conscientes.

Eu também não sou perfeito, às vezes sou bem agressivo, mas também, quem não é? ;-) O importante é que estou sempre aberto a discussões. Quero ouvir de vocês: por que vocês usam Rails hoje? O que foi que mais os atraiu? Agora que estão usando, o que estão achando? E quais outras tecnologias vocês usam e porque? Acho que será uma discussão interessante.

tags: obsolete rails

Comments

comentários deste blog disponibilizados por Disqus