Conversando com Peter Cooper

2008 January 09, 11:24 h - tags: interview

English readers, click here

O Ruby Inside é um dos maiores websites de Ruby/Rails disponível e uma grande fonte de notícias. Seu criador é o empreendedor britânico Peter Cooper, também autor do livro recentemente publicado Beginning Ruby, from Novice to Professional, uma excelente fonte para qualquer um querendo aprender a linguagem Ruby.

Peter fala sobre Ruby on Rails, negócios, iniciantes e, como um exclusivo de última hora, ele comenta o recente episódio nuclear do Zed que chocou muitas pessoas da comunidade. Apenas para deixar claro, Peter respondeu minhas perguntas antes do Ano Novo, é somente a última pergunta que foi adicionada depois.

AkitaOnRails: Para a comunidade Ruby Peter Cooper significa Ruby Inside. Eu pessoalmente gosto de ler seu website já que ele acumula a maioria dos websites importantes de Ruby e Rails por aí. Deixe-me agradecer novamente por adicionar meu blog à lista do seu site. Mas como ele começou? O que você acha que foram os passos mais importante que tomou para construir sua boa reputação?

Peter Cooper: Ruby Inside começou como um veículo para promover meu livro (já lançado) “Beginning Ruby.” O nome mesmo veio de um comentário feito numa entrevista para o podcast de Rails por Geoffrey Grosenbach onde alguém adaptou Ruby no velho slogan “Intel Inside”, que soou como um grande nome para um blog cobrindo coisas de Ruby. Inicialmente, o blog foi simplesmente para promover o livro, mas rapidamente se tornou um resumo de notícias de toda a comunidade Ruby. Acho que a chave de seu sucesso foram os grandes blogs Ruby da época, o blog de Ruby da O’Reilly sendo um bom exemplo, estavam postando cada vez mesmo uma vez que seus escritores estavam pegando mais e mais trabalhos de Ruby. Ruby Inside preencheu o buraco de fornecer notícias altamente digeridas de toda a comunidade Ruby, com apenas um ou dois posts por dia, permitindo desenvolvedores Ruby se manter atualizados com as coisas, mas sem precisar assinar centenas de blogs.

AkitaOnRails: Olhando seu perfil no LinkedIn vejo que esteve bastante envolvido com negócios de internet nos últimos 10 anos. Você também se descrever como um ‘empreendedor serial’. Empreendedorismo é algo muito, muito difícil aqui no Brasil, principalmente por causa da economia e da quantidade absurda de burocracia envolvida. Quão difícil é na Inglaterra para ter seu próprio negócio?

Peter: É muito fácil começar um negócio na Inglaterra. Dependendo do que quer fazer, pode apenas dizer que é um negócio logo de cara, sem preencher nenhum documento (embora você precise contactar o departamento tributário para que eles saibam!), e operar como um sole trader. Registrar um negócio oficialmente, entretanto, é razoavelmente fácil também e lhe dá várias proteções legais e uma imagem mais profissional. Receber investimento e tal não é particularmente fácil aqui, comparado com os Estados Unidos, mas se estiver disposto a começar, então o Reino Unido é muito bom por bancos fáceis, comunicação rápida e negócios com o resto do mundo. Com a vantagem natural da linguagem inglesa, o mercado americano é fácil de mirar do Reino Unido.

AkitaOnRails: Seus outros produtos bem conhecidos devem ser Code Snippets e Feed Digest. Poderia apresentar ambos aos brasileiros que podem não conhecê-los? Como a idéia lhe ocorreu? Foi algo como “coçar a própria coceira” ou foi algo totalmente não relacionado e talvez seguindo alguma tendência que identificou? Que ferramentas usou para construí-las? Muitas pessoas tem interesse em saber o que é necessário para construir um produto de sucesso. O que acha que é necessário para ser um bom empreendedor na internet?

