Uma entrevista com Ryan Potts, na qual ele e Jeremy Walker falam sobre Delphi, sobre o que ele aprendeu por ser contribuidor do Exercism e sobre as suas experiências de programação em setores que ainda estão "offline".
Olá Ryan. Obrigado por arranjares um tempo para conversar comigo. És o responsável pela manutenção do percurso de Delphi no Exercism. Como é que começaste com o Delphi?
Trabalho numa empresa que o meu pai fundou e que desenvolve software desde os anos 80, primeiro com o Microsoft Pascal e mais tarde com o Turbo Pascal da Borland. Vim trabalhar para a empresa em 1996, por essa altura começou a receber pedidos para produzir software que corresse em Windows, em vez de DOS. Por feliz coincidência, a Borland tinha acabado de lançar o Delphi 1. Foi perfeito para nós, porque a maior parte das units que tínhamos desenvolvido ao longo dos anos ainda podia ser usada. Deixámos de ter de começar tudo de novo em VB ou VC para suportar o Windows.
E ainda usas Delphi no dia a dia?
Sim. A empresa onde trabalho produz máquinas para testes de I&D e para testes de pequenas séries no setor automóvel, com que se testam pneus, bancos de automóvel e insufladores de airbags, além de testes de colisão. Todos os sistemas que produzimos são usados por vários fabricantes de automóveis em todo o mundo, e também pelos seus fornecedores.
O software em que trabalho serve para controlar estes vários tipos de máquinas. Desenvolvo a interface, defino as sequências de teste para as partes automatizadas dos testes e integro os vários pontos de entrada e saída, tanto analógicos como digitais. Tem de ser o mais fácil de usar possível, para que uma pessoa com formação mínima se sinta à vontade a usá-lo.
O trabalho que faço não exige nada de programação web. Faço tudo em Delphi, no Windows. De vez em quando tenho de criar um pequeno "comando personalizado" em C++ e carregá-lo para a placa processadora de aquisição de dados, que é um computador paralelo instalado numa ranhura PCI do computador; tem o seu próprio CPU, memória e sistema operativo.
É fascinante conversar com alguém que não faz nada de programação web. Hoje em dia isso parece pouco comum, mas fico a pensar se não será apenas a proporção sinal/ruído com que me deparo no dia a dia, em vez de um reflexo de toda a indústria.
Sim, o meu envolvimento no Exercism permitiu-me ver um pouco como vive a "outra metade" da indústria informática. Aprendi muito sobre Desenvolvimento Orientado por Testes (TDD), sobre como navegar no GitHub e sobre trabalhar num projeto open source. Muito do que aprendi melhorou a qualidade do trabalho que faço na empresa.
É ótimo saber disso. Uma das coisas que mais gosto no Exercism é esse espírito de "como vive a outra metade": dar conta de todos os nossos pontos cegos e aprender sobre coisas que nem sabíamos que existiam. Imagino que ser responsável pela manutenção de um percurso tenha reforçado ainda mais essa aprendizagem?
Sem dúvida. Escrevo mais testes do que antes. Nem sempre é TDD em sentido estrito; às vezes os testes vêm depois, e não primeiro. No entanto, influenciou a forma como estruturo o código, ao remover dependências desnecessárias para facilitar os testes.
Passo muito tempo a rever issues e PRs no repositório problem-specifications, onde definimos os exercícios do Exercism de forma independente da linguagem. Aprendi muito com as discussões. Às vezes, uma alteração sugerida parece simples à primeira vista, mas a conversa que se segue revela problemas. Desenvolvi mais paciência. Ensinou-me a procurar outros ângulos possíveis para os problemas técnicos no trabalho.
Também aprendi mais sobre mentoria, em particular a importância de perceber o porquê que está por trás, em vez de apenas o como. Trabalho com meia dúzia de outros programadores. Apesar de ser mais novo do que a maioria deles, estou na empresa há mais tempo do que eles, e muitas vezes consigo apontar uma abordagem mais eficiente para sequenciar o funcionamento de uma máquina ou explicar porque é que algo tem de ser feito de uma determinada forma.
Além do Exercism, também és um Delphi MVP, o que é fantástico! Como é que isso aconteceu? Há uma comunidade de Delphi forte de que faças parte?
Quando estávamos a montar o percurso de Delphi, contactei o Sr. Jim McKeeth, da Embarcadero, para ver se conseguíamos uma licença open source para o Delphi. Isso permitir-nos-ia usar o Delphi para desenvolver novos exercícios e deixar que as pessoas contribuíssem através de pull requests. Foi no decorrer dessa troca de mensagens que o Jim me convidou para aderir ao Programa MVP da Embarcadero.
O Delphi Praxis é uma comunidade online que conheço bem. Há muita atividade no Google+, mas está a acabar, por isso temos de ir para outro sítio.
Já criaste alguma aplicação open source em Delphi que os outros possam ver?
Já! O Instalador da CLI do Exercism para Windows é open source e está escrito inteiramente em Delphi. Determina automaticamente a versão correta (32/64 bits) da CLI do Exercism de que o estudante precisa, descarrega a CLI, extrai-a e coloca-a no lugar certo. O instalador já foi descarregado 15 000 vezes, do que tenho muito orgulho!
É uma conquista fantástica! Como alguém que não faz muita (ou nenhuma) programação para a internet, que desafios enfrentaste ao criar o instalador em Delphi?
O instalador foi inicialmente escrito em C#. Estava desatualizado, e decidi ver se conseguia melhorá-lo. Nunca tinha tentado nada assim, mas sabia que o Delphi tinha as ferramentas necessárias para fazer o trabalho. Comecei por estudar o código original em C#, para perceber que sequência de acontecimentos estava a ocorrer nos bastidores, e depois tentar realizar as mesmas tarefas em Delphi. Encontrei código de exemplo no site de documentação da Embarcadero que ajudava a explicar como encadear corretamente os componentes disponíveis para criar um cliente REST. Descobri também um utilitário muito útil que vem com o Delphi, chamado REST Debugger. Permitia-me introduzir e, assim, testar as várias chamadas HTTP necessárias para que o instalador funcionasse. Assim que funcionavam, o depurador criava cópias dos componentes necessários, para eu as poder colar no código.
Para alguém que queira envolver-se mais no Exercism, talvez alguém que espera vir a ser responsável pela manutenção, podes contar-nos como foi o teu percurso?
Sou membro de um grupo local de encontros chamado Akron Code Club. Reunimo-nos cerca de uma vez por mês e, normalmente, formamos pares e resolvemos um kata de código sugerido ao grupo. No encontro de agosto de 2016, começámos a fazer exercícios disponibilizados pelo Exercism. À medida que usava o Exercism e alguns dos outros sites de ensino, pensei que seria bom se mais destes sites de programação online oferecessem Delphi ou Pascal como opção. Depois de explorar o site do Exercism e os repositórios do Exercism no GitHub, descobri que o Exercism está sempre interessado em acrescentar novos percursos de linguagens. Não tinha bem a certeza de qual seria a melhor forma de contactar a Katrina. Acho que usei o Gitter para a contactar em agosto de 2016, propondo a adição do Delphi. Recebi uma resposta com desculpas cerca de dois meses mais tarde, e foi aí que percebi que ela não usa o Gitter. De qualquer forma, perguntou se eu ainda estava interessado em trabalhar na adição de um percurso de Delphi Pascal e, se sim, iria pôr as coisas a andar.
Agora há um repositório que podes usar para pedir um novo percurso de linguagem, e podes sempre abrir issues no repositório exercism/exercism para entrar em contacto com os responsáveis pela manutenção do projeto.
Ótimo. Obrigado por conversares comigo e por todo o teu trabalho no Exercism!
O prazer é meu! Foi divertido. Gosto de participar e de fazer o que posso pelo Exercism. Aprender na prática!