Uma Conversa com Jon Skeet - O Chuck Norris da Programação, no Podcast do Pato Amarelo
Você sabia que quando o código de Jon Skeet falha na compilação, o compilador pede desculpas? E o facto de que quando Jon faz uma pesquisa no Google, o único resultado é “Eu volto já”? Fonte: stackexchange
Para aqueles que não sabem, Jon Skeet é Engenheiro Sênior de Software no Google em Londres, Reino Unido. Embora algumas das afirmações mais selvagens sobre ele ainda precisem ser verificadas, o que é definitivamente verdade é que ele é o único usuário do Stack Overflow com uma reputação superior a 1.000.000.
Desde 1998, este tipo já contribuiu com mais de 34.000 respostas ao site, gerando mais de 230.000.000 de visualizações! Então o que você pergunta para o cara que já respondeu todas as perguntas imagináveis?
Descubra ouvindo a nossa conversa com Jon Skeet
Marcin Kraszewski conseguiu sentar-se com Jon e perguntar algo novo ao homem. Acontece que ele tem mais respostas para dar, incluindo algumas que você não ouviu em nenhum outro lugar.
Você já ouviu a história de como Jon entrou no seu desenvolvimento de software ao construir um jogo de computador? E quanto ao problema mais desafiador que Jon foi encarregado de resolver como engenheiro?
Nossa conversa cobre tudo isso, assim como as maiores mudanças na indústria de software na última década, o que os desenvolvedores usaram antes do Stack Overflow, quanto tempo mais Jon planeja contribuir para o Stack Overflow, uma comparação do C# e Java, e as conferências favoritas de Jon.
Esta é uma oportunidade única na vida para participar de uma exploração casual da jornada pessoal feita por um dos nomes mais famosos do software.
Podes seguir o Jon aqui:
- Twitter: @jonskeet
- StackOverFlow: https://stackoverflow.com/users/22656/jon-skeet
- Blog pessoal: https://codeblog.jonskeet.uk/
- Projectos Github: https://github.com/jskeet
Mas primeiro, ouve a nossa conversa com o Jon no Podcast do Pato Amarelo.
Abaixo você encontrará a transcrição escrita da nossa conversa.
MARCIN: Bem-vindos ao Podcast do Pato Amarelo. Tenho um convidado muito especial comigo hoje. Eu vou falar com Jon Skeet se vocês não sabem quem é Jon Skeet, ele é um dos principais colaboradores do Stack Overflow, ele pode até ser o principal colaborador do Stack Overflow, que é, se vocês não conhecem o Stack Overflow, isso é incrível. É basicamente um site onde você pode obter respostas a quase todas as perguntas não apenas relacionadas ao desenvolvimento de software e tecnologia, mas como se você soubesse que existe o Stack Exchange, que é o tipo de site pai no Stack Exchange e você pode obter respostas a perguntas sobre qualquer coisa, desde comédia de improviso até astronomia científica todas essas coisas. Então Jon é bem-vindo.
JON: Muito obrigado. É bom estar aqui.
MARCIN: Obrigado por te juntares a mim aqui no podcast do Pato Amarelo. Tenho um monte de coisas que te quero perguntar. Mas antes de mais, quero, claro, chegar à pergunta número um, que está mais ou menos na minha cabeça. Fiz um pouco de pesquisa sobre a sua actividade no StackOverflow que é mundialmente conhecida e muito extensa. E a minha pergunta é que você respondeu à sua primeira pergunta sobre o Stack Overflow em 26 de setembro de 2008, às 12:11, de acordo com as informações que consegui obter. Fale-me das circunstâncias em torno dessa primeira resposta e nós sabemos como é que você respondeu. Como é que começou a usar o Stack Overflow. Como você obteve essa resposta. Como é que conseguiu responder a essa resposta. Você sabe onde tudo começou bem.
JON: Então foi realmente um exercício de narcisismo, até certo ponto. Ouvi falar pela primeira vez do Stack Overflow no blog da Sara Chip. Ela tinha escrito uma resenha da primeira edição do C# em profundidade em 2008, o que parece muito tempo atrás e eu li sua resenha e depois li alguns de seus outros posts no blog e eles mencionaram Stack Overflow. Então eu pensei bem dar uma olhada e procurei no Stack Overflow para perguntas a serem respondidas. Então não tinha muita ideia sobre o que era realmente o site e procurei por perguntas sobre o C# em profundidade particularmente se havia alguma e havia algumas menções aqui ou ali e havia perguntas sobre o C# e pensei bem que podia responder a isso, então vou responder e mais ou menos, tudo saiu dali. Eu já tinha escrito muitos grupos de notícias tanto C# como Java Newsgroups durante a década anterior, então isto pareceu ser apenas um passo na evolução desses grupos de notícias. Eu nunca tinha gostado do software do fórum base HTML antes. Por várias razões, mas nada foi quase tão útil quanto os grupos de notícias para mim, enquanto o Stack Overflow mudou completamente aquele
MARCIN: Fantástico e estamos todos muito gratos pela sua contribuição. Penso em mais de 35.000 perguntas que respondeu, o que é uma contribuição incrível para a comunidade. Portanto, estamos todos muito gratos por isso. E eu acho que é realmente interessante que você começou como, de certa forma, como você disse, como um usuário geral você acabou de descobrir sobre o seu site e decidiu responder pergunta você pode ir mais ou menos para o próximo que o que o fez responder você sabe a segunda a terceira a quarta que as centenas de perguntas depois, quando você sentiu que isso é realmente algo que você quer fazer. Talvez um foco específico no Stack Overflow, mas em geral. Quando você sentiu este tipo de paixão para realmente saber responder a muitas destas perguntas como se você tivesse esta energia.
JONO C# é um dos mais importantes grupos de notícias do mundo, mas eu postei muito sobre os grupos de notícias Java e muito disso foi que eu gosto de ajudar as pessoas basicamente e isso não é puramente altruísta. Eu gosto de ajudar pessoas porque isso me melhora como programador, definitivamente me melhora como comunicador, o que eu sinto ser incrivelmente importante na engenharia de Software, e então há o efeito de não apenas ajudar a pessoa que fez a pergunta, mas esperançosamente ajudar pessoas mais tarde, que é para o que o Stack Overflow é realmente otimizado. E eu acho que alguns dos problemas onde as pessoas fazem perguntas ruins é que elas estão pensando apenas na sua necessidade imediata, ao invés de pensar como posso fazer uma pergunta que me ajudará, mas também ajudará as pessoas que chegarão mais tarde. E se você começar dessa perspectiva, então é isso que a comunidade Stack Overflow é meio que construída ao redor e o número de impressões que boas perguntas podem ter é enorme para que você possa ajudar toda a comunidade mundial de programadores, o que eu acho que é incrível
MARCIN: Definitivamente. Então é uma ótima idéia que foi você sabe que eu acho que foi realmente algo que precisava ser criado. Você sabe que as pessoas estavam prontas para começar a compartilhar seu conhecimento e Stack Exchange e Stack Overflow foi criado mesmo a tempo, pois você disse que havia outras maneiras de compartilhar conhecimento. Mas eu acho que esta é talvez a mais acessível para qualquer usuário que queira ter algumas perguntas respondidas. É uma forma muito eficaz e eu acho que também é bastante moderada, pelo menos, pelos seguidores locais.
Sim. Que o grau de moderação é definitivamente um ponto doloroso com muitos usuários, não apenas alguns que tentaram fazer a pergunta e fizeram mal, não deram detalhes suficientes ou deram demasiados detalhes ou. Existem inúmeras maneiras diferentes de fazer uma pergunta mal feita e eu sinto que a moderação é um dos pontos altos do site que tenta manter a qualidade do site e mantê-lo o mais útil possível, mas é definitivamente um ponto doloroso e eu acho que há trabalho a fazer em termos de comunicar os objetivos do site para que todos possam estar puxando na mesma direção. Não é que ninguém. Bem, tenho certeza de que há algumas pessoas que ou fazem perguntas ruins deliberadamente ou moderadamente desagradáveis só por diversão. Haverá sempre alguns idiotas por aí, mas eu tendo a assumir que a maioria das pessoas não são idiotas. Eles estão sendo legais, estão dando seu tempo e querem um site de alta qualidade.
E se pudermos ter certeza de que todos estão alinhados, isso nos levará a uma experiência melhor para todos. Então ainda há um pouco de trabalho a fazer em termos de comunicação e todo o tipo de coisas que podem ser muito difíceis porque se você está preso a um problema imediatamente e você não se registrou ou fez uma pergunta ou qualquer coisa sobre o Stack Overflow antes de sua primeira tentação é você ver uma parede de texto dizendo que este é o tipo de pergunta que você deve fazer e como você deve abordar as coisas e você só acha que eu não me importo de fazer minha pergunta agora mesmo, enquanto na verdade, se você levar cinco minutos, mesmo meia hora, para navegar no site, navegue pelos vários recursos de ajuda que escrevi em um blog muito longo sobre isso é o que eu procuro em uma pergunta que é para ajudar as pessoas a fazer perguntas, mas eu posso entender a frustração e por que as pessoas simplesmente ignoram tudo isso e dizem isso direito. Deixe-me fazer a minha pergunta agora. Vou assumir que sei o que estou fazendo e é muito lamentável que isso lhes dê sobre a experiência e se as pessoas não estão lendo a ajuda que lhes foi dada, então nenhuma melhoria nessa ajuda pode realmente superar o fato de que elas não estão lendo. Então, é complicado.
MARCIN: O interessante sobre o Stack Overflow parece ser que pelo menos agora sei que o Stack Overflow tem todos os dados disponíveis. Como se você pudesse simplesmente baixar todo o conjunto de dados e você acha que isso é importante.
JON: Absolutamente. Sim, e isso tem sido um objectivo desde o primeiro dia.
MARCIN: Você acha que essa é uma parte importante do fato de que o Stack Overflow continua a ser popular.
Não sei se é definitivamente uma característica. É adorável que, por exemplo, acho que todas as questões de Stack Overflow foram importadas para o Google BigQuery, o que significa que as pessoas podem fazer consultas sobre todos os tipos de dados e que há um Stack Overflow. Ferramentas de análise de dados também estão disponíveis dessa forma e por isso há todos os tipos de mineração de dados que você pode fazer em questões de Stack e vários cientistas de dados têm feito exatamente isso. Portanto, é muito legal nessa frente. Também cria uma espécie de sentimento de confiança de que o Stack Overflow não é dono das suas contribuições. Todos eles são licenciados apropriadamente, então, mesmo que o Stack Overflow se tornasse uma empresa, a informação não seria perdida, mas eu não sei bem o quão importante é, acho que varia em importância dependendo de quem você pergunta, mas a importância para a comunidade de ciência de dados. Suspeito que não sendo um membro dessa comunidade, particularmente suspeito que isso tem sido um verdadeiro tesouro.
MARCIN: Ouvi falar de alguns projetos em que eles estão tentando usar o Stack Overflow para treinar um algoritmo de aprendizagem de máquina para realmente gostar de escrever software ou pelo menos você conhece software de depuração ou isso é um uso interessante dos dados, com certeza. Agora quanto ao Stack Overflow, por exemplo, há provavelmente muitas perguntas que são realmente semelhantes e quase a mesma pergunta, mas não exatamente. Você vê alguma solução acontecendo no futuro próximo, talvez usando alguma aprendizagem de máquina ou algo para reduzir de alguma forma a quantidade de conteúdo duplicado ou próximo ao duplicado?
JON: Certo, então o Stack Overflow já tenta encontrar perguntas semelhantes e sugere-as enquanto faz a pergunta é, você sabe: “Já olhou para estas coisas. Achamos que são semelhantes.” E mesmo depois de teres feito a pergunta lá. Há uma lista no lado direito que mostra possíveis duplicatas ou perguntas relacionadas e é relativamente fácil para uma pergunta ser fechada como duplicata porque se você tem uma etiqueta dourada há um crachá dourado em uma determinada etiqueta, então você pode fechar as coisas olhando muito facilmente para o que é chamado de martelo de dupe. Então isso ajuda a fechar as perguntas muito rapidamente se elas forem duplicadas se elas podem ser ainda mais agilizadas… É difícil porque qualquer aprendizagem de máquina nunca será 100% precisa, então você não quer evitar que as pessoas façam perguntas. Mesmo que você suspeite fortemente que será uma duplicata. Você quase que precisa de um é você realmente certo. Você realmente olhou para todas essas coisas, mas eu não sei se é como se tudo isso fosse um pouco menos problemático. O aspecto duplicado do que pessoas fazendo perguntas e nem mesmo fornecendo informações suficientes ou o tipo certo de informação para ser capaz de dizer se é um duplicado ou não. E eu espero que sim. Eu sei que o Stack Overflow tem passado por algumas iterações de uma espécie de feiticeiros para fazer perguntas dizendo: “Como é que o seu código se parece com os idiomas que você está usando. Você já inventou um pequeno mas completo exemplo que demonstra o problema?”. Esse tipo de coisa. Não está claro exatamente o que vai funcionar, mas eu sei que a equipe está trabalhando duro para tentar melhorar a experiência de fazer perguntas porque, fundamentalmente, o Stack Overflow depende de haver boas perguntas sendo feitas.
MARCIN: Definitivamente e porque estou assumindo que sempre haverá perguntas que terão que ser feitas, não importa a tecnologia há quanto tempo ela esteja por perto. Qual é a principal razão. O que é que está a conduzir, mais ou menos o facto de haver sempre novas perguntas a fazer, mesmo sobre o C#, que você sabe como eu disse que você respondeu a isso e vários outros tópicos que você sabe 35.000 respostas, mas ainda há sempre mais. Acho que isto vai para a natureza da engenharia de software ou que simplesmente não se pode abstrair tudo.
JON: Bem, são várias coisas em parte é que a linguagem está mudando, então estou escrevendo atualmente sobre o C# 7.2 e tendo que aprender coisas novas para que eu possa então escrever sobre elas. Então seria inteiramente natural que as pessoas estivessem fazendo perguntas sobre o C# 7.2 ou você sabe que outras coisas que são razoavelmente novas o C# 7.0 ainda é razoavelmente novo. Portanto, à medida que as línguas evoluem e novos frameworks e bibliotecas e todo o tipo de coisas. Haverá sempre novas áreas sobre as quais as pessoas poderão fazer perguntas. E depois há pessoas a fazer perguntas sobre áreas existentes e algumas dessas perguntas serão novas e algumas não serão novas e algumas poderão estar disfarçadas de novas perguntas. Assim, por exemplo, no C# a maneira exata como as expressões lambda capturam variáveis particularmente para cada alteração de variáveis de iteração no C# 5 e que causou uma carga de perguntas antes do C# 5 quando não era ideal a maneira como funcionava. E muitas dessas questões são efetivamente duplicatas umas das outras, mas na verdade eu respondi algumas delas porque há muitas que não parecem obviamente relacionadas. É só quando você sabe a resposta que você pode ver que essas duas coisas são o mesmo problema apenas disfarçadas. Então sempre haverá coisas onde só o Respondedor sabe que na verdade você está enfrentando o mesmo problema que outra pessoa e se essas perguntas devem ser fechadas como duplicatas é provavelmente um assunto para debate. Mas sim, sempre haverá novas pessoas chegando à engenharia de Software, o que é uma coisa fantástica e algumas dessas pessoas que eu acho que estão tratando o Stack Overflow como mais um recurso de aprendizado. Eu os encorajaria a pensar que o Stack Overflow é um grande recurso de solução de problemas. Não é uma ótima maneira de aprender uma linguagem do zero, você não pode dizer que pegue um compilador Java ou mesmo um IDE e Stack Overflow e aprenda Java do zero dessa maneira. Isso não vai ser uma maneira eficiente de aprender a linguagem. Enquanto um livro ou um tutorial é uma abordagem muito mais estruturada e então o Stack Overflow é ótimo para. Bem, havia este exemplo e eu esperava que ele fizesse isso e ele fez outra coisa. E é por isso que eu acho que ele deve se comportar desta maneira e na verdade está se comportando de uma maneira diferente. Alguém poderia explicar exactamente o que se está a passar aqui. Esse tipo de perguntas são ótimas para o Stack Overflow, então é definitivamente uma espécie de complemento para outras ferramentas de aprendizagem, mas não acho que seja ótimo como ferramenta de aprendizagem inicial. Ou como a única maneira de aprender uma língua, mas sempre haverá pessoas que estão aprendendo coisas pela primeira vez. E como eu digo, se você é relativamente novo em uma língua ou tecnologia, então será muito mais difícil para você encontrar. Perguntas relacionadas porque você nem necessariamente sabe exatamente com o que sua pergunta está relacionada no momento, então não espero que o conjunto ou o fluxo de perguntas seque em breve. E isso em parte por causa das novas pessoas em parte por causa das novas tecnologias e em parte por causa das velhas mãos que estão fazendo coisas que não fizeram antes, então eu ainda poderia escrever no C# e fazer uma nova pergunta sobre o C# e eu acho que cerca de metade das minhas perguntas estão em torno do próprio C#, o que pode surpreender as pessoas. Não há nada como conhecer uma linguagem razoavelmente bem por estar ciente de coisas que dão errado ou são realmente inesperadas e então é realmente útil perguntar no Stack Overflow e dizer hey eu realmente esperava que isso acontecesse e eu tenho boas razões para esperar isso por causa de toda a minha experiência anterior, mas isso significa que aqui você acaba fazendo perguntas sobre tecnologias que você não esperaria normalmente
MARCIN: E no Stack Overflow a idéia de você saber encontrar uma resposta online é que há quanto tempo ela é uma espécie de parte integrante da engenharia de software. Porque costumava ser que você estava um pouco preso com, digamos que você tinha documentação, talvez um casal, um par de mensagens, um par de grupos de notícias. Mas parece que muitos profissionais estão a usar o Stack Overflow regularmente e muitos dos seus projectos e é provavelmente por isso que o Stack Overflow acabou por abordar isso com o seu licenciamento e dizer que tem de se mencionar essencialmente que foi a partir de ciclos em que se levou o código. Então eu acho que na sua opinião, como a engenharia de software e o Stack Overflow mudou ao longo dos anos.
JON: Então eu acho que a engenharia de software mudou em parte porque todos nós estamos usando mais tecnologias e usando tecnologias menos bem documentadas, então todos usam bibliotecas de terceiros à esquerda e ao centro hoje em dia ou a maioria das pessoas usam e as bibliotecas vêm com uma variedade de graus de documentação e, até certo ponto, o Stack Overflow quase tomou o lugar da documentação em algumas situações. E houve o projeto de documentação Stack Overflow que acabou sendo cancelado porque simplesmente não funcionou para a situação, mas certamente o Stack Overflow é parte de um conjunto de ferramentas do dia-a-dia dos engenheiros de software hoje em dia cada vez mais. E parte disso é porque o Stack Overflow reage muito rapidamente. Então eu me lembro de 2008 2009, quando o Stack Overflow ainda era muito jovem. Jeff Atwood disse que às vezes você sabe que precisa colocar uma pergunta e esperar por 20 minutos para obter uma resposta. E eu fiquei impressionado ao pensar em 20 minutos que é um tempo tão incrivelmente curto. E ele está certo que se você fizer uma boa pergunta normalmente dentro de 20 minutos, você terá uma resposta. E isso não costumava ser o caso nos grupos de notícias. Não tenho certeza se é apenas o número de pessoas lendo as coisas ou apenas a forma como o mundo se move mais rápido, mas certamente você esperaria um dia inteiro antes de obter uma resposta em um grupo de notícias, enquanto que nestes dias eu tendo a achar que levarei mais tempo para escrever uma pergunta do que leva para receber uma resposta. Portanto, raramente levo menos de meia hora para escrever uma pergunta porque estou fazendo a pesquisa e construindo um exemplo completo e perguntando o mais claro que posso e tudo isso leva tempo. Mas certamente dentro de meia hora, então se demorei meia hora para escrever a pergunta, menos de meia hora depois eu tenho pelo menos comentários dizendo Sim, isso parece estranho. Isso é novo. Não tenho certeza do que está acontecendo aqui ou uma resposta real explicando a solução para o problema. Então sim, o facto de ser tão baixa latência, torna-o muito mais viável. E isso se tiveres de fazer uma nova pergunta. 90% das vezes que me deparo com um problema em que o Stack Overflow me ajuda, não tenho que fazer a pergunta porque alguém já a fez antes. Eu acho que particularmente em áreas com as quais estou menos familiarizado, como Python ou Bash scripts ou algo parecido, vou muitas vezes fazer alguma pesquisa sobre o Stack Overflow e encontrar a resposta exatamente para a pergunta que eu queria. É ótimo.
MARCIN: Você acha que as pessoas que são como que descobriram oferecem desenvolvimento que querem aprender mais sobre isso, eles estão apenas aprendendo a primeira língua. Você acha que eles não investem tempo suficiente no tipo de aprendizagem do núcleo. Como eu disse, a documentação do núcleo e conhecer realmente a língua antes de ir para algo como o Stack Overflow?
JON: Eu acho que é difícil dizer que proporção de pessoas faz isso, mas eu definitivamente vejo algumas pessoas fazendo isso e nem mesmo conhecendo a língua e obtendo as ferramentas. Mas sinto que há uma falta de ensino dentro das escolas de universidades de diagnóstico e é por isso que tenho uma espécie de reclamação, certamente que no Reino Unido há muito mais cursos de informática em cursos de engenharia de software e por tudo isso estou muito grato por haver cursos de informática e nós definitivamente precisamos de cientistas da computação. Há provavelmente mais necessidade de engenheiros de software que não precisam realmente saber os detalhes de como um compilador funciona, mas realmente poderiam fazer com um curso sobre ele aqui está como você vai resolver um problema e investigá-lo mais a fundo. E se você não conseguir resolvê-lo, então aqui está como você perguntou sobre isso. Bem, quer isso seja perguntar aos seus colegas ou perguntar no Stack Overflow ou encontrar um bug ou o que quer que seja, é tão simples aspectos do processo de diagnóstico de não tentar morder mais do que você pode mastigar. Se você é novo em uma linguagem, então faça algumas coisas simples primeiro. Eu tendo a ir com algo como aplicativos de console por uma coisa, em vez de mergulhar imediatamente em aplicativos web e aplicativos móveis, por exemplo, o que depende inteiramente da linguagem, é claro, se você estiver usando uma linguagem que é completamente voltada para o desenvolvimento web, então talvez um console que vai ser impossível, mas onde possível usar o ambiente mais simples que você puder. O ambiente onde o debug vai ajudá-lo tanto quanto possível onde você não precisa de 100 linhas de boilerplate apenas para ter duas linhas de código rodando esse tipo de coisa é realmente útil para você se preparar para o sucesso efetivamente para que você possa aprender um aspecto de uma linguagem, um aspecto de uma biblioteca de cada vez, ao invés de se afogar em um mar de ok. Eu tenho 100 centenas de linhas de código e não entendo nada disso e estou recebendo uma mensagem de erro que eu também não entendo e não sei por onde começar. O problema é você começar em algum lugar que tem muita coisa que você não entende. Então sim, em um mundo em rápida evolução e eu sou culpado disso como qualquer outra pessoa se eu tentar aprender novas tecnologias por todo o fato de que eu digo que gostaria de começar de forma simples. Muitas vezes vou pensar Bem, eu só tenho uma coisa que preciso de fazer, por isso vou mergulhar. Então eu faço a coisa errada também, mas eu sei o suficiente que se eu ficar preso eu vou então recuar e tentar fazer algo mais simples, mas em um mundo que se move rapidamente é tentador tentar mergulhar bem porque ei eu preciso fazer algo agora mesmo, mas eu acho que é muito mais produtivo e a longo prazo se você apenas der um passo atrás e realmente tentar caminhar primeiro antes de correr.
MARCIN: Você já esteve em uma situação talvez esta tenha sido no início de uma carreira em que você começa a resolver algum problema que já foi resolvido e então você percebe mais tarde que na verdade isso é como uma solução que é algo resolvido você pode simplesmente usar uma API ou você pode usar uma biblioteca confiável.
JON: sim e às vezes parece haver uma espécie de aversão à biblioteca de terceiros. Um exemplo clássico é fazer manipulação de XML, então você verá pessoas dizendo bem que eu só preciso escapar de ampersands, então eu vou apenas usar strings e construir o XML diretamente e então eles vão achar oh não eu tenho essa outra coisa que está causando um problema e mais cedo ou mais tarde você tem centenas de linhas de código que poderiam ser completamente evitadas se você apenas usar uma biblioteca XML para começar e ela será muito mais robusta e segura em todos os tipos de coisas. Portanto, sim, as pessoas devem usar bibliotecas de terceiros. Tendo-as escolhido cuidadosamente, embora também haja um monte de bibliotecas de lixo à volta. Mas a escolha de uma boa biblioteca pode fazer toda a diferença em um projeto.
MARCIN: E você diria que isso é algo que se ganha com a experiência que é o que eu estou dizendo é que o tipo de sabedoria para poder dizer se eu realmente preciso escrever qualquer código para resolver este problema específico.
JON: Até certo ponto. É em parte uma questão de experiência e em parte uma questão de se conter porque se você vê que você poderia fazer algo e isso significa escrever algum código e você acha que seria divertido escrever código. Então há sempre a tentação de escrever esse código, mesmo que não seja necessário. E eu certamente entendo essa tentação. Mesmo quando realmente não deveria e às vezes escrevo uma ferramenta rápida em C# mesmo que não seja a linguagem mais apropriada para usá-lo porque é a linguagem que conheço melhor e por isso talvez isso me torne mais eficaz a curto prazo. Possivelmente com um custo de produtividade a longo prazo. Acho que não precisamos de nos preocupar muito com isso. Não vamos bater muito em nós mesmos por causa deste tipo de coisa, mas sim ficar de olho. Há muito a aprender dando um passo atrás de si mesmo e vendo-se trabalhar e dizendo onde estou usando muito tempo de maneiras que acabam não sendo produtivas e como posso reduzir isso um pouco com o tempo sem tentar pensar oh isso deve significar que sou um desenvolvedor horrível e devo desistir completamente da engenharia de Software. Tente melhorar a si mesmo com o tempo o tempo todo.
MARCIN: Óptimo. Óptimo. Agora eu acho que o que eu quero tentar fazer é tentar um pouco de história como se você pudesse nos dizer que todo mundo tem uma história de quando eles começaram a programar. Então, qual é a sua história de quando é que realmente entrou nela? Quando você se interessou por algo como engenharia de software, programação ou codificação, ou o que quer que você queira chamar de “programação” naquela época?
JON: Então, era muito cedo. Compramos o espectro 48 K Sinclair’s da Aztec na Spectrum quando eu era, acho que era 1984, então eu tinha oito anos de idade. O espectro saiu dois anos antes em 1982 e, inicialmente, só jogava jogos e depois comecei rapidamente a fazer uma codificação muito simples. Então o espectro veio com o intérprete BASIC incorporado. Então quando você inicia o computador você pode começar imediatamente a digitar o código e o manual do espectro que veio com ele era muito bom para ensinar a programação básica, pelo menos. E lembro-me de um dia quando o meu pai estava em casa porque estava doente por alguma razão e lembro-me de ter escrito um jogo de tiro tolo que consistia apenas numa nave espacial que provavelmente era feita de vocês sabem que apenas alguns caracteres ASCII e um alienígena apareciam num ponto aleatório e vocês moviam a vossa nave espacial para cima e para baixo e depois pressionavam para enfrentar o fogo ou o que quer que fosse que fosse tão trivial e não era nada divertido de jogar. Mas esta era a primeira vez que eu escrevia algo que fosse interativo e era incrível a sensação que me dava de ser espantoso. Acho que em parte porque todos os jogos eram bastante rudes na altura eu gostava de Jetpack e Lunar Jet Man, etc. Mas estes eram jogos bastante simples, então o facto de eu estar a escrever algo simples, não me deixou de fora. Eu meio que sinto um pouco de pena das crianças de hoje em dia que se elas estão seguindo meu conselho e fazendo algo muito simples para começar, vão acabar com um pequeno jogo de texto que talvez te peça para adivinhar um número aleatório e dirá se você está ficando muito alto ou muito baixo, etc. Bem, se você comparar isso com o Overwatch ou qualquer outro jogo, é que você tem jogado por diversão. É bastante difícil ver como eles se conectam porque há um milhão de anos-luz de uma simples coisa de texto a gráficos 3D passando por isso a grande velocidade com redes e todo o tipo de coisas. Mas nessa altura era fantástico. Então eu escrevia o meu próprio código dessa maneira. Havia também revistas que vinham com listagens para você digitar. Então você compra um livro e ao invés de ter uma fita na frente com um código que você podia simplesmente carregar, você digitava tudo e os benefícios disso são que você se sentia imensamente entediado, mas você estava aprendendo o tempo todo. Bem, é assim que você pode escrever código sem que ele seja enfatizado particularmente. Então eu acho que ganhei muito com isso e me lembro que um dos meus primeiros projetos significativos foi escrever um intérprete do Logo, então nós nos dirigimos aos Micro computadores da BBC na escola. Tínhamos um intérprete Logo que era onde havia uma espécie de robô falso e você pode dizer para a frente cem vezes à direita 90 graus etc. e ele desenhava folhas na tela. Eu adoro isso, mas não tínhamos no espectro, então eu implementei o meu próprio porque não sabia que isso era uma coisa difícil que levaria muito tempo e levou, mas foi incrivelmente satisfatório e acho que é uma prova da qualidade do manual do espectro que efetivamente aprendi trigonometria com o manual do espectro porque ainda não fizemos isso em matemática, eu ainda só não sabia que tinha 10, 11 ou 12 anos. Então eu não olhei para a trigonometria de Trigon na escola, mas o manual do espectro era suficientemente claro para que eu pudesse aprender o suficiente para fazer um intérprete de logo com isso. E, olhando para trás, eu adoraria ver o código agora. Suspeito que seja absolutamente sujo. E, claro, está perdido na névoa do tempo. Mas ainda estou imensamente orgulhoso em retrospectiva de como esse código era horrível. Podias escrever a tua lista de logótipos. Podias guardá-lo para gravar, podias voltar a carregá-lo, podias executá-lo. Eu era extremamente fixe.
MARCIN: E à medida que você progredia nessa habilidade, você sempre pensou que iria trabalhar como engenheiro de software ou estava interessado em outras coisas e depois, de alguma forma, foi dirigido ou sabe qual era o processo de você realmente entrar no campo?
JON: Acho que a partir dos 13 ou 14 anos de idade, acho que esta seria a minha carreira. Por isso, sim. Eu não fiz ciências da computação na universidade, fiz um curso de matemática e pensei que talvez eu acabasse fazendo pesquisa em matemática. Acontece que não sou suficientemente bom em matemática para fazer doutoramento ou o que quer que seja. Mas eu sabia que seria algo envolvendo computação. Então eu estava interessada na vida artificial nos meus tempos de escola, então eu fiz um curso de matemática e depois um mestrado em ciências da computação equivalente por um ano e durante as férias eu acabei trabalhando com um amigo na Digital Electronics e fui de lá basicamente. Sempre fui horrível a dirigir a minha carreira, eu simplesmente deixei passar de um lugar para outro à medida que me divertia, por isso sempre considerei a diversão muito mais importante para mim do que o dinheiro, certamente o reconhecimento que recebo do Stack Overflow e da escrita é muito agradável. Nunca foi um objectivo deliberado na vida, por assim dizer, tornar-se famoso ou o que quer que seja. Mas o tipo de status bizarro de microcelebridade que recebo via Stack Overflow é bastante divertido e um pouco estranho, mas fazer coisas divertidas no seu trabalho é sempre muito mais importante para mim, por isso garanto que tenho uma boa qualidade de equilíbrio na vida profissional e posso ver muito a minha família. A minha família é incrivelmente importante para mim, mas eu não tenho prestado tanta atenção à minha carreira como provavelmente as pessoas mais deliberadas poderiam fazer.
MARCIN: Como podem os pais desenvolver o interesse de uma criança pela programação?
JON: Então eu tenho três filhos, um dos quais está interessado nas coisas do Arduino e faz parte da codificação e também gosta de Python. Outro que começou em Python mais recentemente mas antes estava fazendo scratch o que é interessante, é um ambiente mais visual e eu não sei muito sobre a ciência ou ensinar crianças a programar. Eu tentei ensinar meus filhos a programar em Python tentando uma abordagem muito passo a passo e eu acho que é ótimo para adultos, mas não tenho certeza se ele mantém o interesse das crianças o suficiente. Pelo menos não o passo-a-passo para o qual fui treinada. Ou isso ou não sou um professor muito bom, o que é totalmente plausível, mas acho que o mais importante é ter certeza de que é algo que eles querem fazer. Então foi só quando eu parei de tentar ensinar meus filhos a programar que eles começaram a fazer isso por eles mesmos e a aprender muito mais. O meu filho mais velho fez um monte de coisas, Arduinos e Raspberry Pi. Tenho a certeza de coisas que nunca vi, porque ele só de vez em quando diz que eu podia ter estas partes, por favor. E depois vai e constrói coisas aleatórias e foi assim que eu aprendi também. Os meus pais nunca estavam a olhar por mim, tanto quanto sei, em termos do que estava a programar. Eles estavam felizes por eu estar feliz e me encorajavam a sair para o mundo exterior. De vez em quando, mas eles estavam felizes por eu estar fazendo algo criativo e aprendendo de mim mesmo. Então, se você pode encorajar as crianças o suficiente para encontrar algo que elas vão gostar de fazer por si mesmas e depois deixar claro que você está feliz em ajudá-las sempre que elas querem ajuda, mas você não vai forçá-las a fazer. Neste momento é hora de meia hora de programação. Então eu acho que essa é a receita para o sucesso. Os miúdos adoram aprender. Podem não gostar da escola, mas adoram aprender e adoram fazer coisas que são criativas. Então deixa-os libertar essa criatividade como eles acharem melhor e eles vão surpreender-te com o que eles podem fazer.
MARCIN: Você acha que a idéia que todos deveriam aprender a codificar, especialmente você sabe que eles estão tentando introduzir, teve mais nos currículos. Isso é uma boa ideia ou é forçar desnecessariamente as pessoas a aprender algo que elas realmente não querem.
JON: Eu acho que há dois aspectos um: é bom expor todos à codificação porque temos este estereótipo pouco saudável do que um programador de computador parece que está realmente a prejudicar a nossa indústria. Portanto, se pudermos expor as pessoas e dizer corretamente que isto é o que a codificação realmente é e se pudermos dar às pessoas uma experiência positiva disso, então as pessoas que talvez nunca tenham dito naturalmente que você sabe que isso é algo que eu vou assumir por mim mesmo podem descobrir. Na verdade, eles adoram isso. Por isso, acho que isso é muito benéfico. E o outro aspecto é que o software corre tanto do mundo agora que acho que ter alguma ideia do que está envolvido, mesmo ao nível mais crú, é muito benéfico. Da mesma forma que eu acho que as pessoas deveriam ter lições de planejamento financeiro, apenas o básico disto é o que são as pensões e isto é o que são os empréstimos e aqui está como funciona o mercado de ações. Eu não sou para que eles possam continuar a ser banqueiros, mas para que eles possam manobrar num mundo que é tão movido financeiramente apenas tendo alguma ideia de que sim, o mesmo é verdade para a política e todo o tipo de coisas o tipo de partes da realidade que vão afectar o seu mundo. É bom ter alguma compreensão básica. Eu não estou dizendo que sei muito sobre política ou muito sobre finanças, mas estou muito feliz pelo que sei porque ajuda a moldar a forma como vejo o resto do mundo. Portanto, acho que o software tem um papel definido a desempenhar, pois hoje em dia não há crianças com formação de classe média nos países desenvolvidos e existem outras conversas que podemos ter sobre áreas onde as crianças não entrarão em contato com computadores por causa da pobreza, etc. Mas muitas crianças vão ter alguma interação com computadores. Portanto, se elas as vêem também, isso é apenas correr código, é correr código muito complicado, mas eu tenho alguma ideia de como é o código. E a idéia de saber o que é a nuvem na medida em que seus computadores estão rodando em algum outro lugar em um data center que é gerenciado pelo Google ou Amazon ou Microsoft ou o que quer que seja e ter o básico disso pode apenas ajudar você a fazer o que quer que seja que você não precisa estar fazendo codificação para se beneficiar de ter as idéias básicas de como os computadores funcionam.
MARCIN: E agora com você sabe algo como o cromo, por exemplo, com o seu tipo de barra de ferramentas para desenvolvedores. Você pode pegar qualquer pessoa que esteja usando a Internet e dizer se você percebeu que tudo isso está acontecendo enquanto você está usando este site, você sabe de toda essa atividade e eles podem nem mesmo entender isso direito. Mas isso revela o que está realmente por trás da cortina. E eu acho que às vezes é uma ótima maneira de mostrar a alguém que não tem interesse vamos dizer sobre o assunto e você diz OK. Deixe-me só mostrar-lhe, deixe-me só mostrar-lhe o que está realmente a acontecer neste site enquanto o está a usar. Eu acho que é incrível que nós podemos até abrir o console e começar a invadir um javascript sem ter que fazer nada.
JON: Absolutamente sim e aplicá-lo um ao outro. Existem muitas outras formas de fazer códigos básicos apenas para um browser incluindo no C# agora há o Tray.net que permite que você comece a escrever cada um deles apenas no seu browser e com certeza nos bastidores há um container de nuvens rodando em algum lugar. Mas você pode definitivamente começar a ver o código em uma infinidade de idiomas apenas a partir do seu navegador. E acho que há algo a ser dito para a ciência da computação ter também essa exposição. Por isso, certamente já dei palestras para os Leõezinhos e guias e até para a guilda que é a minha igreja metodista local, que é formada principalmente por pessoas aposentadas ou próximas da idade da aposentadoria, que nunca teriam feito ciência da computação na maioria deles, e dei uma palestra que lhes mostrou alguma ciência da computação sem que nenhum computador estivesse envolvido. Então coisas como você tem uma pilha de pedaços de papel como você pode classificar esses e ouvir alguns algoritmos diferentes que você pode usar. E o que isso significa se você soubesse que se você tivesse uma pessoa tentando classificá-los, então você poderia usar um algoritmo. Se você tiver 10 pessoas diferentes, a sua maneira de escolher ainda é escalada para ter muitas pessoas diferentes ajudando. Então você acaba com uma espécie de tipo de fusão ou o que quer que seja e coisas como complexidade algorítmica dando exemplos da vida real de quanto tempo leva para fazer coisas diferentes. Se você tem mais sugestões para pendurar camisas em uma linha de lavagem ou o que quer que seja, acho que as pessoas podem achar esse tipo de coisa interessante se não ficarem assustadas com isso. Mas assim que você começar a dizer computação, muitas pessoas vão se desligar imediatamente. Portanto, há muito a dizer para tornar as coisas disponíveis de uma forma não ameaçadora e não paternalista e isso requer uma habilidade significativa em áreas que eu não tenho nenhuma. Mas eu já fiz o que pude, mas tenho certeza que melhores educadores seriam capazes de fazer significativamente melhor. Eu acho que é muito importante.
MARCIN: Vamos continuar por aqui. O que você diria que é você além de Stack Overflow. Há algum tipo de recursos que você realmente gosta. Eu sou fã de livros como o O’Reilly, mas do que é que você é fã em relação aos recursos que usa quando quer aprender alguma língua nova ou algo assim.
JONOs livros são óptimos para aprender línguas porque o levam numa determinada ordem e hoje em dia, claro, isso também se aplica aos tutoriais online, desde que tenham sido escritos apropriadamente e é preciso muito esforço da minha experiência para escrever recursos que lhe ensinem todas as características de uma língua numa ordem específica que o vai ajudar a aprender. E assim alguém poderia escrever um tutorial do C# que na verdade não é muito bom de todo porque acabou de dar uma cagada no cérebro. Então você precisa escolher e escolher, mas algo que esteja estruturado para você faz uma grande diferença. Boa documentação API é sempre muito bem-vinda. Então .NET tende a ser bastante bem documentado e o novo navegador da API facilita a localização da documentação, etc… Eu encorajaria as pessoas se elas estivessem escrevendo bibliotecas a realmente se esforçar para escrever uma boa documentação para ir junto com essas bibliotecas. Não adianta ter o JSON Serializer mais rápido do mundo. Se ninguém consegue descobrir como usá-lo. Mas ou eu uso os mesmos recursos que outras pessoas também, quer sejam tutoriais e livros, ou apenas procuro os resultados certos quando sou treinado, pois escrevo bem, como posso fazer o que quer que seja. Colocar algo em um PDF ou qualquer tarefa que eu tenha que entregar. Sim, eu procuro na internet, uso o Stack Overflow, uso livros, uso tutoriais, uso bibliotecas e sua documentação. Sim, é basicamente isso que eu acho.
MARCIN: E o que dizes sobre esta ideia que é porque na verdade somos grupos etários quase semelhantes. A ideia de que, numa certa idade, as pessoas se tornam gestores. Você já viu isso acontecer? Isso é verdade ou você é como se fosse único a esse respeito que ainda está desenvolvendo software ou é você. Eu acho que o que você diria a isso.
JON: Eu certamente não sou único. Eu diria que disse ativamente que não consegui realmente administrar minha carreira. O facto de eu estar a optimizar por me divertir resisti activamente à gestão durante bastante tempo. Fui gerente durante seis meses e descobri que há muito a ser dito sobre isso. Particularmente eu gostaria de pensar que sou empático e tento conscientemente ser empático, pois acho que essa é uma habilidade importante para um engenheiro de software ter. Mas também está obviamente relacionado com a gestão e por isso pensei que seria interessante tentar gerir e tentei e foi então apropriado para mim voltar a ter um papel de contribuinte mais individual. Há muito que você pode fazer em termos de liderança como engenheiro de software sem gerenciar. E isso não precisa de estar sempre a escrever código, por isso provavelmente escrevo mais código do que a maioria das pessoas num nível equivalente de antiguidade porque optei por fazer isso e resisti activamente a coisas que podem ter um impacto mais amplo, mas sem ser tão divertido para mim dizemos que muitas vezes podemos passar muito tempo a escrever documentos de design e sim, eu ainda escrevo documentos com uma frequência razoavelmente informal, normalmente não sou um grande fã de escrever documentos enormes com todo o tipo de pedaços e peças que não vão ser relevantes para ninguém. Eu prefiro de longe ir para as tachas de latão, de forma agradável e rápida. Mas escrever documentos para contribuir com várias equipes dizendo Ok, eu acho que todos nós temos esse problema. Vamos ver se podemos chegar juntos a uma solução que tenha um impacto mais amplo do que apenas eu escrever código para resolver esse problema sozinho. Acho que uma das coisas que você provavelmente deveria almejar, à medida que você cresce mais experiente, é ver onde essa experiência pode ajudar outras pessoas. Mas até certo ponto isso ainda estará codificando, até certo ponto estará compartilhando seu conhecimento com grupos de usuários e conferências e coisas. E ao resolver problemas internos de uma empresa que você pode ver mais claramente do que outras pessoas que talvez sejam menos experientes talvez tenham acabado de se juntar a uma equipe ou seja lá o que for. Mas em termos de se as pessoas devem ou não tornar-se gerentes, eu pessoalmente pensaria que seria inteiramente bom para alguém vir e começar a gerenciar imediatamente sem ter necessariamente feito o trabalho por conta própria. Se isso é algo em que eles vão ser bons por empatia e aprendizagem, você pode aprender o que um trabalho envolve sem fazer isso, desde que você esteja ciente de que você não o fez para não ter essa experiência direta. Portanto, não acho que deva haver uma correlação directa entre a idade e a proporção de trabalhadores que são gestores. Eu certamente espero ainda estar escrevendo código bem para a aposentadoria e provavelmente não fazendo quantidades significativas de gerência. Se eu acabar por ter de ser gerente em algum momento, vou fazê-lo o melhor que puder, mas não acho que normalmente deva ser um requisito e acho que muitas empresas fazem a coisa errada ao promover pessoas para a gerência que, na verdade, seriam muito mais felizes em muito mais produtivos como codificadores.
MARCIN: Quanto à ideia de que sim, provavelmente é algum tipo de ideia errada que você sabe que depois de 15 anos escrevendo software você vai se tornar um gerente e isso é o que todo mundo faz. Eu só sei que há alguma pressão pelo menos no Vale do Silício, na Califórnia, onde as pessoas estão realmente preocupadas por terem uns 29 anos, por exemplo, e serem muito velhas e agora para serem contratadas por algumas empresas que são meio obcecadas em contratar apenas pessoas que têm 22, 23, ou 24 anos.
JON: Bem, eu não gostaria de ser contratado por uma empresa obcecada em contratar jovens de 22 anos. Eu preferiria de longe trabalhar para uma empresa que valoriza as pessoas pelo que elas são e pelo que elas podem alcançar juntas. Então você não apenas suas habilidades atuais, mas seu potencial. Por isso, eu mesmo não vivenciei esse tipo de agismo. Desculpe-me, mas eu estou ciente de que é uma preocupação. Eu certamente diria que não experimentei nenhuma degradação que eu esteja ciente em termos de minhas habilidades de codificação. Ainda estou a codificar de forma tão feliz e produtiva como sempre. Até onde eu sei. Por isso, espero que as empresas tomem nota desse tipo de coisas e contratem pessoas que possam fazer o trabalho.
MARCIN: Você acha que há alguma coisa boa. Por exemplo, nós falamos se falamos de todas as outras profissões. Tende-se a considerar que se alguém faz física há 30 anos, então você sabe que não há ninguém que diga oh você não sabe mais o que você está fazendo. É algo que a engenharia de software está tão ligada à tecnologia e ao desenvolvimento de tecnologia tão rapidamente que as pessoas simplesmente assumem que você sabe que se você tem feito isso por muitos anos então você está meio fora de contato ou há algo que diferencia a engenharia de software de todas as outras disciplinas que fazem as pessoas terem essa idéia de que você conhece alguém é você conhece uma certa idade e elas têm certas idéias sobre essa pessoa.
JON: Pode ser de onde vem a impressão, mas eu diria que é provavelmente imprecisa. Você precisa mesmo estar disposto a aprender coisas novas. Pelo menos se quiseres estar, se quiseres ser capaz de continuar em áreas novas e excitantes. Se você tem feito COBOL por 30 anos e decidiu não aprender mais nada além de COBOL então tenho certeza que você ainda pode ser produtivo e isso é bom. Mas você não deve esperar conseguir um emprego em JavaScript ou algo assim sem ter mostrado qualquer interesse em continuar a aprender. Por outro lado, eu realmente só conheço C# e Java a um nível profissional porque descobri que há coisas novas suficientes para aprender no C# não tenho tempo suficiente para aprender F# e D e Rust and Go e todo o tipo de coisas que outras pessoas vão mais longe e menos profundas. Mas cabe aos indivíduos o quanto eles querem assumir e você precisa estar ciente de que se você decidir não aprender se você decidir parar de aprender então você se tornará menos valioso com o tempo. Mas para ser honesto, suspeito que existem sistemas legados suficientes que, para a maioria das línguas, você ainda pode ser razoavelmente valioso, mesmo que você decida parar de aprender. Francamente, não consigo ver porque você quer parar de aprender, pois é sempre interessante fazer coisas novas. Mas leva bastante tempo e acho que as empresas deveriam estar dispostas a investir esse tempo em seus engenheiros para que eles não sintam que precisam estar aprendendo coisas no tempo que, de outra forma, é gasto com a família, por exemplo. Portanto, há uma quantidade razoável de desenvolvimento ativo que deve continuar como parte do seu trabalho. Parte de ser um bom engenheiro Sopher na sua vida profissional é aprender coisas novas. Para a maioria dos desenvolvedores, como eu digo, há mais algumas áreas legadas onde isso não é tão relevante, embora eu diria que mesmo os desenvolvedores Cobol que continuam aprendendo coisas novas provavelmente serão capazes de ver como eles podem aplicar suas habilidades Cobol em outros ambientes aqui. Talvez haja containers que estão rodando COBOL hoje em dia e de repente você tem sistemas de containers baseados em nuvem que podem estar rodando COBOL e de repente você pode mover todas as suas máquinas locais para fora do local. Portanto, há espaço para todos os tipos de pessoas que querem sempre aprender a nova como uma nova língua. Pessoas que querem aplicar todas as habilidades tecnológicas a novos ambientes e pessoas que não vêem muito valor na aprendizagem de coisas novas. Sim, posso dizer que não tenho empatia com isso particularmente, mas a engenharia de software é um campo tão vasto que tenho a certeza que há vidas produtivas úteis que podem ser gastas a fazer. Aplicando todas as suas habilidades existentes a novos desafios o tempo todo. Eu poderia usar o C# 7 para o resto da minha vida e ainda estar fazendo coisas novas, mesmo que eu não aprenda nenhuma nova área de linguagem real. Não é o que eu quero fazer, mas tenho certeza para outras pessoas. Talvez seja mais o caminho que eles querem percorrer.
MARCIN: E é tudo isso porque a maioria das línguas são Turing completo e assim você pode fazer qualquer coisa com qualquer língua que você conhece. Quer dizer, é muito geral.
JON: provavelmente não tenho bem a certeza. Penso que as linguagens evoluem certamente o C# tem vindo a evoluir muito definitivamente para os casos de utilização a que está a ser colocado, pelo que algumas das funcionalidades que estão a ser adicionadas agora não fariam tanto sentido há 10 anos atrás, antes da computação em nuvem se ter tornado muito difundida e estamos a ver outras áreas como os jogos que o C# está a dominar de uma forma quase inesperada com plataformas como a Unidade. Portanto, há funcionalidades de linguagem que estão um pouco sintonizadas com jogos e computação de baixa latência de alto desempenho e eu acho isso ótimo. Mas sim, você poderia fazer coisas em outros idiomas ou em versões anteriores de idiomas, mas é muito mais produtivo e interessante usar novas funcionalidades porque elas foram projetadas para atender particularmente às suas preocupações.
MARCIN: Qual é a sua IDE favorita?
JON: Estúdio visual
MARCIN: Você usa uma certa metodologia?
JON: Faça o código. Eu não uso Kanban ou não gostaria de dizer nenhuma metodologia específica como essa. Eu não acredito em testes não necessariamente de desenvolvimento orientado por testes, mas pelo menos teste junto com o desenvolvimento às vezes orientado por testes depende da situação. Sinto-me desconfortável por ter um monte de código de produção que não é testado. Então esse é um aspecto do desenvolvimento Agile, mas não é que eu pessoalmente não acabe usando todo o Agile. Eu não faço muita programação em pares. Eu fiz no passado e achei isso muito útil. Eu já fiz programação sem par no passado e achei absolutamente bom. Eu o considero importante ter um bom relacionamento com seus colegas, então a revisão de código é muito importante para mim e essa revisão de código é honesta e franca. Mas isso não está ligado a nenhuma metodologia em particular.
MARCIN: Que conselho você daria a alguém que está naquela área onde está aprendendo uma língua há três meses, digamos, três a seis meses. E eles apenas sentem que não são suficientemente inteligentes para o fazer para aprender bem. Como se houvesse demasiados erros para corrigir. E você sabe que tipo de conselho você tem para aquela pessoa que tem um tipo de interesse nisso, mas eles sentem como se não conseguissem superar aquela corcunda.
JON: Então se você ainda está interessado e acha que poderia aproveitar se pudesse fazê-lo melhor do que procurar por pessoas. Então, se isso é ler blogs ou encontrar um grupo de usuários encontra pessoas com quem você pode interagir e obter uma aula particular, se possível, porque pode ser bastante solitário tentando encontrar respostas puramente por trás de uma tela. Enquanto que se você apresentar se você se envolver com alguém um-a-um eles podem ver ok aqui está o seu problema de modelo mental onde você está imaginando algo de forma errada e isso pode ser muito difícil de obter apenas a partir de pequenos pedaços e pedaços individuais. Se você não está gostando, então encontre outra língua, porque há muitas línguas por aí.
MARCIN: Que linguagem de programação é superior, Java ou C#?
JON: Pessoalmente eu diria C# Absolutamente. Agora eu não olhei para os detalhes das funcionalidades do Java 9 e só sei que as funcionalidades de taxa de trabalho são do tipo ish, mas parece-me que o C# tomou alguns dos erros que o Java tinha cometido e cometeu alguns dos erros em si, reconhecidamente. Mas geralmente, o C# parece ter se desenvolvido mais rápido e muito bem a equipe do C# é fantasticamente inteligente e muito cuidadosa sobre como eles estão desenvolvendo a linguagem. Portanto, estamos no C# 7.2 e parece que foi numa direcção muito boa e está a ser gerido muito bem, muito bem especificado. Dito isto, você sabe que Java está melhor do que nunca e eu não acho que não há o suficiente nele que se você está trabalhando em uma base de código Java você deve jogar tudo fora e começar a fazer o C# em vez disso. Mas se eu tiver minha opção em qualquer momento eu definitivamente escolheria o C# em qualquer dia.
MARCIN: Fantástico! Jon Skeet, obrigado por ser um convidado no podcast do Pato Amarelo. Se você tem algum link que queira me enviar, e conferências que você vai fazer, por favor me envie todas as informações.
JON: Obrigado.
MARCIN: Sim, obrigado, adeus!
Autor: Marcin Kraszewski