Peter: Code Snippets foi o primeiro repositório de trechos de código “tagueados” no estilo del.icio.us. De fato, acho que foi a primeira aplicação Rails a usar tags, já que eu escrevi o código inicial que foi apropriado em várias bibliotecas de taggings. O site foi lançado no começo de 2005 e eu o vendi em fevereiro de 2007 para a DZone. Feed Digest é um serviço para mashing, processamento e republicação de feeds RSS e Atom para outros formatos, como HTML, Javascript, Flash, imagens e assim por diante. Eu vendi a uma empresa russa no verão de 2007.

Ambos os negócios / sites foram resultado de “coçar a própria coceira” como disse. Eu precisava de um sistema para armazenar trechos de código com tags, e del.icio.us não servia para isso, então Code Snippets saiu depois de uma maratona de 24 horas, foi lançada publicamente, e então cresceu para milhares de usuários com o tempo. Feed Digest evoluiu de um serviço inicial chamado RSS Digest que eu criei para coçar outra coceira, republicar meus links del.icio.us para o cabeçalho do meu blog. Ele cresceu para bem mais que isso, e agora tem mais de 25 mil usuários e serve talvez meio bilhão de requests todo mês. Eu não possuo nem tenho interesse direto em nenhum desses projetos agora, mas eu devo estar indo bem na lista de pessoas vendendo aplicações Rails!

AkitaOnRails: Eu o parabenizo pelo livro recentemente publicado, pela Apress, Beginning Ruby, from Novice to Professional. Como Larry Wright diz em seu review, ele está certo que o Pickaxe é um bom livro de referência, mas você toma um caminho diferente sendo mais cuidadoso sobre o aspecto ‘didático’ do ambiente. Ele preenche um vazio já que há cada vez mais pessoas interessadas em aprender Rails mas não tem um livro introdutório para aprender o próprio Ruby. Por favor, descreva seu livro para nossa audiência já que acho que muitos brasileiros ainda não conhecem seu livro. Qual é seu público-alvo? Do que você fala?

Peter: O livro atualmente está disponível apenas em inglês, infelizmente, então os Estados Unidos foram definitivamente o maior mercado alvo até agora. Sobre o conteúdo, o livro é muito remanescente dos livros “clássicos” de ensino de programação que eu tinha nos anos 80. Ele é bem passo-a-passo, com a instalação do Ruby vindo primeiro, seguindo por um passo-a-passo dos conceitos principais sobre orientação-a-objetos, sintaxe do Ruby, e a idéia básica de tipos de dados. Eventualmente, pelo final do livro, o leitor passou por operações em arquivos, uso de banco de dados (há até uma introdução a SQL), desenvolveu um jogo de aventura em texto, construiu uma simples aplicação Rails e assim por diante. É realmente um livro para iniciantes, do começo ao fim, e então ele pode ir para livros mais avançados como o Pickaxe ou The Ruby Way. Quem sabe não vemos o livro em português um dia!

AkitaOnRails: E falando em iniciantes, novamente eu acho engraçado ler seu perfil no LinkedIn: “‘Larguei a escola aos 16’ conta? Se sim, estou dentro. Educação é boa pra maioria, mas superestimado se você for um autônomo…” Eu também larguei a faculdade para trabalhar na bolha da internet (embora não como empreendedor, o que eu me arrependo). Eu não recomendo que as pessoas larguem a faculdade como eu fiz, claro, é uma escolha pessoal e todos devem tomar decisões conscientes sobre seu próprio futuro. Mas existem muitas pessoas – pelo menos aqui no Brasil – que se orgulham de certificações e diplomas mais do que experiência. Claro, existem grandes desenvolvedores certificados, mas há mais maus desenvolvedores que realmente ‘acreditam’ em seus próprios certificados como garantia de competência! Eu não vejo nenhuma correlação entre diplomas e bons desenvolvedores. Qual sua opinião sobre isso?

