Eu fico com a baleia

April 8th, 2009 § 23 comments

Essa história toda do Twitter me impressionou particularmente por um aspecto: como pessoas que jamais tiveram experiência com sistemas de grande porte acham que são capazes de dar opiniões completamente válidas sobre os mesmos (independentemente de que linguagem usam ou preferem).

Eu não vou ofender meus leitores dizendo que tenho vasta experiência no assunto, e também não vou cometer o erro de dizer que sei alguma coisa a mais do que um bom engenheiro de software saberia. Minha experiência mais recente com o assunto–atual, por assim dizer–é acompanhar o desenvolvimento de uma aplicação que no momento serve 60 milhões de page views por mês e cujo crescimento mensal tem sido constante pelos últimos meses.

Essa aplicação é escrita inteiramente em Ruby on Rails e olhando os desafios que manter, evoluir e operar essa aplicação representam, eu já tenho toda simpatia pelos engenheiros do Twitter. Manter uma aplicação do porte do Twitter no ar, com toda a complexidade distribuída que o núcleo do mesmo precisa é algo para se aplaudir.

O que torna mais impressionante como as pessoas são rápidas para assumir que o código do Twitter é uma completa porcaria. Mesmo que fosse–e mesmo assumindo que pode ser–as críticas nesse aspecto ainda são completamente inválidas. Por mais que uma aplicação acrua débitos ténicos, o balanço entre os mesmos e o valor entre ao usuário–que é inegável no caso do Twitter–é uma decisão de negócio inquestionável.

Martin Fowler fala muito bem desse balanço um texto seu sobre débitos ténicos:

The metaphor also explains why it may be sensible to do the quick and dirty approach. Just as a business incurs some debt to take advantage of a market opportunity developers may incur technical debt to hit an important deadline. The all too common problem is that development organizations let their debt get out of control and spend most of their future development effort paying crippling interest payments.

Do meu ponto de vista, o fato de que o Twitter experimentou com outras tecnologias, fez benchmarks de plataformas, procurou melhores soluções é uma indicador claro de que estão tentando resolver seus débitos. Pedir mais do que isso é assumir uma postura de arrogância e desconhecimento, principalmente de como negócios são operados e de como código real é produzido.

Admitir publicamente problemas e tentar criar um discurso é algo que respeito; dizer coisas do tipo “As far as I’m concerned, Twitter is a case-study in how Ruby on Rails does scale, even in their hands”, por outro lado, é algo que tira qualquer possibilidade de um discurso racional. Os fanboys e pundits da comunidade Rails tem muito do que se envergonhar no seu tratamento da questão.

Programadores não operam em mundos ideais. E até que os detratores do Twitter me mostrem que fizeram o seu dever de casa em lidar com essas questões, eu fico com o Twitter e sua baleinha simpática. Proper for humans, after all.

Tagged

