18
Rails não é solução para tudo
on December 18, 2008
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.





Comecei a usar Rails porque ele salvou a minha vida quando eu tinha apenas 3 semanas pra terminar um projeto. Antes eu usava Python, mas nesse caso, nem o Django me salvaria (porque eu precisava usar o ORM fora do contexto do framework).
Usando o Rails eu ganhava coisas com plugins que eu levaria dias pra escrever sozinho, mas confesso que quando chega a hora de manter essa base de código baseado em plugins, a coisa fica mais complicada.
Concordo com a linha de pensamento que diz que a linguagem é uma ferramenta que deve ser escolhida com base no que oferece de melhor, é polyglot-programming, uma coisa que o Ola Bini defende bastante. O blog dele é uma ótima fonte de conteúdo sobre esse tema.
Muito bom o artigo…e Ah..obrigado por responder minha qeustão em um post. =)
Gostei ! Mas o pior é que sempre existirão pessoas que irão achar q a tecnologia X irá milagrosamente salvar tudo. E tem mais pessoas por ae que acham que a tecnologia X vai subistituir a tecnologia Y …
Quanto ao dot net é bem legal, eu gosto muito. Só que tem q ser com os controles e persistência da devexpress… senão não é tão legal assim……
Eu sinceramente, acho o Rails uma framework muito bem desenvolvida, mas meu apego maior é pelo Ruby. Eu trabalho diariamente com PHP, mas também já mexi com projetos Java e .NET.
Eu sinceramente sempre digo que todas são boas, mas na questão de gosto pessoal, eu sou simplesmente fascinado pelas caracteristicas do Ruby, a meta-programação que ele oferece, a diversão que eu tenho programando em Ruby é muito maior que com as outras linguagens, eu hoje desenvolvo para minha empresa uma framework web, a qual eu tirei muitas idéias do Rails, mas as vezes me sinto limitado (ou até melhor, insatisfeito) com as limitações que o PHP tem… são coisas da sintaxe que simplesmente são impossíveis de fazer com o PHP, e na minha opinião isso limita muito o modo como eu usarei as bibliotecas que eu crio, e é exatamente nesse ponto que o Ruby me fascina, pois é a linguagem que realmente consegue dar uma drastica liberdade no modo de programar. E como o Akita disse, a comunidade do RoR também é fantástica, eu já vi muitos códigos de vários projetos em Ruby, e em sua maioria são muito bem escritos, onde você nota o alto nível do programador, diferente de PHP, que mesmo sendo uma linguagem onde se pode fazer grandes coisas, se você pegar códigos prontos em PHP, vai ver como existe um número incrível de códigos mau feitos (claro que também existem muitos códigos bem feitos em PHP, mas estatísticamente falando, o número de mau feitos é muito maior…).
E pra mim esse é o ponto, eu compro screencasts no peepcode, leio muito, mas na verdade nunca fiz 1 único projeto real com o Rails, mas espero estar fazendo em breve :)
Em 11 anos de programação, já programei em um bocado de linguagens, mas, profissionalmente, me envolvi bastante com Delphi no inicio da minha carreira, depois um pouquinho com ASP, na época em que comecei a desenvolver pra Web e, desde 2000, primordialmente com Java. Sempre gostei bastante de Java, mas não acho a coisa mais perfeita do mundo. Pelo contrário! :)
Comecei a mexer com Rails na ocasião do lançamento do seu livro – aliás, fui no coquetel na Fenac. Por quê? Porque achei a linguagem Ruby fantasticamente divertida! :) Mas também porque o framework se mostro pra mim totalmente diferente de tudo que eu já havia visto. Acho que não só pra mim, mas pra muita gente!
De lá pra cá vejo me divertindo bastante com Ruby, sempre que posso; e também com Rails. Mas meu trabalho principal, meu ganha pão, etc, ainda está em Java.
Se eu quero mudar isso? Não quero sair completamente de Java. Não mesmo! Mas queria variar um pouco mais… Programar profissionalmente um pouco em outras linguagens seria bastante interessante. Com certeza! :)
Esse ano comecei a brincar com Scala e Erlang. No futuro, quem sabe fazer algo profissa em alguma delas (sobre tudo em Erlang que curti d+).
Mas é como você falou… Tem que aplicar profissionalmente? Seria ótimo! Mas o que mais vale é ter uma nova visão sobre as velhas coisas. O que vale é ser um programador melhor em uma linguagem, depois de aprender outra. Isso é muito bom!
Queria fazer algo em .Net também… por que não?
Minha resposta coloquei aqui:
http://blog.areacriacoes.com.br/2008/12/18/rails-n-o-solu-o-para-tudo-resposta-ao-akita
Eu programa utilizando Delphi e estou muito feliz com ele. Vou do baixo nível ao altíssimo nível com a maior facilidade. Com o Delphi 2009 e Lazarus evoluindo do jeito que vem a vários anos acho difícil utilizar outra coisa. Tenho brincado com Python e C++(WxWidgets). Gosto muito do mundo Python(não grita nem susurra ) é sólido e com uma comunidade enorme. Gosto do Ruby e tenho resalvas quanto ao Rails que pra min não é apenas um sub-produto do Ruby.
É isso. Feliz Natal a todos
Eu comecei com Ruby por causa do Rails e de seu livro, mas não conseguia ficar confortável com Rails. Acho que principalmente pela existência de muitos “jeitos certos de se fazer tal coisa”. Isso travava minha mente e ao invés de tentar uma solução para pequenos problemas, eu ia atrás “da solução”, que lógico, não surgia.
Com certeza isso não é questão do framework, eu que não me acostumei.
Como depois de conhecer Ruby eu simplesmente não conseguia programar outra coisa (até larguei meu emprego onde não era possível vender inovação para o gerente), peguei Sinatra para um projeto pessoal e Merb nos projetos do trabalho atual.
Hoje (sim, sexta pré feriados de fim de ano) estou colocando em produção um projeto enorme utilizando Merb e para os próximos projetos, Merb vai ser a escolha até surgir algo mais legal.
Ótimo artigo Akita.
Sua postura está alinhada com a do David.Faz-se necessário ressalvas com relação a forma que Rails toma o imagínario dos desenvolvedores que ainda não o conhecem. Isto deve-se claro a comunidade, que no iníciopoderia ser comparada aos 300 de esparta, pessoas muito talentosas na áreas técnicas e nas áreas de negócios.Mas hoje esta mesma comunidade é mais colaborativa e mais voltada para o rails e seus membros do que para promover guerrilhas de imposição de idéias.
E outra coisa, não vivemos mais a gerra fria, e nem a bipolaridade de Java ou .NET somente. Acho que temos que nos acustumar que o futuro será uma babel de possibilidades tecnológicas e seguir uma tecnologia específica, certamente é um tiro no pé.
Abraços
Aprendi Rails porque precisei fazer um trabalho na faculdade com um prazo bem pequeno e me falaram que essa era uma ótima saída. Aprendi Ruby, usei no Rails e gostei. E o trabalho saiu… na madrugada anterior ao dia da entrega, mas saiu.
No entanto, eu penso como o Akita. Tanto as linguagens quanto os frameworks não passam de meras ferramentas na nossa mão, igualzinho à um martelo com um marceneiro. Conhecimento não pesa. Tanto faz C, C++, C# e VB.Net (que no post foram chamados de .Net o tempo todo…), PowerShell, Java, Python, Ruby, Javascript, SML, etc… Uso Windows no dia a dia, mas trabalho bem no Linux também… muito melhor que a grande maioria dos ubuntu-users que conheço. Linguagem, framework, SO, no final das contas, é irrelevante; mais importante é como você combina tudo isso para apresentar uma solução eficiente. Cada situação exige uma análise diferenciada, e quanto mais linguagens, frameworks e paradigmas você souber, mais opções vai ter pra escolher diante de um problema.
Só não pode parar no tempo e ter preguiça de aprender, sempre. As pessoas começam a errar no momento em que acham que sabem o suficiente.
Abraço,
Vinicius
Show Akita, legal você deixar bem claro essa questão. Já ouvi até aluno perguntando, no início de curso, se podia usar o Ruby on Rails para fazer algo para “TV Digital”. Isso não foi culpa do aluno, mas sim da imagem que o Rails tem: parece que ele é a solução para tudo.
Sempre deixo bem claro que o Rails é voltado para aplicações web, novas, dirigidas a bancos de dados. E, dependendo do que você for fazer, ele nem mesmo serve. Afinal, ele é específico, é um framework, e não um SDK.
Uso Rails porque ele serve para o que eu faço. Assim como também uso Ruby (sem Rails) em diversas soluções, porque ele serve para os propósitos e porque é a linguagem que mais tenho afinidade (então ganho tempo).
Apenas apoiando o comentário acima do Vinícius (http://viniciuscanto.blogspot.com/): Ruby e Rails são ferramentas. Agente usa elas para fazer um produto. Quando não servir, agente usa outra ;-).
Grande abraço!
Huuum….
Desanimador pra quem está começando com o Rails, mas ao mesmo tempo revelador.
Valeu Akita! :)
Esse aqui está em melhor qualidade
http://blip.tv/file/1555560
É a mesma apresentação porém em melhor qualidade.
Aprendi uma coisa muito cedo. Não goste de nenhuma linguagem. Rails de fato não é salvador da pátria mesmo…pq só faz uma coisa. Agora falar mal de Java é uma ENORME BESTEIRA. Rails não faz relatórios como o iReport e isso é um exemplo bastante idiota só para ter idéia de como Rails está bem atrás.