[Ed. nota: Enquanto tiramos algum tempo para descansar durante as férias e nos preparar para o próximo ano, estamos republicando nossos dez principais posts do ano. Este é o nosso post número um de 2022! Obrigado por ler e nos vemos no ano novo. ]
Como programadores ativos, vocês precisam continuar aprendendo o tempo todo. Você verifica tutoriais, documentação, conteúdos do Strong The One, qualquer coisa que encontrar que o ajudará a escrever código e manter suas habilidades atualizadas. Mas com que frequência você se pega pesquisando trabalhos acadêmicos de ciência da computação para melhorar suas habilidades de programação?
Embora os tutoriais possam ajudá-lo a escrever código agora, são os trabalhos acadêmicos que podem ajudá-lo a entender de onde veio a programação e para onde está indo. Todos os recursos de programação, desde o ponteiro nulo (também conhecido como o erro de um bilhão de dólares) até objetos (via Smalltalk), foram construídos com base em pesquisas que remontam à década de 1960 (e anteriores). Inovações futuras serão construídas sobre a pesquisa de hoje.
Conversamos com três dos membros da equipe Papers We Love, um repositório on-line de sua bolsa de estudos de ciência da computação favorita.
Zeeshan Lakhani, diretor de engenharia da BlockFi, Darren Newton, líder da equipe de engenharia da Datadog, e Dam, engenheiro da SageSure, todos se conheceram enquanto trabalhavam em uma empresa chamada Arc90. Eles descobriram que nenhum deles tinha treinamento formal em ciência da computação, mas todos queriam aprender mais. Todos os três vieram de disciplinas de humanidades e artes: Dam é formado em inglês com especialização em história, Newton foi para a escola de arte duas vezes e Lakhani foi para a escola de cinema para graduação antes de obter um mestrado em música e engenharia de áudio. Todos esses campos de estudo dependem fortemente da leitura de textos que construíram as bases da disciplina para entender a teoria que fundamenta toda a prática.
Como todo bom estudante de humanidades, eles foram buscar respostas nos arquivos. “Eu tinha um bibliotecário latente lá dentro”, disse Newton. “Portanto, estou sempre interessado no material de origem histórica para as coisas que faço.”
Pesquisando a história
Como parte do aprendizado sobre a história da programação, Dam estava lendo Soul of a New Machine, de Tracy Kidder, sobre a corrida para projetar um microcomputador de 32 bits no final dos anos 70. Cobria tanto a cultura de engenharia da época quanto os problemas e conceitos com os quais esses engenheiros lutavam. Isso foi antes da época das CPUs de mercado de massa e dos componentes padrão da placa-mãe, então muito do que consideramos natural hoje ainda estava sendo trabalhado.
No livro de Kidder, Lakhani, Newton e Dam viram toda uma história da ciência da computação com a qual não tinham nenhuma conexão, então decidiram tentar ler um artigo fundamental: “Communicating Sequential” de Tony Hoare Processes” de 1978. Eles estavam trabalhando em Clojure e Clojurescript na época, então isso parecia relevante. Quando se sentaram para discutir o papel, perceberam que nem sabiam como abordar o entendimento. “Foi tipo, não consigo entender metade desse formalismo, mas talvez a introdução seja muito boa”, disse Lakhani. “Mas precisamos de alguém como David Nolen para nos explicar isso.”
Nolen era um conhecido que trabalhava para The New York Times. Ele deu uma palestra lá sobre Clojure e outras linguagens semelhantes a Lisp, fazendo referência a muitos dos primeiros artigos de John McCarthy. Ouvir essa explicação com o contexto acadêmico começou a girar algumas engrenagens em suas mentes. Foi aí que nasceu a ideia de Papers We Love.
Conhecer a história dos conceitos de computação que você usa todos os dias desbloqueia muito o entendimento de como eles funcionam em um nível prático. As ferramentas que você usa, de bancos de dados a linguagens de programação, são construídas com base na pesquisa acadêmica. “Entender as raízes das coisas nas quais você está trabalhando libera muito conhecimento que você não obterá apenas usando todos os dias, porque não entende os caminhos que elas não percorreram”, disse Dam.
Há uma palestra que eles adoram que Bret Victor deu em 2013 chamada “O Futuro da Programação”. Ele está vestido como um engenheiro dos anos 70, camisa branca, calça cáqui, protetor de bolso. Ele começa a dar sua palestra usando um retroprojetor que tem o nome da palestra. Ele ajusta o slide e revela que a data é 1973. Ele continua falando sobre todas as grandes coisas que surgem da pesquisa, todas as coisas que vão abalar a ciência da computação. E são todas coisas com as quais o público ainda está lidando, como a mudança da execução sequencial para modelos simultâneos.
“O tema principal é que leva muito tempo”, disse Lakhani. “Há muitas coisas que são velhas que são novas de novo, de novo e de novo.” Os mesmos problemas ainda são relevantes, seja porque os problemas são mais difíceis do que se pensava ou porque a pesquisa sobre esses problemas foi amplamente compartilhada.
O trio por trás de Papers We Love não está sozinho em descobrir o amor pela história da computação. Há um interesse crescente em retrocomputação, engenheiros olhando para os sistemas do passado para aprender mais sobre a prática da tecnologia. É o outro lado de olhar para papéis mais antigos; você olha para o hardware antigo e os programadores de software usados e trabalha nele com uma mentalidade atual. “Muitas pessoas estão girando esses antigos sistemas operacionais em Raspberry PIs e trabalhando com eles”, disse Newton. “Como girar uma VM Smalltalk antiga em um Raspberry PI ou recriar um PDP-10.”
Quando você vê esses problemas em seus contextos iniciais, como ler os artigos de pesquisa que tentaram abordar eles, você pode ter uma perspectiva melhor de onde você está agora. Isso pode levar a todos os tipos de epifanias. “Oh, os objetos fazem as coisas que fazem por causa do Smalltalk nos anos 80”, disse Dam. “E é por isso que os grandes sistemas se parecem com isso. E é por isso que Java se parece com isso.”
Essa nova compreensão pode ajudá-lo a resolver os problemas que você enfrenta agora.
O futuro da programação (hoje)
A leitura de trabalhos de pesquisa envolve mais do que entender a história; você pode encontrar novas maneiras de resolver problemas lendo pesquisas atuais. “A ideia do Strong The One é: outra pessoa já teve o seu problema antes”, disse Dan. “Os artigos acadêmicos são: alguém já pensou sobre esse problema antes.”
Se o seu trabalho envolve a construção de variações do mesmo aplicativo CRUD antigo em novos espaços, talvez os trabalhos de pesquisa não o ajudem. Mas se você está tentando resolver os problemas únicos do seu setor, algumas das pesquisas nesses espaços de problemas podem ajudá-lo a superá-los. “Eu encontro papéis para expandir a ideia do que é possível com o trabalho que você faz”, disse Dam. “Eles podem ajudá-lo a perceber que existem outras maneiras de resolver esses problemas.”
Para Newton e seus colegas da Datadog, os trabalhos acadêmicos são parte integrante de seu trabalho. Seu software de monitoramento precisa processar muitas informações em tempo real para fornecer aos engenheiros uma visão de seus aplicativos e da pilha em que são executados. “Estamos muito preocupados com algoritmos de desempenho e melhores maneiras de fazer estatísticas em grandes volumes de dados”, disse Newton. “Precisamos confiar na pesquisa acadêmica para parte disso.”
Só porque a pesquisa existe, é claro, isso não significa que seus problemas são resolvidos automaticamente. Às vezes, um único papel fornece apenas parte da solução. “Eu estava na Comcast, onde queríamos alavancar o trabalho de balanceamento de carga que fazemos em termos de roteamento”, disse Lakhani. “Acabamos aplicando três tipos diferentes de papéis que não se conheciam. Colocamos semântica nos pacotes de rede, roteamos com base em outro artigo por meio de um protocolo específico e implementamos várias especificações do IETF. Parte desse trabalho agora reside em uma biblioteca Rust que as pessoas podem administrar hoje.” É encontrar fios no trabalho acadêmico e entrelaçá-los para resolver os problemas em questão.
Sem ler esses documentos, a equipe de Lakhani não teria sido capaz de projetar uma solução tão eficaz. Talvez eles tivessem chegado lá por conta própria. Mas imagine a quantidade de trabalho para pesquisar esses três conceitos; não há necessidade de refazer o trabalho se já foi feito. É estar sobre ombros de gigantes, como diz o ditado, e se você está no topo da pesquisa em seu campo, sabe exatamente em quais gigantes se apoiar.
Um mapa dos ombros dos gigantes
Naturalmente, sendo eu mesmo um graduado em humanidades, eu queria saber quais eram os gigantes da ciência da computação, aqueles papéis que estariam no plano de estudos se você construísse um currículo no estilo de humanidades para uma classe. Pense nisso como um mapa de quais ombros gigantes você poderia se apoiar para progredir.
Acontece que não sou o primeiro a me perguntar o que há no cânone da ciência da computação. Em 1996, Phillip Laplante escreveu Great Papers in Computer Science, que pode estar um pouco desatualizado neste ponto. Para uma visão mais recente da mesma coisa, o trio recomenda Ideas That Created the Future, publicado no ano passado. Lakhani, que agora faz doutorado em ciência da computação na Carnegie Mellon University (minha alma mater), lembra que havia um curso quando ele chegou que cobria os papéis importantes da área.
De certa forma, esse cânone é exatamente o que o repositório Papers We Love pretende criar. Contém artigos e links para artigos organizados por tópico. O grupo dá as boas-vindas a novas solicitações de pull com trabalhos acadêmicos que todos vocês amam e desejam ver em destaque.
Aqui estão alguns artigos (e palestras) que eles recomendaram para qualquer um que queira começar a ler a pesquisa:
-
- Dynamo: Loja de valor-chave altamente disponível da Amazon
- Uma Teoria Unificada da Coleta de Lixo
Processos Sequenciais Comunicantes
Fora do Poço de Alcatrão
Claro, existem muitos mais.
Se você se sente intimidado por começar um artigo, confira algumas das apresentações de Papers We Love, que oferecem uma cartilha sobre como entender um artigo. Toda a ideia dessas palestras nasceu daquela primeira frustração com um papel, depois encontrando um caminho através dele com a ajuda de outra pessoa. “Eles obtiveram as CliffsNotes”, diz Lakhani. “Agora eles podem atacar o jornal e realmente entendê-lo.”
A comunidade Papers We Love continua tentando construir uma ponte entre a indústria e a academia. Todos se beneficiam – a indústria obtém acesso a novas soluções sem ter que esperar que alguém as implemente e as abra, e os acadêmicos podem ver suas ideias testadas e implementadas em situações reais.
“Um dos objetivos do Papers We Love é fazer com que você descubra as coisas um pouco mais rápido”, disse Lakhani. “Talvez isso mude as coisas.”