Voltar para a comunidade

Resolvendo problemas até virar Tech Lead

Gabriel Nelle mora no sul da Alemanha, perto de Baden-Baden. Ele divide o apartamento com a namorada e dois gatos. Ele estudou para ser professor de matemática e alemão na universidade de Siegen, onde se formou em 2008.

Assista no Youtube
DURAÇÃO 52MINUTOS

Jonathan: Bem, olá a todos. Meu nome é Jonathan. É um prazer ser o seu anfitrião esta noite. Tenho um convidado que é um grande privilégio ter no programa de hoje. Quero apresentar a vocês Gabriel Nelle. O Gabriel é um dos nossos principais colaboradores no Exercism. Ele está muito envolvido na trilha de Go especificamente, mas vou deixar que ele se apresente com mais detalhes daqui a pouco. Mas só para dizer, Gabriel, é ótimo ter você aqui. Obrigado por participar, e esperamos que você se divirta tanto quanto todos os ouvintes do programa de hoje. Então, Gabriel, comece você. Me conta um pouco de onde você é e como você acabou chegando onde está hoje.

Gabriel: É. Oi. Eu sou o Gabriel. Obrigado por me receber. Sou do sul da Alemanha, foi lá que eu cresci, e é onde estou agora, não no mesmo lugar, mas ainda no sul da Alemanha. É, eu cresci em... deixa eu começar: sou uma pessoa do começo dos anos oitenta, nasci em 81. E acho que a minha história começa por volta do fim dos anos oitenta, quando meu pai trouxe o primeiro computador para casa. Então acho que é aí que a história começa. Pelo menos a história de tech.

Jonathan: É.

Gabriel: Ele tinha MSOs, não tenho certeza exata de qual versão era. Acho que era uma versão mais antiga também, porque, se não me engano, meu pai trouxe para casa porque basicamente ele foi descartado nessa empresa e eles receberam computadores novos. Então ele pegou, ele conseguiu levar aquele para casa, e é, essa foi a minha primeira impressão de computadores. MS. É interessante e estranho.

Jonathan: as, as linhas, as linhas coloridas na tela preta? Era bem assim

Gabriel: É, era só branco no preto. É, basicamente. E basicamente dava para... na maior parte era só a linha de comando, que foi a primeira coisa que eu conheci. E depois, mais tarde, com meu pai, em oitenta... em 90, por volta de 1991, meu pai nos ensinou nossos primeiros laços for em QBasic. Eu tinha uns 10 anos na época, e também tinha o aprendizado de vocabulário. Então meu pai comprou um programa para aprender vocabulário, e ele era baseado em Windows, e acho que você usava um mouse para clicar, mas não tenho cem por cento de certeza. Talvez tenha sido mais tarde. Mas com certeza foi nessa época que eu comecei a mexer com computador, e eu quebrei tudo algumas vezes. Meu pai teve que consertar algumas vezes. Então eu com certeza estava interessado em aprender sobre isso. Não exatamente de um jeito que eu sentasse e dissesse para mim mesmo: preciso aprender isso. Eu estava muito interessado em entender o que dava para fazer com ele. Isso me intrigava.

Jonathan: E, e o seu, o seu pai, ele trabalhava com computadores especificamente, ou ele só estava no, no ramo em que ele acabou trazendo um computador para casa, ou havia um motivo específico para ele ter trazido para casa? Motivos de computador ou motivos técnicos.

Gabriel: É, na verdade ele é eletricista de profissão, foi o que ele aprendeu. Mas ele trabalhava na Bosch na época, e trabalhava no departamento de eletrônica, onde desenvolviam novos chips ou novas coisas para carros. E lá, claro, havia computadores, e ele acabou ficando responsável bem cedo por tudo relacionado a computadores, impressoras de rede e esse tipo de coisa. Então foi basicamente assim que ele entrou nisso. Ele era basicamente a pessoa que fazia tudo funcionar lá. E como ele não tinha doutorado, ao contrário da maioria dos outros no departamento dele, ele basicamente cuidava desse tipo de coisa, e aprendeu muito sobre isso, sobre computadores. É.

Jonathan: É. Ok, legal. Desculpa, eu entrei de repente aqui. Então você estava dizendo que ficava mexendo, quebrou tudo algumas vezes, aquela parte da sua introdução a computadores, hardware e esse tipo de coisa. E depois? O que aconteceu a partir daí? Qual foi a progressão?

Gabriel: Então acho que o próximo grande passo foi eu ganhar meu próprio computador, isso uns cinco ou seis anos depois, quando eu era um jovem adulto. E eu me interessava cada vez mais por computadores, e também tive algumas matérias na escola. Comecei a escrever minhas tarefas no computador e esse tipo de coisa. E isso já era na época do Word, do MS Word e tal. E eu diria que tudo começou um dia... meu compu... meu pai sempre fazia trabalho com literatura para a nossa igreja. A gente cresceu numa igreja bem pequena e tínhamos essa literatura que a gente basicamente usava, e meu pai estava digitalizando, ou ajudando a digitalizar, essa literatura. No começo era um projeto paralelo. E acabou se tornando meu primeiro emprego em tempo integral, trabalhando para... para a, deixa eu ver, você consegue olhar isso? Trabalhando para a editora nos EUA que era responsável por essa literatura.