Peter: Tenho muito respeito por pessoas que seguem a rota acadêmica, e acho que no geral eles se tornam melhores no trabalho do que as menos educadas. Uma das desvantagens de ser doutrinado pela academia, entretanto, é que pessoas com muitos graus, certificações e diplomas normalmente agem como autômatos tecnológicos, somente entendendo um caminho de ação, sem capacidade de pensar dinamicamente em tempo real, e incapazes de tentar novas direções radicais. Há muito espaço no mundo para pessoas assim, mas por outro lado precisamos muito de pessoas “loucas” que tentam coisas que inicialmente parecem idiotas ou radicais.

O outro problema com pessoas que exibem suas certificações é que em muitos casos eles estão apenas provando que conseguiram passar um teste. Passar um teste e ter muito conhecimento não significa necessariamente que você desenvolve boa capacidade de resolução de problemas ou consegue trabalhar como um verdadeiro desenvolvedor, arquitetando soluções do zero. Por exemplo, um peão pode ser excelente construindo casas, mas ele provavelmente é muito ruim em realmente desenhar construções, que é o trabalho de um arquiteto. Em TI, especialmente em empresas pequenas, normalmente é necessário que os desenvolvedores usar ambos chapéu de arquiteto e desenvolvedor, e muitas pessoas com certificação, mas pouca experiência real, penam com desenho de sistemas.

AkitaOnRails: Somos ambos evangelistas de Ruby e Rails, claro, mas como eu, não o vejo como um desenvolvedor ‘cego’, quer dizer, do tipo que precisa fazer todo o resto parecer ruim para justificar colocar Ruby num pedestal. Eu realmente acredito na ‘ferramenta certa para cada trabalho’. Nem mesmo DHH afirma que Rails é a solução para todos os casos de uso. Isso dito, acho que Rails é o melhor para um nicho de desenvolvimento web. Recentemente eu me envolvi – e me arrependo disso – contra um troll defensor de .NET. Não desgosto de .NET, longe disso. De qualquer forma, você se vê envolvido em discussões como essa? Ou você tenta evitá-los totalmente? Qual sua opinião sobre esse tipo de discussão ‘X vs Y’?

Peter: Acho que é possível ter jogos políticos interessantes em qualquer situação. Como um ser humano normal eu tenho, claro, minhas preferências, mas é importante reconhecê-los pelo que são e ainda ser capaz de enxergar o quadro completo. Acredito em tentar usar a ferramenta certa para o trabalho (ou, mais especificamente, a ferramenta mais eficiente para o trabalho – eu não vou aprender uma linguagem nova para resolver apenas um problema), então o Ruby Inside roda em WordPress, uma plataforma de weblog em PHP. Em termos de predisposição, eu certamente sou meio anti-Microsoft, embora precise admitir que para desenvolvimento de aplicações GUI eles estejam anos-luz à frente de todo mundo.

Eu não tenho evitar me meter em discussões do tipo X vs Y, embora eu tende a ser meio advogado-do-diabo nesses casos. É importante se manter o mais científico e objetivo quanto possível nessas situações, mas eu certamente deixarei um pouco de predisposição se mostrar de tempos em tempos, como qualquer humano faria. Por exemplo, eu (e estou longe de ser o único nisso, embora muitos não queiram atirar pedras publicamente) particularmente não sou muito chegado na proteção excessiva do David Heinemeir Hansson dos termos Ruby e Ruby on Rails, e especialmente o logotipo Rails ao ponto de rejeitar seu uso em livros em que ele não trabalhou pessoalmente. Não tenho medo de mostrar alguma predisposição e problemas de referência como essa de tempos em tempos.

AkitaOnRails: Isso nos leva à outra questão: todos os dias as pessoas aqui me perguntam “Por que eu deveria escolher Ruby on Rails em vez de X?” Pessoalmente, acho que não há resposta clara para isso. Sendo experiente em muitas plataformas como ASP.NET, Java, PHP, Perl, eu fiz minha escolha baseado não apenas em performance bruta (que Ruby não tem, por enquanto), nem mesmo um conjunto maduro de bibliotecas (que está evoluindo depressa). Algumas razões foram baseadas unicamente em eu estar feliz com esta plataforma. Acredito que Ruby me permite escrever mais código ‘bonito’ como Marcel Molina Jr. explica. Mas “a beleza está nos olhos de quem vê.” Qual sua opinião? Sendo um programador experiente em outras plataformas, por que escolheu Rails?

