Semanas atrás, contei que fiz um teste técnico em Go sem saber Go, e quase virei Tech Lead Go em uma das maiores empresas LATAM. Agora, aqui tá o processo inteiro.
Primeiro, o que aconteceu ANTES de eu abrir o repositório do teste.
Eu não sabia nada de Go. Última vez que escrevi uma linha foi em 2015, era praticamente Hello World. Então antes de qualquer coisa, sentei com o Claude e fiz um crash course da linguagem. Sintaxe, concorrência, error handling, as diferenças fundamentais de TypeScript (meu mundo há 20 anos). Não pra virar expert em Go. Pra ter vocabulário suficiente pra saber se o que a AI ia gerar fazia sentido ou não.
Depois, a decisão da linguagem. O teste era livre, qualquer linguagem. A lógica dizia pra usar TypeScript, minha zona de conforto. Mas confirmei com a recrutadora: o padrão da empresa era Go e Java em todos os times. Escolhi Go, porque entregar algo sólido numa linguagem desconhecida conta uma história mais forte do que entregar o óbvio na linguagem que domino.
Aí veio a preparação de verdade. Tudo antes de escrever uma linha de código no projeto:
1. Criei um CLAUDE.md. O arquivo de contexto que a AI lê antes de qualquer tarefa. O que é o projeto, qual o stack, quais as restrições, e principalmente: o que o avaliador ia olhar. O enunciado dizia que error handling, testes e documentação eram critérios primários. Se a AI não sabe o que importa, ela otimiza pro que não importa.
2. Criei 6 skill files separados com a ajuda da AI. Eu não sabia Go, então pesquisei junto com o Claude: codigo idiomático, padrões de teste, data layer thread-safe, handlers HTTP, middleware, documentação, quality gate. Cada arquivo com padrões específicos de Go que a AI ia precisar. Não copiei de tutorial. Pesquisei, validei, iterei. A AI gerou rascunhos, eu revisei com olho de arquiteto.
3. Antes da techspec, mandei a AI fazer research. Primeiro, padrões de mercado pra esse tipo de API. Depois, como empresas grandes resolvem o mesmo problema. E depois, como a própria empresa resolvia isso na doc oficial. Tomamos alguma decisões e ai com isso, a AI gerou a techspec completa. Endpoints, domain model, dados realistas, contrato da API, e o por que que cada decisão foi tomada, e o mais importante: o que não entrou e o motivo.
4. Preparei os prompts de cada fase com antecedência. Nada improvisado. Cada fase tinha prompt dedicado, skill referenciado, e critério de validação antes de avançar. Testes primeiro (todos falhando), depois models, depois handlers, depois middleware, depois documentação, depois quality gate. (fiz dessa forma, em "cascata", pois era um projeto pequeno).
5. Documentação como parte do processo, não como afterthought. Cada decisão de arquitetura virou um ADR: por que usar store in-memory e não banco, por que flat package e não dividir em camadas, por que o endpoint de compare retorna status code por item. E mais importante: o que ficou de fora e por quê. Database real? Over-engineering pro escopo. Docker e CI? Não pediu. Auth? Não pediu. Pagination e sorting? Retorno marginal pro que estava sendo avaliado. Documentar o que você escolheu NÃO fazer mostra mais maturidade do que documentar o que fez, mostra que você conhece os trade-offs.
6. Quality gate no final. Formatação, análise estática, race detector, coverage acima de 70%, documentação em todo símbolo exportado. Checklist objetivo, não "roda e vê se funciona".
O resultado: 35 testes passando, zero race condition, código que fez eles cogitarem uma vaga de Tech Lead em Go.
Isso não foi vibe coding. Em nenhum momento eu disse "faz uma API em Go pra mim". Foram horas de preparação de contexto antes de pedir qualquer coisa. Crash course, pesquisa de padrões, documentos de contexto, skills técnicos, techspec baseada em research, prompts faseados. Cada prompt era cirúrgico, alimentado por documentos que eu dirigi. Cada commit contava uma história.
A AI não sabe o que você quer se você não sabe explicar o que quer. E explicar bem exige experiência. 20 anos de arquitetura de software viraram os documentos que fizeram a AI entregar código de produção numa linguagem que eu não domino.
É por isso que a barreira de código ainda não morreu.
Fiz um teste técnico em Go sem nunca ter usado Go profissionalmente. E quase virei Tech Lead por causa dele.
Eu tinha voltado pro mercado em fevereiro. Apliquei pra uma dezena de vagas. Uma delas, era product lead (basicamente coordenador de engenharia), e eu tinha que fazer um teste técnico em qualquer linguagem.
Escolhi Go, pois era a linguagem que a empresa usava. Só que detalhe: eu tenho 0 experiência com Go, estudei em 2015, mas nunca apliquei e já não lembrava nada.
Como a vaga PEDIA pra usar AI, eu fiz o seguinte: criei um sistema de contexto simples, algumas rules, algumas skills. Algo realmente bem estruturado.
Fiz o teste. E ele ficou tão bom, que eles estavam cogitando me dar uma vaga de Tech Lead em Go hahaha.
Acabei não avançando em nenhuma das duas. Mas foi interessante ver como eu consegui produzir um teste técnico tão bom sem experiência com Go, apenas sabendo usar AI (e claro, com meu conhecimento de arquitetura de software, sem isso não rolaria).