Executando verificação de segurança...
9

Só sei trabalhar com o ChatGPT, praticamente...

Bom, falando novamente sobre o assunto de "iniciantes em programação usando IAs", mas acho que meu caso é mais peculiar. Trabalho com Dev front há mais ou menos 10 meses. Os projetos que pego para fazer aqui são quase 100% em Laravel.

Desde que comecei meu estágio nesta empresa, sempre usei o ChatGPT. No início, devido a ansiedade, usava para dar conta rápido das tasks. Acontece que o tempo virei um "prompter profissional". Para terem ideia, eu tenho documentos destinados a criação de "templates de prompts".

Meu processo é:

  • Após pegar a task, crio um mini plano por escrito (tasks grandes).
  • Tento entender no projeto como funcionam os componentes responsáveis para a task.
  • Pego meus "templates de prompts" e monto o contexto de explicação e perguntas, criando o prompt final.
  • Depois de enviado ao ChatGPT, analiso a resposta e vou implementando aos poucos.
  • Se houverem erros e eu ver que a resposta chegou bem perto do que queria, tento eu mesmo arrumar ou continuar a conversa explicando o erro (sempre mantendo o contexto, para o Chat não delirar).
  • Se o Chat "se perder", eu inicio outra conversa com o mesmo prompt. Aqui está o grande truque: a resposta varia mesmo com prompts iguais, portanto eu analiso os pontos fracos do Chat e vou melhorando o template do prompt atual.

Assim, já resolvi vários problemas que fiquei horas ou dias tentando "na raça". Comecei a ficar preocupado, pois apesar de dar conta tranquilo do que me é passado, acho que não consigo trabalhar direito sem o Chat. Sou chamado aqui de "DevGPT kkkkkkk". Muitas vezes me perguntam as coisas e eu falo: "eu não sei de cabeça, mas sei como perguntar". Alguém passando por algo parecido?

Carregando publicação patrocinada...
7

Pelo seu relato você não está usando o GPT para melhorar seu fluxo, pelo que percebi ele é sua muleta atualmente e isso é perigoso.

No futuro não muito distante, acredito que IAs como essa poderão ser integrados mais ou menos como você tá usando. Porém, não me parece que você tenha experiência para definir se o que está sendo gerado é funcional, seguro e de fácil manutenção. Pois uma coisa que o GPT costuma fazer é gerar códigos com vários problemas nesse sentido.

Não recomendo nem GitHub Copilot para quem é júnior pq é comum começar a terceirizar decisões e depois de um tempo não sabe nem explicar o código gerado.

Meu conselho é você começar a reduzir esse uso drasticamente.

1

Vou começar aos poucos ver o que estou pedindo, mas que poderia ter feito sozinho. Eu tenho a impressão de que pergunto muita coisa que já sei e dou conta, mas peço mesmo assim por insegurança e/ou preguiça de lidar com sintaxe de linguagem, estrutura de organização de framework e afins; talvez eu meio que tenha repulsa de lidar com as "pequenas engrenagens" e goste de ficar na parte lógica de "mais alto nível" da aplicação.

Eu só não faço caquinha com relação a segurança e manutenção porque meio código sempre revisado aqui e também porque sempre estou usando um projeto parecido da empresa como referência.

5

Eu acho que o uso da inteligencia artificial é o começo de uma nova realidade, quase uma programação em par, que sem dúvida e se bem usado, agrega muito e se torna um diferencial. Eu comecei a programar final dos anos 80, GWbasic e Pascal, foram meu inicio. E eram tempos dificeis, sem tantas informaçòes, os livros para quem morava em cidades maiores, eram acessiveis, já para outros lugares.... Depois vieram as BBS, depois internet, etc. Mas enfim, o importante é evoluir, todos somos programadores juniors, a todo momento temos que evoluir, seja fazendo pergu tas ou dando respostas. E toda maneira de aprendizado é válida, nunca perder o senso critico é importante, mas srm problema algum usar tecnologias que te ajudem.
Na area de TI, tem muita gente que se baseia no seu universo e o resto nada presta, sempre existiu e vai existir os radicais de plantao, que julgam baseado nas suas verdades e seus conhecimentos.... Sem ter visao do todo.
A turminha que fala mal do Windows, do Mac, do Linux, ama o Android e odeia o iOS. Que vive falando mal das linguagens, ou que sempre programou procedural e acha OOP uma droga, ou que conhece OOP mas acha que quem programa é um dinossauro.
Enfim.... Tem que se libertar, e focar no que interessa e o que te ajuda. Seja um livro, seja o Stack Overflow, seja um amigo, seja o ChatGPT, as vezes em tecnologia, dependendo do desespero, ate no sobrenatural se acredita(para descontrair).
Entao, esta certissimo, use o chatgpt, so nao perca o senso critico, pense como um amigo, vai te falar coisas boas e coisas idiotas... Investigue, analise.
Parece os radicais que vivem falando mal de usar frameworks e agilizar o trabalho, etc.
Lógico que é muito importante entender, como funciona... Mas em certo momento é usar mesmo....
A mesma coisa dos falsos programadores que usam 1 milhao de linguagens... Tipo, basta saber 1 o resto eu programo em meia hora...
Um hello world todo mundo faz.... Em C, C++, Rust, Python, Java, C# e outras. Mas ter fluencia de verdade é o tempo de uso... Cada linguagem tem seus detalhes... Seja paradigmas, estilos, etc...

