Deixando de ser um programador medíocre com o Copilot

Anselmo Borges
Rescue Point
Published in
12 min readApr 19, 2024
Minha homenagem ao Rugal que já me levou muitas fichas embora!

Quem me conhece sabe que sou um programador de merda, sou bem de infra, mas sou aquele programador esforçado, tenho estudado Python, PySpark e tenho melhorado um pouco nesse ramo voltado pra dados e automações, porém ainda apanho muito dos while, for e umas outras coisinhas (prometo que estou melhorando a cada dia).

Mas meu mundo tem mudado, tenho conseguido entregar coisas incríveis de qualquer coisa relacionada a programação, desde automações de infra as a code (IaaC) como programações voltadas pra parte de dados e desenvolvimento até de aplicações (Streamlit é vida).

Tudo isso pelo custo de 10 dolares mês (e vale tá!), nesse post eu vou falar sobre o Copilot e todos os benefícios que ele trouxe no meu dia a dia e pode trazer pra você também!

O que é o Copilot?

O GitHub Copilot é tipo seu melhor amigo assistente de código! Ele foi criado para te ajudar a programar mais rápido e sem tanto esforço. Ele é esperto o suficiente para entender o que você está tentando fazer só de olhar os seus comentários e o código que você já escreveu, e daí sugere trechos de código ou até funções inteiras num piscar de olhos. Foda né?

Estudos mostram que o Copilot pode fazer você programar mais rápido, deixar você livre para pensar em desafios mais complexos, manter você concentrado por mais tempo e até deixar você mais feliz com o trabalho que está fazendo.

que dahora caraaaa!! rs

Ele é movido pelo Codex da OpenAI, um modelo de linguagem que já vem treinado para entender programação. E o melhor de tudo? Você pode usar o Copilot no Visual Studio Code, no Visual Studio, no Neovim e nos IDEs da JetBrains. É só instalar a extensão e começar a codificar!

Vou explicar agora a parte que chateia, ele é pago, mas vou dizer que vale cada realzinho investido.

Como assim? Copilot é pago?

Sim jovem, a parte triste desse post é que o Copilot é pago e não estou ganhando nenhum real nesse post, juro! Mas calma vou usar alguns cases meus pra você mexer na sua carteira.

Antes disso vou usar um exemplo de vida, meu pai trabalhou na Mercedes por 35 anos, ele era revisor de cabines de caminhão. Entre 1999 a 2001 eu tive a oportunidade de trabalhar com ele lá, tentei executar as mesmas atividades dele e por mais que eu me esforçasse e ficasse bom nunca conseguia fazer tão rápido quanto ele, ele sempre terminava o trampo, adiantava e ia pro dominó tradicional dele. Pensei como?

Quando comecei a prestar atenção, ví que a caixa de ferramentas dele parecia uma mala de mágico, ele tinha de tudo, até ferramentas que ele inventava pra tirar uma borracha do vidro, ou até colocar o adesivo na porta do caminhão, meu pai investia em FERRAMENTAS.

O que concluo com, com ferramentas melhores, você trabalha melhor e sobra mais tempo pra você, esse é o ponto. E você vai perceber que não estou falando grosélha.

Vamos aos preços primeiro:

Preços e tipos de licenciamento do Copilot.

Os planos do Copilot de dividem entre Individual, Bussiness e Enterprise:

  • Individual (10 doletas/mês ou 100 doletas/ano): Voltado para o profissional independente e free lancer, sem vinculo de empresa só pra você mesmo, esse que eu uso. Pra você que é estudante, professor ou desenvolvedor de algum projeto Open Source tem como ter de graça.
  • Copilot Bussiness (19 doletas/mês por usuário): Totalmente parecido com o de cima inclusive na maioria dos casos são as mesmas features, porém se você tem um grupo de usuários da sua organização como um AD ele tem o diferencial de gerenciamento de usuários, exclusão dos dados que ele aprende sobre seus códigos após o uso, autenticação SAM e SSO.
  • Copilot Enterprise (39 doletas/mês por usuário): Esse é a nata do Copilot que além de todos as features que citei anteriormente, também tem uma adaptação das sugestões de código para os repositórios da sua empresa, entendendo um padrão de código corporativo, isso acho foda! Um modelo que já aprendeu com milhares de repositórios de código aberto de ferramentas top de mercado e inclusive de suas documentações (imagina o quanto isso vai te ajudar?), Analise de diferença das requisições de Pull request e preenchimente automático do que foi feito.

