![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Apesar de cobrir algumas proezas legais do ChatGPT alguns meses atrás, não dei o próximo passo lógico para experimentar o Copilot, a ferramenta de suporte de codificação AI do Github. No entanto, meu interesse foi despertado na semana passada, quando um colega meu compartilhou uma captura de tela de um conjunto de testes gerado por IA.
O prompt era razoavelmente simples e os casos de teste gerados eram relevantes; o suficiente para me fazer querer assinar o teste gratuito do GC e contribuir para o advento do evento de singularidade.
Vou evitar detalhar o que o Copilot pode ou não fazer: outros já me anteciparam de longe. A parte interessante para mim é como posso me acostumar com essa nova tecnologia.
Neste post, também usarei o Github Copilot como referência para inferir o que uma "IA para codificação" pode fazer hoje, pois acho que representa o que há de mais moderno na área.
Muitas perguntas espontâneas vêm à mente quando se pensa em IA no domínio do software.
É útil? É perigoso? Isso vai tirar nossos empregos? O mais importante é não nos encurralar com uma mentalidade limitante e deixar que nossas emoções forjem uma narrativa estranha em torno da IA - seja como neoludistas ou utópicos tecno-entusiastas.
Em vez disso, acho outros tipos de perguntas mais interessantes e muito mais fáceis de responder: essas perguntas não implicam em uma resposta "sim" ou "não", mas geralmente começam com "o que", "quando" e "onde".
Por exemplo, como posso integrar o Copilot no meu trabalho diário? Que tarefas facilita e que habilidades pessoais exige?
O valor da IA em nosso trabalho é claro para os engenheiros de software. Ainda assim, entendo que pessoas de outras esferas da vida podem julgar erroneamente quais são as possibilidades, especialmente porque muitos criadores de conteúdo ou jornalistas gostam de atrair a atenção sugerindo cenários catastróficos (ou prometendo que a construção de software agora está acessível a qualquer pessoa).
Sim, é verdade que as ferramentas baseadas em GPT-3 - e recentemente GPT-4 - podem escrever código e, sim, o código gerado geralmente compila e faz o que se espera dele.
No entanto, isso não representa necessariamente uma ameaça imediata à segurança do meu trabalho, já que escrever código não é o que os engenheiros de software realmente fazem. Deixe-me elaborar melhor.
Nosso trabalho não é digitar código em um editor de texto. Não somos estenógrafos. O trabalho é decidir o que codificar. Na verdade, sempre que estou projetando um software e finalmente começo a digitar algo em meu IDE, já tenho em mente como será o próximo trecho de código.
Neste ponto, a IA está apenas ligando os pontos, gerando instantaneamente o método ou a estrutura de dados que pretendo, menos erros de digitação involuntários ou outros erros óbvios.
Mesmo que a IA possa contribuir com mais de 80% de alguma base de código, fornecer o prompt apropriado (os 20% iniciais) é essencial , pois carrega informações enormes de que o GC precisa para operar corretamente. E você não receberá esse prompt inicial sem um engenheiro por trás do teclado.
Acredito que uma boa comparação pode ser feita com pilotos automáticos de aviões. O AFCS (Auto-Flight Control System) pode executar perfeitamente uma variedade de operações de voo: ajustar a trajetória de voo, aproximar-se de um aeroporto ou até mesmo pousar.
Eu ainda não sonharia em embarcar em um voo comercial sem nenhuma supervisão humana.
O fato de o computador ser capaz de controlar o avião não significa que os pilotos fiquem parados na cabine de comando.
Ainda há muito o que fazer: verificar o tempo à frente, comunicar-se com o controle de tráfego aéreo, planejar rotas alternativas e, o mais importante, supervisionar o piloto automático e tomar as rédeas, se necessário.
Portanto, podemos ver como os pilotos ainda são os que pilotam o avião.
De maneira semelhante, a IA não desenvolve software, os engenheiros o fazem . A IA é uma ferramenta. Os engenheiros são treinados para otimizar seu fluxo de trabalho usando automação, mas sempre monitorarão o que sua ferramenta está fazendo. Se não estiver se comportando como planejado, os engenheiros entrarão em ação e corrigirão a situação.
Esta é a mentalidade que tenho ao usar o Copilot: terei prazer em delegar a ele as tarefas domésticas, mas, enquanto isso, estarei vigilante sobre o resultado que ele produzirá.
Como você deve saber, o algoritmo de ML subjacente do Copilot é chamado GPT-3 e faz previsões da sequência mais provável de tokens a serem gerados. Embora o código gerado geralmente esteja sintaticamente correto, as ferramentas não têm conhecimento de quais são as especificações e se o código produzido é válido.
Uma possível contramedida é ajudar o GC com alguma engenharia imediata: por exemplo, escrever um comentário informando o que o próximo snippet faz é uma técnica poderosa para ajudar a IA.
Melhor ainda, às vezes até o comentário pode ser gerado automaticamente depois de digitar as primeiras palavras.
No entanto, deve-se dizer que, mesmo nas condições mais ideais, o Copilot nem sempre oferece uma sugestão útil, ou qualquer sugestão, se for o caso. Embora o GC seja incrível, acredito que ainda seja altamente imperfeito como ferramenta de codificação.
Por enquanto, não decidi se incorporaria totalmente o Copilot em meu conjunto de ferramentas ou não: a natureza imprevisível de suas sugestões às vezes pode ser um obstáculo.
De qualquer forma, sugiro a todos que molhem os pés e pelo menos tentem uma vez: pense nisso como uma ferramenta utilitária, como o marcador de sintaxe ou o recurso de preenchimento automático do seu IDE favorito.
Qual é a sua opinião sobre o Github Copilot? Você o incorporou ao seu trabalho diário ou foi difícil para você? Não seja tímido, e deixe-me saber nos comentários!