Dev (Back & Front)ARTIGO

Entrevista – Paul Jones & Cal Evans

Cal Evans e Paul Jones, keynote speakers do iMasters PHP Experience 2015, que aconteceu em abril, contam suas experiências para fomentar a comunidade mundial de desenvolvedores.

Cal Evans e Paul Jones, keynote speakers do iMasters PHP Experience 2015, que aconteceu em abril, contam suas experiências para fomentar a comunidade mundial de desenvolvedores.   

RiM – Em que você tem trabalhado recentemente? 

Paul Jones: Aura (auraphp.com) é um projeto contínuo; há sempre mais refinamentos e melhorias a serem adicionados. Mais recentemente, eu comecei um projeto chamado Bookdown (bookdown.io). Ele gera páginas HTML similares ao DocBook, a partir de fontes Markdown e JSON (em vez de XML). É ótimo para documentação em narrativa. Pretendo adicionar um conversão PHPDocumentor-to-Bookdown também, de forma que a documentação de uma API possa ser incorporada ao mesmo site.

Também terminei o meu segundo livro, “Solving the N+1 Problem in PHP” (leanpub.com/sn1php). É uma sequência de um tópico específico do “Modernizing…”, que ajuda a melhorar a performance de aplicações quando você construir coleções de objetos entity.

Cal Evans: Meu projeto mais recente foi “Wisdom of the ElePHPant” (wisdomoftheelephpant.com). Escrevi para mais de 20 desenvolvedores PHP, amigos muito mais gabaritados do que eu, e pedi a cada um que contribuísse com dois ou três parágrafos curtos de “sabedoria PHP”. Eles foram reunidos em um livro que muitos de nós agora distribuímos em conferências. Foi um “projeto comunitário” muito divertido de montar.

RiM – Cal, você poderia falar sobre as iniciativas “Nomad”? Como começaram e por que são importantes para você?

C.E. – A inspiração para o NomadPHP (nomadphp.com) foi Khayrattee Wasseem (@7php), que mora nas Ilhas Maurício (África). Ele tinha criado um codinome na comunidade para compartilhar entrevistas maravilhosas com diversos membros considerados de alto calibre na comunidade. Mas, por conta de onde morava, ele teria poucas chances de encontrar essas pessoas em uma conferência. Comecei a pensar sobre isso e percebi que havia profissionais em diversas localidades que não tinham o benefício de poder participar de pelo menos uma conferência de desenvolvedores a cada ano. Foi então que criei um PHP User Group para levar esses palestrantes até ele.

NomadPHP cresceu ao ponto de termos duas reuniões mensais, uma no fuso da Europa Central e outra no fuso dos Estados Unidos. Cada reunião conta com um palestrante diferente, que apresenta uma talk que já fez em uma conferência. Atualmente, temos empresas que adquirem “Team Tickets”: elas fazem reuniões para assistir às apresentações e discutir a respeito dos assuntos tratados. Estamos muito entusiasmados por ajudarmos equipes inteiras a crescer.

Ao início de cada reunião Nomad, deixamos muito claro que não somos um substituto para grupos de usuários PHP locais. Ou seja, se você tem um grupo, esperamos que você se envolva com ele. No entanto, se você não tiver um, nós nos propomos a ser o seu grupo de usuários locais.

RiM – Em seu livro “Modernizing Legacy Applications In PHP”, eu li a seguinte frase: “Você vai flanar pelo seu código como o vento. Ele terá carregamento automático, injeção de dependências, testes unitários, separação em camadas e controlado no front”. Por que isso é tão importante a ponto de ter te inspirado a escrever esse “guia”, como o livro é chamado na comunidade PHP?

PJ – Tive a oportunidade de trabalhar em vários lugares diferentes, com missões igualmente diferentes. Com isso, esbarrei com os mesmos problemas de código aparecendo sempre. Com códigos tão bagunçados como um prato de espaguete, com includes e globals, você fica receoso de encostar em alguma coisa para resolver e acabar quebrando outra coisa em outro lugar. E isso por si só já significa que os desenvolvedores estão infelizes, sem moral e sofrendo; eles odeiam seus trabalhos, porque é difícil lidar com o código.

Então, muito do trabalho feito nesses lugares tem sido o de fazer o código mais fácil de ser trabalhado. Ao longo de 10 anos, mais ou menos, eu cheguei a uma série de pequenas mudanças que podem ser aplicadas com algum esforço, mas com grande recompensa. O livro “Modernizing” é uma versão ordenada e formalizada dessas mudanças. À medida que elas são aplicadas, os desenvolvedores voltam a gostar de seus trabalhos, pois o código se torna mais fácil de lidar.

Tudo isso para dizer que a inspiração não foi apenas “melhorando a qualidade da aplicação”, mas “melhorando a qualidade de vida do desenvolvedor”. É uma forma de ampliar a felicidade com o trabalho que fazemos diariamente. A meta realmente é uma vida de trabalho melhor e mais satisfatória.

RiM – Resumidamente, seu livro “Cultura do Respeito” trata do porquê investirmos tempo e energia para construir “uma equipe da qual os desenvolvedores querem fazer parte”. Qual foi sua motivação para escrever esse livro?