Jonathan: Hmm.

Gabriel: Basicamente meu pai me perguntou: é, eu tenho todas essas macros. Eu as escrevi numa Euroscript, que era basicamente baseada numa versão do Word, digamos, um pré-Word, e agora quero migrar para o Word e preciso de todas as minhas macros no Word. E eu disse mais ou menos: ok. Ok. E foi assim que eu comecei a programar o Word. Então, Visual Basic for Applications. Você podia gravar as macros primeiro. Você podia olhar o código, ver o que ele estava fazendo e melhorá-lo, e basicamente melhorar a macro tanto que elas passaram a conseguir... Antes era tipo: você coloca o cursor aqui, aperta uma tecla e ele faz alguma coisa nas próximas linhas. E no fim era tipo: ele processava o documento do Word inteiro, de cima a baixo, totalmente automatizado. E basicamente foi a porta de entrada para um monte de macros que eu escrevi para essa causa, para... Isso causou um certo impacto, e as pessoas que deram ao meu pai esse tipo de tarefa para fazer no tempo livre dele disseram: uau, isso é ótimo. Vamos fazer mais e automatizar isso cada vez mais. É. Então foi assim que eu entrei nisso,

Jonathan: ele, você economizou bastante tempo do seu pai

Gabriel: É.

Jonathan: nesse sentido, numa idade jovem,

Gabriel: Posso dizer isso. E então, escrever macros no Word, depois no Excel. Escrevi um sistema baseado em Excel, um sistema de caixa para uma loja pequena. Era uma lojinha de alimentos orgânicos e tal, e basicamente eles anotavam todos os preços e depois calculavam de cabeça ou no papel. E era assim que funcionava no começo. E eu escrevi um sistema para isso, com leitura de código de barras e com uma balança onde você podia colocar... pesar alguma coisa e tirar o recibo, e depois escanear aquilo quando fosse pagar, e esse tipo de coisa. Então, basicamente, tudo em volta disso era baseado em Excel. Então era isso. É, eu com certeza faria diferente hoje. O Excel era o banco de dados ao mesmo tempo que era a impressora. Eu formatava tudo no Excel, numa planilha do Excel, e depois aquilo era impresso na impressora de recibos, esse tipo de coisa. Claro, é. Eu considerei que aquele foi o começo da minha carreira, por assim dizer.

Jonathan: que idade você tinha quando, quando fez tudo isso e, e, e o que levou a partir daí? Foi antes da universidade, mais ou menos durante o ensino médio, e isso acabou direcionando sua carreira, digamos assim? De forma bem significativa.

Gabriel: É, tudo isso foi antes da universidade. O sistema da loja foi quando eu tinha uns... em 2021. Foi mais ou menos nessa época que eu fiz meu serviço civil.

Jonathan: Hã?

Gabriel: A escrita de macros foi quando eu tinha uns 16 anos. Nesse meio-tempo, também escrevi um sistema baseado em Access para imprimir etiquetas de cartas, para que elas pudessem ser enviadas. Endereços e tal. E aí veio a faculdade e, surpresa, eu não estudei informática.

Jonathan: Ok.

Gabriel: Eu na verdade estudei para ser professor de matemática e alemão, para as idades... deixa eu calcular isso. Idades de 10 a 20 e 19. Então essas são as idades. Do quinto

Jonathan: então você

Gabriel: até a 13ª série.

Jonathan: sua carreira estava começando a se encaminhar e no que essa decisão se baseou, mais ou menos,

Gabriel: Na verdade eu provavelmente teria seguido o caminho da programação, talvez muitas vezes. Mas durante o meu serviço civil eu aprendi muito mais do que só coisas técnicas, eu diria. Então eu... Eu era responsável, ou fazia parte de uma equipe pequena responsável por um lar de idosos. Digamos que havia umas 5, 5, 6 salas lá. E havia pessoas diferentes, e eu era responsável principalmente por uma delas. Ela tinha talvez 55, 60 anos e tinha Alzheimer. E isso me marcou muito, porque quando você é confrontado nessa idade com esse tipo de coisa... você poderia dizer: é, ela tinha 60 anos, e para um jovem de 20 isso soava velho, mas ainda assim estava claro para mim que isso podia acontecer com qualquer pessoa e podia acontecer comigo também. E isso me deixou muito mais interessado nas áreas sociais da vida e

Jonathan: Fascinante.

Gabriel: nas carreiras sociais. E é aí que, na verdade... é basicamente por isso que escolhi ser professor naquela época. Então, eu queria programar, mas eu era muito bom em ensinar, ou em ajudar meus colegas de curso, especialmente na escola. E matemática. Matemática era a minha área mais forte e eu sempre gostei. É, eu sempre gostei de ajudar os outros a melhorar as habilidades deles. Eu sempre amava quando eles de repente entendiam. Quando eu via nos olhos deles: agora eles entenderam. É. E então, eu acabei me tornando professor.

Jonathan: Ah, que legal. E me conta só, você mencionou essa coisa do serviço, do seu serviço civil, digamos assim. Na Alemanha, é obrigatório que todo estudante ou jovem faça antes de ir para a universidade? Como isso se encaixa na cultura alemã?

