Gabriel Nelle vive no sul da Alemanha, perto de Baden-Baden. Partilha o apartamento com a namorada e dois gatos. Estudou para ser professor de matemática e alemão na universidade de Siegen, onde terminou em 2008.
Jonathan: Bem, olá a todos. Chamo-me Jonathan. É um prazer ser o vosso anfitrião esta noite. Tenho um convidado que tenho o privilégio de receber no programa de hoje. Gostaria de vos apresentar o Gabriel Nelle. O Gabriel é um dos nossos principais contribuidores no Exercism. Esteve muito envolvido no percurso de Go em particular, mas deixo que ele se apresente com mais detalhe daqui a pouco. Mas só para dizer, Gabriel, é ótimo ter-te aqui. Obrigado por te juntares a nós e esperamos que te divirtas tanto quanto todos os ouvintes do programa de hoje. Então, Gabriel, porque não começas tu. Conta-me um pouco de onde és e como acabaste onde estás agora.
Gabriel: Sim. Olá. Sou o Gabriel. Obrigado por me receberes. Sou do sul da Alemanha, foi lá que cresci, e é lá que estou agora, não no mesmo sítio, mas ainda no sul da Alemanha. Sim, cresci em... bem, comecemos: sou pessoa do início dos anos oitenta, portanto cresci, nasci em 81. E acho que a minha história começa por volta do final dos anos oitenta, quando o meu pai trouxe para casa o primeiro computador. Acho que é aí que a história começa. Pelo menos a história escrita.
Jonathan: Sim.
Gabriel: Tinha o MS-DOS instalado, não sei bem que versão era. Acho que era uma versão antiga, também porque, se me lembro bem, o meu pai trouxe-o para casa porque basicamente o iam deitar fora nessa empresa e tinham recebido computadores novos, por isso ele pôde levar aquele para casa, e sim, foi a minha primeira impressão dos computadores. MS. É interessante e estranho.
Jonathan: as linhas, as linhas coloridas no ecrã preto? Era bastante
Gabriel: Sim, era só branco sobre preto. Basicamente. E basicamente podias... na maior parte das vezes era só a linha de comandos, que foi a primeira coisa que conheci. E depois, mais tarde, com o meu pai, basicamente em 90, por volta de 1991, o meu pai ensinou-nos os nossos primeiros ciclos for em QBasic. Eu tinha 10 anos na altura, e também havia a aprendizagem de vocabulário.
O meu pai comprou um programa para aprender vocabulário e acho que tinhas um rato para clicar, mas não tenho a certeza absoluta. Talvez fosse mais tarde. De qualquer forma, foi sem dúvida nessa altura que comecei a fazer coisas com computadores, e estraguei-o algumas vezes. O meu pai teve de o arranjar algumas vezes.
Portanto, estava sem dúvida interessado em aprender sobre isto. Não propriamente de uma forma em que me sentasse e dissesse a mim mesmo: preciso de aprender isto.
Estava mesmo interessado em perceber o que se podia fazer com ele. Fascinava-me.
Jonathan: E o teu pai, trabalhava especificamente com computadores, ou estava apenas nos negócios e por acaso trouxe um computador para casa, ou houve uma razão específica para o trazer para casa? Razões informáticas ou razões técnicas.
Gabriel: Sim, na verdade ele é eletricista de profissão, foi isso que aprendeu. Mas na altura trabalhava na Bosch, no departamento de eletrónica, onde se desenvolviam novos chips ou coisas novas para carros. E lá havia, claro, computadores, e ele foi, desde bastante cedo, responsável por tudo o que tinha a ver com computadores, impressoras de rede e esse tipo de coisas. Foi assim que ele entrou nisso. Era basicamente a pessoa que tratava de tudo para que as coisas funcionassem lá. E como não tinha um doutoramento como a maioria das outras pessoas do seu departamento, era ele que tratava dessas coisas e aprendeu muito sobre isso, sobre computadores. Sim.
Jonathan: Sim. Ok, fixe. Desculpa, entrei aí de repente. Estavas então a dizer que andavas a mexer, que o estragaste algumas vezes, essa parte da tua iniciação aos computadores, ao hardware e a esse tipo de coisas. E depois? O que aconteceu a partir daí? Qual foi a progressão?
Gabriel: Acho que o grande passo seguinte foi ter o meu próprio computador, o que aconteceu, diria eu, talvez cinco ou seis anos mais tarde, quando era jovem. E estava cada vez mais interessado em computadores e também tinha algumas coisas na escola sobre isso. Comecei a escrever os trabalhos de casa no computador e esse tipo de coisas. E foi já nessa altura, com o Word e o MS Word e essas coisas, e diria que começou um dia... o meu comput... o meu pai estava sempre a fazer algum trabalho de literatura para a nossa igreja. Crescemos numa igreja muito pequena e tínhamos essa literatura que usávamos, e o meu pai estava a digitalizar, ou a ajudar a digitalizar, essa literatura. No início era um projeto paralelo, e os dados sobre isso... acabou por se tornar o meu primeiro emprego a tempo inteiro, a trabalhar para... deixa-me ver, podes olhar para isso? A trabalhar para a editora nos EUA que era responsável por essa literatura.
Jonathan: Mm.
Gabriel: Basicamente o meu pai perguntou-me: "Sim, tenho todas estas macros. Escrevi-as em Euroscript, que era basicamente baseado numa versão do Word, pode dizer-se, pré-Word, e agora quero mudar para o Word e preciso de todas as minhas macros no Word." E eu disse mais ou menos: "Ok. Ok." E foi assim que comecei a programar em Word. Portanto, Visual Basic for Applications. Podias gravar as macros primeiro. Podias olhar para o código e ver o que ele fazia, e podias melhorá-lo, e basicamente melhorar a macro tanto que... antes era: pões o cursor aqui, carregas numa tecla e ela faz algo nas duas linhas seguintes. E no fim era: processava o documento Word inteiro de cima a baixo, completamente automatizado. E basicamente foi essa a porta de entrada para muitas macros que escrevi para esse efeito, para essa causa... Isso teve bastante impacto e as pessoas que deram ao meu pai esse tipo de tarefa para fazer no tempo livre disseram: "Uau, isto é ótimo. Vamos fazer mais e automatizar isto cada vez mais." Sim. Foi assim que entrei nisto.
Jonathan: ele... poupaste muito tempo ao teu pai
Gabriel: Sim.
Jonathan: nesse sentido, com uma idade jovem,
Gabriel: Posso dizer isso. E depois a escrita de macros no Word, mais tarde no Excel. Escrevi um sistema baseado em Excel para... um sistema de loja para uma loja pequena. Era uma loja pequena de produtos biológicos, entre outras coisas, e basicamente eles anotavam todos os preços e depois calculavam-nos de cabeça ou no papel. E era assim que funcionava no início. E eu escrevi um sistema para isso, com leitura de códigos de barras e com uma balança onde podias pôr... pesar algo e obter o recibo, e depois passá-lo no scanner quando ias à caixa para pagar, e esse tipo de coisas. Basicamente, tudo à volta disso era baseado em Excel. Portanto, sim, faria tudo de forma diferente hoje. O Excel era a base de dados ao mesmo tempo que a impressora. Formatava tudo no Excel, numa folha do Excel, e depois era impresso na impressora de recibos, esse tipo de coisas. Claro, sim, achei que era o início da minha carreira, por assim dizer.
Jonathan: Onde é que estavas quando fizeste tudo isso e o que é que se seguiu a partir daí? Foi antes da universidade, mais ou menos no secundário, e isso informou o teu percurso profissional, por assim dizer? De forma bastante significativa.
Gabriel: Sim, foi tudo antes da universidade. O sistema para a loja, fiz quando tinha por volta dos 20, 21 anos, e fiz o serviço cívico mais ou menos nessa altura.
Jonathan: Hã?
Gabriel: A escrita de macros foi quando eu tinha uns 16 anos. Entretanto, também escrevi um sistema baseado em Access para imprimir etiquetas para cartas, para que pudessem ser enviadas. Portanto, endereços e coisas do género. E depois veio o estudar e, surpresa, não estudei informática.
Jonathan: Ok.
Gabriel: Na verdade, estudei para ser professor de matemática e de alemão, para vários escalões etários. Deixa-me calcular. Dos 10 aos 20 e 19. Essas são as idades. Portanto, do quinto
Jonathan: portanto tu
Gabriel: ao 13.º ano.
Jonathan: o teu percurso profissional estava a começar a encaminhar-se, e em que é que essa decisão se baseou, mais ou menos,
Gabriel: Na verdade, provavelmente teria seguido o caminho da programação. Mas durante o meu serviço cívico aprendi muito mais do que apenas coisas técnicas, diria. Fui responsável, ou estava numa pequena equipa responsável por um lar de idosos, pode dizer-se. Havia uns 5, 5, 6 quartos lá. E havia pessoas diferentes e eu era responsável sobretudo por uma delas. Ela tinha talvez 55, 60 anos e tinha Alzheimer. E isso teve um grande impacto em mim, porque se és confrontado nessa idade com esse tipo de coisa, pode dizer-se: sim, ela tinha 60 anos e soava a velho para alguém de 20, mas ainda assim era claro para mim que isso podia acontecer a qualquer pessoa e também me podia acontecer a mim. E isso tornou-me muito mais interessado nas áreas sociais da vida e
Jonathan: Fascinante.
Gabriel: nos percursos profissionais sociais. E foi aí que, na verdade... foi basicamente essa a razão pela qual escolhi ser professor na altura. Queria programar, era muito bom a ensinar ou a ajudar os meus colegas, sobretudo na escola. E matemática. A matemática era a minha área mais forte e sempre gostei. Sim, sempre gostei de ajudar os outros. A melhorar as suas capacidades, ou sempre adorei quando de repente percebiam. Quando via aquele momento de "já percebi". Agora perceberam. Sim. E por isso, tornei-me mesmo professor.
Jonathan: Oh, que fixe. E diz-me só, mencionaste essa coisa do serviço cívico, por assim dizer. Na Alemanha, que é obrigatório que todo o estudante ou jovem faça antes de ir para a universidade? Como é que isso se enquadra na cultura alemã?
Gabriel: Na altura era alternativa, uma alternativa ao serviço militar. Ou fazias nove meses de serviço militar, ou fazias 11 meses de serviço cívico. Era esse o requisito.
Jonathan: Ok.
Gabriel: Para os homens, não para as mulheres.
Jonathan: E ainda é assim na Alemanha?
Gabriel: Não, já não é assim. Não. Não.
Jonathan: Ok. Sei que é na Suíça, de onde a minha mulher vem. Por isso era só... essa configuração ainda é comum. Ok. Então, estudaste matemática e formaste-te para ser professor, e obviamente a programação desempenhou um papel bastante significativo na tua vida. Quando é que... houve um momento em que pensaste: "na verdade, estou no ensino, estou a gostar disto, mas não... há ainda esta parte da programação que... ativa e envolvida". Como é que essas duas coisas se equilibraram, o ensino e a programação?
Gabriel: Como é que voltei à programação? Sim.
Jonathan: Sim.
Gabriel: Então, durante o meu tempo de estudante, havia basicamente duas coisas que fazia em trabalhos paralelos. Uma era ensinar. Ensinava numa agência de explicações. Ensinava na universidade, aos mais novos, portanto em matemática, sobretudo no primeiro e no segundo semestre. E ao mesmo tempo tinha um trabalho numa empresa de tecnologia. Era sobretudo... era sobretudo baseado em Access.
Jonathan: mm.
Gabriel: Era uma empresa que fazia hardware e software para partilha de carros e para empresas que tinham muitos carros para alugar aos empregados. E sim, aí comecei basicamente como redator de documentação, e depois perceberam que eu também sabia programar. Por isso passei rapidamente para a área da programação. Sim. E depois diria que as coisas mudaram sobretudo quando, nas últimas partes do curso, que eram as partes do estudo em que tinhas de ir, eras obrigado a fazer seis semanas na escola e depois quatro semanas, e assim por diante. E acho que... Ficou claro e evidente para mim, também por falar com professores muito experientes e muito dedicados, professores muito dedicados, que basicamente os tempos mudaram muito. Os alunos mudaram muito. Uma professora disse-me... ela ensinava sempre o quinto e o sexto ano, e dizia-me basicamente: "Há cinco anos tinha um aluno na minha turma que era um caso problemático, no sentido de que a família não estava completa, havia divórcios ou problemas em casa, e por aí fora. E agora tem mais de 50%."
Jonathan: Claro.
Gabriel: E isso foi há 10 ou 15 anos. 2000... Seis ou sete, deve ter sido, portanto há 15 anos. E isso mostrou o quanto as coisas mudaram. E também era muito claro para mim que muitos alunos hoje em dia já não querem aprender. E o professor é sempre o... basicamente o professor é sempre o último. A cauda de tudo. Sim. Os pais, o diretor e os alunos. São basicamente todos eles os mestres do professor. Sim. O professor é sempre o último da fila, por assim dizer, ou não sei bem como se diria em inglês. É sempre aquele que tem de assumir toda a responsabilidade mas não tem direitos, basicamente.
Jonathan: autoridade para... sim. Para agir. Sim.
Gabriel: Sim.
Jonathan: Então a tua decisão... Ah, desculpa, estou a interromper-te. Continua, continua.
Gabriel: Isso, pelo menos, pôs-me a pensar muito e... Depois de acabar a universidade, voltei a cair na programação, porque um amigo meu, que era quem tinha dado ao meu pai esse trabalho de literatura, perguntou-me basicamente se podia ajudá-lo num projeto. E esse projeto, que a princípio era para ser um projeto de quatro ou seis semanas, transformou-se em dois anos e meio ou três anos e meio. Ou três anos e meio. De projeto.
Jonathan: o alargamento do âmbito. O alargamento do âmbito era real
Gabriel: Sim. Primeiro pediu-me ajuda com uma coisa. E depois estava sempre em contacto com uma pessoa dessa editora nos EUA. E a editora dizia sempre: "Quero uma página pública para isto, com a literatura. Quero que as pessoas leiam os livros inteiros online."
Jonathan: Oh, uau.
Gabriel: A certa altura disse simplesmente ao meu amigo... ele estava a falar com ele ao telefone e eu disse que conseguia imaginar-me a fazer aquilo. "Não tenho assim nada para fazer neste momento." E ele disse: "Ah, o Gabriel faz isso." E foi assim que começou. Portanto.
Jonathan: Uau.
Gabriel: Tive um projeto, sim, e depois trabalhei três anos e meio nesse projeto. A pôr milhares de livros online, toda a biblioteca de conteúdo
Jonathan: Uau.
Gabriel: o índice. Diferentes línguas ligadas umas às outras. Sim, o site ainda está online. É o egwwritings.org. Portanto, se alguém estiver interessado em vê-lo, tem um design novo. Vi, por volta de dezembro do ano passado, que mudaram o design, mas o código por baixo é...
Jonathan: Tudo igual.
Gabriel: Quase todo meu, porque consigo vê-lo, porque era sobretudo baseado em JavaScript.
Jonathan: Sim.
Gabriel: O código parece-me muito... está organizado de forma diferente, em ficheiros, e os estilos são ainda os mesmos.
Jonathan: Vais ter de me enviar o link e nós publicamo-lo nas notas do programa, na altura certa. Mas então agora fizeste três anos e meio, o quê, três anos deste projeto. Puseste, indexaste tudo isto. Estavas a usar JavaScript como a tua linguagem principal nessa altura? Qual era a tua... a tua configuração técnica, por assim dizer? Em que estavas a focar-te?
Gabriel: Portanto, esse foi basicamente o grande passo, mudar do software baseado em Windows, que antes era Visual Basic e Visual Basic .NET. E agora era só jQuery, JavaScript e PHP em segundo plano.
Jonathan: Ok.
Gabriel: Também tínhamos um acordo de que, sempre que eu fazia investigação, tinha um valor por hora mais baixo,
Jonathan: Mm-hmm.
Gabriel: era um terço do que era quando estava propriamente a programar. E sim, isso deu-me a liberdade de aprender no próprio trabalho. Sim.
Jonathan: Fixe. E depois, onde... o Exercism. E agora fazes muitas coisas. Estou certo se disser que o Go é uma espécie de peça central do que fazes? Mentoras muito e estiveste, bem, estiveste envolvido no Exercism, no Go, e a ajudar nesse lado das coisas. Quando é que isso começou a entrar em cena e porque é que te interessou? Força.
Gabriel: Sim, em 2016, esse foi o meu primeiro emprego depois daquele grande projeto. Na verdade, para o fim desse, comecei a mudar para Go. Fiz algum PHP e Python nesse emprego, sobretudo. E isso tornou-se muito rapidamente a minha linguagem preferida, a minha linguagem preferida, porque tem essa simplicidade. Está basicamente a tentar... Daquele mundo louco de cada vez mais funcionalidades e linguagens, a torná-las cada vez mais complexas e complicadas, e com muito mais sobrecarga para o programador, porque ele tem de escolher. Qual caminho seguir. E também tem de compreender todos os outros caminhos que as outras pessoas seguem. E toda essa sobrecarga, e o Go trouxe de repente esta quietude e esta simplicidade outra vez. E isso tornou-se muito rapidamente a minha coisa número um, e foi o que me levou a construir um protótipo nessa empresa, cerca de meio ano antes de sair. Porque queriam mudar para Go e, no início, claro, havia essas coisas iniciais em que tropeças em coisas que não podes fazer na linguagem, e depois percebes porque é que não faz sentido fazê-lo assim, ou porque é melhor fazê-lo de outra forma. Eu estava mesmo interessado em aprender a fazer essas coisas. E foi assim que comecei a ouvir o podcast Go Time. É do Changelog.
Jonathan: Ok.
Gabriel: E a Katrina Owen esteve nesse podcast, penso eu, duas vezes. Pelo menos duas vezes ouvi falar dela, acho. E foi assim que comecei a explorar isto. Penso que em 2017 me registei no Exercism. Não tenho a certeza, teria de confirmar.
Jonathan: Imagino. Seria justo?
Gabriel: Sim, acho que talvez tenha sido ainda a versão um, porque no início não havia... não recebi mesmo... não recebi qualquer feedback. Fiz alguns exercícios, mas nunca recebi feedback, e conseguia dar feedback a outros, e dei. Mas nunca recebi feedback. Por isso, não havia qualquer processo para receber feedback. E era: se quiseres, e se não quiseres, deixa estar. Por assim dizer. Sim. Acho que era a versão um, certo?
Jonathan: Imagino que sim. Quer dizer, acho que tem havido bastantes mudanças da versão um para a versão três.
Gabriel: Sim. Sim.
Jonathan: A um era pouco feedback. A versão dois exigia quantidades extremas de feedback, e a versão três ficou mais ou menos a meio. Talvez um pouco mais para o lado de menos, mas não. E, e tu, estiveste envolvido em construir a versão três e como é que... Sim. Qual foi o teu envolvimento aí? Quer dizer, não tenho bem a certeza, mas gostaria de perceber.
Gabriel: Talvez um passo atrás, se me permites. Basicamente voltei depois da segunda entrevista. Ouvi a Katrina no Exercism,
Jonathan: Ok.
Gabriel: foi quando existia a versão dois. E quando havia muito trabalho e... havia esta coisa, era preciso muito feedback. Atirei-me a isso e gostei mesmo de dar esse feedback. E,
Jonathan: Mm-hmm.
Gabriel: basicamente comecei a pensar em como poderia tornar isto mais rápido. Sim. Porque percebi rapidamente que, sobretudo nos primeiros exercícios, era claro que ia dar a mesma resposta uma, e outra, e outra vez.
Jonathan: Sim.
Gabriel: E, por outro lado, claro, às vezes... Estas duas questões e às vezes havia esta questão e outra. Por isso comecei basicamente a otimizar isto. Comecei a escrever um programa em Go de baixo nível, que usa análise estática, porque queria entrar na análise. Nunca o tinha feito antes. Queria conhecer isto. Portanto, estava interessado em experimentá-lo de qualquer forma e pareceu-me uma boa ideia. Porque era ainda código muito comum ou muito semelhante todo o tempo. As soluções de um exercício, sobretudo as primeiras, são muito semelhantes. Foi assim que entrei na análise estática e procurava simplesmente padrões diferentes no código e depois acrescentava automaticamente blocos de resposta ou blocos predefinidos à resposta. E basicamente comecei isso localmente e foi assim que consegui fazer cerca de 100 por semana, 102 mentorias por semana. E nem estava a fazer isso a tempo inteiro. Era a par do meu trabalho. E sim. E depois começou a... acho que o Pitfield foi o primeiro. John Arun, acho que é o nome verdadeiro dele. Ele foi o primeiro a dizer: "Uau, isto é ótimo. Isto é fantástico." E foi assim que o trabalho que fiz começou basicamente a tornar-se conhecido, com a análise estática. E acho que foi uma grande parte da versão três, porque começámos a pensar em como podíamos basicamente reduzir o trabalho de um tutor com estas ferramentas, esta análise automática, esta análise estática, ou as ferramentas que basicamente verificam o código automaticamente e dão feedback automaticamente. Mesmo de forma completamente automática, sem um mentor sequer estar envolvido ou ter de estar envolvido. E porque os mentores... era bastante claro que temos mentores e eles não são suficientes para o trabalho. Tínhamos a ferramenta de inversão e também víamos que muitos mentores estavam a esgotar-se, desapareciam e sim, era simplesmente demasiado. Demasiado para muitos mentores. Sim. O trabalho era algo com filas: havia 500 ou mais soluções à espera de mentoria, ou... e às vezes havia tempos de espera de um mês ou mais. E claro, eram condições em que também os estudantes acabavam por desistir a certa altura. Sim.
Jonathan: Hmm. É engraçado, porque acho que o Jeremy estava a dizer outro dia que, de todas as soluções que são submetidas, cerca de 75% delas são completamente únicas, o que também acho fascinante. Quer dizer, vais a um exercício como o Hello World, obviamente é muito simples. Certamente que será um padrão normal que se implementa regularmente. E ele disse: "É gente a experimentar todo o tipo de coisas diferentes." E é engraçado como sabes que há esse cruzamento, porque à medida que a programação se torna mais popular e mais pessoas se dedicam ao desenvolvimento e à programação, ficas a pensar: bem, onde é que essa automatização vai começar? A anular o papel do programador. Eu... pergunto-me, não sei se vai. Acho que ainda é preciso demasiado, mas em termos de... não sei, não sei quais são os teus pensamentos sobre isso, mas parece que com o Exercism ultimamente há um grande impulso para a mentoria que é realmente fascinante, porque, como disseste, pega em todas essas lições repetitivas que tens de continuar a dar e coloca-as de uma forma que é gerível para as pessoas gerirem. Ao mesmo tempo, isso cruza-se com o facto de precisares realmente da interação humana, de um humano para lidar de facto com o conteúdo. Por isso, não sei se tens ideias sobre isso, mas acho que é um espaço interessante neste momento.
Gabriel: Sim, não acho que os programadores vão ser substituídos tão cedo. Isso ainda vai levar bastante tempo. No desenvolvimento, nas aplicações em geral, na mentoria também, acho. Acho que a análise estática e também a mentoria automatizada, e a mentoria automatizada em geral no Exercism, pode ser uma grande ajuda. Mas os mentores são necessários para a mentoria a sério, diria. Sim. Por exemplo, tenho uma pessoa que mentorizo, e a cada dois ou três meses temos uma chamada, às vezes mais. E estou a mentorá-la na carreira dela, por assim dizer. Sim. E também tecnicamente, muito profundamente técnico, mas é uma forma completamente diferente de mentorar do que simplesmente olhar para a solução e dizer o que podes melhorar. E acho que é para isso que os mentores que existem ainda são necessários, e definitivamente continuarão a ser, e acho que é algo em que nos podemos focar. Por outro lado, acho que não podemos substituir completamente os mentores nas soluções, e acho que não devemos. Podemos automatizar muitas coisas, mas ainda assim um mentor é alguém que pode apontar a direção. Agora consegue ver os problemas com que te estás a debater e pode dizer-te: "Percebe isto e isto", não apenas "precisas de melhorar o teu código desta forma".
Jonathan: Sim. Sim.
Gabriel: E, para ser sincero, gostaria de ter mais mentoria de volta no Exercism. Por isso pergunto-me se devíamos...
Jonathan: Interação cara a cara, queres dizer?
Gabriel: Sim. Pergunto-me se devíamos... Antes tínhamos esse percurso de 10 exercícios, e eram pelo menos 10. Que tinhas de percorrer e só podias avançar quando fosse mentorado.
Jonathan: Sim.
Gabriel: E acho que com a automatização que temos agora, poderíamos de facto voltar a ligar isso. Ou talvez não agora, mas no futuro. E acho que gostaria disso.
Jonathan: Podíamos sem dúvida, devíamos trazer isso a uma chamada da comunidade, porque acho que seria... seria fixe trazer isso de volta ao foco. Então, Gabriel, uma das perguntas que costumamos fazer e que não é a que te fiz antes, mas... Uma das perguntas que gosto de fazer, porque é sempre muito interessante e diferente, é: a programação "clicou" para ti? As pessoas diriam que houve uma experiência em que de repente tudo fez sentido. Costumo usar a história... dou um exemplo da escola, quando estava a aprender química, e no Reino Unido, onde andei na escola, tens estes exames no fim. E tudo conduz a esses exames nos três anos anteriores. Portanto, tens três anos de estudo e isso culmina no exame final. E isso em todas as disciplinas. E um dos temas era, obviamente, química. E passei cerca de três anos sem perceber nada de química. Simplesmente não conseguia. Não conseguia percebê-lo, e depois, uma semana antes do exame, foi como se a ficha tivesse caído, a expressão de "a coisa fez sentido". E fiquei: "Meu Deus. Consigo tirar tudo da tabela periódica. Se souber os números da tabela periódica, consigo perceber isto, aquilo e aqueloutro." E as coisas tornaram-se realmente simples e foi como... Tiveste um momento assim na programação, ou foi algo que simplesmente... Achaste natural, fez sentido para ti, e quando foi esse momento, se for relevante?
Gabriel: Não tenho a certeza se tive esse momento definido. Acho que ajudou muito ter essa gravação de macros e olhar para o código desde muito cedo, com o Visual Basic for Applications. Não sei se hoje em dia ainda existe algo assim. Penso que ainda podes no Word, e fazer isso. Mas não é assim tão frequente teres algo deste género, em que podes gravar e depois olhar para o código e aprender dessa forma. Acho que isso tornou tudo muito mais fácil para mim, porque tive muitas dificuldades no início. Acho que houve um momento, um tipo de momento, em que eu diria: ok, não que tivesse percebido as coisas, mas em que me apercebi... Basicamente. Se estava de facto a fazer as coisas bem ou mal, foi quando entrei naquela empresa, quando era estudante, foi basicamente a primeira vez que trabalhei. Trabalhei em conjunto com outros programadores. Antes disso, estava sempre sozinho e tinha basicamente de fazer tudo. E era sempre uma grande questão: será que as pessoas costumam fazer assim? Parece estranho. Parece complicado. Parece que funciona, mas será que está correto? E isso ficou mais ou menos respondido quando entrei naquela empresa e comecei a ir lá e... Definitivamente havia muito que precisava de aprender e aprendi muito. Por exemplo, os record sets do Access. Nunca os tinha percebido mesmo antes. Trabalhava com eles, mas
Jonathan: Mm.
Gabriel: sim, funcionava
Jonathan: Sim. Algo
Gabriel: e depois percebi mesmo, comecei a percebê-los. Portanto, talvez tenha sido algo que clicou para mim, porque tinha uma colega e ela explicou-mo, e foi realmente... clicou um dia. Percebi. Como funcionam e
Jonathan: Mm-hmm.
Gabriel: como é que se destinam a funcionar e como usá-los corretamente, e por aí fora.
Portanto, sim, talvez tenha sido um desses pontos. Mas acho que esses pontos surgem muito frequentemente no nosso trabalho. Não acho que haja aquele único ponto, talvez haja um ponto inicial. Mas também para o Go, há tantos sítios onde pode clicar para mim, onde percebo. Porque é que algo é assim e como é que deve ser usado.
E, por exemplo, o context.
Sim. Por exemplo, o context.
Jonathan: Sim.
Gabriel: Sim. Por exemplo, o context, que foi adicionado, não tenho a certeza, na 1.6 ou na 1.7, talvez. Por volta dessa altura, eu não lhes dei atenção. Para ser sincero, não precisava mesmo deles no início. E depois fui a um... foi uma espécie de meetup e alguém apresentou o context, como usá-lo, como... e por aí fora.
E fiquei a pensar
Jonathan: Hmm.
Gabriel: que devia olhar para aquilo. Mas ainda levou alguns meses até olhar mesmo para eles e perceber porque é que existem. E, por exemplo, o canal fechado, não sei se tens noção de quantas pessoas ainda propõem na internet que fechas uma goroutine com um canal fechado, e não deves.
É para isso que serve o context. Sim. Usas um context, cancelas o context, e depois podes fechar a goroutine com isso. Se usas um canal fechado, estás basicamente a fazer manualmente o que um context faz internamente, e há tantas armadilhas a evitar, tantos problemas
a evitar, que normalmente as pessoas fazem-no mal.
Jonathan: Tenho a certeza de que fizeste uma live, uma transmissão em direto e mencionaste algo sobre isso. Acho que me lembro de mencionares: usa simplesmente o context, porque
Gabriel: Sim.
Jonathan: faz todo o sentido.
Gabriel: Lembro-me de mencionar essa parte.
Jonathan: Sim. Mas então, em termos de quando mentoraste pessoas no passado, quais são algumas das... Consegues identificar. Ações ou comportamentos ou coisas que as pessoas que apreendem as coisas rapidamente... consegues identificar o que elas fazem que lhes permite posicionar-se para aprender depressa ou de forma mais eficaz? Ou é muito os mentores que... ou as pessoas que mentoraste, elas são naturalmente envolvidas dessa forma? Ou há pessoas de quem dizes: "Uau, elas fazem coisas. Fazem coisas que lhes permitem acelerar..."
Gabriel: Não sei se posso dizer isso sobre outras pessoas. Posso dizê-lo sem dúvida sobre mim. Aprendi, acho, com os meus pais. Eles ensinaram-se a si mesmos muitas coisas e foi isso que também aprendi com eles, a ensinar-me as coisas a mim mesmo. Aprendi programação completamente sozinho. Havia o meu pai no início. Havia algumas coisas na escola. Na maior parte do tempo, nas últimas classes da escola, eu era na verdade, ou nós éramos, quase todos nós éramos melhores do que o professor, de qualquer forma. Por isso não se aprendia muito ali. Havia mais uma espécie de aprendizagem uns com os outros. Mas
Jonathan: Sim.
Gabriel: em geral, aprendi tudo sozinho. E isso é algo que acho que precisas na programação, porque precisas constantemente de te aprofundar em coisas que nunca viste antes. Não sabes nada sobre elas, precisas de as estudar. Então, qual é a palavra? Essa. Capacidade. Sim. Essa capacidade de te conseguires aprofundar em algo e aprendê-lo sozinho, acho que é essencial na programação, para aprender. E claro, podes aprender muito mais depressa se encontrares alguém que te fale sobre isso. Portanto, não quero dizer que não devas procurar um mentor, que não devas ir ao Exercism, e por aí fora. Isso ajuda-te a crescer muito mais depressa, mas mesmo assim é isso. É o que eu diria.
Jonathan: Dizes-me que a tua aprendizagem veio de tentar resolver problemas de forma prática. Por isso, quer fosse fazer macros para tornar as coisas mais eficientes, quer... parece-me que esse foi um tema central que se repetiu na tua vida em termos de aprendizagem, o que acho que provavelmente se alinha muito com o que o Exercism também está a tentar fazer em termos de ajudar as pessoas a fazer coisas na prática.
Gabriel: Sim. Percorrer esse caminho.
Jonathan: Sim. Isso é muito fixe. Então, Gabriel, já não temos muito tempo, mas tenho duas últimas... Bem, não é bem perguntas para ti. Uma é uma pergunta e vou pedir-te que partilhes uma opinião tua, e a outra será... bem, é uma opinião que tu podes... Vou pedir-te que dês uma recomendação à comunidade sobre algo que devam experimentar esta semana. Mas a primeira é que já falámos com muitas das pessoas que entrevistámos anteriormente, e se ouviste este podcast ou esta transmissão em direto durante algum tempo, saberás que normalmente fazemos uma grande pergunta perto do fim da nossa transmissão. E a pergunta é: qual é a causa por que estarias disposto a morrer na tecnologia? Ou seja, qual é a única opinião que defendes firmemente, por que te levantas e... e tem em conta que tens de dar uma boa razão para isso. Não podes simplesmente dizer: "Esta é a minha opinião e é isso." Tens de conseguir defender-te nesse sentido. Mas qual seria essa opinião se... E pode ser tão intensa ou tão trivial como quiseres. Então, qual seria?
Gabriel: Eu diria que era um provérbio. Há um ditado do Go, ou alguém da comunidade Go disse isto, e é: código aborrecido é melhor do que código inteligente.
Jonathan: Gosto disso. O que é que isso significa?
Gabriel: O que é que isso significa? Sim, basicamente é... resume uma grande parte da filosofia do Go em torno da simplicidade e da legibilidade. Portanto, se no código Go pensas: "Uau, isto é inteligente", então é na verdade mau código. Mesmo que quem o fez fosse muito inteligente e o tivesse feito de uma forma muito engenhosa. E às vezes sinto que, se seguires mesmo a simplicidade e os idiomas do Go, não tens propriamente código em toda a tua base de código que queiras apontar, ou que possas apontar. "Olha para aquele código, como é bom", porque todo o teu código é na verdade aborrecido e muito simples, e todos os que olharem para o teu código dirão: "O que é que isto tem de especial?" Sim, mas o ponto é que chegaste à simplicidade porque és um bom programador, e é um processo de iteração, e escrever código complicado é muito fácil. Escrever código simples é... porque ainda tens, primeiro precisas de tornar o problema simples na tua cabeça, e depois precisas de escrever o código corretamente, e depois precisas de o iterar e torná-lo simples. E esse é um processo muito mais longo e precisa de programadores muito melhores do que simplesmente escrever código complicado, que, quando olhas para ele, é difícil de perceber. É difícil de ler e é difícil de manter, e é difícil de alterar.
Jonathan: É essa coisa constante de compromissos, não é? Eu sou bastante jovem no espaço da tecnologia, três anos, e não venho de uma perspetiva de desenvolvimento. Venho mais do lado do produto, do lado do negócio. E se pudesses dizer... E uma das coisas que foi realmente interessante foi que se tornou cada vez mais evidente que é tudo uma questão de compromissos. Dizes que é como o compromisso entre código simples e código complicado, em que o código complicado pode ser apenas mais pesado e traiçoeiro mais tarde. O código simples pode levar mais tempo e exigir mais energia e esforço no início. E é esse o compromisso que se faz constantemente. Foi uma das... não sei quais são os teus pensamentos sobre isso, mas parece-me realmente que esse lado da simplicidade... porque lembro-me de a minha mãe ter tido um amigo na universidade e ele só escrevia ensaios de duas páginas para os trabalhos. Porque conseguia condensar tudo em duas páginas, e tirava as melhores notas por isso. Portanto, acho que se alinha com todo o conceito de simplicidade, que acho que é muito difícil escrever código simples porque exige pensamento claro, não apenas programar. Acho que é uma causa digna, e acho que iteraste isso. Falaste sobre isso muito bem. Fixe. Então, Gabriel, última pergunta desta semana. E agora podes dar um pouco de conselho à comunidade do Exercism. E pode ser qualquer coisa. Pode ser conselho de saúde, conselho dietético. É a tua oportunidade de partilhar um conselho que darias à comunidade, e pode ser o que quiseres. Então, qual seria a tua recomendação à comunidade do Exercism esta semana? Que uma coisa precisam eles de experimentar ou fazer, do teu ponto de vista?
Gabriel: Ah, essa é difícil. Ok, agora que dizes que pode ser qualquer coisa, posso dar-te duas coisas?
Jonathan: Deixo-te, deixo-te fazer duas
Gabriel: Ok. Uma recomendação. Eu sou na verdade vegetariano. Cresci vegetariano. Nunca comi carne, e cresci na verdade vegan, na maior parte, na maior parte da minha infância e juventude. Por isso, experimenta uma semana sem quaisquer produtos lácteos. E essa seria uma. Portanto... E outra recomendação seria... não tenho a certeza se consegues fazê-lo numa semana, mas se fores um bom programador, consegues, é muito interessante e muito válido tentar construir memória partilhada, partilhada entre vários serviços, o mesmo serviço, memória partilhada. Tenta implementar uma memória partilhada usando o protocolo Raft. Podes usar uma biblioteca. Não precisas de implementar o Raft em si, mas
Jonathan: Raft Vais ter de me dar, vais ter de me enviar o link para eu o publicar. Portanto, esse é o desafio do Gabriel... Bem, talvez devêssemos chamar-lhe o desafio do Gabriel para a semana. Talvez não tanto recomendação. Talvez precisemos
Gabriel: Sim. É mais algo para experimentar.
Jonathan: Lanças um desafio. Pode ser, pode ser divertido, mas fixe. Então, uma semana sem produtos de carne, de todo. Vê como corre e constrói um servidor de memória partilhada. O que dirias? Serviço, partilhado
Gabriel: Sim, podias chamar-lhe o serviço de chave-valor em memória.
Jonathan: Ok.
Gabriel: Portanto, vários serviços, uma base de dados ou um serviço. Sim.
Jonathan: Fixe. Isso
Gabriel: Porque te ensina muito sobre como as bases de dados funcionam. Sim. Por baixo. Sobretudo as que são partilhadas, como... sim, não tenho a certeza. Cassandra, ScyllaDB, não tenho a certeza se tens Scylla. É uma espécie de Cassandra, mas em C++, e agora está a mudar para o protocolo Raft. Ou... É uma base de dados chave-valor. Uma partilhada é uma... não, não é uma base de dados. É gestão de chave-valor. Sim, o Badger, da Dgraph. Esse, acho que também usa o Raft por baixo, para distribuir os dados. Não posso dizê-lo com certeza, teria de o procurar outra vez. Mas há muitas bases de dados que o usam. Sistema distribuído. Portanto, o sistema distribuído é basicamente um grande desafio, diria, dos nossos tempos modernos. Estamos em processo de o resolver, mas ainda há muitos desafios a superar, e sim, é sempre bom conseguir pensar nesse sentido, porque se conseguires, abre muitas possibilidades.
Jonathan: Hmm.
Gabriel: Se precisares de alguma... Na minha última empresa estava na verdade a seguir esse caminho, ter memória partilhada entre vários serviços ao mesmo tempo. Sim.
Jonathan: Talvez, talvez precisemos de organizar isto como uma masterclass. Vamos dar às pessoas algumas semanas para experimentarem. Então, Gabriel,
Gabriel: isso é que é a masterclass.
Jonathan: Sim,
Gabriel: quando acabares com o Exercism e tiveres feito todos os exercícios,
Jonathan: Esse é o grande. O grande. Liga tudo, liga tudo. Gabriel, muito obrigado pelo teu tempo. Foi um verdadeiro prazer conversar contigo esta noite. Se quiseres ficar depois de terminarmos a gravação, só um instante, mas queria só dizer um enorme obrigado e agradeço muito tudo o que dás ao Exercism, e não só por nós, mas toda a mentoria que fazes mais além e ajudas as pessoas a escrever melhor código. Tenho a certeza de que é enormemente apreciado em todo o lado. Por isso, obrigado pelo teu tempo e... Contacta o Gabriel. Se estiveres no Exercism, envia-lhe uma mensagem, pede alguma mentoria e tenho a certeza de que te vais dar bem com o Gabriel. Fixe.
Gabriel: Muito obrigado.
Jonathan: terminar a gravação. Sim, não, obrigado por te juntares a nós e vemo-nos em breve numa qualquer plataforma, em algum sítio.
Gabriel: Obrigado.
Ouve, aprende e deixa-te inspirar pelos membros da nossa comunidade.