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

A face oculta da geração de código por IA

Recentemente no meu trabalho, o meu líder veio com uma discussão com o pessoal veterano/sênior da empresa. Eu, por estar em outra equipe, não sabia (até pq não tenho júnior para orientar).

O cenário q está acontecendo é o seguinte. Na nossa empresa a gente está usando IA para gerar código, cada um de seu jeito, é claro, pois queremos de alguma forma otimizar nosso trabalho. Até eu utilizo.
Os códigos gerados, de acordo com eles, são bons, poucos erros vão para o Code Review, e sempre entregam antes do prazo.

Mas se está bom, qual é o problema? Acho q já dei um Spoiler ali em cima… dev júnior. E não é pq ele está entregando algo ruim, o problema é: ele realmente está entendendo o q ele está fazendo?

Eu por exemplo, nunca recomendo iniciante usar IA para aprendizagem, pois sei q alta dependência faz ele não pensar em como construir, mas nunca cheguei a pensar em relação ao trabalho. Claro q isso deveria ser lógico, mas não tinha caido a ficha até meu líder comentar.

Um de meus colegas mandou esse post, não li tudo, mas parece q isso está se tornando um problema q poucos veem dentro da empresa.

Q os devs júniors estão usando a IA, mas não sabem tudo o q está acontecendo ali no código. Eles entendem o geral, até pq senão eles não estariam entregando a task, mas ao perguntar coisas bobas de certa parte do código, eles simplesmente não sabem responder (claro q não é tudo, oks? Não vamos taxar eles como burros).

  • Ai vem a discussão. Até em q ponto é válido usar IA para um dev iniciante durante o trabalho?
  • Até q ponto, nós, veteranos, precisamos limitar o uso de IA para eles no trabalho?
  • Não tem alternativas para não sermos mão de ferro a ponto de banir eles de usarem uma ferramenta q de fato é ok para aumentar a produtividade?
  • Como devemos agir/orientar eles ou até ensinar coisas?
  • Como fazer eles pensarem sobre o q estão produzindo, igual fazemos?
  • Como fazer eles terem o pensamento crítico e lógico q ganhamos qndo fazíamos "tudo na mão"?

E pra vcs iniciantes,

  • vcs tem noção do q vcs estão de fato codificando?
  • Vcs pesquisam de fato o q está acontecendo ali ou vc só aceita q aquilo é bom pq seu propósito é a entrega?
  • Vcs tem noção q não aprender certas coisas te limitam ou até postergam sua "senhoridade"?

Bom, são coisas a se pensar no cenário dentro do trabalho, pois a IA é algo novo q chegou pra ficar e mudar nossa maneira de trabalho. Mas do mesmo jeito q uma faca tem 2 gumes, pra gente a IA pode ser bom e ruim ao msm tempo, então é um ponto a discutir de como devemos conviver com ele.

Minha recomendação para os iniciantes

Uma coisa q acredito mto, é q as únicas pessoas capazes de construir sua carreira é vc msm. As empresas, colegas, amigos, influencers, etc, no máximo q conseguimos fazer é te orientar, mas quem deve lidar e aprender é somente vc.

Então assim, se vc utiliza IA, não vou falar para vc parar de usar, mas pense, tente responder o q está acontecendo ali, busque por informações sobre como aquilo funciona. Sua função principal nesse momento é aprender. Se não está aprendendo, suca carreira tende a ser mais difícil no futuro e qm cobrará seu erro é o tempo. Digo por experiência própria.

Tbm é recomendado fortemente aprender sobre algoritmos e estrutura de dados. Esses são um dos pilares para qqr programador. Não deixe de estudar teoria, mas tbm não deixe de praticar.

(Escrevi esse post meio q na pressa, então ignore q não escrevi de uma maneira mais formal)

Carregando publicação patrocinada...
6

Minha opinião é que existe uma diferença entre código gerado e código sugerido ou auto-completado. Quando eu programava em Java, constantemente gerava código via IDE para getters, setters, constructors, suite JUnit, etc. Não havia preocupação se o código estava ok ou não, porque já era algo validado e repetitivo.

O código sugerido por IA nunca sera 100% confiável e por isso sempre deverá ser lido, relido, depurado, testado e validado antes de ir para produção. E isso vai acabar gerando impacto na saúde mental de quem estiver lidando com isso, porque pessoas ansiosas terão dificuldade em lidar com essa situação.

Vou fazer um jabá aqui e citar meu post, em que falo sobre isso:

https://www.tabnews.com.br/teknolista/neobasic-2-precisamos-conversar-sobre-vibe-engineering