Gabriel: Naquela época era a alternativa, a alternativa a ir para o serviço militar. Ou você fazia nove... nove meses de militar, ou fazia 11 meses de serviço civil. Esse era o requisito.

Jonathan: Ok.

Gabriel: Para homens, não para mulheres.

Jonathan: Isso ainda é assim na Alemanha?

Gabriel: Não, isso não existe mais. Não. Não.

Jonathan: Ok. Eu sei que na Suíça é assim, que é de onde minha esposa vem. Então é... Essa estrutura ainda é predominante. Ok. Então agora você, você fez matemática e estudou para ser professor, e obviamente a programação teve um papel bem significativo na sua vida. Quando foi que... você teve um momento em que pensou: na verdade, estou dando aula. Estou gostando disso, mas não é bem isso, ainda tem essa parte da programação que está ativa e presente? Como essas duas coisas se equilibraram, a docência e a programação?

Gabriel: Como eu voltei para a programação? É.

Jonathan: É

Gabriel: Sim. Então, durante o tempo em que eu estava estudando, basicamente duas coisas eu fazia como trabalho paralelo. Uma era ensinar. Eu dava aula numa... numa agência de reforço. Eu dava aula na universidade, para os mais novos, em matemática, principalmente no primeiro e segundo semestres. E ao mesmo tempo eu tinha um emprego numa empresa de tecnologia. Eles eram principalmente... então era principalmente baseado em Access.

Jonathan: mm.

Gabriel: Era uma empresa que fazia hardware e software para compartilhamento de carros e para empresas que tinham muitos carros para alugar aos funcionários. E é, lá eu basicamente comecei como redator de documentação primeiro, e depois eles descobriram que eu também sabia programar. Então eu rapidamente passei para a área de programação. É. E aí eu diria que as coisas mudaram principalmente durante as últimas partes da... as partes do curso em que você tinha que ir, você era obrigado a cumprir seis semanas na escola e tal, e às vezes quatro semanas, e assim por diante. E eu acho Ficou claro e importante para mim, também conversando com professores muito experientes e bem dedicados, professores realmente dedicados. Que, basicamente, os tempos mudaram muito. Os alunos mudaram muito. Uma professora me disse... ela sempre dava aula para o quinto e o sexto ano, e ela basicamente me contou: cinco anos atrás eu tinha um Aluno na minha turma que era problemático, no sentido de que a família não estava completa, que havia divórcio ou problemas em casa, e tal. E agora ela tem mais de 50%,

Jonathan: Claro.

Gabriel: E isso foi há 10 ou 15 anos. 2000. Seis ou sete, devia ser isso, então há uns 15 anos. E isso mostrou o quanto as coisas mudaram. E também estava muito claro para mim que muitos alunos hoje em dia simplesmente não querem mais aprender. E o professor é sempre o... basicamente, o professor é sempre o último. A cauda de todo... É. Os pais, o diretor e os alunos. Basicamente, todos mandam no professor. É. O professor é sempre o... uma das últimas cartas, por assim dizer, não sei bem como isso se diria em inglês. Ele é sempre o que tem que assumir toda a responsabilidade, mas não tem direitos, basicamente.

Jonathan: autoridade para... é. Para agir. É.

Gabriel: É.

Jonathan: Então, sua decisão... Bom, desculpa, eu estou te interrompendo. Continue, continue

Gabriel: Esse tipo de coisa, pelo menos me fez pensar muito. E depois que eu terminei a universidade, eu simplesmente voltei para a programação, porque um amigo meu, que foi quem deu esse trabalho de literatura ao meu pai, basicamente me perguntou se eu poderia ajudá-lo num projeto. E esse projeto, que no começo era para ser um projeto de quatro ou seis semanas, virou um projeto de dois anos e meio ou três anos e meio. Ou três anos e meio. Projeto.

Jonathan: É, aumento de escopo. O aumento de escopo foi real

Gabriel: É. Primeiro ele me pediu ajuda com uma coisa. E depois ele sempre estava em contato com uma pessoa dessa editora nos... E a editora sempre dizia: eu quero uma página pública para isso, com a literatura. Quero que as pessoas leiam os livros inteiros online.

Jonathan: Ah, uau.

Gabriel: Em certo momento eu simplesmente disse ao meu amigo... ele estava falando com ele ao telefone e disse: eu poderia imaginar fazer isso. Não tenho nada para fazer agora. E ele disse: ah, o Gabriel faz isso. E foi assim que começou. Então

Jonathan: Uau.

Gabriel: Eu tinha um projeto, é, e então trabalhei três anos e meio nesse projeto. Colocando milhares de livros online, a biblioteca de conteúdo inteira

Jonathan: Uau.

Gabriel: Índice. Idiomas diferentes conectados entre si. É, o site ainda está online. É e g e gw writings.org. Então, se alguém tiver interesse em dar uma olhada, ele tem um design novo. Eu vi, lá por dezembro do ano passado, que eles trocaram para esse novo site, mas o código por baixo é

Jonathan: Tudo o mesmo.

Gabriel: Em grande parte meu, porque eu consigo ver, porque era basicamente baseado em JavaScript.

