Como o copilot e o vscode estão acabando com minha saude mental, dia após dia

O GitHub Copilot é uma ferramenta de inteligência artificial que visa acelerar no desenvolvimento fornecendo sugestões de código. Seu propósito é aumentar a produtividade dos desenvolvedores, reduzir erros e facilitar o aprendizado de novas técnicas de programação. Com isso, o Copilot deveria ajudar a economizar tempo, melhorar a qualidade do código e tornar o processo de desenvolvimento mais eficiente.

Porem não é assim ...

Vou dividir o artigo em 2 etapas, uma sobre o Copilot e outra sobre o VSCode, e já vou direto ao ponto. Depois vou detalhando os principais pontos embasando meus problemas atuais.

Mais afinal, o que o Copilot é?

Acho que ninguém discorda que o Copilot (até o nome sugere isso, correto?) deveria ser uma ferramenta que ajuda, e não que faz! Conseguem entender a diferença? 

Hoje se você faz um comentário
// verifica se o usuário está logado
, ele não faz um IF: ele simplesmente tenta prever o que você quer fazer no código todo:



Começando, eu não fiz o comentário "verifica se NÃO ESTA LOGADO". Eu fui bem explicito "SE ESTA LOGADO". Claramente ele tentou imaginar que eu estava verificando se o usuário estava logado, se não, envia-lo para login, mas eu só queria recuperar o $idcliente se ele estivesse logado ou se era uma requisição de alguém anônimo.

Ai você pode pensar que "poxa, mais é só apagar", e é ai que entra a parte da saúde mental. Você programar diariamente, 10 horas por dia, sem manter um fluxo continuo de pensamento, ou a cada linearidade de pensamento, ter que ler algo diferente e induzir seu cérebro a pensar em outra coisa, cansa!

Eu costumo dizer que em uma tarefa de 1 hora, passo 30 minutos pensando em como resolver algo, 10 minutos escrevendo, e 20 minutos testando. Você pensa, quando vai escrever, precisa ficar lendo código leigo, apagando, corrigindo, aceitando mudanças, isso tomou mais tempo do que realmente era necessário. Quando chegou na parte dos testes, você já não consegue mais testar, pois precisou ficar testando e corrigindo o código. Eu acostumava realmente a ficar 5, 10 minutos escrevendo sem nem olhar para a tela para ver o que o código estava produzindo. Agora, a cada atualização de tela, eu vejo um erro, que me faz voltar e olhar o que esta errado no código.

Meu ponto aqui é simples: Ele deveria ajudar, e não escrever o código para mim. Mais do que isso: ele não deveria tentar prever o que meu software faz, o que meu código faz.

Mais onde entra o VSCode nisso?

Então, ai vem outro problema correlacionado: veja esse print:


O que é o que aqui? O que vão fazer depois? Fazer as palavras tremerem para chamar sua atenção?

Estamos cada dia mais abstraindo as coisas, diminuindo arquivos, diminuindo códigos, usando cada vez mais serviços relacionados, criando cada vez mais padrões de desenvolvimento, criando códigos simples, fáceis de entender, e de repente a gente começa a se deparar com IDEs que causam confusão em nossa cabeça, fazendo a gente gastar energia entendendo a IDE, o código gerado, do que realmente gastar energia com a lógica do nosso software.

Tudo isso ai é subjetivo ....

Sim, se você pensou isso ou pensou "mais eu consigo entender e pra mim é bem de boa", você está certo. Estou escrevendo esse artigo como um ponto de vista, não como um mantra, e é assim que a ciência acontece e evolui. Meu ponto aqui é o desperdício na lógica, e o ganho do foco nas ferramentas, e ferramenta sim é algo subjetivo. Vamos obrigar todos os programadores a programar na IDE X porque lá ele simula o espaço como um TAB de forma correta? porque não usamos TAB para que cada um use a IDE que quer? E isso gera um problema maior: você está focando em resolver o problema, e não em escrever uma solução.

Usando o Copilot eu me sinto ensinando alguém que fica tentando programar o tempo todo, enviando códigos aleatórios para eu analisar se está certo ou errado. Sabe quando aquele programador Junior entra na empresa e você precisa ficar toda hora analisando o código dele? (veja: o dev Jr está na sua função de perguntar, o Copilot não), ou pior, quando o Dev Jr nem é dev ainda, está aprendendo?

Eu acho que ....

Vou falar algo obvio, que até escrevendo parece ridículo, mais no meu ponto de vista, a Inteligência Artificial deveria nos ajudar. Todos concordam que está cada dia mais difícil procurar algo no Google (ficar links e links procurando algo que realmente faça sentido na nossa busca) e Stack Overflow também já deu (ficar lendo comentários do porque usar ou não determinado código ou até linguagem. Até as respostas corretas já não são mais rankeadas nos forçando a ficar lendo a pagina toda). 

A gente quer algo assertivo, rápido, a gente ta programando, trabalhando, precisa ser dinâmico. Quero comentar "faça a ordenação pelo index de segundo nível" e ele me retorne 
array_multisort()
, me aliviando ir no google buscar sobre isso, ou ler documentação, e não que ele crie um baita código supondo que eu queira ordenar para exibir em um Treeview.

E como a gente resolve?

Simplesmente não sei! Acho que escrevendo esse artigo pode ser uma forma, talvez! Todo dev tem ou ja teve um blog, escreva! As empresas e pequenos grupos estão cada vez mais empurrando tecnologias goela abaixo e a gente aceitando. 

É assim que eu venho me sentindo usando o Copilot, e somente hoje percebi que isso vem me fazendo mal. Obviamente que a gente quer evoluir e usar algo que nos ajude, ainda mais quando todo lugar que você olha, só se fala disso, então obvio que ainda existe a pressão de PRECISAR usar.

Hoje eu resolvi abrir uma issue no projeto vscode, assinaram, não sei se vai vingar, mais tentei algo. Também resolvi que vou cancelar minha assinatura do Copilot, tentando passar algum tempo sem e ver o que acontece.

Sei que seria um mundo perfeito se o Copilot realmente ajudasse e não se comportasse como uma criança aprendendo a programar, onde fica toda hora "testando" código pra eu ver se é ou não aquilo que eu quero.