§ 23 Responses to Eu fico com a baleia"

  • Jeveaux says:

    Parabéns pelo post, Ronaldo.

    É incrivelmente fácil sair criticando e descendo a lenha nos outros como a maioria tem feito, isso é algo que qualquer um pode fazer, é mediocridade.

    Não bastasse toda a polêmica que o Alex Payne gerou e toda discussão que isso está gerando, agora a pessoas querem atacar quem atacou ou quem deixou de atacar, é incrível como tanta gente que se diz ‘rubista’ e ‘da comunidade’ ainda deixam tão visível que o que querem mesmo é saciar seu enorme ego, mesmo que venham a cometer os mesmos erros dos quais estão criticando com tanto fervor.

    Parabéns mais uma vez, este, talvez tenha sido o post mais sensato que eu li durante todo esse ‘bafáfá’.

  • O Jeveaux usou a frase certa: “post mais sensato que eu li durante todo esse ‘bafáfá’”

    Muito bom mesmo, e o que da pra perceber é que o problema deles é maior que uma baleia..

    Abraços..

  • Concordo com os colegas acima.

    Eu particularmente ainda não tinha entendido pq ninguém havia escrito um post com esse pensamento.

    flw!

  • Davis says:

    “post mais sensato que eu li durante todo esse ‘bafáfá’” [3]

  • Aposto que o valor da marca Twitter duplica a cada vez que eles dizem algo como “Rails não escala”. Eu, pelo menos, continuaria falando que rails não escala, que ruby é lento, essas coisas. :)

  • Valdinei dos Santos says:

    bacana seu ponto de vista e acho que é compartiçhando com as pessoas que lheem seu blog.
    Fica a mensagem:
    “Enquanto alguns reclamam do problema, outros procuram a solução”

  • Rafael Rosa says:

    Salve,

    Não acho que o Akita está sendo precipitado ao dizer que o código dos caras é uma porcaria, ele não diz isso. Ele simplesmente diz que, da forma como o próprio pessoal do Twitter explicou o que fazem no código, estão fazendo coisas idiotas e erradas ao se trabalhar com linguagens dinâmicas.

    O ponto principal não é trocar Ruby por outra linguagem e sim os argumentos utilizados. Troquem pelo que quiserem, mas não culpem quem não tem nada a ver.

    A comunidade Ruby é minúscula se comparada a qualquer outra e o Twitter é uma referência sim, e os CIOs idiotas das grandes corporações (aqueles que tem dinheiro) ficam impressionados com notícias bombásticas, e não verificam os detalhes. Se não colocarmos as coisas em pratos limpos quem vai colocar? Se eles querem ir para Scala, boa viagem, usem a melhor ferramenta para o trabalho, só não deixem a bomba no nosso colo.

    Até mais

  • Ronie Uliana says:

    Sensato como sempre. Que mais eu poderia dizer?

  • Ronaldo says:

    Paulo, obrigado! O pessoal realmente tende a cair para o espectro polemicista da coisa. Qualquer assunto é motivo para discussão sem fundamentos e realmente nesse ponto o Payne tem razão em querer um discurso mais consistente. Eles são visados e qualquer coisa que falam gera múltiplas interpretações mas as pessoas exageram muito–principalmente pelo que você diz: ego.

    Flávio, obrigado! E sim, o problema deles é maior que uma baleia. :) Apesar de que muita gente quer um problema daquele tamanho. 😛

    Davis, obrigado! :)

    Vitor, duvido que faça alguma diferença. Quem se importa com isso é a comunidade Ruby/Rails zelote. O resto do mundo está pouco se lixando :)

    Valdinei, exato!

    Rafael, obrigado pelo comentário.

    Sobre o comentário do código ser porcaria, o Akita disse que o código deles é cowboy. Usando os outros artigos dele, é a mesma coisa que dizer que o código é ruim. E até que o Akita tenha visto o código real, ele não tem base para dizer isso com certeza. É um argumento falacioso. O próprio pessoal do Twitter dizer que o código é ruim já deve ser tomado com um grão de sal. Raramente alguém sai por aí dizendo que seu código é o melhor do mundo. Usar o exemplo que o Akita usa é um desserviço já que induz o leitor.

    Quanto aos argumentos, quase todos foram esclarecidos em outros comentários em outros blogs. Eu estava presente na palestra do Payne e ele simplesmente deu número. Ele não disse culpa ou nada. Foi, fizemos isso em Ruby e em Scala e Scala deu 3x de performance na tarefa em relação ao Ruby. Quem está falando que eles estão culpando o Ruby são os próprios rubistas.

    Finalmente, é um contra-argumento dizer que a comunidade é pequena e ao mesmo tempo dizer que o Twitter vai implodir o Ruby. A mentalidade de nós contra o mundo é uma coisa tão mesquinha e desnecessária que eu nem sei por onde começar a criticar. E se as grandes corporações forem para Scala e o Ruby sumir do mapa, que importa? Qualquer pessoa fixada em uma tecnologia só já está condenando sua carreira por definição.

    Ronie, muito obrigado! :)

  • RoadHouse says:

    eu só queria saber quem elegeu um ou outro como ‘comunity protector condom’ essa porra de defender “a comunidade” é coisa de quem não tem competência e que não se garante só pode, me lembra aquele episódio do chaves onde o professor girafales pergunta sobre uma soma de laranjas e o kiko responde que só sabe fazer com maças

    triste…

    …mentira é divertido 😀

  • Rafael Rosa says:

    Salve,

    Li vários posts a respeito, incluindo a entrevista que deram, e já disse que não tem crise eles mudarem. Se o conteúdo da palestra foi distorcido, como o próprio Alex disse, ok, mas agora eles vão ter que encarar as críticas. Acredito que ninguém viu o código do Twitter, e tudo o que sabemos são o que eles mesmo falaram (como os kind_of? da vida), que as coisas melhoraram depois que reviram a arquitetura e as evidências atuais (que o site continua caindo). Talvez o Akita tenha sido duro na crítica, mas não deixou de elogiar os pontos positivos.

    Defender a comunidade é importante sim, e não é porque sou fanboy do Ruby ou só conheço uma tecnologia, o problema é mais embaixo: se não tiver mercado quem vai comprar? Posso trabalhar com outras coisas mas não quero porque gosto de trabalhar com Ruby, então criar mercado se torna essencial. De certa forma é o mesmo dilema da comunidade ALT.NET, são pequenos e uns querem expandir e outros não. Se a própria comunidade não fizer isso ninguém mais fará. Pouco me importa se o Twitter vai ficar ou não, o que me importa é que enquanto o tema Scala x Ruby tiver um efeito negativo para o Ruby seremos afetados como um todo. Ao mesmo tempo que o Twitter é ótima propaganda, também pode ser um veneno perigoso.

    Para os mais pragmáticos ter uma comunidade Ruby maior é gerar mais dinheiro, no meu caso quero mercado para poder trabalhar com o que gosto, simples assim. Isso quer dizer que não há espaço para outras tecnologias? Não, mas ainda tem espaço para o Ruby crescer. Não estou sendo fanático ou entrando na onda Highlander, mas alguém tem que falar algo. Dizer que isso é mesquinho é, no mínimo, exagero.

  • Rafael Rosa says:

    @RoadHouse, cada tenta fazer sua parte, não falo em nome da comunidade, ninguém tem autoridade para isso. Ficar parado é que não ajuda. E descer o nível também não. Cresça.

  • Ronaldo says:

    Rafael, sobre a distorção do conteúdo, aí é que está o problema. Quem distorceu e continua distorcendo não é o Twitter, é a própria comunidade Ruby/Rails. Ao invés de ir direto na fonte, esclarecer e negar quaisquer coisas secundárias, os erros continuam sendo propagados mesmo depois do pessoa do Twitter ter declarado. Críticas podem ser duras, o problema é quando são “misleading”. Os três pontos que o Akita coloca no texto foram respondidos pelo Twitter e, como disse, ele faz um desserviço à comunidade ao editar o texto para por recentemente como se isso fizesse diferença para a coisa em si. Enfim, você pode discordar e podemos concordar em discordar se for o caso.

    Quanto à gostar de usar, não é comunidade que faz diferença para isso. Veja o artigo do TaQ[1] para uma visão sobre isso. Se você quer usar, que use. Não vai ser o Twitter que vai fazer a cabeça do seu chefe ou não sobre a propriedade do Ruby ou Rails. Se você trabalha em uma empresa consciente do assunto, isso acontece. Se não, é o mesmo problema de PHP, Python ou qualquer outra coisa. Mais uma vez, no final das contas, 90% do buzz negativo sobre o assunto Scala versus Ruby foi gerado pela precipitação da própria comunidade. Se alguém encara isso como guerras a vencer, a melhor estratégia teria sido ficar de boca fechada.

    E sim, a mentalidade nós contra o mundo é mesquinha. Querer usar Ruby não, mas fazer disso um cavalo de batalha é a mesma atitude que os rubistas criticaram nos javeiros e dotnetianos da vida. Falando por mim, nunca tive problema em usar Rails, Ruby ou outras tecnologias apropriadas. Escrevi um livro sobre Rails, afinal de contas. Escolhas próprias, que dependeram unicamente da minha atuação. Nunca me preocupei um segundo qualquer sobre o que outras comunidades diziam. O resto é atitude atual da “comunidade”. Eu prefiro ficar longe.

    [1]: http://eustaquiorangel.com/posts/twitter_scala_e_ruby

  • Ronaldo says:

    Aliás, para um resposta realmente “reasoned” veja:
    http://pragdave.blogs.pragprog.com/pragdave/2009/04/twitter-should-move-away-from-ruby.html

    Aqui está o cara que escreveu o primeiro livro sobre Ruby no mundo ocidental falando sem medo da mudança. Exatamente o que o Akita, Obie e demais poderia ter feito de cara e o que eu tentei fazer mas sem a simplicidade de um Dave Thomas, infelizmente.

  • Rafael Rosa says:

    Deixei claro que não é “nós contra o mundo”, tem espaço para todos, e se há uma guerra ela é estúpida, pois não poderá ser vencida por ninguém. A comunidade (aparentemente esse termo não é bem quisto) Ruby sempre foi aberta para novidades e outras linguagens. Existem os xiitas? Claro, sempre existem, mas não acredito que esse seja o caso.

    Gostar de usar tem influência do tamanho da comunidade quando se quer trabalhar com a linguagem e ganhar a vida com ela, gostaria de não ter que explicar para cada um as vantagens e desvantagens do Ruby a cada reunião, gostaria ela fosse reconhecida como mais uma opção viável entre as outras. A comunidade ajuda a criar essa consciência, demanda, mercado e suporte. Como obter isso sem uma comunidade forte e sem uma grande empresa por trás? Dizer que isso não influencia as escolhas do mercado (leia-se gente com grana para me contratar) é a mesma coisa que dizer que o .NET teria o share atual sem a Microsoft por trás.

    Não tenho absolutamente nada contra quem usa outras ferramentas, seja Java, .NET, PHP, o que for, tanto que faço parte da comunidade .NET, acompanho os eventos, faço parte de grupos de estudo, escrevo sobre ela no meu blog (ainda que pouco) e aproveito para estudar pontos em comum como ASP.NET MVC e IronRuby. Isso soa xiita?

    Acredito que uma comunidade forte é importante sim, e tenho consciência que não falo por ela. Prefiro ver algumas pessoas fazendo algo ao invés de ficarem passivas, e pelo menos as pessoas que escrevem algo útil, como o Akita, o Obie e o Ola Bini, são pessoas que sempre defenderam a pluralidade e a diversidade. Concordo em discordarmos sobre a utilidade dessa abordagem.

    Até mais

  • Ronaldo says:

    Concordo também em discordarmos até porque começamos a nos desviar do ponto primário da discussão, que era a ausência de uma resposta coerente à controvérsia.

    Sobre a mentalidade “nós contra eles”, simplesmente usei seu comentário aplicado à reação geral que a coisa teve: “Se não colocarmos as coisas em pratos limpos quem vai colocar? Se eles querem ir para Scala, boa viagem, usem a melhor ferramenta para o trabalho, só não deixem a bomba no nosso colo.”

    Discordo, como disse, sobre a questão de gostar (concordo com o TaQ nisso, que não importa). Concordo também que Java e .NET não seriam o que são sem empresas grandes, mas discordo na relevância disso para o uso. Acho sim, que é possível ter uma comunidade vibrante e forte sem uma empresa grande. Veja a comunidade Smalltalk, por exemplo. Ser grande do tamanho de Java e .NET não implica em ser vibrante e forte. Como dá para ver, acho que nossas discordâncias são menores do que parecem.

    Finalmente, concordo que existem pessoas escrevendo coisas úteis, algumas das quais você citou abaixo. Não as eximo de exageros como não me eximo também :)

  • RoadHouse says:

    a paixão é sempre um sentimento avassalador não?

    yay! consegui meu hate comment! te amo ronaldo :*

    e eu queria que a “comunidade” pagasse as minhas contas 😀

  • Rafael Rosa says:

    @RoadHouse, se você já ganhou dinheiro com Rails então a comunidade já pagou suas contas, ainda que de maneira indireta. Ou você escreveu todo o framework, todos os tutorias, os Rails Guides da vida, fez os screencasts? Isso é o resultado do trabalho da comunidade e se aplica a open source de maneira geral.

  • RoadHouse says:

    @Rafael Rosa

    Me passe seu endereço completo e seu cpf para eu por minha conta de luz no seu nome, vamos começar com algo mais simples, depois eu passo o aluguel ok?

    :)

  • Emerson says:

    Ótimo Post!!!

  • […] que eu acho que nem compensa linkar por causa de todo o ruído que causaram, com exceção notável desse aqui do Ronaldo Ferraz, onde, como sempre, ele elabora o tema muito bem, mas eu sou mais tosco (como sempre). Quis fazer […]

  • Muito bom o post!

    Realmente muitos falaram besteiras e usaram do seu apego – ou desapego – a determinadas tecnologias para aproveitarem a oportunidade

  • […] de todo o ruído que causaram, com exceção notável desse aqui do Ronaldo Ferraz, onde, como sempre, ele elabora o […]

Leave a Reply

Your email address will not be published. Required fields are marked *

What's this?

You are currently reading Eu fico com a baleia at Superfície Reflexiva.

meta