Free Trial

Pra você ver que o que estou falando é verdade o Copilot Individual tem um free trial de 30 dias pra você testar, você vai precisar ter uma conta no GitHub e ter um meio de pagamento cadastrado que não é cobrado, mas te explico isso melhor já já!

A quanto tempo uso?

Faz tempo que uso eim e faz tempo que quero escrever sobre isso também, pra você ter uma noção fiz um vídeo um pouco mais de um ano atrás, trazendo a possibilidade de usar um VSCode com Copilot e usar a extensão do Databricks na época já era bem inovador e disruptivo, até a Databricks criar seu próprio LLM e colocar um assistente integrado dele, se liga:

Tenho então pelo menos 1 ano de uso do Copilot

Se liga no GIF abaixo a solução parecida com um assistente no Databricks hoje de forma nativa (lembrando que não é Copilot mas se inspira muito em um).

Será que o mano viu meu vídeo? rs

Configurando no VSCode

Nesse exemplo vou mostrar como fazer a contratação do free trial e já configurar VSCode e sair programando.

Contratando o free trial

Vamos começar a usar o GitHub Copilot gratuitamente:

  1. Crie uma conta no GitHub: Se você ainda não tem uma conta no GitHub, visite o site github.com e crie uma. Você precisará fornecer algumas informações básicas como seu nome de usuário, email e uma senha.
  2. Acesse a página do GitHub Copilot: Uma vez que você tenha sua conta no GitHub, visite a página do GitHub Copilot diretamente através do link GitHub Copilot.
  3. Clique em “Start free trial”: Na página do GitHub Copilot, você verá uma opção para iniciar um teste gratuito. Clique neste botão para começar. Você precisará ter uma forma de pagamento válida associada à sua conta para ativar o teste, mas não será cobrado durante o período de teste.

Configurando as extensões no VSCode

Lembrando que podem ser outras IDEs como PyCharm e NeoVim:

O GitHub Copilot funciona como uma extensão do Visual Studio Code (VS Code). Se você ainda não tem o VS Code instalado, baixe e instale-o do site oficial Visual Studio Code.

Depois, instale a extensão do GitHub Copilot procurando por “GitHub Copilot” na barra de extensões do VS Code e clicando em “Instalar”. Vou usar um Codespaces de exemplo partindo do principio que tenho tudo zerado.

No VSCode clique no icone do user ali pra logar na conta do Github

Estando logado no VSCode agora baixamos as extensões:

na barra lateral o ico nod 4 quadradinhos é extensions, digite copilot e instale esses 2 caras

A instalação do primeiro vai cria um icone lá em baixo no VSCode se ele estiver tudo ok sem um risco no meio tá funcionando, se liga.

Iconezinho do lado do Portuguese

Agora a respeito da extensão Copilot Chat é pra você usar meio que como o ChatGPT mesmo, mas lembrando que ele responde perguntas somente voltadas para programação, o módulo que ele usa é pra isso.

Antes de por a mão na massa e mostrar pra você os ganhos que pode ter, primeiro vou falar sobre alguns cases que fiz pra você ter uma base do que pode ser feito e algumas dicas de como extrair o melhor do GitHub Copilot.

O que entreguei com o Copilot?

Quem me conhece sabe que sou um programador ridículo, eu acredito que seja por falta de treino mesmo, pois fico ali mais na arquitetura e plataforma, mas tenho os conceitos manja? Mas quando você não tem uma vivência com a parada, não tem um começo, um meio e um fim, não tem as melhores práticas, as vezes tem módulos ou bibliotecas que passaria horas pesquisando e isso o Copilot te entrega de mão beijada.