2

Eu sou um iniciante em programação, e usar IA para escrever código pronto me incomoda muito, por exemplo: Na faculdade eu fazia um projeto entregador (TCC) onde eu tinha que lidar com tasks que eu ainda não havia aprendido na faculdade e para poder entregar no prazo eu usava IA para entregar algo "OK", mas no fundo eu sabia que não estava aprendendo nada, ou aprendendo muito pouco e conforme fui usando isso praticamente 90% do projeto foi escrito por IA pois meus colegas também usavam... Conclusão, havia erros que acontecia no projeto quer sem uma IA para ajudar ninguém conseguia resolver, a documentação do código era feito pela própria IA e tudo era uma bagunça. Criar novas funcionalidades no projeto não era difícil, mas o díficil era modificar algo já pronto no projeto, pois era tudo uma bagunça.
Então eu me arrependendo bastante em usar IA para aprender a programar, sinto que fiquei dependente e que fazer esse "desmame" e uma dificuldade a mais no meu processo de aprendido como um estudante.
Ainda não sei qual será o impacto disso ao longo prazo, mas se no começo eu já percebi esses pontos negativos, imagina daqui cinco, dez anos...

2

Meus 2 cents,

Talvez seja um pouco de exagero - lembro da minha epoca como JR onde pegava o codigo C do senior da empresa, dava manutencao e nao entendia 80% do que estava ali (so fazia a task), comia pelas beiradas. Mas o fato de ter contato com este codigo, ve-lo funcionando e aos poucos ver a estrutura que um senior usava moldou meus entendimentos.

Mesma coisa com livros: usava muito codigo extraido dos livros, mesmo nao entendendo 100% do que estava ali - mas a convivencia e pratica derrubavam este muro.

O grande problema que vejo atualmente nao eh usar a IA em si - mas a qualidade do codigo que ela gera.

Um JR. exposto continuamente na sua formacao a codigo lixo vai acabar normalizando isso - ate porque nao tem outra fonte de informacao/comparacao.

E convenhamos: com os prazos insanos atuais, que equipe tem condicoes (de pessoal, tempo, grana) para ficar pajeando e treinando JR ? Aprender via IA eh a unica forma viavel (ate por conta de custo e tempo).

Meu ponto eh: a verdadeira divida tecnica que esta surgindo eh deixarmos os JRs. em uma formacao abaixo do que eles merecem/precisam.

Muito se fala se a IA vai tirar empregos - spoiler ! - nao vao tirar tantos assim. Mas fica a duvida: como serao os profissionais que deveriam estar sendo formados para direcionar/gerenciar a IA ?

Saude e Sucesso !

1

Não sou Dev, sou professor. A IA me ajudou a fazer projetos que facilitam minhas tarefas como professor. Mas percebi que a medida que fui me interessando em conhecer os fundamentos da lógica de programação tenho conseguido gerar prompts melhores e revisar parte do código que entendo. Sem a IA eu não teria o prazer de ver nenhum sistema "meu".

1

Como fazer eles pensarem sobre o q estão produzindo, igual fazemos?

eles tão andando com a multidão, nós não

líder veio com uma discussão com o pessoal veterano/sênior da empresa

A alta dependência faz ele não pensar em como construir.
Isso deveria ser lógico mas não tinha caido minha ficha até ele comentar

Ele mandou bem

É fogo na dayly
:)

1
1

A ideia não é banir o uso de AI em geração de código, até porque ela entrega códigos bem competitivo e elaborado, claro quase nunca 100% funcional ou que solucione a regra do negócio por completa. Eu particularmente ainda prefiro produzir meus códigos a mão da forma mais tradicional, contudo isso nunca me impediu de vê como as Ai solucionaria a questão e desta forma consigo perceber o quão são diferente os códigos e ao fazer-lo consigo reconhecer novos padrões e formas de solucionar a mesma questão umas chegam ser bem extraordinárias e outras bem ordinárias e isso tudo faz parte em meu aprendizado, normalmente quando não entendo um código gerado por uma Ai eu não o uso até que a propria Ai me explique como chegou a este código e depois de eu fazer varias considerações a respeito destas explicações decido por fim usar-lo ou descarta-lo. Se os futuros Devs tiver esta mesma preocupação de procurar solicitar a propria Ai explicações do codigo gerado ele não só entenderão o codigo gerado como poderá futuramente realizar manutenção e ate realizar alterações sem muita dificuldade.

1

