Desenvolvendo heresias

March 9th, 2007 § 7 comments

Avi Bryant, criador do Seaside, o framework to rule them all, escreveu ontem uma entrada interessante em seu blog sobre as heresias frameworks para desenvolvimento Web não tem coragem de cometer, mesmo os mais modernos como o Django e o Rails.

O argumento de Bryant é que o conhecimento utilizado para criar todos esses frameworks é baseado em decisões que faziam sentido há décadas atrás mas que realmente não possuem mais validade em nosso contexto atual de desenvolvimento. Esse é um argumento que faz muito sentido e com o qual eu concordo bastante.

Recentemente, os desenvolvedores por trás do Rails gastaram meses introduzindo suporte a REST no mesmo, suporte esse que, além de complicar a vida do desenvolvedor (é a primeira vez em que eu vejo uma funcionalidade no Rails que está no lado oposto da regra 80/20), é baseado em premissas um tanto ou quanto duvidosas, como, por exemplo, uma necessidade de particionar o fluxo de uma aplicação Web em pequenos itens de funcionalidade que sejam mais gerenciáveis pelo desenvolvedor. Essa premissa vem de um raciocínio circular causado pela falta de estado no protocolo HTTP que faz sentido para o protocolo mas que não faz o menor sentido para aplicações Web. O resultado é uma luta entre os desenvolvedores e o protocolo que se traduz em decisões nas bibliotecas de desenvolvimento que tentam burlar o fato de que a base toda está errada.

Rails, Django, CakePHP e similares funcionam porque existe uma necessidade intermediária de aplicações que é suprida pelas decisões comuns de simplicação tomadas por esses frameworks. Os desenvolvedores agradecem, é claro, mas, para a maioria das aplicações, há sempre uma lista daquilo que deve ser feito que difere do comum quando a situação realmente começa a se deslocar para o mundo real. Isso não quer dizer, é claro, que esses frameworks não funcionem. Ao contrário, eles são um passo necessário para que as heresias, como Bryant as chama, comecem a se tornar dominantes.

Heresias sempre foram o foco de avanço em qualquer área do pensamento humano. E não vai ser diferente no desenvolvimento Web.