Enfim.... quero dizer, todo mundo é junior no fundo, tem que aprender toda hora..... No final do dia, é o que você produziu e o que aprendeu... Os bla bla, so no ego mesmo...
Continue seus estudos, evolua, srja com chatGPT, seja com amigos, seja no Tabnews... Desligue seus ouvidos para ruidos, falsos seniores e os que nem conhe em tua historia, tuas necessidades.... Use tudo que te ajudar e você entenda que é correto e honesto.
Humildade, foco, perseverança e vontade de aprender... As vezes e na grande maioria das vezes a luta é so nossa.
Talvez tenha fugido um pouco do assunto, mas como usar IA hoje, para muitos parece um pecado... Resolvi expor meu ponto de vista.
Boa sorte em tua carreira e teus estudos.

2

É engraçado como o ser humano gosta de negócio de time e defender ego né? (eu não me tiro dessa). Vejo isso em outras bolhas, como a de artes, por exemplo e aqui no T.I acontece extamente a mesma coisa... é impressionante... comportamento idêntico.

As vezes eu me sinto meio peixe fora dagua por ver o pessoal parecer "voar" e dominar trocentos assuntos, enquanto tô usando IAs só querendo criar aquela função específica e fim de papo. O que me fascina são as possibilidades de solução para o cliente em vez das "tecnicidades" das tecnologias.

Vc tendo tendo todo esse tempo de estrada e vendo esse lado de comportamento no aprendizado... sem palavras. Seu comentário agregou demais na minha jornada. Vc me lembra um professor q tive na facul.

Um forte abrss

2

É assim mesmo... Nada de peixe fora d'água, use os métodos que tem disponivel e procure aprender sempre. Sempre deixe seu lado pesquisador se desenvolver.
Eu estou na fase de paz, nao me foco em debater certo e errado... Cada um tem suas necessidades, seus objetivos e seu tempo.
O que mais tem é gente que terminou de ler um livro ou ler um artigo no Google, e olhar o codigo feito por um programador e falar... Que merda!!!
Acho isto ridiculo.... Primeiro o desrespeito com o colega, segundo, quem é o camarada para criticar de forma tao destrutiva, o cara criou um sistema operacional? É o Denis Ritchie??? Linus Torvalds??? Na maioria é um que vai para a internet tentar vender a ideia que é um genio que a vida nao ajudou....
Como falei, você esta certo evoluindo, estude, use o chatGPT como uma fonte de informacao e apoio.
E liga o "se lasque" para quem critica, seus problemas, suas soluçoes.... Ninguem sabe o que você passa ou precisa.
Aquele caso do programador, que fez um "codigo esquisito", que as vezes nem é. Ninguem sabe a circunstancia..

  1. Era uma emergencia e precisar entregar, nao tinha tempo(acontece toda hora no mundo corporativo)
  2. Falta de experiencia mesmo, srja na linguagem, seja no raciocinio logico, pode ser novato..
  3. Pode ter sido preguiça... ( acontece...) Tem dias ruins, a gente fica dando pgdown e pgUp odia todo, ta sem inspiracao, acontece....

Poderia enumerar mil coisas.... Resumindo, gambiarra todo mundo faz... E quem disser que nao fez é mentiroso.
O problema que a gambiarra do outro é sempre pior que a nossa.

Mas é isto mesmo, parabens por levantar o tema, para termos a oportunidade de discutir.

Abraços.

2
2

