Dúvida: Vocês programam com auxilio de IA? Se sim, qual e em quais situações?

É uma curiosidade minha. Eu basicamente uso o GPT pra me explicar bugs que eu não consigo entender ou para otimisar trechos de código. Geralmente "ele" me ajuda.

No momento que tenho percebido mais problema do que ajuda. Estou experimentado, o Copilot promete bons resultados, e pode ser que use mais em futuras versões. O ChatGPT eu acho bem ruim, só me atrasa, e vai demorar muito para usar, talvez nunca para esse fim.

Eu acho que o mundo, "pra variar", estará dividido em duas bolhas, uma que adora a ferramentas e as que não enxergam valor nela. Eu não consigo ver muito valor nela, hoje, e acho estranho que pessoas que têm mais dificuldades conseguirem resultado que os que têm menos dificuldades não conseguirem.

Me parece que cada vez mais acontece das pessoas acreditarem em coisas ruins e irreais. Por enquanto é só minha percepção, mas parece ser corroborada com pessoas que estão estudando o assunto. Parece que há entendimento que as pessoas têm créditos para a IA, pelo menos algumas ferramentas, que ela não tem. Estão confiando em coisas inconfiáveis, e justamente por ter necessidade dela para ajudar não possuem o senso crítico necessário para usar de forma adequada.

Eu espero chegar o momento que ela fique bem mais adequada. Mas acho que será mais para quem precisa menos.

Hoje para você fazer a pergunta certa, do jeito certo, verificar a confiabilidade, tentar de novos várias vezes, até chegar em um bom resultado custa mais caro do que eu fazer sem a ajuda. E acho que muita gente que está vendo ajuda é porque está aceitando qualquer porcaria que a IA vomita. Veja só, é minha percepção, posso estar enganado. Mas se eu não estiver, azar dessas pessoas. Minha percepção vem de ver algumas pessoas usando e é o que acontece. Dizer que usa certo é diferente de usar.

Acho que cada um faz o que achar melhor, e colhe as consequências boas ou ruins. Eu espero poder colher as boas o mais rápido possível, mas ainda não consegui a não ser com muito esforço.

Faz sentido para você?

Espero ter ajudado.

Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

Você prograna com auxílio do Google? De algum outro site? É uma pergunta retórica.

Sim, utilizo ele pra tentar otimizar algo, perguntar sobre alguma outra abordagem dado um pedaço de código, muito por curiosidade. Ele ainda pode parecer inútil para muita gente, mas talvez elas estejam se esquecendo que a aplicabilidade pra avaliar seu código é só uma das milhares de coisas possíveis. Vamos imaginas alguns cenários:

1 - Uma criança, um idoso sendo alfabetizado pode muito bem colar um pedaço de texto e pedir para corrigir. Não é errado, ele faria o mesmo palavra a palavra no google.

2 - Uma pessoa com deficiencia visual pode usar ele de MUITAS formas, sem se preocupar com anúncios, elementos não acessíveis. Como pedir receita de algo, perguntar qualquer coisa sobre qualquer região ou qualquer assunto e receber uma explicação.

3 - Muitas outras coisas que ainda vamos descobrir.

O ponto é, TODA nova tecnologia que veio de algum modo facilitar, ajudar na inclusão nos estudos de alguém que tenha dificuldade, permitir que TODOS tenham acesso, parece incomodar MUITA gente. E são as mesmas pessoas que sempre reclamam das coisas novas.

Não devemos pensar somente em nós e em quanto sabemos sobre algo e supostamente não precisamos dela, mas sim em quem precisa. Em quem tem dificuldade, em quem essa ferramente pode libertar de um emprego e lhe dar outro melhor abrindo sua mente.

Eu uso bastante 2 ferramentas que são o chatGPT e o Phind onde consigo melhorar a performance dos meus selects e sub-selects de até media complexibilidade e aprender sobre o padrão SQL-92 com o ChatGPT e com o Phind consido sugestões de possibilidades de implementar a mesma coisa em determinada linguagem ou framework por exemplo "me mostre uma sidebar com efeito X em html5+CSS" e ele trás muita das vezes links e sugestões assim diminuindo bastante o tempo de pesquisa. Os dois geralmente trazem dicas de melhorias assim como exemplos de códigos.