Jonathan: É.

Gabriel: O código parece muito... está organizado de forma diferente em arquivos, e todos os estilos diferentes ainda são os mesmos.

Jonathan: Você vai ter que me mandar o link, e a gente publica nas notas do programa, na hora certa. Mas então, você fez três anos e meio, o quê, três anos desse projeto. Você indexou tudo isso. Você usava JavaScript como sua linguagem principal naquela época? Qual era a sua, digamos, sua configuração técnica? Você poderia dizer no que você estava focando?

Gabriel: Então foi basicamente o grande passo de sair do software baseado em Windows, que antes era Visual Basic e Visual Basic .NET. E agora era só jQuery, JavaScript e PHP nos bastidores.

Jonathan: Ok.

Gabriel: Também tínhamos um acordo de que, sempre que eu fazia pesquisa, eu tinha um valor por hora menor,

Jonathan: Mm-hmm.

Gabriel: era um terço do que quando eu estava de fato programando. E é, isso me deu a liberdade de basicamente aprender no trabalho. É.

Jonathan: legal. E aí, onde, onde. Exercism. E agora você faz um monte de coisas. Estou certo em dizer que Go é meio que uma parte central do que você faz? Você mentora bastante e tem estado... bom, você tem se envolvido no Exercism, no Go, e ajudado nesse lado das coisas. Quando isso começou a entrar em cena, e por que isso te interessou? Manda ver.

Gabriel: É, em 2016, foi meu primeiro emprego depois daquele projeto grande. Na verdade, perto do fim dele, eu comecei a migrar para Go. Naquele emprego eu mexia principalmente com PHP e Python. E ela rapidamente se tornou minha linguagem favorita, minha linguagem favorita, porque tem essa simplicidade. Ela basicamente tenta Sair daquele mundo maluco de cada vez mais recursos e linguagens, tornando tudo cada vez mais complexo e complicado e com muito mais sobrecarga para o desenvolvedor, porque ele tem que escolher qual caminho seguir. E ele também tem que entender todos os outros caminhos que as outras pessoas usam. Então toda essa sobrecarga, e o Go de repente trouxe essa quietude e essa vontade de simplificar de novo. E isso rapidamente se tornou a minha prioridade número um, quando eu estava construindo um protótipo naquela empresa, uns seis meses antes de eu sair. Porque eles queriam migrar para Go. E no começo, claro, havia essas coisas iniciais, em que você tropeça em coisas que não dá para fazer na linguagem, e aí você entende por que não faz sentido fazer daquele jeito, ou por que é melhor fazer. Eu estava muito interessado em aprender a fazer essas coisas. E foi assim que comecei a ouvir o podcast Go Time. É do Change Log.

Jonathan: Ok.

Gabriel: E a Katrina Owen participou desse podcast, acho que duas vezes. Pelo menos duas vezes eu ouvi ela, eu acho. É. E foi assim que eu comecei a olhar isso. Acho que em 2017 eu me registrei no Exercism. Não tenho certeza, teria que procurar.

Jonathan: Imagino. Seria justo dizer isso?

Gabriel: É, acho que pode ter sido até ainda a versão um, porque no começo não tinha... eu não recebia muito... eu não recebia nenhum feedback. Eu fiz alguns exercícios, mas nunca recebi feedback, e eu conseguia dar feedback aos outros, e dava. Mas eu nunca recebia feedback. Então não havia um processo para realmente receber algum feedback. E era: se você quiser, tudo bem, se não quiser, deixa. Por assim dizer. É. Acho que era a versão um, né?

Jonathan: Imagino que sim. Quer dizer, acho que Houve bastante mudança da versão um para a versão três.

Gabriel: É. É.

Jonathan: a um era pouco feedback. A versão dois exigia uma quantidade extrema de feedback, e aí a versão três ficou em algum lugar. No meio, um pouco, talvez mais para o lado de menos, mas enfim. E você, você participou da construção da versão três, e como... é. Qual foi o seu envolvimento ali? Quer dizer, não tenho total clareza sobre isso, mas adoraria entender.

Gabriel: Talvez um, um passo atrás, se me permite. Então, basicamente eu voltei depois da segunda entrevista. Ouvi a Katrina no Exercism,

Jonathan: Ok.

Gabriel: Foi quando a versão dois existia. E quando havia muito trabalho e havia isso, muita gente precisando de feedback. Eu entrei nisso e gostei muito de dar esse feedback. E,

Jonathan: Mm-hmm.

Gabriel: Basicamente, comecei a pensar em como eu podia fazer isso mais rápido. É. Porque percebi rápido que, especialmente nos primeiros exercícios, era claro que eu daria a mesma resposta de novo, de novo e de novo.

Jonathan: É.

