AkitaOnRails: Bem, não apenas software mas acho que entrevistas também tem alguns ‘Design Patterns’. Então, deixe me livrar dos ‘suspeitos usuais’ antes de chegar ao que importa. Eu pessoalmente gosto de históricos. Como você começou no mundo da computação? Eu chutaria que você é um programador auto-didata, um dos primeiros hackers, não é?
Chad: Você está certo. Fiz faculdade de música. Eu era um saxofonista de jazz e um compositor “clássico”. Interessei-me em programação porque sempre amei jogos de computador, e eu queria escrever o meu próprio. Agora, muitos anos depois, ainda não escrevi nenhum jogo.
AkitaOnRails: Não brinca. Se importaria em nos dizer quando foi isso? Sua aparência pode enganar. Quando vi uma foto sua, me lembrou de Richard Stallman. Espero não estar dando um chute muito errado. Foi na era do PDP-10 ou é mais recente?
Chad: haha. Bem mais recente. Comecei a programar mais a 11 anos atrás. Sempre pareci mais velho do que sou. Mas ninguém nunca disse que eu parecia com Richard Stallman. Na realidade eu não tenho cabelo longo sempre, mas estou deixando crescer para doar à https://locksoflove.org.
AkitaOnRails: Haha, isso é legal. E indo direto ao assunto: como você descobriu sobre Ruby? O que é Ruby para você? O que o deixa empolgado sobre ele?
Chad: Tendo começado como um músico e mais especificamente como compositor, eu vejo programação como um esforço criativo. Mais como uma arte do que como uma disciplina de engenharia. Também sou um nerd de linguagens, então eu gasto muito tempo explorando novas (e não usuais) linguagens de programação. Descobri Ruby em 2000 durante uma de minhas sessões de exploração de sábado. Na realidade planejava seriamente focar em Smalltalk, mas gastei aquele sábado aprendendo Ruby e isso me tirou do meu aprendizado de Smalltalk.
Ruby era uma mistura perfeita de pragmatismo e beleza/idealismo para mim. Eu não encontrei nada desde então que cheira tão bem como Ruby. Para mim, a sensação que tenho quando programo é pelo menos tão importante quanto outros fatores quando seleciono uma linguagem.
AkitaOnRails: Entendo. Você já leu o livro Software Craftsmanship de Pete McBreen?
Chad: Sim. Na realidade li esse livro no avião para a primeira International Ruby Conference, que David Black, Dave Thomas e eu co-organizamos. Pete McBreen estava na conferência e foi um dos apresentadores. Então pude ter meu livro autografado. Seus pensamentos sobre ofício e aprendiz estão alinhados com o que eu acredito.
AkitaOnRails: Eu também. Tenho uma sensação que a maioria dos ‘hackers’ se consideram artistas. Você acha que é esse o caso? Acredito que tenha encontrado grandes hackers pelo caminho.
Chad: Acho que ele tomou um caminho um pouco extremo, e temo que seja um pouco mais do que a indústria possa realmente suportar. É uma infelicidade que não possamos ver mais desse tipo de coisa na indústria. Eu diria que a maioria dos hackers NÃO se considera engenheiros. Eles podem não todos se sentir ao extremo de serem artistas. Alguns pensam em desenvolvimento de software como um ofício, que eu colocaria em algum lugar entre arte e engenharia.
AkitaOnRails: Muito bem dito. E falando em comunidade, ouvi falar que antes de Rails a comunidade Ruby era muito pequena e de repente explodiu. Você acha que Rails está crescendo muito rápido? A comunidade Ruby se sente confortável com esse ritmo acelerado? Ou não é esse o caso?
Chad: Você está certo sobre o tamanho (e o ritmo) da comunidade Ruby antes de Rails. A primeira conferência Ruby tinha 40 pessoas. A quarta tinha 64 pessoas. Não foi um ritmo muito acelerado. Nós lotamos na quinta conferência com 200 pessoas e poderíamos ter mais. Certamente há alguma dor no crescimento com a explosão que aconteceu com Rails, mas não acho que pessoas espertas na comunidade Ruby deveriam reclamar. A explosão nos trouxe em uma situação onde podemos trabalhar em nossa amada linguagem profissionalmente. Até 2005, havia apenas poucos programadores Ruby sendo pagos para trabalhar com Ruby em tempo integral fora do Japão.
AkitaOnRails: Certo. RubyCentral é uma instituição importante nesse assunto. Você tem sido responsável por muitas conferências de sucesso. Como isso começou? E quais são os valores e idéias da RubyCentral?
Chad: Começamos a Ruby Central primariamente para suportar a RubyConf. Em 2001, Guy Hurst estava organizando a primeira conferência de Ruby e teve algumas obrigações pessoais que tornou impossível a ele terminar a organização. Então, Dave Thomas (da Pragmatic Programmers) se pôs à frente para garantir que a conferência não morresse quando Guy saísse.
Ele sabia que a conferência era um passo importante para a comunidade Ruby. Dave alistou David Black e eu para ajudar a liderar a organização da conferência. Depois da primeira, entendemos que faria sentido estabelecer uma empresa sem fins lucrativos para suportar a conferência no futuro, coisa que fizemos no ano seguinte.
À medida que tivemos sucesso em nossos eventos, começamos a nos dividir em outros projetos, incluindo outras conferências, patrocínios de eventos regionais e investimento em “festivais de codificação”. À medida que Ruby continua a crescer, esperamos crescer com ele e expandir nosso papel na comunidade.
AkitaOnRails: Sim, ouvi falar de Guy, mas muito pouco. Onde ele está agora? O que está fazendo? E vocês já eram todos amigos antes de Ruby? Você, David Black, Dave Thomas, Guy?
Chad: Não tenho ouvido de Guy por muitos anos. Ele era primariamente um desenvolvedor PHP, e acho que esse ainda é o caso. David, Dave e eu não nos conhecíamos antes de Ruby. Participávamos do canal de IRC #ruby-lang na freenode lá atrás quando havia apenas umas 12 pessoas regularmente. Desde então, claro, colaboramos juntos em muitos projetos.
AkitaOnRails: Você tem viajado bastante, fazendo muitos workshops, apresentações. Sei que uma pessoa participa de suas apresentações é porque tem algum interesse no assunto. Mas você tem encontrado ‘céticos’ pelo caminho? Você acha que as pessoas ainda pensam em Ruby como algo super-estimado? Ou as pessoas estão se acostumando a ele como uma solução para o mundo real?
Chad: Eu ainda encontro céticos. A maioria deles é cética de Rails – não de Ruby. Rails é super-estimado. Isso é um fato. Mas também é uma ferramenta realmente poderosa, então a propaganda é algo bom. A propaganda afasta algumas pessoas, mas nesse caso não foi o suficiente para ser algo ruim. Estou vendo mais e mais usos “desinteressantes” de Rails e de Ruby sozinho.
Por “desinteressante”, quero dizer empresas usando para suas intranets, aplicações e outras coisas não-sexy, não-Web 2.0. Isso é um sinal de maturidade e que estamos saindo da fase de vanguarda da curva e entrando em território mais geral. Ruby e Rails estão sendo usados para aplicações grandes e pequenas. A parte legal, da minha perspectiva, é que não é mais novidade quando uma empresa decide usar Ruby. Lá atrás em 2004, era considerado algo grande qualquer empresa fazer a escolha de usar Ruby.
AkitaOnRails: Eu achava que o oposto era verdade: que Rails estava sendo usado principalmente como um recurso para startups chegarem mais rápido ao mercado. Você vê empresas tradicionais adotando Rails?
Chad: O oposto era e ainda é verdade. Startups estão usando Rails com grande efeito. Mas, agora estou vendo muita adoção de empresas tradicionais. O perfil das empresas que tenho trabalho está mudando e se tornando mais diversa. Tópicos como integração de sistemas estão ganhando mais interesse aos clientes com quem falo.
AkitaOnRails: Ao menos aqui, eu vejo que muitos gerentes de TI e CIOs ainda adotam a antiga postura IBM. Se você perguntasse a um gerente lá nos anos 60: “Por que você compra da IBM?”, ele responderia: “Porque ninguém nunca foi demitido por comprar da IBM”. Agora, temos o cenário: “Por que você compra Java?”, “Bem, porque ninguém é demitido por comprar coisas Java”. Você acha que esse cenário ainda é verdade?
Chad: Acho que sempre será verdade para grandes empresas. Elas tomam decisões baseadas em medo. Não é verdade somente em TI. É verdade em RH, manufatura e outras funções de grandes empresas. Decisões baseadas em medo vêm da maneira como grandes empresas são organizadas e pela maneira como promoção e sucesso é medido.
Não sei se existe uma maneira de contornar isso, além de talvez tratar grandes empresas como uma grande coleção de pequenas companhias autônomas. Ouvi falar de experiências de sucesso nessa idéia, mas não investiguei no detalhes.
A parte engraçada desse tipo de tomada de decisão é que ele se foca em não falhar em vez de ganhar. Você raramente verá algum grande sucesso em um ambiente como esse.
AkitaOnRails: Sim, de fato. Eu sofro isso diariamente. Mas mudando de assunto um pouco. Acredito que seu livro publicado mais recente é o Rails Recipes da Pragmatic Programmers. Eu comprei tão logo ele foi lançado e posso dizer que é um recurso incrivelmente útil. Gosto de livros no estilo de Receitas. Aconteceu algo no processo de criação que você acha que foi desafiador ou mesmo curioso? Alguma história sobre sua concepção?
Chad: Agradeço as palavras gentis. A coisa sobre o livro que eu sempre gosto de dizer é que ele é verdadeiramente um livro de “receitas”. A maioria dos livros no estilo de receitas não são mais do que referências completas, artificialmente divididas no formato de receitas.
O equivalente em culinária seria ter tópicos de receitas como “Como jogar uma colher de sal na sua comida”. Ninguém precisa de uma receita com tópicos tão granulares como esse. Receitas deveriam ensiná-lo a fazer algo que você já não saberia como fazer.
Esse foi meu foco. Tentei fazer receitas que eram realmente composições de muitos ingredientes. O maior desafio escrevendo o livro é que Rails era um alvo móvel. Como você sabe, escrever um livro contra algo que está em constante mudança não é fácil. Tive que gastar muito tempo no código fonte do Rails Edge.
AkitaOnRails: Eu sei disso, também escrevi um livro que está um pouco atrasado (foi para a versão 1.1). E você já está preparando o Advanced Rails Recipes. À medida que você evoluiu desde o primeiro livro, o que acha da evolução atual do Rails? Está acontecendo muito rápido? As pessoas estão tendo tempo de tocar em todas as coisas novas?
Chad: Não acho que as pessoas estão conseguindo tocar nas coisas novas. A maioria das pessoas com quem falo ao redor do mundo ainda não alcançou o Rails 1.1. É uma perspectiva fácil de perder quando você, como eu, gasta muito do seu tempo na comunidade Rails “alpha geek”, super-avançada.
Felizmente para nós que escrevemos livros, isso significa que livros desatualizados ainda têm valor para desenvolvedores Rails “normais”. Não acho que seja ruim que as massas não consigam acompanhar a evolução do Rails. Apenas significa que as funcionalidades mais avançadas estão sendo utilizados por desenvolvedores avançados. Até agora, Rails tem se mantido compatível com versões anteriores.
A coisa interessante será ver como o lançamento do Rails 2.0 impacta na porção menos-avançada da comunidade. Rails 2.0 introduzirá incompatibilidades que forçarão novas convenções/opiniões nos desenvolvedores. Acho que será uma confusão e um processo tenso, mas passaremos disso.
AkitaOnRails: Li um post de blog recentemente sobre uma apresentação que acho que você fez em março. Não sei se foram suas palavras, mas a frase “Ruby está numa encruzilhada perigosa” me chamou a atenção. Também acho a mesma coisa. Gostaria muito de ver sua elaboração disso.
Chad: A razão primária pela qual acho que estamos num ponto perigoso em nosso caminho é o seguinte: sendo um player em um mercado de nicho por muitos anos, tivemos que chutar e lutar para defender nosso território como uma escolha legítima de linguagem. Quando você gasta todo seu tempo brigando, isso se torna parte da cultura da comunidade. Nossa reação padrão a mudança agora é defensiva e argumentativa. E, acreditando que estamos na vanguarda, fechamos nossa mente a sugestões de fora. Isso estava bem quando estávamos em modo de defesa, mas agora que estamos “ganhando” em termos de adoção, temos que ativamente mudar nossa cultura ou do contrário nos arriscamos a nos tornar ogros de mente fechada.
AkitaOnRails: A velha bravata do DHH: quem quer se tornar famoso? . Você acha que ele ainda pensa dessa forma? Muitas pessoas seguem essa bravata.
Chad: Acho que ele ainda tem essa opinião, embora ele provavelmente esteja recuando um pouco, porque agora estamos nos tornando famosos. Mas eu concordo com ele de algumas maneiras.
Matz falou na OSCON 2005 dizendo “É legal ser minoria”, falando sobre as vantagens de não ser famoso. Avi Bryant, do Seaside, também vocalmente aprecia o status de nicho do Squeak e Seaside.
Olhando atrás para a RubyConf 2001, tínhamos 40 pessoas, muitas das quais eram autores do Agile Manifesto. Além disso, muitos eram autores de livros que eu li e gostei durante os meses que levaram à conferência. Era um grupo pequeno de experts. Pequenas comunidades são assim. Grandes comunidades, como grandes companhias, tem prioridades e os focos são diferentes. Ambos são bons, mas para alpha geeks como DHH, menor é provavelmente melhor para o processo criativo.
AkitaOnRails: Outra frase do mesmo post de blog que chamou minha atenção foi que “Ruby 2.0 tem sido vaporware por tanto tempo quanto Perl 6”. É verdade. Ruby está na versão 1.8 há tempos. Acredito que Rails foi explosivo de muitas maneiras. Sobre-exposição pode ser bom e mal. Você se torna famoso, mas tem que viver de acordo. Felizmente agora vejo esforços velozes como JRuby. O que acha dessa situação? Pode Ruby estar condenado a ser substituído por alguma implementação alternativa, ou Ruby 2.0 é real o suficiente hoje?
Chad: Não acho que Ruby 2.0 esteja condenado. Na realidade eu estava parafraseando Matz quando isse que Ruby 2.0 era vaporware. Matz falou sobre Ruby 2.0 na RubyConf 2001 (quando ainda estávemos no Ruby 1.6.x). JRuby também está em desenvolvimento desde 2000.
Acredito que Matz organizou a equipe da maneira correta e está fazendo progresso real em direção ao Ruby 2.0. Espero ver um lançamento do beta até o fim do ano como ele prometeu. Tenham em mente que Ruby 2.0 é na realidade duas coisas diferentes:
- uma nova VM (YARV)
- uma nova linguagem
A nova linguagem tem sido o interesse e foco de Matz. Agora que temos alguém oficialmente trabalhando na nova VM, Matz está livre para evoluir a linguagem Ruby.
AkitaOnRails: Claro, na realidade tenho a sensação que vi ambos Ruby 2.0 e JRuby acelerando no último ano, mais do que em anos anteriores.
Chad: Muita verdade. JRuby está acelerando graças aos esforços de Charles Nutter e Thomas Enebo, que foram recentemente contratados pela Sun para trabalhar quase exclusivamente no JRuby. Eles estão colocando um bocado de esforço e isso está transparecendo.
AkitaOnRails: Sim, acabei de ver a versão 0.9.9 saindo ontem. Esforço fantástico. Eu os imagino trabalhando dia e noite nisso, é loucura. Estou tentando entrar em contato com Charler Nutter para entrevistá-lo também. A comunidade Java local vai pirar nessa.
Chad: Sim, definitivamente. Os caras do JRuby são definitivamente heróis no mundo Java.
AkitaOnRails: Ruby está ainda na infância aqui no Brasil. Está custando muito esforço na tentativa de aquecer a comunidade local. Pelo menos à distância vejo que as comunidades americanas e européias estão crescendo de maneira muito forte e rápida. Você estava lá desde o começo. O que acha que foi o ponto da virada para Ruby aí? O que custou para tornar Ruby reconhecido e respeitado?
Chad: Duas coisas. A primeira foi o fato que muitos dos pensadores líderes da indústria eram defensores de Ruby de longa data. Dave Thomas, Andy Hunt, Martin Fowler. Todos eles estavam usando Ruby muito antes dele decolar. Isso preparou o palco para a explosão do Rails.
Quando Rails saiu, a propaganda foi suportada por alguns nomes muito respeitados no desenvolvimento de software. Rails foi, claro, a segunda (e maior) coisa que nos empurrou para frente do mais difícil. Mais importante, foi o esforço de marketing de David Heinemeier Hansson.
De verdade, a Europa está atrasada em relação aos Estados Unidos em termos de adoção de Ruby. Índia e outros lugares similares estão atrasados em relação à Europa. Acho que é uma progressão natural baseada largamente nas economias de cada região. Eu chutaria que o Brasil chegará perto no seu tempo. Você tem apenas que esperar até que a onda o atinja.
AkitaOnRails: Sim, a espera está realmente me matando :-) Eu vejo dúzias de livros de Rails e Ruby na Amazon, e o meu ainda é um dos únicos sobre Rails aqui. É meio triste. E é muito difícil empurrar a comunidade para frente porque temos o velho problema do ovo-e-da-galinha: as empresas não querem Rails porque não temos profissionais os suficientes, e programadores não querem aprender Ruby ou Rails porque as empresas não têm demanda.
Chad: Esta é exatamente a situação da Índia. Acho que isso é muito relacionado à economia. Vai chegar a você, mas se seu mercado primário está servindo outras necessidades de TI a custos baixos, você vai precisar necessariamente jogar de maneira conservadora e ir atrás do volume, não da margem.
AkitaOnRails: Eu gastei muito tempo tentando entender isso. Rails aterrissou como uma tempestade nos EUA. Posso ver a explosão. Mas está lento em outras partes do mundo, como aqui. O que tem de tão diferente nos EUA? Não acredito que seja apenas coincidência.
Chad: Como eu disse, acho que tem tudo a ver com a economia. Morar na Índia me deixou mais antenado ao fato de que em países em desenvolvimento, o foco é na sobrevivência econômica e sucesso financeiro. Nos EUA, a maioria dos desenvolvedores de software apenas quer se divertir. Dado nosso sucesso financeiro enquanto nações desenvolveram um grande senso de jurisprudência. Então nós, mais do que outros países, vemos nosso trabalho como algo que tem que ser agradável e, portanto nós estamos mais propensos a experimentar e empurrar os limites.
Em geral não gastamos nosso tempo nos preocupando em manter nossos empregos se comparados com as pessoas de outros países, porque sentimos que podemos conseguir outro quando quisermos. Em outros países, há uma ênfase maior em empregabilidade ser um serviço ao empregador em vez do contrário. Acho que em termos de ética, a posição do desenvolvedor de software mediano americano é inferior aos de desenvolvedores de outros países, mas isso atiça a inovação.
AkitaOnRails: Você está correto nisso. E falando na Índia. Você escreveu muitas coisas, mas meu livro favorito é Meu Emprego foi para a Índia. Eu consigo totalmente ver a motivação de escrever uma peça como essa com toda essa coisa de terceirização acontecendo. Eu li e me senti em casa porque eu já vivo muito dos 52 princípios do livro, embora nunca tenha feito nada disso para “salvar meu emprego”, como diz o sub-título do livro. Apenas faço o que faço porque gosto disso. Quando você teve a idéia de escrever essas idéias? Algum motivo em particular?
Chad: Antes de responder à questão, eu quero concordar com você sobre “salvando seu emprego”. O título do livro foi um erro. Meu Emprego foi para a Índia não é sobre salvar seu emprego. É sobre criar uma carreira memorável para você mesmo.
Gastei muito tempo na Índia e outros lugares guiando jovens desenvolvedores de software em suas carreiras. Também fiz muitas entrevistas. Com o tempo me encontrei explicando e motivando da mesma maneira o tempo todo. Quando retornei da Índia, decidi deixar meu emprego em uma grande empresa conservadora, o que me deixou livre para escrever sem as limitações de acordos de propriedade intelectual pesando sobre mim.
Falei com Dave Thomas sobre fazer um livro a respeito de terceirização da maneira correta, e foi Dave que na realidade mudou o tópico e disse que eu tinha uma audiência muito maior que poderia ajudar se colocasse junto pensamentos sobre como pensar sobre uma carreira nesse ambiente global.
AkitaOnRails: Infelizmente eu vejo muitas pessoas aqui indo pelo caminho usual: formar na faculdade, talvez tirar uma ou duas certificações de Java e simplesmente parando. Daí em diante eles apenas vivem suas rotinas. Eles preferem uma rotina a ter que tomar decisões – e se responsabilizar por elas. Eu tento meu melhor para guiar o máximo de pessoas que posso. Algum conselho para esta geração atual? Sei que a questão é muito ampla (o tema de um livro inteiro), mas você provavelmente tem algo que diz a todo jovem que vê com um ponto de interrogação na testa.
Chad: A única maneira de resumir rapidamente é: tenha paixão pelo que faz. Seu tempo de trabalho é uma porção grande da sua vida total, que você não quer gastar fazendo algo pela qual não é apaixonado. Não tenha medo de tomar o controle da sua carreira e de arriscar. Eu iria até mais longe dizendo que você pode ter escolhido a área errada, e nunca é tarde demais de perceber isso e fazer uma mudança.
AkitaOnRails: Legal, é meu lema também. Muitas pessoas simplesmente se recusam a pensar dessa maneira porque seu raciocínio é algo assim: “coisas que eu gosto não me trazem comida à mesa, então tenho que fazer o que não gosto para poder sobreviver”. É um raciocínio triste. Sei que tenho sido muito sortudo apenas por conseguir seguir o caminho que gosto mais, mas muitas pessoas acham muito difícil mudar de carreira ou aprender algo novo. Educação é cara no Brasil, desemprego é uma realidade. Infelizmente não há muito que eu possa fazer a não ser guiar o máximo de pessoas que puder.
Chad: Novamente, é uma realidade infeliz fora dos EUA, e provavelmente outra razão pela qual os EUA são mais inovadores no campo de TI. É possível aqui mudar de carreira quando quiser. E é muito mais fácil trabalhar baseado em mérito em vez de em credenciais. Então, eu (por exemplo) como um músico fui capaz de construir uma carreira para mim em TI sem ter que passar por uma universidade. Até hoje não passei por um único curso de programação.
AkitaOnRails: Você mencionou que passou muito tempo na Índia. Você vê esse tipo de realidade lá também? Pessoas focadas mais em sobreviver do que apreciar seus empregos?
Chad: Sim, assim mesmo. Eu imagino que as motivações por trás das vidas profissionais são similares entre a Índia e o Brasil.
AkitaOnRails: Já esteve no Brasil ou conheceu brasileiros?
Chad: Conheci brasileiros, mas nunca estive no Brasil. Eu adoraria visitar, entretanto!
AkitaOnRails: E sobre comunidades novamente. A comunidade Java é muito forte no Brasil. O patrocínio da Sun e muitos anos de desenvolvimento criaram uma fundação muito forte aqui. Ainda vejo muita animosidade entre os caras de Java e todo o resto. Eles investiram muito tempo em uma única tecnologia e parece natural para eles criticarem qualquer coisa. Você vê isso acontecendo também?
Chad: Eu vejo. É uma tendência humana natural. E, se pensar sobre isso, Java, como Ruby, passou pelos mesmos períodos de ter que se vender lá atrás como uma tecnologia factível. Meu medo é que a comunidade Ruby agora seja como a comunidade Java do começo, que nosso destino seja se tornar fechada e aversa à mudanças e novas idéias como muitos no mundo Java se tornaram.
AkitaOnRails: Ok, estou muito feliz por essa conversa. Muito obrigado!
Chad: Legal, obrigado!