Peter: Eu era um desenvolvedor Perl antes de cruzar com Ruby e Rails, e quando vi Rails, a primeira coisa que fiz foi tentar cloná-lo em Perl. Infelizmente, eu definitivamente não estou entre na elite de programadores, nem de longe, então minha tentativa foi bagunçada. Tentei usar Rails diretamente, meio relutante, com uma promessa a mim mesmo de não me deixar envolver e aprender uma nova linguagem, mas meramente para desenvolver o que eu precisava na época. Claro, o resto é história e eu me converti inteiramente a Ruby, pela sua consistência, facilidade de uso, e pela forma como ela parece uma linguagem “natural”.

Em 2004, a biblioteca Ruby era pobre, RubyGems não era popular, e não haviam muitos livros disponíveis, então parecia uma escolha ruim, mas essas coisas mudaram muito rápido, e eu diria que a biblioteca Ruby em 2007 compete muito fortemente com, digamos, Python, e mesmo estando atrás em quantidade numérica ao CPAN do Perl, a qualidade e modernidade das bibliotecas Ruby superam isso. Ruby é agora uma forte escolha.

AkitaOnRails: Eu preciso estender esse tema porque acho que é relevante já que vemos mais e mais pessoas mudando para Rails. Eu vejo 2 tipos de desenvolvedores vindo à bordo: o primeiro sendo programadores experientes que não estão satisfeitos com seus trabalhos atuais e ferramentas e querem tentar algo novo e renovador. O segundo sendo desenvolvedores iniciantes que acham que Java ou .NET tem uma curva de aprendizado muito mais alta do que Rails. Eles me preocupam um pouco porque tendem a pensar que Rails é fácil demais para ser considerado profissionalmente e outros se frustram em descobrir que Ruby não é Basic, e você precisa se esforçar para aprender seus caminhos. Você faz treinamentos também, qual sua experiência lidando com iniciantes?

Peter: Nunca lidei com alguém que seja completamente novo à desenvolvimento de aplicações Web, então não posso dar uma resposta concreta. Entretanto, eu certamente não acho que as pessoas estejam escolhendo aprender Ruby ou Rails porque são percebidas como “fáceis”. De fato, acho que são os desenvolvedores mais experientes que consideram Rails fácil, e é por isso que estão a estão experimentando. Iniciantes tendem a ir com seja lá que esteja na moda no momento ou o que é mais popular. Não há falta de iniciantes para todas as maiores linguagens agora, é somente que Ruby está finalmente recebendo sua fatia.

AkitaOnRails: 3 anos atrás a maioria dos desenvolvedores previram a “queda” do Rails como uma alternativa viável. Hoje vemos Rails 2.0 saindo e a comunidade Rails crescendo depressa e mais forte a cada dia. Agora as pessoas acham que Rails é o competidor a derrotar. Acho que é algo bom porque nós tendemos a correr mais rápido (desenvolver mais gems, inovar mais) quando estamos sobre pressão. Você acha que as pessoas estão aceitando Rails mais ou ainda vê barreiras para a adoção do Rails, pelo menos aí na Inglaterra ou Europa em geral?

Peter: Não concordo que 3 anos atrás a maioria dos desenvolvedores previam a queda do Rails. Acho que haviam apenas muitos programadores defensivos escolhendo ignorá-la. Não acho que a maioria dos desenvolvedores de outras plataformas vejam Rails como algo a se derrotar. Na realidade há muita cegueira nos galhos da comunidade de programação para os esforços feitos em outros galhos. A maioria dos programadores .NET não se importam, e muito provavelmente nem ouviram falar disso, Ruby on Rails. Desenvolvedores em plataformas que estão morrendo, como Cold Fusion, estão mais familiarizados com Rails, simplesmente porque eles tem procurado alternativas, mas Java e .NET ainda estão tomando os novos desenvolvedores a uma taxa muito maior que Ruby e Rails. Existe uma grande diferença no que os blogs e a mídia online quer relatar e o que realmente está acontecendo por aí.