§ 7 Responses to Desenvolvendo heresias"

  • Luiz Rocha says:

    Conheço um cara que é brilhante como instrutor de tecnologia. Ele tem um método que eu curto, mas quando é aplicado comigo me irrita profundamente.

    Ele deixa que eu erre. Às vezes bem feio. Às vezes ele até conduz.

    Aí ele apresenta o que seria correto — ou menos errado :-) Em cima do erro, para aprender de vez.

    Já falei mais de uma vez, aqui mesmo, quanto Smalltalk/Seaside tem me surpreendido. O que tem mudado é o fato de que talvez exista um propósito pelo qual ele não tenha vingado antes, coisa que eu não via antes.

  • Eu acho tudo muito bonito, muito legal, muito filosófico, muito sei-lá-o-quê, mas não entendo bem o que o pessoal quer dizer ou onde quer chegar. Não entendi, por exemplo, o significado de “…now that we have new and better tools available to us.”.

    O Seaside é muito legal mas acho que veio em um momento difícil. O Ajax chama mais a atenção (tem mais propaganda) e é baseado em algo que a maioria já conhece.

    Não gosto muito de analogias, mas (opinião de quem não trabalha na área) acho que são apenas veículos diferentes andando sobre a mesma estrada esburacada.

  • Ronaldo says:

    Luiz, engraçado é que eu estava lendo o Peopleware esses dias, e uma coisa que ele realmente enfatiza é necessidade de errar. Sem poder errar, realmente não há crescimento algum.

    Pessoalmente, eu não acredito que Seaside vá pegar como tecnologia mainstream. Acho que nem o Avi acredita nisso justamente pelo tipo de palestra que ele está dando atualmente. Se Smalltalk não pegou–muito pelo fato de ser image-based, acredito–é difícil que Seaside vingue. Exceções acontecem, como é o caso do Rails, mas são raras.

    O importante é o que o Seaside está fazendo: mostrar as falhas no modelo atual e apontar soluções que são possível se serem implementadas em outras linguagens.

    Guaracy, eu li Big Bang esses dias (até bloguei sobre o livro na época) e gostei muito de como ele descreve o processo científico: alguém contradiz o pensamento comum e insiste até que os outros remendem o erro no senso anterior de como as coisas funcionavam.

    Como respondi para o Luiz, acho que o Seaside está fazendo esse papel: apontar o que pode ser feito de melhor em aplicações Web se algumas premissas forem abandonadas, atitudes que persistem apesar de derivarem de uma época de máquinas e ferramentas muita mais limitadas. “New and better tools”, nesse caso, eu entendi como o aprendizado dos últimos anos em termos de compiladores, linguagens dinâmicas, etc.

    REST, por exemplo, eu vejo com um grande desperdício de ciclos de processamento, mas outros vêem como o Santo Graal da escalabilidade. E REST vai para o oposto do be-a-bá de uma aplicação Web, embora realmente tenha seus usos para várias outras situações.

    Não acho que o Seaside vingue por si, duvido que seja a “killer application” do Smalltalk, mas acho que ele está questionando a sabedoria mainstream da mesma forma que o Rails questionou em alguns aspectos.

    Espero ter feito um pouco de sentido.

  • Luiz Rocha says:

    Ronaldo, eu concordo em gênero, número e grau que erra é importante. Ter que lidar com os próprios erros e más escolhas faz parte do processo de aprendizado e amadurecimento em qualquer aspecto humano, não só de um desenvolvedor profissional.

    O importante é o que o Seaside está fazendo: mostrar as falhas no modelo atual e apontar soluções que são possível se serem implementadas em outras linguagens.

    Apesar disso ser fundamental, não é suficiente. Não basta alguém avisar que o trem está vindo se todo o mundo ignorar e continuar o piquenique nos trilhos.

    Guaracy, acho que eu não fui muito claro na minha colocação. Eu quis dizer que eu tenho uma visão melhor hoje do motivo pelo qual o Smalltalk não vingou antes. A sensação que eu tenho agora é que existe uma maior maturidade para com que as evoluções que o Smalltalk/Seaside trazem para o meio possam ser compreendidas e aprendidas. Mesmo que hoje o momento esteja com o Ajax.

    Aliás, nada impede que, de repente, as idéias interessantes do Seaside sejam implementadas via Ajax (poder alterar o código na interface Web, por exemplo).

  • Ronaldo says:

    Será que mainstream muda tão rápido assim? Eu tenho minhas dúvidas. Outro dia estavam falando do JavaScript/ActionScript movido a uma máquina virtual/compilador JIT como uma possível “grande linguagem”. Combinação da herança C com características dinâmicas para pegar de vez. A Microsoft está meio que tentando isso também com o C# 3. Quem sabe realmente pega.

    Eu acho que é por isso que mainstream não muda. Tem nego avisando há 30 anos e continuamos repetindo soluções. Acho que vai realmente mudar, mas que vai demorar até uma nova geração surgir.

    Sobre seu comentário sobre SOA e o resto, estamos esperando.

  • José Valim says:

    Ae Ronaldo!
    Te conheci hoje no Barcamp!

    Vim direto nesse post que você me disse, vou dar uma olhada no blog Avi Bryant e no Sea Side!

    Abraços.

  • Ronaldo says:

    Opa, tudo bom? Cara, se você não me der uma foto, eu vou passar por você o resto da vida sem reconhecer. Tem alguma foto sua no tag do Flickr? Eu reconheço, minha memória é horrorosa e o BarCamp gerou um completo overflow nela. 😛

Leave a Reply

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

What's this?

You are currently reading Desenvolvendo heresias at Superfície Reflexiva.

meta