C.E. – Sou desenvolvedor há 30 anos. Nesse tempo, trabalhei com muitos chefes, alguns bons, outros ruins, outros excelentes e outros terríveis. Eu também construí várias equipes na minha carreira. Esta é provavelmente uma das coisas que mais gosto de fazer: construir e gerenciar equipes de desenvolvimento. Ao longo do caminho, reuni inúmeros insights sobre o que é preciso para encontrar, contratar e reter bons desenvolvedores.

A gênese do livro, no entanto, remonta a um artigo que escrevi há 15 anos intitulado “Nerd Herding” (http://blog.calevans.com/nerd-herding/). Se você já leu “Cultura do Respeito”, verá muitos dos temas tratados em “Nerd Herding”. Em “Cultura do Respeito”, no entanto, tenho 15 anos mais de estrada e experiência.

Assim, o livro foi escrito para compartilhar meus pensamentos e minha experiência em uma área na qual muitas empresas apresentam dificuldades para se adaptar. A primeira parte do livro trata de como encontrar desenvolvedores para contratar. Conheço muitas empresas que lutam constantemente para encontrar bons desenvolvedores. Então, compartilho com elas coisas que fiz, e coisas que vi os outros fazerem.

RiM – Atualmente, temos diferentes estilos de arquitetura para aplicações: o famoso MVC, hexagonal, DCI, e microframeworks/microservices. Você enxerga ainda espaço para novos formatos nos próximos anos?

PJ – Acredito que novas tecnologias e novas formas de trabalhar surgem, e há sempre espaço para novos estilos. Mas também acho que esses novos estilos devem ser modificações, revisões e refinamentos dos antigos, mais do que arquiteturas completamente novas e diferentes.

RiM – Você pode falar mais sobre MVC (Model View Controller) e ADR (Action Domain Responder) em termos de Desing Patterns Arquitetônicos?

PJ – Antes de tudo, é preciso lembrar que MVC não é uma arquitetura de aplicação, pois isso é muito fácil de esquecer – eu mesmo fiz essa confusão por anos. Model View Controler é um padrão de “interface de usuário” que é aplicado dentro da arquitetura de aplicações, da mesma forma que Row Data Gateway é um padrão de dados-fonte que é aplicado em arquiteturas de aplicações.

O curioso sobre o MCV é que é um padrão bastante antigo. Trygve Reenskaug o utilizou nos anos 1980, há 30 anos. Na década de 1990, a Sun decidiu utilizar esse termo para a arquitetura “Model 2”. Eles mantiveram os “noems” dos componentes do padrão (model, view, e controller) mas subverteram as relações desses componentes, inventando um novo padrão, mas com o mesmo nome. Por isso que MVC “para a web” é diferente de MVC “para desktop”.

Isso nos leva ao Action Domain Responder (pmjones.io/adr). ADR é uma tentativa de nomear os padrões UI que temos que realmente usar no desenvolvimento web, mais do que utilizar erroneamente o nome MVC para descrever o que acreditamos estar fazendo. Um dos pontos centrais do ADR é a camada view. Pensamos no template como a view, mas é realmente uma “resposta HTTP como um todo” que é a view. Tudo o mais sobre ADR parte dessa revelação.

RiM – O PHP é, de fato, uma grande linguagem para desenvolvimento web. Mas o que dizer do php-cli? Poderia ser usado para a criação de grandes ferramentas que extrapolariam a web?

CE – Eu não sou bom na construção de interfaces de usuário utilizáveis. É por isso que, provavelmente, usar o PHP a partir da interface de linha de comando (CLI) é o que mais faço. Construí ferramentas para gerenciar sistemas de e-mail usando o php cli, e já palestrei a respeito dele em 2009.

Até recentemente, porém, o PHP tinha um problema. Houve um vazamento de memória que nos impedia de escrever programas de longa duração. Muito php from the cli foi usado para obter ferramentas ‘hip pocket’. Mas isso foi resolvido. Tenho um script em execução no meu servidor privado que tem sido executado há três meses, sem interrupção. E não é um “script” ou uma página da web, é um programa.

O PHP não é a ferramenta perfeita para fazer isso, mas ele está ficando melhor a cada lançamento. Algumas das coisas que virão no PHP 7 tornarão possíveis escrever programas melhores e mais robustos que funcionam a partir a CLI.

Com o avanço da IoT, estou ansioso para o dia em que eu poderei escrever um programa PHP executando no meu servidor privado que irá bloquear a porta da minha geladeira, se estiver comendo demais, por exemplo. Espero poder usar o PHP para construir as ferramentas e fazer a IoT acontecer.

RiM – No Brasil, os desenvolvedores têm desenvolvido comunidades bastante fortes. Por que é importante para o profissional ser parte de um grupo, e que tipo de experiência e conhecimento ele pode aproveitar ali?

PJ – No mínimo, participar de um grupo ensina que você não é o Melhor E Mais Inteligente Desenvolvedor Em Tudo. No geral, cada desenvolvedor tem uma percepção muito alta de sua própria inteligência, até que ele leva uma “surra intelectual” de outros profissionais. O desenvolvedor sábio leva isso como uma chance de aprender humildade e ampliar seu conhecimento; o tolo fica ressentido e se rebela contra isso.

Você também pode encontrar grandes amigos e aliados nesses grupos. Eu me acho muito sortudo por ter encontrado bons amigos (como o Cal!) nos meus grupos. Eles me enriquecem, e espero que eu faça o mesmo por eles!

CEEu passei os primeiros 15 anos da minha carreira sendo um “desenvolvedor solo”. Eu não trabalhava em equipes, não participava da comunidade, era apenas eu sozinho. Gastei a maior parte desse tempo procurando por respostas que outras pessoas ficariam felizes em me ajudar a encontrar, a compartilhar comigo, se apenas eu estivesse me envolvido e perguntasse. O melhor lugar para ir quando se tem uma dúvida é a comunidade PHP. Claro que existem exceções, mas a maioria dos participantes quer, tem vontade e disposição para ajudar.

O outro lado da moeda é que, se alguém te ajuda, é implícito que você também vai ajudar alguém, não importa o seu nível de experiência.

Sim, você pode fazer tudo sozinho, mas a questão é: por que você faria isso? Deixe a comunidade PHP te ajudar! Envolva-se, pergunte, responda a dúvidas. Você vai descobrir que é possível aprender mais ao ajudar os outros do que simplesmente por pedir ajuda.

RiM – Tecnologia de Informação é uma das carreiras mais promissoras no Brasil. Muitos jovens brasileiros também possuem fortes habilidades empreendedoras. Qual conselho vocês dariam aos jovens brasileiros que estão prestes a ingressar na faculdade?

PJ – Se você já for um empreendedor e tiver um bom plano de negócios, talvez nem precise ir para a faculdade. Provavelmente, você aprenderá muito na vida real ao tentar construir o seu negócio. No mínimo, vai aprender como isso é difícil, e que suas ideias não valem muita coisa se não forem bem implementadas.

Por outro lado, ir para a faculdade não vai fazer você gostar de algo que você já não goste. Será um exercício de disciplina, e isso é muito valioso para empreendedores e empregadores. Você ganhará créditos que serão úteis ao procurar um emprego nessa área. Mas você realmente vai aprender mais ao fazer as cosias por si só, mais do que ao fazê-las em sala de aula.

CE – 1: Aprenda PHP! É sério, se você aprender o básico, imediatamente poderá começar a ajudar pessoas que usam sites em WordPress. O próprio WordPress alimenta boa parte da Internet. Saber como fazer o WordPress funcionar é um excelente ponto de partida.

2: Aprenda um framework! Meu amigo Mr. Paul Jones possui um grande framework, Aura, que fornece um novo conjunto de ferramentas para resolver problemas. Mas não se pode realmente aproveitar tudo isso até entender o próprio PHP. Agora, se o Aura não for o ideal para você, tente Zend Framework, Symfony, Cake PHP ou Laravel. Continue experimentando diferentes frameworks até encontrar aquele que se adapte à maneira como você deseja programar. Mas não pare por aí, continue experimentando outros frameworks. Sim, é muito trabalho. E é difícil, mas você precisa saber o que acontece no mundo, e com qual framework se sente mais confortável em trabalhar e por quê.

3: Continue aprendendo! Programação não é uma carreira estática. Novas ideias são apresentadas o tempo todo. Novas tecnologias surgem o tempo todo e você PRECISA saber o que as pessoas fazem, e como elas se encaixam nos projetos que você estiver construindo. Eu amo o PHP, mas posso escrever código em Java, Pascal e em .NET. Em suma: não se limite, aprenda o máximo que puder.

4: Envolva-se! A comunidade PHP é uma vibrante e cheia de pessoas que gostariam de ajudá-lo a aprender. Junte-se a seu grupo de usuários PHP locais. Se você não possui um grupo de usuário PHP local, comece um. Você precisa estar entre seus pares, e mergulhar na comunidade.

5: Compartilhe! Se você usar o PHP para qualquer coisa, estará sobre os ombros de gigantes. A comunidade PHP abraça o princípio da “Pay It Forward” (passe adiante). Assim, logo que possível, comece a compartilhar o que aprendeu. Você pode ser novo na programação, mas garanto que aprendeu algo que alguém não sabe. Então crie um blog, fale sobre isso, entre no IRC e, quando alguém fizer uma pergunta a respeito, ofereça a resposta. Outros antes de você fizeram o mesmo para que um dia você pudesse estar onde está, logo esperamos que você também faça o mesmo.

é jornalista formada pela Cásper Líbero, com expertise em tecnologia, área em que atua há 6 anos. Atualmente mantém o blog em inglês iMasters Expert e é tradutora da revista Linux Magazine. Além de conteúdo, já trabalhou com link patrocinado na primeira empresa do segmento a aportar no Brasil, em 2003, com publicidade online no UOL em 2000, nos tempos da “bolha da Internet”, e no portal Terra no projeto de conteúdo de cinema e música para a Coca-Cola, em 2001. Ama felinos, arte, cultura e bike, precisamente nessa ordem.

Ver perfil