Entrevistas
Itamar Friedman, CEO & Co-Founder of CodiumAI – Série de Entrevistas

Itamar Friedman, é o CEO e Co-Fundador da CodiumAI. A Codium se concentra no lado da “integridade do código” da geração de código — gerando testes automatizados, explicações de código e revisões. Eles lançaram pesquisas sobre a geração de soluções de código para desafios de programação competitiva que superam a Google DeepMind.
Quando e como você inicialmente se interessou por IA?
Em 2009, eu trabalhava na Mellanox (Adq. pela NVIDIA) e estudava engenharia elétrica. Percebendo que muitos dos processos de desenvolvimento tediosos na Mellanox poderiam ser automatizados por algoritmos de aprendizado de máquina, eu mudei meus principais estudos para otimização e aprendizado de máquina e completei um mestrado nessa área. Em 2010, eu já estava trabalhando em um projeto de aprendizado profundo (com uma rede neural de 3 camadas) que estabeleceu as bases para meu tempo na Alibaba, onde eu liderava um grupo de pesquisa especializado em busca de arquitetura neural, treinamento de modelos e construção de ferramentas AutoML para desenvolvedores. Por volta de 2021, eu não me envergonhava de chamar nosso trabalho de “IA”, pois os grandes modelos de linguagem se tornaram ferramentas poderosas, e minha imaginação do que poderia ser alcançado com eles cresceu.
Sua startup anterior, Visualead, que se concentrou em visão computacional, foi eventualmente adquirida pelo Alibaba Group, o que era essa startup e quais foram algumas das suas principais lições aprendidas com essa experiência?
A Visualead se especializou em digitalizar logotipos, códigos QR e tudo o que estivesse entre eles, incluindo a segurança e ocultação de informações em imagens para permitir transações e engajamento P2P seguros. Na Visualead, nós executávamos algoritmos em dispositivos móveis desde 2012, incluindo modelos. Era um desafio e um truque fazer isso naquela época, e aprendemos muito sobre a construção de modelos eficientes e guardrails em torno dessas criaturas estatísticas.
Até hoje, eu ainda aplico lições aprendidas naquela época aos projetos atuais que empreendo – por exemplo, quando construímos a ferramenta de geração de soluções de código de código aberto AlphaCodium, introduzimos o conceito de Engenharia de Fluxo e aplicamos esse conceito para construir um fluxo para proteger a saída dos modelos LLM.
Pode compartilhar a história de gênese por trás do lançamento da CodiumAI?
Na Alibaba, eu vi de perto como um bug no código poderia levar a um problema de um milhão de dólares e os desafios que os desenvolvedores enfrentavam para manter a geração de código sem sacrificar a qualidade ou a integridade. Esse problema persiste, e hoje, o código de baixa qualidade é atribuído a um problema de um trilhão de dólares que continua a crescer.
A equipe da CodiumAI se especializa em construir ferramentas impulsionadas por IA em escala e está determinada a enfrentar os pontos de dor que os desenvolvedores enfrentam. Com o nascimento de novas capacidades LLM e IA, entendemos que essa era nossa oportunidade de construir uma plataforma de integridade de código holística para ajudar equipes ocupadas como a nossa a reduzir bugs e mitigar outros problemas de integridade. À medida que mais e mais código era gerado por IA, o problema de benchmarking desse código e garantir que funcionasse como pretendido se tornou um ponto de dor crítico e um que estávamos determinados a resolver. Construir ferramentas impulsionadas por IA em escala e, portanto, benchmarking é um conceito essencial para nós.
Como um grupo de desenvolvedores experientes, entendemos; lidar com tarefas tediosas, como testes e revisões de código, pode ser frustrante. Estamos altamente motivados a permitir que equipes ocupadas aumentem e gerenciem sua integridade de código.
Pode descrever que tipos de análise não triviais a CodiumAI realiza no código e como isso apoia os desenvolvedores na melhoria da qualidade do código?
Até recentemente, as ferramentas existentes disponíveis para os desenvolvedores ofereciam pouco valor – mas com a chegada das capacidades LLM (ChatGPT, Copilot, etc.) as capacidades estão começando a superar as expectativas, e o apoio disponível para os desenvolvedores não é mais trivial.
O Agente de Codificação Codiumate desenvolvido pela CodiumAI oferece aos desenvolvedores ferramentas únicas para melhorar seu fluxo de trabalho e aprimorar a geração de código. O Codiumate simplifica o processo de desenvolvimento fornecendo assistência automatizada em todo o processo de codificação. Usando os trechos de código existentes que um desenvolvedor humano destaca em seu ambiente, o agente pode automaticamente criar um plano de desenvolvimento fácil de seguir e coeso, escrever código de acordo com esse plano, identificar código duplicado que o desenvolvedor possa querer usar ou remover, criar documentação e sugerir testes para garantir que o código funcione corretamente antes de ser implantado em um ambiente ao vivo.
O Codiumate fornece aos desenvolvedores uma análise comportamental aprofundada – iluminando possíveis comportamentos e ramificações que o código em teste abrange. Isso permite que o desenvolvedor examine o código gerado e crie testes que (ramificação) cubram todos os comportamentos, melhorando assim o código mais do que se o desenvolvedor tivesse considerado todos os casos possíveis sozinho.
Quais funcionalidades específicas o Agente de PR fornece para a análise de solicitações de pull e como ele simplifica o processo de revisão em plataformas como GitHub e GitLab?
O Agente de PR oferece uma variedade de funcionalidades projetadas para aprimorar e simplificar o processo de análise e revisão de solicitações de pull em vários provedores de git.
A Geração Automática de Descrição de PR gera automaticamente descrições detalhadas e abrangentes para solicitações de pull. Essa funcionalidade aborda problemas comuns em que os desenvolvedores podem omitir descrições detalhadas de PR devido a restrições de tempo ou negligência. Com descrições automatizadas, cada PR é equipado com contexto suficiente, tornando mais fácil para os revisores entender as alterações sem precisar decifrar extensivamente as diferenças de código.
Também construímos uma revisão automática de PR para fornecer aos desenvolvedores uma visão geral abrangente da PR, permitindo que eles identifiquem possíveis problemas, como bugs, vulnerabilidades de segurança ou cheiros de código, proativamente. Esse feedback preventivo permite que os desenvolvedores façam correções antes do processo de revisão, melhorando assim a qualidade do código que atinge os revisores.
Aproveitando a IA, sugestões de código automatizadas também podem sugerir melhorias ou implementações alternativas diretamente na interface da PR. Essas sugestões podem ser otimizações, conformidade com padrões de codificação ou até melhorias arquitetônicas, ajudando a elevar a qualidade da base de código de forma incremental.
O Agente de PR suporta numerosas opções para personalizar os comandos que ele oferece. Uma das opções de personalização mais úteis é o uso de rótulos personalizados para melhorar a organização e gerenciamento de solicitações de pull em plataformas como GitHub e GitLab. Essa funcionalidade contribui para a eficiência operacional e clareza dos processos de desenvolvimento e revisão.
Como a CodiumAI gera testes significativos e o que torna esses testes mais eficazes do que os testes unitários padrão?
Nós aprimoramos a geração de testes digitalizando repositórios de código para trechos de código relevantes relacionados ao código em teste. Empregando prompts de cadeia de pensamento para mapear todos os comportamentos de código possíveis, incluindo caminhos típicos e casos de bordo, nossa abordagem utiliza busca de contexto específico e prompts personalizados adaptados a diferentes linguagens de programação, incorporando conhecimento de especialista em domínio para garantir que os testes atendam aos padrões da indústria. Além disso, a CodiumAI configura ambientes de tempo de execução específicos para detectar melhor bugs e gerar testes auto-curativos. Essas capacidades tornam os testes gerados pela CodiumAI mais abrangentes do que os testes unitários padrão, que frequentemente perdem comportamentos não intencionais devido a vieses inerentes dos desenvolvedores e limitações em prever todos os cenários possíveis. Isso resulta em testes que não apenas são abrangentes, mas também mais eficazes na descoberta de bugs sutis e casos de bordo.
Com base no feedback dos usuários, quais são os recursos mais valorizados da CodiumAI e como esses recursos impactaram a produtividade dos desenvolvedores?
Com base no feedback dos usuários que recebemos, vemos que os recursos /ask com contexto de bloco de código e /geração de testes do agente Codiumate são muito procurados e melhoram o fluxo de trabalho do desenvolvedor.
Com /ask com contexto de bloco de código (veja a documentação aqui: /ask) os desenvolvedores podem fazer perguntas abertas sobre seu código ou solicitar melhorias de código ou revisões durante uma sessão de chat gratuita. Esse recurso é particularmente benéfico para obter uma compreensão mais profunda da base de código, pois o modelo retém o contexto completo do projeto, permitindo que ele aborde perguntas altamente detalhadas e específicas.
A ferramenta /geração de testes (veja a documentação aqui: /test) permite que os desenvolvedores gerem conjuntos de testes abrangentes para seu código com apenas um clique. Explorar o comportamento do código, identificar e resolver bugs prontamente e expandir rapidamente a cobertura de código é um grande ativo para a produtividade.
O Agente de PR /revisão (veja a documentação aqui – /review) digitaliza as alterações de código da PR e gera automaticamente uma revisão da PR para detectar problemas antes que os desenvolvedores enviem para produção. O
/descrever (veja a documentação aqui – /describe) digitaliza as alterações de código da PR e gera uma descrição para a PR – título, tipo, resumo, passo a passo e rótulos, economizando tempo e energia que os desenvolvedores podem aplicar melhor em tarefas mais desafiadoras ou criativas.
Como a CodiumAI identifica casos de bordo e comportamentos suspeitos no código?
Nossas ferramentas digitalizam o repositório do desenvolvedor para trechos de código relevantes relacionados ao código em teste, e usando prompts de cadeia de pensamento, mapeamos todos os comportamentos de código possíveis e os exibimos ao desenvolvedor. A CodiumAI pode identificar comportamentos suspeitos diretamente (independentemente da geração de testes), identificando discrepâncias ou inconsistências entre diferentes trechos de código, ou trechos de código e a documentação acompanhante.
A CodiumAI suporta principais linguagens de programação; pode elaborar sobre como ela lida com nuances linguagem-específicas na análise de código e geração de testes?
Para as principais linguagens de programação, nossa plataforma vai além do suporte básico implementando técnicas especializadas. Essas incluem busca de contexto específico e prompts personalizados adaptados à sintaxe e semântica únicas de cada linguagem. Esses prompts personalizados incorporam conhecimento de especialista em domínio para obter resultados de nível da indústria. Além disso, fornecemos capacidades para estabelecer um ambiente de tempo de execução específico para essas linguagens, o que melhora a capacidade da nossa ferramenta de detectar bugs e gerar testes auto-curativos de forma eficaz.
Para linguagens menos comuns, aproveitamos grandes modelos de linguagem (LLM) que entendem intrinsicamente múltiplas linguagens de programação. Isso é complementado por nossa infraestrutura de contexto geral e sistema de prompts adaptativos, que juntos facilitam a análise de código e a geração de testes precisas em ambientes de programação diversificados. Ao adotar uma abordagem de dois níveis, podemos garantir suporte abrangente independentemente da linguagem de programação usada.
Quais melhorias futuras estão planejadas para a CodiumAI para apoiar e simplificar ainda mais as tarefas dos desenvolvedores?
A estratégia de desenvolvimento futura da CodiumAI enfatiza aprimorar a suíte de ferramentas de IA disponível para integrar-se perfeitamente em todas as etapas do ciclo de vida do desenvolvimento de software. Ao empregar princípios avançados de engenharia de fluxo para simplificar e simplificar os fluxos de trabalho dos desenvolvedores, nossos agentes fornecerão um valor significativo em diferentes etapas do desenvolvimento. Além disso, a CodiumAI está comprometida em garantir que essas ferramentas sejam excelentes no tratamento de cenários de código e texto complexos e do mundo real, tornando-as ferramentas diárias indispensáveis para os desenvolvedores. Essa abordagem holística visa elevar nossa oferta como uma ferramenta robusta e diária para os desenvolvedores, melhorando a produtividade e a eficiência no processo de desenvolvimento de software.
Obrigado pela grande entrevista, leitores que desejam aprender mais devem visitar CodiumAI.