Se liga em algumas entregas que fiz e algumas ferramentas usadas:

  • Pipeline de automação de criação de recursos com Azure Devops: a parada me deu o YAML praticamente feito inclusive comentando pontos que eu precisava.
  • Pipeline de dados usando Azure Data Factory: Eu precisava de um pipeline personalizado onde pegaria todos os parâmetros de um banco SQL, ele me ajudou nessa customização tanto do código como da configuração pra utilização via Chat.
  • Código pra ingestão incremental usando PySpark: Eu precisava criar um processo customizado de ingestão incremental/diferencial para algumas tabelas o copilot ajudou muito na criação desse processo.
  • Criação de aplicação Web para ingestão de novas tabelas: Eu manjo zero de Web e o Copilot que me levou a conhecer o streamlit e me auxiliou na criação da pagina web, juntamente com o código python que eu precisava.
  • Utilização do Selenium como Webcrawling: O Selenium apesar de fácil de usar no Python, tem MUITOS recursos e meios de usar, conforme fui criando minha aplicação fui aprendendo formas diferentes de fazer a mesma coisa, não é um lance de só pedir, você aprende o tempo todo.
  • Otimização de código: Ok, você terminou sua aplicação mais ele virou um remendo de vários códigos, quer otimizar? Peça isso pra ele.
  • Documentação de código: Você pode pedir pra que ele crie a documentação do seu desenvolvimento, isso é incrivelmente útil e livra um tempo absurdo.
  • Teste Integrado: Quer ver se o que você desenvolveu não vai quebrar antes de entregar? Mande ele gerar testes integrados das suas funções e códigos, isso vai dar uma qualidade absurda no seu desenvolvimento.

Em termos de linguagens, bibliotecas e tipos de dados que usei com ele é um absurdo:

  • YAML
  • JSON
  • Ansible
  • Azure CLI
  • SQL
  • Shell
  • APIs

As possibilidades variam de acordo com sua imaginação e acredito que a cada mês vai melhorar mais, não tem porque ficar sofrendo. Passei nas 3 das 4 fases do processo seletivo do Nubank, a última foi programação em par, o desafio que me foi dado faria com 3 minutos com o Copilot e vou até tentar fazer isso em vídeo.

Melhores práticas de utilização

Assim como ChatGPT o Copilot usa prompts pra solicitar informações, estou estudando bastante sobre engenharia de prompts, pois quero entregar os dados que já trabalho em engenharia de dados de forma eficaz para o LLM que eu for usar. Mas rapidão vamos falar sobre engenharia de prompt pra você entender melhor a ídeia.

Engenharia de prompt

A engenharia de prompts, ou “prompt engineering”, é um conceito usado principalmente no contexto de interações com modelos de inteligência artificial (IA), como os que geram texto ou imagens. Simplificando, engenharia de prompts é a arte de redigir a entrada (o “prompt”) que você dá a uma IA de maneira que você maximize a chance de obter a resposta ou o resultado que deseja. Vamos detalhar isso um pouco mais:

  1. Definição de Prompt: Em termos de IA, um prompt é simplesmente a instrução ou questão que você dá ao modelo. Por exemplo, ao pedir a uma IA para escrever um poema ou para explicar um conceito científico, o modo como você formula essa solicitação é o prompt.
  2. Engenharia de Prompt: Engenharia de prompt envolve refinar e ajustar esse prompt para tirar o máximo proveito da tecnologia de IA. Isso pode incluir escolher as palavras certas, definir o contexto adequadamente, ou até mesmo especificar o estilo ou formato da resposta esperada.

Ganhos com Engenharia de Prompts

  • Precisão na Resposta: Ao formular um prompt claro e bem direcionado, você aumenta as chances de a IA entender exatamente o que você está pedindo e, por consequência, de receber uma resposta mais precisa e útil.
  • Eficiência de Tempo: Um bom prompt pode reduzir a necessidade de múltiplas interações para chegar ao resultado desejado, economizando tempo.
  • Exploração de Capacidades: Com a engenharia de prompts, você pode explorar mais profundamente as capacidades do modelo de IA, descobrindo formas criativas e eficazes de aplicar a tecnologia em diferentes cenários.
  • Customização de Respostas: Você pode influenciar o tom, o estilo, e até mesmo o formato da resposta da IA, tornando-a mais adequada para o público ou o propósito específico.
  • Inovação e Criatividade: A habilidade de redigir prompts eficazes pode levar a novas maneiras de usar a IA, abrindo portas para inovações em vários campos, como educação, arte, design, e muito mais.