Gabriel: E, por outro lado, claro, às vezes... esses dois problemas, e às vezes havia um problema e outro. Então basicamente comecei a otimizar isso. Comecei a escrever um pequeno programa em Go, que usa análise estática, porque eu queria entrar nessa área de análise. Eu nunca tinha feito isso antes. Queria conhecer isso. Então eu estava interessado em tentar de qualquer forma, e aquilo pareceu uma boa ideia. Porque era um código que ainda era muito comum, ou muito parecido o tempo todo. As soluções de um exercício, especialmente os primeiros, são muito parecidas. Foi assim que eu entrei na análise estática: eu procurava padrões diferentes no código e depois adicionava automaticamente blocos de resposta, ou blocos predefinidos, à resposta. Basicamente comecei isso localmente e foi assim que eu consegui fazer umas 100 por semana, 102 por semana. E eu nem estava fazendo nada em tempo integral. Era além do meu trabalho. E é. E aí começou a... o Pitfield acho que foi o primeiro. John Arun, acho que é o nome real dele. Ele foi tipo o primeiro a dizer: uau, isso é ótimo. Isso é demais. E foi assim que o trabalho que eu fazia começou a ficar conhecido, com a análise estática. E acho que isso foi uma grande parte da versão três. Começamos a pensar em como reduzir o trabalho de um tutor usando essas ferramentas, essa análise estática automática, ou as ferramentas que basicamente checam o código automaticamente e dão feedback automaticamente. Até totalmente automático, sem um mentor nem estar envolvido ou precisar estar envolvido. E porque os mentores... estava bem claro que tínhamos mentores e que eles não eram suficientes para o trabalho. Tínhamos a ferramenta de inversão e também vimos que muitos mentores estavam entrando em burnout, eles desapareciam, e é, era simplesmente demais. Demais para muitos mentores. É. O trabalho era algo com sequências, eles tinham 500 ou mais soluções para mentorar, e às vezes havia tempos de espera de um mês ou mais. E claro que eram condições em que os alunos também simplesmente iam embora em algum momento. É.

Jonathan: Hmm. É engraçado, porque acho que o Jeremy estava falando outro dia que, de todas, de todas as soluções que são enviadas, algo como 75% delas são totalmente únicas, o que eu também acho fascinante. Quer dizer, você vai num exercício tipo o Hello World, obviamente é bem simples. Certamente deve ser um padrão que se repete sempre. E ele disse: não, é gente tentando todo tipo de coisa diferente. E é engraçado como, sabe, essa sobreposição, porque conforme programar fica mais popular e mais gente começa a desenvolver e programar, você meio que se pergunta: bem, onde essa automação vai começar a anular o papel do desenvolvedor? Eu, eu me pergunto, eu não... não sei se vai. Acho que ainda é exigido demais, mas em termos de, sabe, não sei qual é a sua opinião sobre isso, mas parece que no Exercism, ultimamente, há um grande esforço em mentoria que é realmente fascinante, porque, como você disse, pega todas aquelas lições repetitivas que você tem que dar toda hora e coloca de um jeito que é gerenciável para as pessoas darem conta. Ao mesmo tempo, será que isso acaba chegando no ponto em que você realmente precisa da interação humana, de um humano de verdade com o conteúdo? Então não sei se você tem alguma ideia sobre isso, mas acho um espaço interessante neste momento.

Gabriel: É, eu não acho que os desenvolvedores serão substituídos tão cedo. Isso ainda vai demorar bastante. No desenvolvimento, em aplicações em geral, na mentoria, eu acho. Acho que a análise estática e também a mentoria automatizada, a mentoria automatizada em geral no Exercism, podem ajudar muito. Mas mentores são necessários para a mentoria de verdade, eu diria. É. Por exemplo, tem uma pessoa que eu mentor; a cada dois ou três meses a gente faz uma chamada, às vezes mais. E eu a mentoro na carreira dela, digamos assim. E também tecnicamente, bem profundamente técnico, mas é um jeito completamente diferente de mentorar do que só olhar a solução e dizer o que você pode melhorar. E acho que é para isso que os mentores que existem ainda são necessários, e com certeza vão continuar sendo, e acho que isso é algo em que podemos focar. Por outro lado, eu acho Acho que não podemos substituir os mentores completamente nas soluções, e não acho que deveríamos. Podemos automatizar muitas coisas, mas ainda assim o mentor é alguém que pode apontar a direção. Ele consegue ver os problemas com que você está lutando e pode te dizer: entenda isso e isso, não só "você precisa melhorar seu código desse jeito".

Jonathan: É. É.

Gabriel: E, para ser honesto, eu gostaria de ter mais mentoria de volta no Exercism. Então fico pensando se deveríamos

Jonathan: interação cara a cara, você diz?

Gabriel: É. Fico pensando se deveríamos... Antes tínhamos esse caminho com 10 exercícios, e pelo menos era 10. Que você tinha que passar, e só podia seguir adiante quando fosse mentorado.

Jonathan: É.

Gabriel: E acho que, com a automação que temos agora, poderíamos realmente reativar isso. Ou talvez não agora, mas no futuro. E acho que eu gostaria disso.

