Thomas Dohmke explica como a IA está mudando a forma como programamos, trabalhamos e aprendemos – e até mesmo o futuro da própria inovação.
Nos últimos quinze anos, o GitHub se tornou uma parte indispensável do mundo da programação. A plataforma, lançada em 2007, é agora utilizada por mais de 100 milhões de desenvolvedores para colaborar, rastrear mudanças e armazenar seu código.
Adquirido pela Microsoft em 2018 por US$ 7,5 bilhões, o GitHub agora está desenvolvendo uma reputação por algo diferente: mudar radicalmente a forma como a programação funciona. O catalisador disso é o Copilot, uma ferramenta de IA que gera código tão facilmente quanto o ChatGPT da OpenAI produz sonetos. (Na verdade, o Copilot é alimentado pelo Codex da OpenAI, um grande modelo de linguagem treinado em código extraído da Internet.)
Abaixo o que temos é uma entrevista com Thomas Dohmke que foi feita pela Freethink e traduzida por nós. Ela está disponível originalmente aqui no idioma Inglês.
Entrevista com THOMAS DOHMKE
Ao pressionar a tecla tab, um desenvolvedor usando o Copilot pode completar uma linha, gerar blocos de código ou até mesmo escrever programas inteiros. De acordo com o GitHub, mais de 10.000 organizações, desde a Coca-Cola até o Airbnb, se inscreveram na versão empresarial do Copilot, e mais de 30.000 funcionários da própria Microsoft agora codificam regularmente com a ajuda do Copilot.
“As habilidades do desenvolvedor serão descobrir ‘o quão pequeno eu preciso ir até que possa aproveitar a IA para sintetizar esse código para mim?'”
THOMAS DOHMKE
Recentemente, a Freethink conversou com Thomas Dohmke, CEO do GitHub, para saber mais sobre como o Copilot promete reformular a programação como profissão e as questões que o desenvolvimento impulsionado por IA levanta sobre o futuro da inovação em si. Também discutimos por que programar com o Copilot é tão divertido, como a IA mudará a forma como aprendemos e se o Copilot pode corrigir bancos que ainda executam COBOL em mainframes.
Esta entrevista foi editada para maior concisão e clareza.
Freethink: Quais mudanças você vê chegando no campo da programação? O desenvolvimento de software continuará sendo o domínio de especialistas? Ou você acredita que o desenvolvimento sem código impulsionado por IA se tornará mais difundido, a ponto de tornar o que significa ser um engenheiro de software diferente?
Thomas Dohmke: Acredito que a capacidade de pensar em sistemas – entender a complexidade do software e ser capaz de enfrentar um problema grande, um desafio grande, um novo recurso grande e decompor em problemas menores – terá um papel cada vez maior.
Passamos de cartões perfurados para centenas, milhares, milhões e provavelmente agora trilhões – se não for o que vem depois de trilhões – de linhas de código. Como desenvolvedores, precisamos ser capazes de gerenciar esses sistemas complexos que resolvem problemas grandes e complexos. E você precisa ser capaz de dividi-los em pequenos blocos de construção.
As habilidades do desenvolvedor serão descobrir “o quão pequeno eu preciso ir até que eu possa aproveitar a IA para sintetizar esse código para mim?” Pelo menos para um futuro próximo, ainda teremos que revisar todo esse código-fonte – entender o que ele faz e fazer revisões de segurança, revisões de conformidade, verificar se há uma injeção de prompt, em que alguém tenta injetar código prejudicial na base de código.
O desenvolvedor ainda será o especialista, entendendo o código e verificando se o que foi sintetizado pela IA realmente corresponde à intenção do desenvolvedor. Isso provavelmente vai mudar ao longo da próxima década – o quanto estamos escrevendo nós mesmos e o quanto é apenas sintetizado. Mas não acredito que estejamos perto de um cenário em que tudo será desenvolvimento sem código.
“The number of distractions doesn’t go down, but you can leverage the creative time better.”
THOMAS DOHMKE
Freethink: O que você observa em relação à forma como o trabalho diário dos programadores está mudando graças ao Copilot?
Dohmke: Na verdade, os desenvolvedores não passam a maior parte do tempo codificando nos dias de hoje – entre duas e quatro horas por dia é o tempo em que um desenvolvedor escreve código. O resto do dia eles fazem outras coisas, como reuniões, análise de relatórios de falhas. (Ou talvez alguém nas avaliações da App Store esteja dizendo que a versão mais recente está com problemas, e você nem consegue reproduzir o bug.)
Com o Copilot, se você só tem duas a quatro horas por dia para codificar, você pode aproveitar melhor esse tempo. Você pode usá-lo para se manter focado, fazer o trabalho e aproveitar o processo.
O número de distrações não diminui – seja o Slack, o Twitter, o celular e as mensagens do WhatsApp. Eles não desaparecem, mas você pode aproveitar melhor o tempo criativo e se concentrar no problema, porque se você não está constantemente alternando do editor para outra coisa, você também tem menos gatilhos para se distrair. Portanto, observamos que as pessoas estão mantendo mais o foco.
“O Copilot traz de volta a diversão, traz de volta a criatividade. Ele traz de volta o fluxo.”
THOMAS DOHMKE
Freethink: Como seu próprio processo de escrever software mudou? Eu não sei quanto tempo você consegue dedicar à codificação nos dias de hoje, mas estou realmente curioso sobre como seu próprio processo de codificação evoluiu graças ao Copilot.
Dohmke: Para mim, são principalmente projetos de hobby. Mas a primeira coisa que me vem à mente: o Copilot traz de volta a diversão. Muitas vezes, há muitas distrações e muitas outras coisas que você poderia fazer. O final de semana – nosso tempo longe do trabalho – é, de certa forma, uma competição pela capacidade de concentração: você quer sair para caminhar? Ou quer montar alguns conjuntos de Lego? Ou quer codificar?
Quando eu encontro uma hora para escrever software, o Copilot traz de volta a diversão, traz de volta a criatividade. Ele traz de volta o fluxo, porque você não precisa alternar constantemente entre o editor, o navegador e os mecanismos de busca, e coisas como o Stack Overflow ou o próprio GitHub, para encontrar aquelas três linhas de código que você precisa – sei lá, para fazer um canto arredondado no aplicativo do seu iPhone que você está construindo.
E assim, acredito que ele traz de volta essa sensação de “estou construindo minha grande ideia luminosa” que eu tive no momento, naquela hora ou duas que tenho em uma manhã de domingo antes que outras coisas se tornem prioritárias.
“As startups entendem que até mesmo um aumento de produtividade de 20-25% pode decidir sua sobrevivência.”
THOMAS DOHMKE
Freethink: Como você acha que sua própria experiência como fundador teria sido diferente se você tivesse tido acesso a uma ferramenta como o Copilot quando estava criando sua primeira startup?
Dohmke: Acredito que teria tornado minha vida muito mais fácil. Como fundador de uma pequena startup, você pode se mover rapidamente, pois essa é a única maneira de sobreviver. Então, ter uma ferramenta disponível que mantém você no fluxo, uma ferramenta que permite chegar a um protótipo, chegar a uma prévia e, finalmente, ao encaixe do produto no mercado, é incrivelmente empoderador.
Converso com muitas startups e sou investidor-anjo em algumas delas, e todas estão usando o Copilot porque entendem que até mesmo um aumento de produtividade de 20-25% pode decidir sua sobrevivência.
“A resposta foi surpreendente. As pessoas nos disseram que não conseguem mais desenvolver sem o Copilot.”
THOMAS DOHMKE
Freethink: Estou curioso para saber que dados vocês coletaram – seja de forma anedótica ou mais formal – sobre como o Copilot está mudando a forma como os programadores do GitHub e da própria Microsoft trabalham.
Dohmke: Começamos a trabalhar no Copilot em agosto de 2020 e, em seguida, lançamos a primeira prévia interna no início de 2021 para cerca de 250 funcionários do GitHub, ou “Hubbers”, e a resposta que recebemos foi impressionante. As pessoas estavam animadas. Elas nos disseram que não conseguem mais desenvolver sem o Copilot.
Medimos o Net Promoter Score, NPS [nota do editor: uma medida de satisfação do usuário], que varia de -100 a +100. E tivemos um resultado de +73 em nossa população de 250 testadores. Nunca vemos esses números em nenhuma outra alteração no ambiente de desenvolvimento. Normalmente, os desenvolvedores dizem: “Não mexa no meu sistema, eu sei o que estou fazendo, Thomas – por que você está introduzindo uma nova ferramenta?”
Recebemos um feedback tremendamente positivo de nossa equipe, e os números de retenção, quantas pessoas continuaram usando após o primeiro dia ou a primeira semana, foram incrivelmente altos – mais altos do que qualquer outro produto que construímos. Você espera um certo declínio – você lança um novo recurso dentro da empresa, e todos estão animados no primeiro dia, mas até o terceiro dia, todos voltam aos velhos hábitos. E não vimos isso com o Copilot, seja dentro do GitHub, dentro da Microsoft ou realmente entre nossos clientes.
“Quase metade do código, em média, é escrito pelo Copilot. Isso por si só é impressionante.”
THOMAS DOHMKE
Freethink: Você tem algum dado ou estatística sobre como a comunidade mais ampla de desenvolvedores no GitHub está usando o Copilot e qual é o impacto disso em sua produtividade?
Dohmke: Quando os clientes usam o Copilot, acompanhamos quantas vezes eles pressionam a tecla tab e quanto código é escrito pelo Copilot nesses arquivos. E esse número agora está em média em 46% – quase metade do código, em média, é escrito pelo Copilot nesses arquivos em que está habilitado. Isso por si só é impressionante.
Começamos a trabalhar no Copilot há três anos; ele entrou em prévia há quase dois anos. Esse número vem aumentando constantemente desde o lançamento. Mais cedo ou mais tarde, 80% do código será escrito pelo Copilot. E isso não significa, como discutimos, que o desenvolvedor será substituído. Significa que o desenvolvedor terá mais tempo para se concentrar nos 20% do código que está escrevendo.
Quando você usa o Copilot, seu estilo muda, porque você se torna mais explícito. Você escreve comentários de código e talvez um pequeno exemplo. Ao escrever uma função com uma entrada e uma saída, apenas fornecendo exemplos de entradas e saídas, o Copilot “tem uma ideia” do que você queria fazer e usa isso como contexto adicional para sintetizar o código.
“O grupo com o Copilot foi 55% mais rápido. Isso vai mudar a indústria.”
THOMAS DOHMKE
Na verdade, temos informações de uma pesquisa quantitativa com 2.000 desenvolvedores sobre como eles se sentem ao usar o Copilot, e 75% desses desenvolvedores afirmam estar mais satisfeitos. Eles nos dizem que precisam de menos capacidade mental para concluir o trabalho. Estão gastando menos tempo escrevendo o código básico que sempre precisamos fazer como desenvolvedores.
Também realizamos um estudo qualitativo, no qual fornecemos acesso ao Copilot para 50 desenvolvedores e tivemos cerca de 50 desenvolvedores que não tinham o Copilot – o grupo de controle, por assim dizer – e pedimos a eles para construir um servidor web. O grupo com o Copilot foi 55% mais rápido. Isso vai mudar a indústria.
Além de serem 55% mais rápidos, eles tiveram uma taxa de sucesso mais alta: 78% em comparação com 70%.
“Acredito que a forma como aprendemos mudará completamente.”
THOMAS DOHMKE
Freethink: Qual será o efeito do Copilot no desenvolvimento dos futuros programadores? Existe essa tensão ao aprender a programar, entre ficar frustrado com coisas que parecem ser fáceis e o fato de que, ao fazer essas coisas repetidamente, eventualmente adquirimos uma compreensão mais profunda de como tudo funciona. Estou curioso para saber que efeito uma ferramenta como o Copilot pode ter, por exemplo, em um estudante do ensino médio que está aprendendo a fazer uma ordenação por bolha e pode simplesmente pressionar a tecla de tabulação e ter o código aparecendo, sem precisar fazê-lo do zero primeiro.
Dohmke: Acredito que a forma como aprendemos mudará completamente, assim como a forma como ensinamos nas escolas também mudará completamente.
Acredito que daremos menos importância a saber quem foi o presidente em 1845 e nos concentraremos mais em como aprendemos. O professor se torna mais um treinador que ajuda as crianças em todas as idades a aproveitar a tecnologia para explorar esses tópicos por si mesmas e no seu próprio ritmo. Acredito que isso será incrivelmente democratizante para as crianças, especialmente no desenvolvimento de software.
É fácil esquecer aqui nos Estados Unidos que o idioma mais comum na programação é o inglês. Se você cresce aqui, provavelmente terá mais facilidade em entender o inglês do que se crescer no Brasil, China ou Alemanha. Isso, por si só, será libertador para as crianças, porque elas poderão fazer uma pergunta a um agente de IA, como o Copilot, em seu idioma nativo. O Copilot entenderá esses idiomas e ainda sintetizará o código na linguagem de programação que o aluno está aprendendo, mas os alunos poderão interagir e fazer perguntas em seu próprio idioma.
Acredito que o conhecimento terá menos importância e saber como raciocinar, saber como explorar o conteúdo – saber como descobrir se o conteúdo fornecido pela IA é realmente a resposta certa será crucial. Os professores trabalharão com as crianças para aprender a fazer isso. E os estudantes terão que descobrir se o que a IA está fornecendo é realmente a resposta para o problema que estão resolvendo, ou se o modelo está “alucinando”.
“As crianças podem simplesmente fazer uma pergunta a um agente de IA, como o Copilot, em seu idioma nativo.”
THOMAS DOHMKE
Freethink: Pelo menos na minha opinião, parece que, em qualquer disciplina que você escolha, seja medicina ou ciência da computação, para fazer esse tipo de raciocínio de nível superior, você precisa começar com algum conhecimento de conteúdo básico.
Dohmke: Se você usar o Copilot, perceberá relativamente rápido que ainda precisa ter esse conhecimento básico. Você não pode escapar disso. Você pode ir ao ChatGPT ou Copilot e perguntar “como construir o GitHub”, e ele lhe dará uma resposta muito abstrata.
Você precisa ter a habilidade de dizer: “OK, agora como decompor esse problema realmente grande em problemas menores?” E para fazer isso, você precisa entender o que é um banco de dados, o que é uma máquina virtual, o que é um contêiner? Você precisa conhecer todas essas coisas na ciência da computação para realmente chegar ao ponto em que a IA pode responder sua pergunta.
“Continuamos lutando pelos direitos dos desenvolvedores de código aberto porque acreditamos que o código aberto é fundamental para alcançar o progresso humano.”
THOMAS DOHMKE
Professores, se voltarmos ao exemplo da escola, perceberão imediatamente isso. Se um aluno tentar trapacear para resolver sua lição de casa, ele não só precisará fornecer a resposta, mas também mostrar como chegou a ela. É como na aula de matemática: mostre o seu processo de como você usou o Copilot para construir algo.
Outra coisa é que nenhum projeto de software é igual, e há uma grande diferença entre construir um sistema de ponto de venda para um supermercado ou construir um aplicativo para iPhone que seja executado em cada dispositivo individual, mas que ainda possa ter 100 milhões de usuários. Ainda é necessário aprender sobre esses conceitos e como resolver esses problemas. E acredito que essa é uma habilidade muito mais útil para nós como seres humanos do que conhecer todos os detalhes da linguagem de programação.
Freethink: Como alguém que sempre defendeu o código aberto, qual é o papel que você vê para o código aberto nesse contexto?
Dohmke: O código aberto terá um papel fundamental na evolução do Copilot. O modelo fornecido pela OpenAI para o Copilot foi treinado em dados abertos na internet. Não apenas em código-fonte, mas também em vários outros documentos. Isso permite que o Copilot não apenas entenda linguagens de programação, mas também linguagens humanas. O código aberto fornece os conjuntos de dados para o treinamento desses modelos.
Agora vimos diversos modelos de linguagem grandes de código aberto. Muitos deles estão hospedados no GitHub, o que nos deixa animados! O GitHub tem abraçado o ecossistema de código aberto que fornecemos nos últimos 15 anos. Basicamente, todos os nossos recursos foram disponibilizados gratuitamente para projetos de código aberto, e queremos continuar apoiando esse ecossistema. Continuamos lutando pelos direitos dos desenvolvedores de código aberto porque acreditamos que o código aberto é fundamental para alcançar o progresso humano.
O modelo de colaboração que vem com o código aberto é provavelmente o modelo de colaboração mais aberto e sem fronteiras que existe: desenvolvedores de diferentes países trabalham juntos e não se importam com todos os outros conflitos que temos neste planeta.
“As linguagens caem em desuso. Mas também nunca deixam de ser úteis.”
THOMAS DOHMKE
Na maioria das vezes, quando você recebe uma solicitação de pull request, não sabe quem é aquela pessoa, qual é o seu cargo, em que ela tem trabalhado, se ela frequentou a universidade ou não. Você não se importa. Eu não acredito que, se você quiser contribuir com código para o kernel do Linux, alguém vai perguntar: “Você realmente tem uma educação adequada e cinco anos de experiência de trabalho?” É assim que a colaboração de código aberto funciona.
No GitHub, é isso que abraçamos e sempre abraçaremos como parte de nossa missão de capacitar e possibilitar os desenvolvedores de código aberto. Acredito que os modelos de linguagem grandes terão um papel importante e nos ajudarão a acelerar o progresso juntos.
Freethink: Qual papel você acha que o Copilot pode desempenhar no desenvolvimento de novas linguagens de programação? As linguagens surgem, caem em desuso – estou curioso para saber qual efeito o Copilot pode ter nisso.
Dohmke: Você mencionou que as linguagens caem em desuso. Acho que isso está correto. Mas elas também nunca deixam de ser úteis. O exemplo mais comum aqui são os bancos e instituições financeiras que ainda estão executando COBOL em mainframes. E não é apenas um banco em algum lugar, é qualquer banco com o qual conversei em qualquer país ao redor do mundo que ainda executa COBOL em mainframes.
Isso é um problema, porque as pessoas que escreveram COBOL nos anos 60 estão, felizmente, todas aposentadas agora e não precisam mais manter esse código para os bancos. O Copilot desempenhará um papel em ajudar as empresas a modernizar sua base de código – e fará isso de várias maneiras.
Primeiro, o Copilot pode explicar o código legado para o desenvolvedor que agora precisa assumi-lo. Você pode destacar o código e dizer: “Explique-me este código”. E uma vez que você tenha uma explicação, pode realmente usar a explicação e o código para gerar casos de teste para esse código. O próximo passo lógico é que você aproveite a IA em um processo iterativo com o “piloto”, o desenvolvedor, para reescrever tudo em Python. E como você gerou os testes e gerou a descrição – que provavelmente não existiam nos anos 60; grande parte desse código não é documentado – você é capaz de transformar aquela base de código antiga em uma nova base de código.
“Temos um produto chamado Copilot Voice que ajuda você a programar com a sua voz, em vez das suas mãos.”
THOMAS DOHMKE
“Estamos todos lutando contra a dívida técnica, não apenas da geração passada de desenvolvedores, mas também da nossa própria base de código de seis meses atrás. A maioria dos desenvolvedores, quando olha para o que escreveram seis meses atrás, diz: ‘Eu faria muito melhor agora do que há seis meses'. Veremos mais iteração e, esperançosamente, menos bagagem que carregamos conosco.
Acredito que outra forma será simplificar o aprendizado da programação, e as linguagens de programação em si provavelmente mudarão para se tornarem mais humanas. Em vez de escrever muito código, eu poderia apenas escrever muitos comentários e, em seguida, sintetizar o restante do código. E esses comentários podem estar em alemão, português brasileiro – praticamente qualquer idioma será compreendido por esses modelos para fins de síntese de código.
O último ponto é que temos uma prévia de um produto chamado Copilot Voice que ajuda você a programar com a sua voz, em vez das suas mãos – isso dará acesso a pessoas com deficiências que não podem digitar o dia todo devido a lesões por esforço repetitivo.
Freethink: Quando eu estava ensinando programação para estudantes do ensino médio, o maior desafio para eles era entender o que é diferente na linguagem de programação em comparação com a linguagem natural. O que os frustrava era como os computadores fazem exatamente o que você diz – como um irmão irritante que fará algo obviamente errado e depois dirá: ‘Bem, tecnicamente, você disse isso'. Com ferramentas como o Copilot, você acha que haverá uma convergência, em que a programação se tornará mais semelhante à forma como nos comunicamos pessoalmente?
Dohmke: Acho que isso já é perceptível. Quando você usa esses agentes de chat, eles não têm apenas a frase que você acabou de digitar, eles têm o contexto da conversa anterior. No caso do Copilot Chat, ele realmente sabe o que está no seu editor – não apenas no arquivo que você tem aberto, mas também em guias adjacentes e no seu depurador. No futuro, eles provavelmente terão todo o repositório ou pasta de arquivos disponível como contexto.
Hoje em dia, você já pode escrever um arquivo HTML – uma página da web – e, à medida que escreve, com a ajuda do Copilot, pode dizer: ‘Deixe este texto em negrito' ou ‘Centralize esta área na página'. E então ele mostra como fazer isso e remove a frustração do passado quando pensávamos que o computador não entendia o que queríamos. Bem, agora ele entende.”
“Um dos melhores momentos ao interagir com o Copilot é poder dizer a ele que algo está errado.”
THOMAS DOHMKE
“Recentemente, em uma conferência, criei um jogo da Cobrinha como demonstração do Copilot. Eu disse: ‘Deixe o jogo mais bonito', e ele simplesmente gerou as folhas de estilo. Eu nunca disse que queria uma folha de estilo. Nem mesmo mencionei os conceitos de HTML ou CSS. O Copilot entendeu isso sozinho, tendo o contexto do que eu estava tentando alcançar.
Acho que um dos melhores momentos ao interagir com o Copilot é poder dizer que algo está errado. Você pode realmente dizer: ‘Isso não é o que eu estava procurando' ou ‘Isso não funciona'.
E então ele diz: ‘Oh, peço desculpas. Aqui está outra coisa que você pode tentar.' Assim, ele possui esse modo interativo, e você não precisa conhecer a sintaxe exata da linguagem de programação. Você não precisa saber tudo o que seria necessário para resolver o problema. Você pode explorar e chegar à solução por si mesmo.”
“Mesmo que tenham sido treinados apenas com base em arte existente, eles podem gerar uma categoria totalmente nova de arte.”
THOMAS DOHMKE
Freethink: Pelo que entendi, o Copilot é construído com base no Codex da OpenAI, que é uma espécie de instantâneo do código anterior a 2021. Não sei se há planos para conectar o Copilot à Internet, para que ele seja atualizado com mais frequência, mas fico curioso para saber se você vê alguma perda em não precisar escrever o código básico com tanta frequência. Quando você precisa se aprofundar o tempo todo, uma pessoa a cada 100.000 pode eventualmente dizer: “Uau, aqui está uma maneira de fazer isso muito melhor.” E então essa solução se espalha pela comunidade de desenvolvedores. Se as pessoas estiverem apenas pedindo ao Copilot as melhores soluções com base no código de ontem, como você vê a própria inovação mudando?
Dohmke: O primeiro ponto a considerar é que os modelos de linguagem não têm uma biblioteca de trechos de código armazenados neles. Eles são redes neurais que possuem bilhões de parâmetros que descrevem como prever a probabilidade de algo. Em termos de modelos de linguagem, esse algo é a próxima palavra. Em termos de modelos de difusão, é como chegar do ruído a uma imagem.
Se você considerar esses modelos de difusão como exemplo visual, é evidente que eles podem criar coisas novas que não existiam antes. Mesmo que tenham sido treinados apenas com base em arte existente, eles podem gerar uma categoria totalmente nova de arte. Você pode ir para o Stable Diffusion e dizer: “Renderize o horizonte de Nova York como seria pintado por um impressionista francês”. E então ele realmente renderiza o horizonte de Nova York de hoje como se fosse pintado por Monet ou algum outro impressionista francês.
Não há nenhuma imagem no conjunto de treinamento que realmente se pareça com isso. A imagem é gerada com base na sua solicitação e, em última instância, a partir do ruído.
Acredito que o mesmo seja válido para os modelos de linguagem. Eles podem gerar texto completamente novo, código completamente novo que nunca existiu antes e, como tal, eles podem, em parceria com o desenvolvedor, realmente criar inovação e novos algoritmos ou código. Mas, como você pode inferir pelo termo “Copilot”, acreditamos que há um piloto envolvido que trabalha de forma iterativa com o Copilot para alcançar essa inovação.