De vez em quando a gente encontra alguém que mergulha de cabeça no aprendizado de programação! Carl, também conhecido como 'Meatball' na internet, começou a aprender a programar usando a trilha de Python no Exercism... isso é um feito e tanto, mas quem não gosta de um desafio!
Jonathan: Bom, olá e bem-vindo ao podcast do Exercism. Meu nome é Jonathan. É um privilégio estar de volta para compartilhar vida e histórias com você, onde quer que você esteja. Então, hoje temos um convidado chamado Karl. E eu vou direto ao ponto e só vou pedir para o Karl se apresentar um pouco. Então, Karl, me diga de onde você é. O que você está fazendo no momento? E como você conheceu o Exercism?
Carl: Bom, eu moro na cidade de Gotemburgo, na Suécia, e atualmente sou estudante em tempo integral. Mas, quando entrei na tech e na programação, eu usei o Exercism. Comecei com a trilha de Python e acho que a trilha de Python é a melhor trilha para a maioria dos iniciantes, porque a sintaxe do Python é bem direta e, na minha opinião, bem natural. E, quando o assunto são os tipos de linguagem de programação, o Python é bem gentil com você. Ele não tem tantos tipos, tipos de dados, mas... é isso. Então eu comecei fazendo os exercícios de conceito e seguindo o programa. E eu fazia isso mais ou menos a cada dois fins de semana, um ou dois exercícios. Depois de um tempo, quando eu... porque no começo eu cometi muitos erros que, olhando para trás, hoje eu percebo. Agora que programo há mais tempo, consigo reconhecer esses erros. Então não, seu code não precisa ser perfeito no começo. E o que eu gostei foi que, quando... quando eu fiz muitos exercícios na trilha de Python, eu passei para a trilha de Ruby. Tá. Por que o Ruby é uma ótima linguagem para quem vem do Python? Porque há muitas semelhanças. E a sintaxe do Ruby é bem parecida, mas tem algumas diferenças. Tipo, o Ruby é muito mais OOP, orientado a objetos. Então acho que, para um iniciante, pode ser uma jornada bem legal começar com Python e depois passar para Ruby. E até a próxima.
Jonathan: Você começou com Python. Quer dizer, muitas vezes, quando as pessoas chegam ao Exercism, elas têm um pouco de experiência com desenvolvimento. Se você já tem algum conhecimento e experiência prévios em desenvolvimento e programação, o que as pessoas costumam usar o Exercism para fazer é se aperfeiçoar em uma linguagem específica. Mas eu estou certo ao pensar que você chegou sem nenhuma experiência com programação e começou com o Exercism?
Carl: Eu já tinha feito um pouco de Scratch, tipo programação visual, antes, mas nunca cheguei a escrever code de verdade. É difícil começar do zero. E acho que é algo que todo programador compartilha: o começo parece uma ladeira, e depois que você chega lá em cima, tudo fica mais fácil.
Jonathan: Eu achei que você fosse dizer que você sobe a ladeira, e aí a ladeira fica maior, e aí você sobe um pouquinho e ela continua ficando cada vez maior. Você sente algo assim? Teve um ponto em que as coisas fizeram sentido? Teve um momento em que você pensou: tá, sim, agora eu entendi.
Carl: Quer dizer, na real, leva muito tempo para de fato entender algo por completo, e o que a maioria das pessoas costuma fazer no começo é... usar muito o laço while, porque ele é bem... você consegue controlá-lo muito mais do que o laço for, porque, no laço for, você precisa dizer, antes de começar, quanto tempo o laço vai durar. E eu acho... quando eu aprendi a usar o laço for de forma mais adequada, sem abusar tanto do laço while, acho que a programação clicou, sabe? Ou os laços clicaram muito mais, como os laços funcionam.
Jonathan: Tá, então esse foi um momento em que você sentiu: tá, esse conceito faz sentido para mim. E aí, o seu entendimento sobre laços se traduziu em outros conceitos que começaram a fazer cada vez mais sentido? Vou falar da minha experiência aqui. Eu tenho aprendido Go, na trilha de Go também. E laços nunca fizeram sentido nenhum até eu passar, sei lá, uns três dias revisando os exercícios e a documentação e montando tudo, tipo, desmontando peça por peça. E a experiência de passar pelos laços e tentar entender laços teve um impacto muito grande no meu entendimento de code, de modo geral, e de como funções e esse tipo de coisa funcionavam. Foi parecido para você, você diria?
Carl: Em Python, você costuma resolver coisas diferentes iterando sobre as coisas. É mais ou menos a única coisa que você faz no Python. No Python, você itera sobre as coisas para resolver problemas. Ou seja, os laços são muito importantes de entender por completo. Quando você realmente entende os laços no Python, você consegue fazer muita coisa, simplesmente porque tudo é baseado em iterar sobre objetos.
Jonathan: Que legal. Então você está estudando atualmente, você mencionou rapidinho antes desta gravação, tipo, matemática, física. Quais são os tópicos que você está estudando no momento? Que tópicos ou que matérias você está estudando no momento?
Carl: Estou estudando programação, matemática e física.
Jonathan: Tá, e o que você está achando de tudo isso?
Carl: Olha, o negócio é que eu fiz o Exercism como preparação para esses cursos de programação. E percebi que agora sei muito mais do que esses cursos cobrem.
Jonathan: Que demais.
Carl: Eu não aprendo tanto com eles, porque acabo aprendendo sobre marxismo, em vez disso.
Jonathan: Então você está dizendo, Carl, que na verdade as pessoas deveriam fazer o Exercism em vez de uma faculdade?
Carl: Quer dizer, num curso de ciência da computação você acaba aprendendo um pouco mais sobre como um computador funciona, sobre bits e tal. Enquanto o Exercism só te ensina programação, resolução de problemas e toda a parte de lógica. Acho que ainda faz sentido ir para a faculdade.
Jonathan: Eu estava só te provocando um pouco, porque acho que ofenderíamos um monte de gente com diploma universitário se você dissesse que elas não sabem nada. Então vamos deixar essa de lado. E Carl, me conte, vou te fazer mais algumas perguntas sobre a sua infância agora. Qual era a sua... estou tentando formular isso. Tipo, quando criança, você gostava de resolver problemas? Você se interessava por Lego ou esse tipo de coisa? E o motivo de eu perguntar é que, muitas vezes, quem programa tem um prazer bem natural em resolver problemas. Então, crescendo, você tinha muitos hobbies ou coisas mais técnicas? Me conte um pouco sobre isso.
Carl: Quer dizer, eu gostava de Lego. Não... quer dizer, eu... eu era bom em matemática quando era mais novo. É resolução de problemas nesse sentido, tentar resolver problemas de matemática diferentes. Acho que o que realmente me levou à programação foi só... meu interesse por tech em geral, eu gosto muito de computadores. E eu gosto muito... obrigado. Toda vez que alguém tem um problema com o computador, vem: ah, você pode me ajudar? O que às vezes pode ser meio chato, mas na verdade costuma ser bem divertido. Então eu me interessei muito por computadores, e isso me levou à programação.
Jonathan: Tá, então, pelo que eu entendo, você já fez de quatro a cinco trilhas no Exercism, ou melhor, você já aprendeu de quatro a cinco linguagens usando o Exercism, é isso?
Carl: É isso? Sim, eu fiz tipo... eu comecei umas seis trilhas. Tá. Mas só conheço umas quatro razoavelmente bem.
Jonathan: Tá, e dessas, quais são? Seriam Python, Ruby.
Carl: Python, Ruby, JavaScript e TypeScript, mas também sou razoável em Elixir.
Jonathan: Tá, e de todas essas linguagens, de qual você gostou mais em termos de aprendizado?
Carl: Eu amo muito o Elixir. Gosto muito de como você escreve nessa linguagem. É, acho que é uma linguagem muito divertida de escrever, mas é bem diferente do que estou acostumado em outras linguagens. É como, de certa forma, começar do zero de novo. Sim. Mas acho que, se alguém quer mesmo aprender uma linguagem muito, muito poderosa, o JavaScript está aí. Na minha opinião, é uma das linguagens mais poderosas que você pode conhecer.
Jonathan: Tá, então o JavaScript seria, me corrija se eu estiver errado, uma linguagem mais interpretada. Seria uma observação justa? E aí o Elixir é provavelmente mais funcional. É isso?
Carl: Sim.
Jonathan: Tá, então as duas são bem diferentes na forma como funcionam. Achei interessante que você parece gostar de todo o espectro dessas duas linguagens. O que é que tem no Elixir que você acha divertido ou prazeroso? Você consegue definir isso?
Carl: Quer dizer, é essa programação funcional. Tipo, você tem essas... você tem essas funções e deve juntá-las todas. E, com todas essas funções, você deve resolver o problema. E isso significa que, para mim pelo menos, eu dependo muito... hã, a documentação do Elixir é muito importante, hã, para de fato fazer alguma coisa. E a documentação do Elixir é ótima, na minha opinião. Então você fica buscando os métodos corretos, o que eu acho bem divertido.
Jonathan: Então é quase como montar um quebra-cabeça, digamos, em que você vai juntando tudo para conseguir ver o problema.
Carl: juntando tudo para montar um quebra-cabeça. E, como eu disse, gosto muito de como você escreve na linguagem também. Então é um quebra-cabeça bem legal.
Jonathan: Tá, legal. E em que ponto da trilha você está? Você já passou pelos exercícios de prática ou ainda está nos exercícios de conceito?
Carl: Tem bastante exercício de conceito nessa linguagem. Acho que são uns 20, ou talvez mais. Acho que estou nos exercícios de conceito, já fiz uns... provavelmente 90% ou algo assim, então estou quase terminando.
Jonathan: Demais, que legal. Muito, muito legal. Então, Karl, quero saber um pouco mais sobre a sua vida, além de programação e desenvolvimento. Quais são algumas coisas que você gosta de fazer no seu tempo livre ou como hobbies? Tem alguma coisa que você realmente... se pudesse passar todo o seu tempo fazendo fora da programação, o que seria?
Carl: Bom, se eu não puder dizer programação, eu gosto de jogar uns videogames no meu tempo livre e também gosto de andar de bike. Isso também é divertido.
Jonathan: Mountain bike ou bike de estrada?
Carl: Bike de estrada.
Jonathan: Então você pedala? Quer dizer, me conte um pouco, porque você está na Suécia, né? Sim. E onde você mora, é plano? Tem colinas? Você tem um oceano bonito? Porque minha impressão da Suécia é que vocês têm oceanos.
Carl: que vocês têm oceanos. É, onde eu moro é bem plano. Mas, se você for para o norte, tem mais colinas.
Jonathan: Está nevando no momento na Suécia? Parece que vai começar a esfriar agora.
Carl: Estava nevando, acho que semana passada, mas agora tem bastante neve.
Jonathan: Tá, e você pedala na neve?
Carl: Sim.
Jonathan: Você pedala mesmo. Então temos outro, você talvez conheça o Brian. O Brian, ele é um dos mentores de Elixir. Brian Underwood, ele também mora na Suécia, acho que em Estocolmo, e ele sai para correr no meio do inverno, correndo no escuro da noite na Suécia. Então achei isso bem, achei isso bem legal. Então você costuma pedalar bastante, tipo uma vez por semana, duas vezes por semana? Ou é algo que você faz com regularidade? Ou é só...
Carl: Eu, eu, eu, quando eu viajo, eu vou de bike até a estação de ônibus e depois pego o ônibus lá.
Jonathan: Tá, e aí você só encontra um lugar legal e depois... Então você viaja de ônibus.
Carl: Eu vou de bike até a estação de ônibus e depois viajo de ônibus.
Jonathan: Entendi. Tá, tá, legal. E Carl, quanto fica a universidade de onde você mora? Você mora com a família ou aluga um lugar? Como é a sua situação?
Carl: Como é a sua situação? Eu moro com a família. Fica a 30 quilômetros de distância. É, é, leva tipo, sei lá. Ah, espera. É, 30 quilômetros, deve ser isso mesmo. Leva uns 40 minutos ou algo assim.
Jonathan: Tá, então não é tão ruim, mas ainda é um bom caminho. Agora, quantos anos de estudo você ainda tem antes de entrar no mundo real, digamos assim? Você tem mais quatro anos de estudo. Você está no primeiro ano no momento?
Carl: Isso.
Jonathan: Tá, uau. Então você já fez o primeiro ano e é um curso de quatro anos. Tá. E o que, você tem alguma ideia de qual é o seu sonho para o futuro, ou o que quer fazer como carreira, ou algum pensamento sobre isso?
Carl: Quer dizer, eu sempre quis trabalhar com espaço, porque acho isso legal. Não sendo tipo em astrofísica ou algo assim, mas talvez fazendo alguma programação ligada a coisas do espaço. E a gente tem uma Agência Espacial Europeia, que seria algo, mas... se não for isso, acho que só, sei lá, um trabalho tranquilo de backend seria bom.
Jonathan: Só um backend tranquilo, adorei como você disse isso. Aos meus ouvidos soa tão simples e fácil. E você acha que algum dia ia querer se mudar para outro lugar que não a Suécia? Ou você gosta da Suécia? Algum pensamento sobre isso? Quer dizer, olha, estou te fazendo perguntas que talvez você nunca tenha nem considerado, porque ainda faltam alguns anos antes de você ter que fazer essas escolhas. Mas essa coisa do espaço soa fascinante. Como você vai fazer isso? Como você vai começar a entrar nessa área?
Carl: Eu não tenho a menor ideia. Nunca pensei realmente em como, mas... quer dizer, a gente vai ver. É mais um sonho do que um plano de verdade. Mas, para responder à sua pergunta anterior, eu já pensei em talvez morar no Canadá ou algo assim, mas acho que ainda vou morar na parte norte do mundo mesmo.
Jonathan: Tá, então frio, gelo e neve. Você está feliz com isso? Sim. Carl, você tem irmãos, irmãs?
Carl: Eu tenho um irmão mais novo.
Jonathan: Tá, então vocês são dois. E ele gosta de programação? Você ensina para ele o que você aprende e o que você sabe?
Carl: Ah, ele não gosta de programação, na verdade. Não sei.
Jonathan: Ah é? Então não tem essa em comum. Mas você joga jogos com ele também?
Carl: Eu jogo com ele às vezes, sim.
Jonathan: Ele é bem mais novo, ou imagino que ele deva estar na escola agora?
Carl: Ele é uns cinco anos mais novo que eu.
Jonathan: Tá, então é uma diferença de idade considerável. Ah, que legal. Que demais. Então, voltando ao Exercism e ao seu envolvimento, agora você é mantenedor da trilha de Python, se não me engano? Sim, ou contribuidor. Contribuidor, tá, legal. Mantenedor um dia. Mas como você está achando isso? Quais foram algumas das coisas que você aprendeu com essa experiência?
Carl: Quer dizer, o pessoal da trilha de Python é muito legal, e é muito divertido trabalhar com eles... porque, no momento, eu fiz bastante documentação e você acaba aprendendo a fazer documentação, e também tem que pesquisar bastante, muitas vezes. Sim, então tem bastante documentação, e você aprende muito, porque precisa ler tudo, passar por muita documentação de outras pessoas. Aí você acaba se aprofundando bastante nos conceitos.
Jonathan: Então você gostou disso especificamente como disciplina, em termos de contribuir?
Carl: Sim, e quer dizer, eu aprendo muito lendo essas documentações.
Jonathan: Não, é bem legal. Então, em termos de contribuir com o Python no momento, você pensa em começar a contribuir com o Elixir e o Ruby? Como você imagina isso?
Carl: Quer dizer, sim, eu me vejo contribuindo com a trilha de Ruby, mas com Elixir, acho que não. Eu tenho esse plano de longo prazo de contribuir com a trilha de TypeScript, mas a gente vai ver. Acho que vou ficar na trilha de Python pelos próximos seis meses, na verdade.
Jonathan: Tá, legal. Então me conte, você pode me explicar um pouco sobre o TypeScript? Tipo, só me dar uma noção do que se trata. O motivo de eu perguntar é que já ouvi falar dele. Mas ouvi dizer que ele meio que... solidifica o JavaScript, mas de novo, você pode me dizer se estou completamente errado. Ele meio que ajuda a fazer uma verificação de segurança no JavaScript, mas posso estar errado. O que é?
Carl: O que é? Quer dizer, essa é uma descrição bem boa. Eu tive uma aula de frontend e o professor usava JavaScript, e ele fazia um JavaScript básico em HTML. Aí eu copiei e colei esse code no TypeScript. E o TypeScript ficou tipo: ah não, você não deveria fazer isso. É inseguro. Então tem muito a ver com isso, tipo, deixar o seu code seguro, evitar que ele quebre e coisas do tipo. Ele introduz tipos, para você não ter conflito de tipos. E sim, no geral ele te diz para fazer coisas seguras e não code inseguro. Sim, é uma linguagem diferente, mas é bem parecida com o JavaScript. Você pode pensar no TypeScript como um JavaScript, mas com uma armadura. Então é como se fosse protegido.
Jonathan: Tá, então é uma linguagem própria. Acho que na minha cabeça eu tinha a impressão de que era quase um plugin do JavaScript, mas você está dizendo que na verdade é uma linguagem própria, de fato.
Carl: Acho que sim. Quer dizer, elas são bem parecidas, então talvez sejam a mesma coisa, tipo, um plugin, mas eu gosto de pensar nela como uma linguagem própria, porque tem algumas diferenças importantes.
Jonathan: Eu provavelmente acabei de ofender todos os fãs de TypeScript por aí ao dizer que é um plugin do JavaScript. Tenho certeza de que isso vai gerar opiniões interessantes. Mas então, para você, a parte de segurança do TypeScript é mais ou menos o que faz dele algo que vale a pena explorar mais. É isso?
Carl: Quer dizer. Tipo, o que realmente me levou ao TypeScript foi que minha biblioteca de React não suportava JavaScript normal, só suportava TypeScript. Eu me acostumei com o TypeScript e acho bem legal. Também deixa o code mais claro quando você usa tipos, porque você consegue ver, tipo: tá, isso recebe um number e retorna uma string. Fica mais fácil de ler.
Jonathan: Tá, você mencionou o React Native ali. Você prefere desenvolvimento frontend ou backend? Pelo que entendo, você prefere backend. Mas você mexe um pouco com frontend?
Carl: Eu já mexi com frontend, mas sou péssimo em CSS. Então normalmente tento achar uma boa biblioteca de UI e usar ela.
Jonathan: Quando você diz que é péssimo em CSS, o que quer dizer com isso? Tipo, você simplesmente não entende, ou é confuso, ou tem muita coisa... Tipo, o que é que você tem dificuldade?
Carl: o que eu tenho dificuldade. É tipo, é tipo, tem tanta coisa que você pode atribuir a um objeto. Ah, para remover aquela coisinha, tipo, quando você cria um link em CSS ou em HTML, aparece uma linha embaixo do texto. E aí, para remover isso, você tem que adicionar text decoration e depois escrever none. Aí isso realmente remove aquilo. E é tanta coisa que você precisa memorizar. E o mais chato do CSS é que, se você faz uma mudança no code ou no CSS, muitas vezes isso estraga outra coisa. Então você tem que: tá, resolvi esse problema. Agora apareceu outro problema e eu tenho que resolver esse outro, e vai indo. Então fica só...
Jonathan: Então é só empurrar o problema para outro lugar. Isso deve ser tão frustrante. Acho que minha única experiência com CSS foi aprendendo, também tentando aprender React. E você tem tanta variável, como você diz, tantas opções. Tipo, você expande ou restringe? E se você faz isso, aí muda este botão. E quando você percebe, todos os seus componentes estão meio que fazendo coisas diferentes, se você não tomar cuidado. O Jeremy, do Exercism, é muito bom em CSS, mas acho que ele simplesmente conhece demais todos os diferentes aspectos disso. Então, para você, frontend não é algo de que você gosta tanto quanto o lado de backend das coisas.
Carl: Eu não tenho problema com as partes de programação do frontend, mas o visual em si eu não gosto muito. Já o backend, pelo menos para mim, é mais: se funciona, não estraga.
Jonathan: É, não toca, deixa como está. Acho interessante como as pessoas tendem a preferir... um ou outro. Você sabe o que é, no backend? Você diz que gosta do fato de simplesmente funcionar. O pensar lógico e o processamento das coisas no backend, é o aspecto de que você mais gosta?
Carl: Sim, eu gosto porque é basicamente lógica e montar diferentes estruturas de banco de dados. É basicamente isso, mesmo que eu não seja bom com banco de dados.
Jonathan: Que legal. Que demais. Então, Karl, tenho mais algumas perguntas para você. Gostei muito de entender um pouco de onde você vem e do que você gosta de fazer. Você consegue identificar algumas dicas importantes ou coisas que você recomendaria para quem está começando a aprender a programar? E você pode fazer isso pensando em quem talvez tenha uma formação mais científica, talvez algumas dicas para esse tipo de pessoa que gosta disso. Mas, se você fosse abordar de uma perspectiva completamente diferente, o que você diria que é uma... uma boa coisa para fazer de forma consistente.
Carl: De forma consistente? Quer dizer, acho que você deveria... tipo, começar com uma linguagem fácil. Não comece com Rust, C++ ou C. Mas aí, na verdade... Tipo, quando... eu sei que o Jun falou um pouco disso, mas... tipo, quando você vê um problema, leia o problema, faça uma pausa, pense em como você vai resolvê-lo e depois volte e resolva de fato, porque... é bom deixar seu cérebro processar como você vai realmente resolver o problema. Outra coisa que eu acho é... tentar não ir rápido demais. Faça um pouco agora, faça um pouco depois, porque, digamos, você está fazendo um monte de exercícios de conceito, é melhor deixar aquela informação assentar do que fazer todos os conceitos no mesmo dia, e nesse ponto você provavelmente vai ficar só confuso.
Jonathan: e como tudo se aplica. Tá, legal. Então vá com calma. Permita-se o espaço para pensar nas coisas. E você diria que ir devagar, ir mais devagar e deixar as coisas se assentarem profundamente é melhor do que rápido e, parece ser o que você está dizendo, é melhor do que passar rapidamente pela superfície?
Carl: Algumas linguagens, você talvez só precise aprender a sintaxe e... e o básico, e depois conseguir partir para cenários mais do mundo real e se aprofundar mais. No caso do JavaScript, eu aprendi o básico e depois fiz projetos com React e aí... tipo, aprendi um pouco de coisa nova e me aprofundei mais na linguagem.
Jonathan: Ah, que legal. Tá, bacana. Demais. Tá, então, Carl, tenho mais uma pergunta para você esta semana. Qual é a sua recomendação para a comunidade esta semana? Sua recomendação especial, e pode ser praticamente qualquer coisa. Pode ser, sabe, vá dar uma volta de bike na neve. Pode ser pular num lago congelante ou ir a uma sauna, se você estiver na Suécia. Qual seria a sua recomendação para a comunidade?
Carl: É, quer dizer, eu não... acho que é muito difícil pedalar na neve. Então eu não recomendo isso para as pessoas.
Jonathan: É.
Carl: Mas acho que vou dizer o que eu disse antes. Sabe, se você tem um problema em que está travado, faça uma pausa. Não fique sentado ali por mais algumas horas só tentando resolver. É melhor tirar uma pausa curtinha e depois voltar ao problema.
Jonathan: Tá, legal. Então esta semana a sua recomendação é: se você precisa aprender algo, vá mais devagar, faça uma pausa, tome um café. Você toma café?
Carl: Ainda não.
Jonathan: Ainda não. Tá. Nunca.
Carl: Na verdade, eu só bebo água. Provavelmente isso é o que tenho de especial.
Jonathan: Tá, demais. Isso vai te economizar muito dinheiro daqui para frente na vida, pode acreditar. Que demais. Tá, Carl, bom, foi um verdadeiro privilégio conversar com você hoje. Obrigado pelo seu tempo e obrigado por todas as suas contribuições para as diferentes trilhas e por participar do Exercism. A gente agradece muito. Gostei muito de te conhecer ao longo dos últimos meses, especialmente pelo servidor do Discord que a gente tinha. Acho que era o Ex-Orts, você estava no Discord do Elixir?
Carl: Ou a turma, ou os experts.
Jonathan: É, acho que com certeza te vi bastante por lá, o que foi ótimo. E sim, obrigado por contribuir. Foi ótimo. Então, até logo, espero falar com você em breve, e muito obrigado pelo seu tempo. Só fica na chamada e a gente encerra daqui. Mas obrigado a todos por ouvirem. Você esteve conversando comigo, Jonathan, e com o Carl, e espero nos falar em breve. Tchau.
Carl: Tchau.
Ouça, aprenda e se inspire com os membros da nossa comunidade.