Jonathan: com certeza poderíamos, deveríamos levantar isso numa, numa chamada da comunidade, porque acho que seria legal trazer isso de volta para o foco. Então, Gabriel, uma das perguntas que a gente costuma fazer e, e essa não é a que eu falei com você antes, mas eu. Uma das perguntas que eu, eu, eu gosto de fazer, porque é sempre bem interessante e diferente, é: a programação meio que clicou para você? As pessoas dizem que houve uma experiência de que de repente tudo fez sentido. Eu costumo usar muito a minha história. Dou um exemplo da escola, quando eu estava aprendendo química, no Reino Unido, onde eu estudava. Você tem essas provas em. E então tudo leva até essas provas, nos três anos anteriores a elas. Você tem três anos de estudo e isso culmina na sua prova final. E isso em todas as matérias. E um dos tópicos, claro, era química. E eu passei uns três anos sem ter ideia nenhuma de química. Eu simplesmente não conseguia, não, não conseguia. Eu não conseguia entender, e aí, uma semana antes da prova, foi como se a ficha tivesse caído, a expressão de tipo, a coisa simplesmente fez sentido. E eu fiquei tipo: nossa. Eu consigo tirar tudo da tabela periódica. Se eu sei os números da tabela periódica, consigo entender isso, aquilo e aquilo outro. E as coisas ficaram bem simples, e foi tipo... Você teve um momento assim com a programação, ou foi algo que simplesmente você achou naturalmente que fazia sentido para você, e quando foi esse momento, se isso faz sentido?

Gabriel: Não tenho certeza se tive esse momento definido. Acho que ajudou muito ter aquela gravação de macros e poder olhar o código bem cedo, com Visual Basic for Applications. Não sei se isso ainda existe, se ainda tem algo assim hoje em dia. Acho que você ainda consegue. Word e fazer isso. Mas não é muito comum você ter algo assim, em que você pode gravar e depois olhar o código e aprender desse jeito. Acho que isso facilitou muito para mim, porque eu tinha bastante dificuldade no começo. Acho que um, um tipo de momento em que eu diria, ok, não que eu entendesse as coisas, mas em que eu percebi, basica... se eu estava de fato fazendo as coisas certas ou erradas, foi quando entrei naquela empresa, quando eu era estudante. Foi basicamente a primeira vez que eu trabalhei. Trabalhei junto com outros desenvolvedores. Antes disso, eu estava sempre sozinho e basicamente tinha que fazer tudo. E sempre era uma grande pergunta. Será que normalmente se faz assim? Parece estranho. Parece complicado. Parece que funciona, mas será que está correto? Eu. E isso meio que foi respondido quando entrei naquela empresa e comecei a trabalhar lá. Com certeza havia muito que eu precisava aprender, e aprendi muito. Por exemplo, record sets do Access. Eu nunca tinha entendido de verdade antes. Eu trabalhava com eles, mas

Jonathan: Mm.

Gabriel: é, funcionava

Jonathan: É. Alguma coisa

Gabriel: Aí eu entendi de verdade, comecei a entendê-los. Então talvez tenha sido algo que clicou para mim, porque eu tinha uma colega de trabalho e ela me explicou, e realmente clicou. Um dia eu entendi como eles funcionam e

Jonathan: Mm-hmm.

Gabriel: como eles deveriam funcionar e como usá-los corretamente, e assim por diante. Então, é, talvez tenha sido um desses momentos. Mas acho que esses momentos aparecem no nosso trabalho com muita frequência. Não acho que exista aquele momento único, talvez aquele seja um momento inicial. Mas também no Go, há tantos lugares em que isso pode clicar para mim, em que eu entendo por que algo é daquele jeito e como deve ser usado. E, por exemplo, contexto. . É. Por exemplo, contexto.

Jonathan: É.

Gabriel: É. Por exemplo, o contexto... sei lá, foram adicionados, não tenho certeza, no 1.6 ou 1.7, talvez. Naquela época, eu não. Olhava para eles. Para ser honesto, no começo eu não precisava deles. E aí eu fui a um... foi tipo um meetup, e alguém apresentou sobre o contexto, como você os usa, como você... e assim por diante. E eu pensei

Jonathan: Hmm.

Gabriel: que deveria dar uma olhada nisso. Mas ainda levou alguns meses até eu realmente olhar para eles e entender por que existem. E, por exemplo, o canal fechado: não sei se você sabe, muita gente ainda propõe na internet que você feche uma goroutine com um canal fechado, e não deveria. É para isso que o contexto serve. É. Você usa um contexto, cancela o contexto, e aí você pode fechar a goroutine com isso. Se você usa um canal fechado, basicamente está fazendo manualmente o que um contexto faz internamente, e há tantos tropeços para evitar, tantos problemas. Para evitar isso, normalmente as pessoas fazem errado.

Jonathan: Tenho certeza de que você fez uma live, você fez uma transmissão ao vivo e mencionou algo sobre isso. Eu, eu acho que me lembro de você mencionando, sabe, use contexto porque

Gabriel: É.

Jonathan: faz muito sentido.

Gabriel: Lembra que eu mencionei essa parte.

Jonathan: É. Mas não, então, em termos de, tipo, quando você mentorou pessoas no passado, quais são algumas das... Você consegue identificar. Ações ou comportamentos ou coisas que as pessoas que captam as coisas rápido, você consegue ver o que elas fazem que permite que elas se posicionem para aprender rápido ou de forma mais eficaz? Ou é que muitos dos mentores, ou pessoas que você mentorou, são simplesmente naturalmente engajados desse jeito? Ou existem pessoas de quem você pensa: uau, elas fazem coisas, elas fazem coisas que permitem acelerar o