Uso Copilot no PHPStorm, mas eventualmente uso o GPT online gratuito quando quero uma sugestão de como fazer uma lógica que eu nunca fiz antes ou tenho alguma dúvida de como um código de terceiro funciona.

Eu sou o cara que gosto de buscar a resposta por mim mesmo: stack overflow, docs da linguagem... Sou dos tempos de "abrir o Deitel" e achar a resposta.

Mas eu sei que o mundo não funciona mais assim. Estou tentando me adaptar ao Chatgpt rsrs

Não, já experimentei o copilot e já testei o chatgpt. Eles mais atrapalham do que ajudam. Outro dia eu fiz uma pergunta no próprio chatgpt sobre uma documentação da OpenAI (criadora do chatgpt), a documentação errou 3 vezes, e nas 3 quando confrontei a informação no próprio chat a IA pediu desculpas e se corrigiu (rs). Cheguei a comentar isso no meu linkedin (https://www.linkedin.com/feed/update/urn:li:activity:7064691110211653632/).

Em geral, é interessante usar para aprendizado e como informação complementar, nunca como informação / código final. Acrescento, sempre confirme as informações com documentações oficiais.

O Copilot se tornou ferramente indispensável para o meu dia a dia de trabalho, ele ajuda muito com sugestões de códigos, melhorias, ou até mesmo tarefas chatas. Por exemplo, quando ele identificada que estou seguindo um padrão, ele já vai sugerindo novas linhas de código naquele mesmo padrão, poupando muito tempo.

Claro, ele era muitas vezes também, assim como acerta. Então não tira que devemos realizar testes e também conferir tudo que ele está escrevendo.

Também uso o Chat GPT, faço perguntas para no sentido de pair programing, então peço sugestões ou para que ele identifique algum possível problema.

Vale lembrar que apesar do potencial, o Chat GPT precisa de contexto, então as vezes começo da seguinte forma:

  1. Adiciono todo o contexto para ele, até mesmo trechos de código se necessário, e falo para ele guardar e entender a situação.
  2. Depois de fato faço a pergunta que preciso, dado o contexto que inseri anteriormente.
  3. Procure fazer perguntas em inglês, mesmo que seu inglês não seja dos melhores, até mesmo escrito de forma errada, ele entende muito melhor do que português

Ele mais era do que acerta, mas com base nas respostas dele, já consegui pelo menos tirar uma dúvida de para onde ir, ou o que pesquisar, testar ou estudar.

Na minha opinião essas ferramentas vieram para ficar, e acredito que quem não se adaptar, vai ficar para trás, não tecnicamente. Mas talvez em fazer uma mesma atividade em menos tempo. Afinal essas ferramentas não fazem o seu trabalho e acredito estar longe disso, mas de fato poupam tempo e gasto de energia.

Tem um mês mais ou menos comecei a usar para ver diferenças menos óbvias de sintaxe entre diferentes compiladores de uma mesma linguagem (sou velho, programo em Delphi) e algumas coisas no Lazarus são diferentes. Acaba ajudando um bocado.

Por exemplo, tenho um conjunto de componentes TEdit (para entrada de texto) e quero que no evento onExit deles seja executada uma função que muda a cor de fundo do componente se ele estiver vazio. Escreveria a rotina em Delphi dessa forma:

procedure TForm1.varreEdits(Sender: TForm);
var
  C: Smallint;
begin
  with Sender do
  begin
    for C := 0 to ComponentCount - 1 do
    begin
      if (Components[C].ClassType = TEdit) then
      begin
        TEdit(Components[C]).OnExit := pintaFundo;
      end
    end;
  end;
end;

No envento ou Show do Formulário eu exacutaria essa rotina:

procedure TForm1.FormShow(Sender: TObject);
begin
  varreEdits(Self);
end;

E a rotina de "pintaFundo" ficaria:

procedure TForm1.pintaFundo(Sender: TObject);
begin
  if (TEdit(Sender).Text = '') then
    TEdit(Sender).Color := clRed
  else
    TEdit(Sender).Color := clBtnFace;
end;

No Lazarus eu teria que fazer a rotina "varreEdits" ligeiramente diferente:

procedure TForm1.varreEdits(Sender: TForm);
var
  C: Smallint;
begin
  with Sender do
  begin
    for C := 0 to ComponentCount - 1 do
    begin
      if (Components[C] is TEdit) then
      begin
        TEdit(Components[C]).OnExit := @pintaFundo;
      end
    end;
  end;
end;

E a rotina "pintaFundo" também ficaria ligeiramente diferente:

procedure TForm1.pintaFundo(Sender: TObject);
begin
  if (Sender is TEdit) and (TEdit(Sender).Text = '') then
    TEdit(Sender).Color := clRed
  else
    TEdit(Sender).Color := clDefault;
end;

A única coisa que não mudaria seria a rotina do "onShow" do formulário, que chama a "varreEdits". Quebra um galhão quando você tenta rodar um código, no caso ObjectPascal do Lazarus para o Delphi (ObjectPascal renomeado), e está tudo como deve mas não funciona por conta dessas diferenças "arcanas" entre os dois dialetos.

Acho que sou azarado, ou tenho uma completa inaptidão com prompts.

Por mais detalhado que seja o prompt, nunca consigo uma resposta satisfatória. Acho que o ChatGPT sempre me dá uma resposta de um estagiário ruim, porém confiante (diz as maiores barbaridades com convicção). Sempre vem algo mais ou menos, que eu tenho que completar ou então corrigir/reescrever completamente (isso quando ele não trava ou interrompe a resposta no meio da geração, o que costuma acontecer com uma frequência irritante).

Depois, por curiosidade, procuro pelo mesmo problema no Google e/ou vejo a documentação oficial, e acabo percebendo que teria sido mais rápido (ou seja, da forma que já faço hoje acabo sendo mais produtivo). Sei lá, a IA pra mim não tem ajudado muito não...

> Por mais detalhado que seja o prompt, nunca consigo uma resposta satisfatória. Poxa que pena. Geralmente eu não detalho muito. Eu simplesmente falo meu objetivo como: Preciso que me explique como posso fazer * Objetivo *. Analise o código abaixo. Mas também vou usando o próprio contexto do ChatGPT pra ir me ajudando, e aí sim detalhando. Acho que depende também do que é ne que tais perguntando. Esses dias mesmo usei o GPT4 para analisar uma Issue enorme no Github, junto de soluções na Internet que me trouxessem o que quero. Demorou, claro. Porém, usando o contexto dele, consegui criar uma solução, pedir explicação sobre ela e ainda ser algo que ficasse apropriado ao meu contexto. O que demoraria bem mais se fosse apenas eu lendo, abrindo o vscode e testando e testando até achar satisfatório. Pelo menos eu consigo ter mais ou menos na minha cabeça como montar o algoritmo sem precisar necessáriamente rodar ele para entender e prosseguir para uma próxima etapa. Vi que tem um Plugin que cria diagramas para ti, para entender, não cheguei a testar mas pode ajudar quem não consegue criar algo do tipo sozinho.
> *Demorou, claro.* Esse é o ponto, tem demorado tanto pra acertar que muitas vezes acabo preferindo não usá-lo. E em geral demoro bem menos quando não uso. Quem sabe em versões futuras eu mude de ideia, mas por enquanto, não tem me atendido bem.
Nesse caso em específico, não existia ainda solução na internet, por ser algo muito novo, que é a integração de Streaming para receber a resposta da OpenAI do GPT-3.5-turbo aos poucos. Mas em casos rápidos, eu usei para perguntar sobre como funcionava um componente em Flutter, ou porque deu um erro tal e daí enviava o trecho do erro. E ele já respondia. Como to assinando a plataforma, ela responde bem rápido também. Mas o GPT4 ainda demora responder, porém, ele é mais coerente com o que responde. Outro dia eu quis fazer uma pesquisa sociológica, onde pedi para o GPT4 pesquisar na internet alguns dados, me retornar ele e então fazer uma análise sobre. Levou uns 5 a 10 min acho. Porém, com certeza eu gastaria **bem** mais que 5 min para pegar diversos dados específicos na internet e criar uma análise de rascunho sobre elas.