Eu concordo radicalmente com o user1 sobre a preocupação com a dependência do ChatGPT. No entanto, gostaria de trazer outro ponto de vista para esta discussão. Ser um 'DevGPT' pode ser perigoso e motivo de piadas, mas também pode abrir muitas portas. A habilidade de interagir eficientemente com ferramentas de IA certamente será cada vez mais valorizada. Há quem diga que engenheiro de prompt vai ser uma profissão por si só, e eu não duvido. Contudo, é fundamental ter cautela.

A primeira coisa a fazer é não ficar refém da OpenAI. Explore como você pode utilizar modelos de IA menores de forma eficiente. Estude como essas ferramentas funcionam de verdade. Leia os papers, rode os modelos do Hugging Face.

Quanto ao desenvolvimento, é verdade que ferramentas de IA podem ter limitações severas para gerar código, mas são extremamente úteis para aprender novos conceitos, encontrar referências, gerar boilerplate e até mesmo discutir e sistematizar decições de arquiterura.

Portanto, tenha muito cuidado ao se tornar um 'DevGPT'. No entanto, se usado sabiamente, isso pode transformá-lo em um profissional excepcionalmente capacitado. A chave é usar as ferramentas de IA como complementos, não substitutos do seu próprio conhecimento e habilidades.

2

Grande ponto em citar a questão de não depender da OpenAI. Eu fiquei fascinado com as possibilidades de prompts desde a primeira vez que pus minhas mãos no ChatGPT que nem procurei direito sobre como utilizar outros modelos no meu fluxo.

Eu sou uma pessoa muito sortuda, pois meu trabalho passa pela revisão de um Dev Mega Blaster FullStack que manja demais de arquitetura de projeto e código limpo. Portanto o que faço no Chat, passa pela revisão dele. Isso sem contar que pego muitos projetos dele como referência quando vou montar meus prompts. Do contrário acho que estaria construindo uns projetos "bombas relógios" por aí kkkkk.

Esse final de semana vou cair de cabeça e procurar outros modelos. É nóis!

2

Cara,eu tou passando por algo, mais ou menos parecido. veja; eu tenho um certo conhecimento na área de programação (mas bem limitado), muuuito mesmo. sou mais um entusiasta de tecnologia, mas quero muito aprender a programar em um nível intermediário pelo menos. Mas acontece que, eu sempre fui da área criativa, sou muito bom com desenho, cores, imaginação, essas coisas... porém, quando chega na parte lógica, eu percebo que não tenho muita habilidade; por exemplo:
Eu usei o chatGPT para formular problemas de programaçã de nível médio para júnior (para que eu pudesse treinar meu conhecimento em lógica de programação).
A QUESTÃO:
Crie um programa que receba um texto como entrada e conte quantas palavras únicas existem no mesmo. Considere que as palavras são case-insensitive, ou seja, "Programação" e "programação" devem ser tratadas como a mesma palavra. Além disso, remova pontuações ao fazer a contagem. Por exemplo, em "Olá, mundo! Olá, programação.", as palavras únicas seriam "olá", "mundo" e "programação".

Eu até tenho uma ideia de como resolver, sei que devo trabalhar com strings e arrays e seus parâmetros, mas chega uma hora que eu não sei o que fazer (tudo bem que eu não conheço a fundo os métodos de uso de arrays e strings), mas mesmo pesquisando eu sinto que não consefuiria resolver estabelecendo a lógica de programação. Depois que eu pedi ao chatGPT para fornecer a resposta, eu percebi definitivamente que nunca pensaria naquilo. E então eu fico me perguntando, sera mesmo que programação é para mim?

3

Faça a seguinte metodologia, escreva cono comentário, em português, os passos que você vai identificando que precisa fazer. Cada passo uma linha. Após isso tente ir identificando o passo seguinte até o objetivo.
Depois você vai estudar na doc ou pesquisando mesmo, como resolver cada passo e faz o código abaixo de cada comentário. Isso ajuda muito a não se perder.
Caso você trave na identificação dos passos seguintes, pule para resolver os que já identificou. É tentando que se aprende.
E sim, ai você vai usar metodos para percorrer array e manipulação de string. Tente que consegue

2

Wow,é bem assim que eu faço (fiz). mas quando eu chego no impasse, e vou ver a resposta, tem várias linhas que eu fico pensando (mas como assim?). São umas coisas que parecem que não faz parte da sintaxe da linguagem e aí eu penso, "por que ele escreveu isso?". Por exemplo;

for (const palavra of palavras) {
    palavrasUnicas[palavra] = true;
}