AkitaOnRails: Existem muitas coisas que o Ruby ainda não tem e agora estamos vendo Ruby 1.9 sendo lançado. Ainda não é um 2.0 estável mas é um sinal claro que a linguagem está evoluindo depressa como uma plataforma madura. Performance de graça sempre é bem vinda, mas este lançamento quebrará muitas coisas. Já está usando 1.9 ou sente que ele ainda não está pronto para começar?

Peter: Eu brinquei com Ruby 1.9 um pouco, mas não uso rotineiramente. Eu não me considero um programador no sentido acadêmico. Gosto de saber e brincar brevemente com tecnologias extremas, mas não sou um desses super-programadores que fazem download digamos, de Erlang ou Haskell e tentam aprendê-los num fim de semana. Ruby 1.8 definitivamente continuará sendo meu interpretador Ruby por pelo menos mais alguns meses.

AkitaOnRails: Nossa comunidade brasileira ainda é muito jovem e pequena, eu normalmente a descrevo como a comunidade americana em 2004 ~ 2005. Ainda não atingimos massa crítica. Como estão as coisas por aí na Inglaterra ou Europa? Sua comunidade já é grande o suficiente o suficiente para o mercado já demandar profissionais relacionados a Rails?

Peter: O mercado no Reino Unido ainda é muito pequeno. Não houve literalmente nada em 2005 mas as coisas cresceram rapidamente nos últimos anos, embora ainda seja talvez um milionésimo do tamanho do mercado para serviços de Java ou .NET. Existe normalmente alguns trabalhos relacionados a Rails flutuando por aí, mas até agora descobri que Rails é uma tecnologia que agências estão usando para seus clientes por trás das cenas, em vez de ser algo sendo ativamente demandado. Não estou diretamente envolvido na comunidade britânica de Ruby ou Rails, entretanto, então não posso dar muitos detalhes disso.

AkitaOnRails: Isso é só pela brincadeira: se você fosse DHH ou Matz o que gostaria de mudar no Rails ou Ruby? Ou talvez, para onde vê os dois indo?

Peter: Se eu fosse o DHH, provavelmente Rails não existiria, simplesmente porque eu acho que muito muito do seu excelente evangelismo de Rails é dirigido por uma ponta de vontade de fama. Por um lado mais prático, eu faria Rails menos ‘opinionated’ (de opinião) e mais customizável, simplesmente porque muitas das opiniões são muito rígidas para serem práticas no mundo real. A opinião inicial de depender do banco de dados para dar informações sobre a estrutura do Model foi legal, mas então vieram as migrations … e de repente estamos definindo layout de tabelas no código afinal, normalmente em muitas dezenas de arquivos! Por que não colocar os atributos diretamente no Model e deixar Rails tomar conta das mudanças de schema transparentemente? DataMapper faz isso, e ActiveRecord está começando a ficar para trás em comparação com esse estilo bizarro.

Do lado do Ruby, acho que Matz fez um excelente trabalho tecnicamente, embora apesar do DHH pontuar mais alto na escala de Relações Públicas, Matz parece relutante em promover o Ruby. Acho que ambos é um pouco de modéstia ser uma coisa honrável na cultura japonesa, mas também porque Ruby é algo que ele desenvolveu para coçar uma coceira, e outros milhão de desenvolvedores usando a linguagem não o beneficiaria significantemente. Ele é um grande cara, mas falta a loucura de um Larry Wall (Perl) e a autoridade de Guido van Rossum (Python) e tem muita sorte que pode depender de uma comunidade muito forte e vocal para promover Ruby. Um dos benefícios do jeito mão-na-massa do Matz é que as pessoas sentem que podem ter autoridade sobre várias áreas da linguagem e comunidade para si sem ter que perguntar à uma autoridade maior.