Cara esse post me fez pensar muito, consegui o cargo de Junior recentemente e desde quando entrei na empresa como Trainee, sempre usei IA, especificamente Cursor, e todas as vezes que ele escrevia código pra mim eu sempre ficava com uma preocupação na mente, "Será que eu realmente estou aprendendo alguma coisa" porque eu não me sentia satisfeito de estar apenas digitando e aceitando que aquele código funciona e esta tudo bem, porem ao longo do tempo, fui aprendendo muita coisa porem nunca abandonando a IA, o hoje eu reconheço que sou totalmente dependente de apenas uma coisa Auto-Complete (na minha mente é a pior e fico triste por isso) porque assim eu não sei escrever um bom front-end, não é que eu não consiga, porem eu não sei escrever maravilhosamente bem, então eu sempre peço para a IA fazer, se precisar de algum ajuste, eu consigo arrumar manualmente ( já tive que fazer muitas vezes ) porem ainda assim eu nunca me dei o direito de deixar ela construir o back-end com prompt, sempre quis eu mesmo escrever o código da forma que eu entendia ( mesmo usando auto-complete ) eu escrevia com a minha logica de programação, lembro que tomei essa decisão logo quando uma vez eu estava realizando uma task, havia feito toda parte do código por conta própria, e bem no final, havia dado um erro, estava com pressa para entregar ( por pura ansiedade mesmo ) levei para o sênior avaliar, e aconteceu o pior de tudo, ele me perguntou sobre o código escrito bem na parte que a IA tinha escrito completamente tudo, na hora eu olhei assim ( não tinha nem prestado atenção no que ela tinha escrito ) e travei, fiquei gaguejando, desde então, sempre escrevi do meu jeito, porque assim sempre saberei explicar tudo, porem para SQL eu gosto muito de escrever e aprender, literalmente tudo, desde estrutura de tabelas, relacionamentos, criação e analise de consultas, quando eu não sei de alguma coisa, gosto de procurar no google mesmo porque assim aprendo realmente as funcionalidades das coisas, e eu fico feliz por isso, mesmo front-end sendo uma parte fraca minha eu ainda consigo fazer, agora back-end eu só procuro alternativas para IA, quando estou tentando implementar algo totalmente novo, ( e ainda assim fico com peso na consciência porque gosto de pesquisar sobre ) no final de tudo, eu realmente não sei se Auto-Complete é um problema tão grande assim, porque basicamente ajuda muito a você lembrar do que tem que escrever porem tem aquele problema que sem ela você trava em qualquer linha kkkk.

Bom se tiver alguma dica ou critica, manda bala, sempre bom escutar e entender.

1

O problema é que hoje se espera muita coisa para pouco tempo justamente por conta da IA. Nao há tempo para estudar todo o código cuspido pela IA, acho que hj em dia para um Jr isso é normal, o que nao pode ser normal é simplesmente copiar e colar sem nem pelo menos tentar entender 75% do código. Em relaçao a isso hj é mais facil q antigamente pq se pedir pra IA explicar o que tem ali ela explicara muito bem.

1

Acredito que depende muito do quanto a pessoa quer aprender. Dev Junior sempre vai pegar código de algum lugar, seja da IA ou do stack overflow ou de alguma outra parte do sistema. Faz parte do processo de aprender.
Eu uso bastante IA aqui, mas a maior parte das vezes prefiro usar a interface web para ir "discutindo" o código passo a passo, parte por parte, função por função e ir passando pro editor (ou quando estou com pressa pego aquele pedaço e peço pro cursor criar os arquivos/códigos do jeito que eu já validei antes. Dificilmente uso um "faça tal coisa" porque já vi que elas se perdem e sujam muito, depois Para refatorar dá o dobro do trabalho do que começar já certo e planejado.
Acredito que isso é uma boa prática pra ensinar pro Júnior, porque fazendo assim você entende cada passo, cada bloco e sabe exatamente que é do jeito que espera, na arquitetura que espera e no momento do bug sabe onde olhar.

1

O peoblema de nao aaber responder perguntas basicas sobre o aistema que estao desenvolvemdo com ajuda de i a. Para codar e mais pessoal , preguiça de ler , voce pode pedir pra i a desenvolver um sistema completo , vove pode pedir o readme , o pitch a ficha tecnica e documentacao , é. So ler , estudar oque a i a esta criando , usar a i a a seu favor é otimo mas temos que ter conhecimento sobre oque ela desenvolve para podermos nos explicar e saber oque fazer para escalar futuramente .
Minha opiniao , se estiver errado estou pronto para entender o ponto de vista de vices .