eu não entendo a parte que ele inicializa a variavel palavra (dentro do loop). quero dizer, como essa variável interege com o restante do código?

código completo:

function contarPalavrasUnicas(texto) {
    // Remover pontuações e converter para minúsculas
    const palavras = texto.toLowerCase().replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g, '').split(/\s+/);

    // Criar um objeto para armazenar as palavras únicas
    const palavrasUnicas = {};

    // Contar as palavras únicas
    for (const palavra of palavras) {
        palavrasUnicas[palavra] = true;
    }

    // Retornar o número de palavras únicas
    return Object.keys(palavrasUnicas).length;
}

// Exemplo de uso
const textoExemplo = "Olá, mundo! Olá, programação.";
const resultado = contarPalavrasUnicas(textoExemplo);
console.log(resultado);

as outras linhas eu compreendi, mas é isso que me deixa pensativo; será que eu conseguiria executar uma lógica assim, toda certinha, "redondinha"?

A mesma coisa nesse código abaixo, eu não consigo entender a linha do laço (FOR), tipo; a parte {adicionaraoconjunto(...)} essa parte é uma exoressão do javascript ou é só uma frase de multipla escolha?

function contadorPalavrasUnicas() {
    // Passo 1: Entrada
    let texto = prompt("Digite o texto:");

    // Passo 2: Preprocessamento
    texto = converterParaMinusculas(removerPontuacoes(texto));

    // Passo 3: Divisão em Palavras
    let listaPalavras = dividirEmPalavras(texto);

    // Passo 4: Contagem de Palavras Únicas
    let conjuntoPalavrasUnicas = new Set();
    for (let palavra of listaPalavras) {
        adicionarAoConjunto(conjuntoPalavrasUnicas, palavra);
    }

    // Passo 5: Saída
    console.log("Número de palavras únicas no texto:", tamanhoDoConjunto(conjuntoPalavrasUnicas));
}

function converterParaMinusculas(texto) {
    // Implementar a conversão para minúsculas
    return texto.toLowerCase();
}

function removerPontuacoes(texto) {
    // Implementar a remoção de pontuações
    return texto.replace(/[^\w\s]/g, "");
}

function dividirEmPalavras(texto) {
    // Implementar a divisão do texto em palavras
    return texto.split(/\s+/);
}

function adicionarAoConjunto(conjunto, elemento) {
    // Implementar a adição de um elemento ao conjunto
    // (tratando o elemento como case-insensitive)
    conjunto.add(elemento.toLowerCase());
}

function tamanhoDoConjunto(conjunto) {
    // Implementar a obtenção do tamanho do conjunto
    return conjunto.size;
}

// Chamar a função principal
contadorPalavrasUnicas();
6

eu não entendo a parte que ele inicializa a variavel palavra (dentro do loop). quero dizer, como essa variável interege com o restante do código?