Em resumo, a engenharia de prompts é uma habilidade crucial para quem trabalha com tecnologias de IA, permitindo uma comunicação mais eficaz e resultados mais alinhados com as necessidades do usuário.

Existem técnicas de como extrair isso da melhor forma, mas vai ficar pra outro post, esse overview foi mais pra você saber como extrair o máximo das suas perguntas no copilot.

Dicas na utilização

Falei sobre conceitos, de começo eu ficava meio chatedo quando pedia pro Copilot alguma coisa e ele me entregava algo nada a ver, com o tempo fui usando a engenharia de prompt e os resultados foram melhorando, no link abaixo tem um post no blog do GitHub que lí de 2 desenvolvedoras dando dicas de como extrair o máximo dele, segue o link abaixo:

Todas as dicas delas fizeram meu desenvolvimento ir parar na lua então faço das dicas delas as minhas:

1. Deixe várias abas abertas no seu IDE

O Copilot não aprende só com o que você está codando e sim com tudo que está aberto no seu IDE, percebi isso quando deixei diferentes .py do mesmo projeto abertos no VSCode, ele pega um contexto disso e faz sugestões melhores

2. Dar muitos detalhes do que quer fazer nos comentários

Dar apenas 1 solicitação pro Copilot não vai resolver seu problema mano, o exemplo que uso no vídeo por exemplo "Crie uma função que retorna endereço de um CEP", isso vai fazer o básico, mas vamos usar o conceito de engenharia de prompt que extraímos lá traz, trazendo mais contexto para esse cara.

Eu posso somente:

# Quero criar uma função que mostra o endereço com base no CEP informado

Ou eu posso dar todos os detalhes no comentário:

# Quero criar uma função que mostra o endereço com base no CEP informado
# Quero plotar a posição desse endereço no mapa
# Quero usar o Streamlit para criar uma aplicação web
# Quero usar o Google Maps Geocoding API para obter as coordenadas do endereço
# Quero usar o proprio Streamlit para plotar o mapa
# Quero usar o Pandas para manipular os dados
# Quero usar o Requests para fazer requisições HTTP

O resultado pode sair, disso:

Usando somente uma chamada de prompt

pra isso:

Dando todas as linhas no comentário de prompt antes do código ser gerado

3. Use muito o chat

A extensão do chat é incrível e você vai tomar alguns erros no caminho, por exemplo a sugestão inicial pra pegar a longitude e latitude a partir do endereço era usando GeoPy, onde eu tomava erro 403, pedi uma nova maneira e ele me instruiu o Google Geomapping API e até orientou como criar a API e ativar na minha conta do Google.

4. Peça pra ele explicar o que fez

Não adianta nada você pedir pra ele fazer e não aprender nada com isso, você já fez mais rápido, não perdeu horas pesquisando então entenda pelo menos, vai lá no chat e pede pra ele te explicar, se liga:

Basta ler e entender e seguir pro abraço.

5. Dê exemplos pra ele

Não é só você que aprende com exemplos, as vezes você tem algum código parecido do que você quer, mande pra ele e ele vai te dar um resposta com base no que você apresentou.

Conteúdo com vídeo pra você acompanhar

Segue abaixo um vídeo que fiz onde explico básicamente o mesmo mas onde você consegue acompanhar vendo a mágica acontecer.

(Video ainda não está pronto)

Conclusão

Se sua caixa de ferramentas tem boas ferramentas, você vai entregar um trabalho mais rápido, vai te sobrar mais tempo, seu chefe vai ficar mais feliz e consequentemente você justifica o seu aumento.

Seja feliz e me siga para mais dicas.

Anselmo Borges

--

--

Anselmo Borges
Rescue Point

Bigdata Engineer, Cloud Architect, Nerd, Alcoholic, Brazilian Jiujitsu Black belt and hide and seek World champion.