Gabriel: Não sei se consigo dizer isso sobre outras pessoas. Sobre mim mesmo eu com certeza consigo. Eu aprendi, acho , com meus pais. Eles aprenderam muitas coisas sozinhos, e foi isso que também aprendi com eles: aprender as coisas sozinho. Então eu aprendi a programar. Totalmente por conta própria. Teve meu pai no começo. Teve algumas coisas na escola. Na maior parte do tempo, nas últimas séries da escola, eu era, ou a gente era, quase todos nós éramos melhores que o professor, então não havia aprendizado de verdade. Havia mais um tipo de aprendizado entre nós. Mas

Jonathan: É.

Gabriel: No geral, eu aprendi tudo sozinho. E acho que isso é algo que você precisa na programação. Porque você precisa constantemente se aprofundar em coisas que nunca viu antes. Você não as conhece, precisa estudar sobre elas. Então, qual é a palavra? Essa. Habilidade. É. Essa habilidade de conseguir se aprofundar em algo e aprender sozinho, acho que é fundamental na programação para aprender. E claro que você pode aprender muito mais rápido se encontrar alguém que te ensine isso. Então não quero dizer que você não deve procurar um mentor, que não deve ir ao Exercism, e tal. Isso ajuda você a crescer muito mais rápido, mas ainda assim é isso. É o que eu diria.

Jonathan: me parece que o seu aprendizado veio de tentar resolver problemas na prática. Seja fazendo macros para tornar alguma coisa mais eficiente, ou... me parece que esse foi um tema central que se repetiu na sua vida, em termos de aprendizado, o que eu acho que provavelmente se alinha muito. Em geral, é o que o Exercism também tenta fazer, ajudar as pessoas a fazer coisas na prática

Gabriel: Sim. É por aí.

Jonathan: É, isso. Muito legal. Então, Gabriel, não temos muito tempo, mas eu tenho duas finais. Bom, não perguntas para você. Uma é uma pergunta e vou pedir que você compartilhe uma opinião sua, e a outra vai ser, bom, é mais ou menos uma opinião que você poderia. Vou pedir que você dê uma recomendação para a comunidade, algo que eles precisam experimentar esta semana. Mas a primeira coisa é que a gente já conversou com muitas das pessoas que entrevistamos antes, e se você acompanha este podcast ou esta transmissão ao vivo há algum tempo, você sabe que a gente faz uma grande pergunta normalmente perto do fim da nossa transmissão ao vivo. E a pergunta é: qual é a bandeira que você defenderia até a morte na tecnologia? Então, qual é aquela opinião que você sustenta firmemente, que você gostaria de defender e, e. E lembre-se, você tem que dar um bom motivo para isso. Você não pode só dizer: essa é a minha opinião e pronto. Você tem que ser capaz de, de se defender nesse sentido. Mas qual seria essa opinião, se... E ela pode ser tão intensa, tão intensa ou tão trivial quanto você quiser. Então, qual seria?

Gabriel: Eu diria que é um provérbio. Temos no Go, ou alguém disse na comunidade Go, e é isto: código chato é melhor que código esperto.

Jonathan: Gostei. O que isso significa?

Gabriel: O que isso significa? É, basicamente resume uma grande parte da filosofia do Go em torno de simplicidade e legibilidade. Então, se no código Go você pensa: uau, isso é esperto, na verdade isso é código ruim. Mesmo que a pessoa que fez aquilo seja muito inteligente e tenha feito de um jeito muito esperto. E às vezes eu sinto que, se você realmente segue a simplicidade e as convenções idiomáticas do Go, você não tem, na sua base de código inteira, um código que você queira apontar, ou possa apontar dizendo: olha esse código, como é bom. Porque todo o seu código é, na verdade, chato e bem simples, e qualquer pessoa que olhar para o seu código vai dizer: o que esse código tem de especial? É, mas o ponto é que você chegou à simplicidade porque é um bom programador, e isso é um processo de iteração. E código complicado... escrever código complicado é muito fácil. Escrever código simples é. Porque você ainda... primeiro você precisa simplificar o problema na sua cabeça, depois escrever o código corretamente, e depois iterar e torná-lo simples. E esse é um processo muito mais longo e que exige desenvolvedores muito melhores do que apenas escrever código complicado, que, quando você olha, é difícil de entender. É difícil de ler, é difícil de manter e é difícil de mudar.