Do lado técnico, a única coisa que eu talvez faria se estivesse em controle do desenvolvimento da linguagem Ruby seria fazer investidas mais fortes em direção a construções mais funcionais. JavaScript e Perl 6 estão andando bastante no mundo da programação funcional, e Ruby precisa seguir. Eu também consideraria concorrência muito fortemente e tornar isso um foco principal para desenvolvimento de novas funcionalidades na linguagem.

AkitaOnRails: Qual seria sua recomendação para iniciantes em Rails aqui no Brasil? Quero dizer, para aqueles que querem aprender tanto Ruby e Rails mas podem precisar de alguma guia no começo?

Peter: Bem, se você consegue falar inglês, então naturalmente eu sugeriria meu livro “Beginning Ruby” publicado pela Apress! Infelizmente não tenho familiaridade com recursos em português para aprender Ruby ou Rails, embora tenho certeza que você tenha! Um recurso grátis que eu definitivamente recomendaria a novos desenvolvedores é o “Aprenda a Programar” de Chris Pine. Está disponível como livro, mas tem uma versão mais crú disponível para ler grátis online.

AkitaOnRails: Agora, falando em informação, tivemos um começo de ano bem explosivo. Zed Shaw literalmente explodiu em reclamações, ofensas e toda forma de comunicação agressiva. Como eu disse num artigo anterior, eu me choquei no começo, mas lendo até o fim – tentando filtrar todo o ódio e maneirismos não civilizados – e realmente há alguma informação enterrada lá. Qual sua opinião sobre esse episódio?

Peter: Pessoalmente, acho que o Zed acertou em cheio. Não gosto do jeito que ele especialmente ataca algumas pessoas (Kevin Clark, por exemplo) por causa de pequenas infrações. Sua linguagem é severa, e ele claramente tem muito ácido. Por trás de todas as palavras de ofensas e bater no peito, entretanto, há muita verdade. Eu simpatizo com seus argumentos principais, especialmente aqueles levantados na atualização do “Round 2” publicado em 3 de janeiro.

Zed toca na maneira como as pessoas se formam em gangues elitistas e dirigidas pelo ego, como o Rails Core e o caboo.se. Eu me envolvi com o caboo.se por um tempo, e tenho muito respeito por muitos membros (Courtenay Gasking e Amy Hoy, por examplo), mas a coisa tanto fedia muito elitismo para mim, e eu me distanciei de toda essa socialização online relacionada a Rails. Eu me lembro de alguns incidentes condescendentes patéticos de membros dessas comunidades, mas ao contrário de Zed eu deixei quieto. Acho que uma das maiores causas dessa tensão, formação de gangues e infantilidade generalizada é que muitas das pessoas envolvidas com essas gangues não tem vida social fora dessa comunidade. Isso provavelmente explica esses joguinhos medievais como Werewolf (Máfia) e bobagenzinhas em geral são tão populares nas conferências, em vez de, digamos, realmente revolucionar a área.

Por fim, Zed acertou em cheio com seus comentários sobre o livro “Programming Ruby” mais comumente conhecido como o “Pickaxe.” Eu tendo a me manter politicamente correto nesse assunto, especialmente porque tenho um livro concorrente, mas o Pickaxe realmente é incrível na sua mediocridade. Ele vende bem porque tem a vantagem de ter sido o primeiro com nome reconhecido, e ninguém se incomodou em escrever um livro de referência melhor (The Ruby Way é excelente, mas não é um livro de referência). Por ter o único livro de referência de Ruby impresso, Dave Thomas merece crédito, mas ainda assim é medíocre.

AkitaOnRails: Para o bem ou para o mal, tenho sentimentos misturados sobre esse episódio. Não vou julgar ninguém ainda. Vejamos como isso se desenrola. E claro, eu realmente agradeço a paciência do Peter Cooper comigo, gentilmente respondendo todas as minhas perguntas. Muito obrigado!

Comments

comentários deste blog disponibilizados por Disqus