A Face Oculta da Geração de Código por IA: Preparando Desenvolvedores Go para o Código de Máquina
Published:
•
Duration: 6:32
0:00
0:00
Transcript
Apresentadora: Juliana Santos
Convidado: Rafael Medeiros (Engenheiro de Software Sênior e especialista em Go)
Apresentadora: E aí, pessoal, bem-vindos de volta ao Allur, o seu ponto de encontro sobre tecnologia, Go, mobile e tudo o que há de mais quente no ecossistema de desenvolvimento. Eu sou a Juliana Santos e hoje a gente vai tocar num assunto que está na ponta dos dedos de todo programador, literalmente: a inteligência artificial na geração de código.
Apresentadora: E para mergulhar nesse tema comigo, eu recebo hoje o Rafael Medeiros. O Rafa é um cara que respira Go há anos, já passou por desafios imensos de escalabilidade e hoje atua como Sênior na área de infraestrutura. Rafa, seja muito bem-vindo ao Allur! É um prazer ter você aqui, cara.
Convidado: Valeu, Juliana! O prazer é todo meu. Esse tema é sensacional e, cara, muito necessário. Eu vejo isso todo dia no trabalho e nas comunidades: a gente está vivendo uma mudança de paradigma, mas o "jeito Gopher" de ser continua mais vivo do que nunca.
Apresentadora: Com certeza! E Rafa, vamos começar do começo. Muita gente acha que, como a IA escreve o código, a gente não precisa mais saber os fundamentos de cor. Mas você defende que o básico é mais importante *agora* do que era antes, né?
Convidado: Exatamente, Ju. A IA te dá a resposta, mas ela não te dá a consciência. Em Go, a gente preza muito pela clareza e pelo controle de recursos. Um exemplo clássico que eu vejo é com os *slices*. A IA gera um loop pra filtrar uma lista e vai dando `append` num slice vazio. Funciona? Funciona. Mas o iniciante não vê que, por baixo dos panos, o Go está realocando memória várias vezes, o que acaba com a performance. Se o cara entende o básico, ele olha pra IA e fala: "Ei, usa um `make` aqui com a capacidade pré-alocada". É a diferença entre um código que "roda" e um código que é profissional.
Apresentadora: Nossa, total! É aquela "ilusão de competência", né? Você vê o código ali, bonitinho, compila, e você acha que domina o assunto. Mas se der um erro de "file descriptor" vazando porque o iniciante não entendeu onde colocar o `defer file.Close()`, a IA não vai estar lá pra explicar o contexto do sistema dele.
Convidado: Perfeito! E tem outra coisa: a IA não tem contexto de negócio. Ela trabalha com padrões estatísticos. Eu sempre digo pro pessoal: use a IA como um tutor. Se ela te sugeriu um ponteiro num lugar estranho, pergunte pra ela: "Por que você usou esse ponteiro aqui? Quais as alternativas?". Se você não questiona, você não aprende, você só copia.
Apresentadora: Massa! E falando em questionar, tem a questão do estilo, né? Go tem uma filosofia muito própria — o "Go way". Eu sinto que às vezes a IA tenta empurrar padrões de Java ou Python pra dentro do Go.
Convidado: Cara, isso acontece demais! A IA adora criar aquele "código espaguete" cheio de `if-else` aninhado. Em Go, a gente usa muito as "guard clauses", as cláusulas de guarda. A gente trata o erro logo no início e segue o fluxo principal de forma linear. Quando eu reviso código gerado por IA, a primeira coisa que eu faço é dar uma "limpada" pra deixar com cara de Go. O desenvolvedor precisa ser o revisor rigoroso. A IA te entrega um rascunho, um "boneco". Quem dá o acabamento final, quem garante a manutenibilidade, é você. Se você aceita tudo o que o Copilot sugere, em seis meses seu projeto vira um pesadelo de manutenção.
Apresentadora: É o que a gente sempre fala: o código é pra humanos lerem, né? E por falar em pesadelo, Rafa, vamos entrar num terreno mais obscuro: segurança. Isso me preocupa muito.
Convidado: É pra preocupar mesmo, Ju. A IA foi treinada em repositórios públicos, e vamos ser sinceros, tem muito código ruim e inseguro por aí. Eu já vi IA sugerindo concatenação de string pra montar query SQL em vez de usar *prepared statements*. Pro iniciante, parece mágica: "Nossa, ele montou a query pra mim!". Mas ele acabou de abrir uma brecha de SQL Injection gigante.
Apresentadora: Caramba, isso é muito perigoso. E tem também aquela história das chaves de criptografia, né?
Convidado: Sim! Às vezes a IA sugere o pacote `math/rand` pra gerar algo que deveria ser seguro, quando em Go a gente deveria usar o `crypto/rand`. Ou pior: ela sugere uma API Key fictícia no código e o desenvolvedor iniciante deixa aquilo lá, ou pior, sobe pro Git achando que é só um exemplo. A responsabilidade final é 100% do humano. Se o sistema for invadido, você não pode culpar o modelo de linguagem.
Apresentadora: Com certeza, o CPF que está no contrato é o seu, não o da IA, né? (risos). Agora, um ponto que eu acho que é onde o Go realmente brilha é na concorrência. Goroutines, channels... Mas a IA parece que ainda dá umas caneladas nisso, não dá?
Convidado: Olha, Juliana, esse é o calcanhar de Aquiles. A IA é ótima pra lógica sequencial. Mas quando você pede pra ela paralelizar um processo em Go, ela frequentemente cria *race conditions*. Ela sugere usar uma variável global sendo alterada por várias goroutines sem um Mutex ou sem usar channels de forma correta. O iniciante vê as goroutines rodando e acha que está ganhando tempo, mas o programa está instável.
Apresentadora: E pra debugar isso depois é um sofrimento, né?
Convidado: Um horror! Por isso que eu bato na tecla: aprenda a usar as ferramentas nativas de Go, como o `go test -race` ou o `pprof` pra análise de performance. Quando a IA te sugerir um loop com `go process(task)`, pare e pense: "Isso escala? Eu preciso de um worker pool aqui?". A IA entrega o "funcional", mas raramente entrega o "eficiente" a longo prazo.
Apresentadora: Papo sensacional, Rafa. Pra gente caminhar pro fim, qual seria o seu conselho de ouro praquele desenvolvedor que está começando agora com Go e quer usar a IA sem se tornar um "programador de colagem"?
Convidado: O conselho é: seja o mestre da máquina, não o escravo. Se a IA gerou um código que você não entendeu 100%, não use. Estude linha por linha. Pergunte o "porquê" de cada escolha que ela fez. Use a velocidade dela pra prototipar, mas use a sua inteligência pra refinar. O seu diferencial no mercado não vai ser quem aperta o "Tab" mais rápido, mas sim quem sabe construir software de alta qualidade, seguro e que escala. A maestria técnica ainda é o único diferencial que dura.
Apresentadora: Que aula, hein! O objetivo não é só escrever código que funcione, mas construir algo de que você tenha orgulho de assinar embaixo. Rafael, muito obrigada por compartilhar essa visão com a gente. Foi um prazer!
Convidado: Eu que agradeço, Ju! Valeu pelo convite e um abraço pra todos os Gophers que estão ouvindo!
Apresentadora: É isso aí, pessoal! O Allur de hoje fica por aqui. A gente quer saber de você: como você tem equilibrado o uso da IA com o aprendizado dos fundamentos de Go? Deixa sua estratégia lá nos comentários das nossas redes sociais.