Vc não entendeu o for (const palavra ou a linha palavrasUnicas[palavra] = true? Enfim, vamos lá:

Este é o for..of (ver documentação), que é basicamente uma forma de iterar pelos elementos de qualquer objeto iterável.

No caso, a cada iteração, a variável palavra será um dos elementos do array palavras.

Já a linha dentro do loop está criando propriedades dinâmicas no objeto palavrasUnicas.

Por exemplo, se o array palavras tiver as strings "abc", "cde" e "abc", o loop fará o seguinte:

  • na primeira iteração, palavrasUnicas terá a propriedade "abc" criada (e seu valor será true)
  • na segunda iteração, palavrasUnicas terá a propriedade "cde" criada (e seu valor será true)
  • na terceira iteração, palavrasUnicas terá a propriedade "abc" setada - lembre-se que ela já existia, pois foi criada na primeira iteração - e seu valor será novamente setado para true

No fim, palavrasUnicas terá duas propriedades, chamadas "abc" e "cde", ou seja, uma para cada palavra única.


Já no último código, adicionarAoConjunto é uma função que foi criada logo abaixo:

function adicionarAoConjunto(conjunto, elemento) {
    // Implementar a adição de um elemento ao conjunto
    // (tratando o elemento como case-insensitive)
    conjunto.add(elemento.toLowerCase());
}

Mas eu acho esse código desnecessariamente complicado. Primeiro que não precisa de tantas funções assim, segundo porque ele converte para minúsculas duas vezes: uma na função converterParaMinusculas e outra em adicionarAoConjunto, o que é redundante.

E claro, a definição de "palavra" pode variar muito e depende do contexto, e isso influencia em como o programa vai lidar com isso. Por exemplo, esse código não considera caracteres acentuados: teste com a string olá ol e ele vai dizer que só tem uma palavra única. Ele também considera que qualquer sequência de letras, dígitos e _ são palavras (teste com oi_ 123, vai considerar que são duas palavras).

Enfim, eu faria assim:

function contadorPalavrasUnicas(texto) {
    // palavra = sequência de 1 ou mais caracteres latinos
    return new Set(texto.toLowerCase().match(/\p{Script=Latin}+/ug)).size;
}

console.log(contadorPalavrasUnicas('olá, OLÁ, ola!!!')); // 2

E só: a regex considera uma sequência de 1 ou mais letras latinas, incluindo acentos. Não usei \w porque ele também considera dígitos e _. E usar \s restringe a espaços, mas ignora sinais de pontuação (outra falha do código original).

match retorna um array com as palavras, depois eu crio o Set (que é uma estrutura que por default elimina os valores repetidos) e retorno o tamanho dele. Não precisa de tantas funções assim (por exemplo, uma só pra retornar o tamanho, é um exagero).

Não quis complicar a definição de palavra, considerei apenas qualquer sequência de letras latinas, incluindo acentos. Também não considerei palavras compostas ou com apóstrofo (ou seja, "beija-flor" será contado como duas palavras, "gota d'água" serão três e não duas, etc).


Enfim, isso serve pra mostrar que o ChatGPT pode até ajudar, mas no fim ainda tem que analisar o que ele te respondeu. E se não souber o que está fazendo e só aceitar cegamente o que ele te dá, nem sempre o resultado será bom.

Eu vejo ele como um estagiário esforçado, porém ainda limitado. Tem que conferir o que ele faz, sempre.

1
1

Essa de escrever um pseudo código é ótima. Eu até uso o pseudo código no meu prompt do Chat quando travo e peço para ele avaliar se a solução é boa e continuar a partir dali, se for.

1

Eu já pensei algumas vezes se programação seria para mim. Amo criar as soloções usando um fluxo de lógica, porém os detalhes específicos das tecnologias eu tenho meio que um ranço. Sinto que estou perdendo tempo e que deveria estar focando na criação da solução "geral" do problema. E outra: como frontend amo também criar soluções visuais, tanto que já dei vários pitacos aqui de como melhorar as prototipações das UI's e o pessoal abraçou.

2

Olá, acho que utilizar o gpt como uma ferramenta muito adequado, costumo usar para facilitar algumas pesquisas, as vezes não consigo montar uma pesquisa direta para encontrar a solução do problema e pesquisar pelo gpt me ajuda nisso. por um tempo pensei que era um devGPT e comecei a investir mais no meu desenvolvimento, hoje anoto soluções usadas no notion, documentando passos que já dei e isso me agregou muito, o gpt continua presente no meu dia a dia mas agora apenas para complementar conhecimento, não para fazer por mim e isso aumentou ainda mais minha produtividade, estou entregando com muito mais qualidade, no tempo e com segurança.

mas ainda concordo que utilizar o gpt sendo Junior pode trazer alguns prejuízos como a dependência.
resumindo, invista no seu desenvolvimento, no início demorar pra resolver algo é necessário pra vc entender como funcionam as coisas. conforme vc for entendendo, tudo vai ficar mais fácil, e o gpt entra como um completemento

2

Ué, mas saber pesquisar é o que Dev sabe fazer... Se você sabe a base da teórica e tem senso crítico com o código que o GPT te passa, vc ta fazendo tudo certo!

1

Fala GuiOS. Acho muito válido esse fluxo de trabalho. Você está usando uma ferramenta para otimizar suas entregas e isso só traz benefícios. Se não estiver disponivel, é só usar o fluxo tradicional de pesquisa na rede.

Como mencionado, você possui templates, e isso agrega qualidade no desenvolvimento.

A idéia é trabalhar com o que temos de melhor disponível no momento. A cada dia surgem novos recursos, vamos incorporando ao portfólio, trazendo resultado.

Gosto muito de usar os GPTs nos meus projetos, complementando e simplificando várias soluções.

Um bom ano pra vc! Bons projetos e bons códigos!

2

Fala Thiago! Vou focar em otimizar esse fluxo que falou, apesar da preocupação em aprender os detalhes mais específicos das linguagens, frameworks e padrões de projetos. Vlw!