Jonathan: É essa, é essa coisa constante de trade-offs, né? Eu sou bem novo no mercado de tech, três anos, e não venho de uma perspectiva de desenvolvimento. Venho mais do lado de produto. Da perspectiva mais de negócio. E, digamos assim, e uma das coisas que foi bem interessante foi que ficou cada vez mais evidente que tudo gira em torno de trade-offs. Então você diz: o trade-off é código simples versus código complicado, sendo que o código complicado pode acabar sendo mais pesado e cheio de armadilhas lá na frente. O código simples pode levar mais tempo e exigir mais energia e esforço no começo. E esse é o trade-off que está sendo feito o tempo todo. Então essa foi uma das... não sei quais são os seus pensamentos sobre isso, mas me parece que realmente esse lado da simplicidade, porque eu lembro que eu tinha um amigo na universidade e ele só escrevia trabalhos de duas páginas para as tarefas dele. Porque ele conseguia condensar tudo em duas páginas, e tirava as notas máximas por isso. Então acho que isso se alinha com todo o conceito de simplicidade, e eu acho que é muito difícil escrever código simples, porque exige pensamento claro, claro mesmo, não só programar. Então acho que essa é uma bandeira digna, e acho que você argumentou bem. Você, você falou sobre isso muito bem. Legal. Então, Gabriel, pergunta final desta semana. E agora você pode dar um conselho para a comunidade do Exercism. E pode ser qualquer coisa. Pode ser conselho de saúde, conselho de alimentação. É a sua oportunidade de compartilhar um conselho que você daria para a comunidade, e pode ser qualquer coisa que você quiser. Então, qual seria a sua recomendação para a comunidade do Exercism esta semana? Que uma coisa eles precisam experimentar ou fazer, na sua pers...

Gabriel: Ah, essa é difícil. Ok, agora que você disse que pode ser qualquer coisa, posso dar duas?

Jonathan: Pode, pode dar duas

Gabriel: Ok. Uma, uma recomendação. Na verdade eu sou vegetariano. Cresci vegetariano. Nunca comi carne, e na verdade cresci vegano, na maior parte da minha infância e juventude. Então, tente uma semana sem nenhum produto lácteo. Então essa seria uma. E outra recomendação seria que... não sei se dá para fazer em uma semana, mas se você for um bom desenvolvedor, dá. É muito interessante e muito válido tentar construir memória compartilhada, compartilhada entre vários serviços, o mesmo serviço, memória compartilhada. Tente implementar uma memória compartilhada usando o protocolo Raft. Você pode usar uma biblioteca. Não precisa implementar o Raft em si, mas

Jonathan: Raft Você vai precisar me mandar, você vai precisar me enviar o link para eu poder postar isso. Então esse é o desa... de Gabriel. Bom, talvez a gente deva chamar de desafio do Gabriel para a semana. Talvez não tanto recomendação. Talvez a gente precise

Gabriel: É. É mais uma coisa para tentar.

Jonathan: Você manda, você lança um desafio. Essa pode ser, pode ser bem divertida, mas legal. Então, semana sem nenhum produto de carne. Veja como vai, e construa um servidor de memória compartilhada. O que você diria? Serviço, compartilhada

Gabriel: É, você poderia chamar de chave-valor em memória

Jonathan: Ok.

Gabriel: Então, vários serviços, um banco de dados, ou um serviço. É.

Jonathan: Legal. Isso é

Gabriel: Porque isso ensina muito sobre como os bancos de dados funcionam. É. Por baixo dos panos. Especialmente os modelos que são compartilhados, tipo, é, não sei. É. Cassandra/Skylar, não sei se você tem Skylar. É meio que o Cassandra, mas em C++ e eles estão migrando para o protocolo Raft agora. Ou É um banco de dados chave-valor. Um compartilhado é um dase, não, não é um banco de dados. É gerenciamento de retorno. É, Be degraff, da Degraf Beja. Então esse, acho que também usa Raft por baixo para distribuir os dados. Não posso afirmar com certeza, eu teria que procurar de novo. Mas há muitos bancos de dados que usam isso. Sistema distribuído. Então o sistema distribuído é basicamente um grande desafio, eu diria, dos nossos tempos modernos. Estamos no processo de resolver isso, mas ainda há muitos desafios a superar, e é, é sempre bom conseguir pensar nesse sentido, porque se você consegue, isso abre muitas possibilidades.

Jonathan: Hmm.

Gabriel: Se você precisar de alguma. Na minha última empresa, eu estava de fato indo por esse caminho, tendo memória compartilhada entre vários serviços ao mesmo tempo. É.

Jonathan: Talvez, talvez a gente precise montar isso como uma master class. Vamos dar algumas semanas para as pessoas tentarem. Então, Gabriel,

Gabriel: essa é a master

Jonathan: É,

Gabriel: quando você terminar o Exercism e tiver feito todos os exercícios,

Jonathan: Esse é o grande. O grande. Ele amarra tudo, amarra tudo junto. Gabriel, muito obrigado pelo seu tempo. Foi um prazer enorme conversar com você esta noite. Se você quiser ficar um pouco depois de, depois que a gente terminar de gravar, rapidinho, mas eu só queria dizer um enorme obrigado e agradecer muito por tudo que você coloca no Exercism, e não só para nós, mas por toda a mentoria que você faz mais além e por ajudar as pessoas a escrever código melhor. Tenho certeza de que isso é muito valorizado em todo lugar. Então, obrigado pelo seu tempo e. Procurem o Gabriel. Se você está no Exercism, mande uma mensagem para ele, peça mentoria, e tenho certeza de que você vai ter uma ótima experiência com o Gabriel. Legal.

Gabriel: Muito obrigado.

Jonathan: terminar a gravação. É, não, obrigado por, obrigado por participar, e a gente se vê em breve em alguma plataforma por aí.

Gabriel: Obrigado.

Mais histórias da nossa comunidade

Ouça, aprenda e se inspire com os membros da nossa comunidade.