{"id":271,"date":"2026-06-24T16:00:37","date_gmt":"2026-06-24T19:00:37","guid":{"rendered":"https:\/\/alice.com.br\/tech\/?p=271"},"modified":"2026-06-24T16:00:37","modified_gmt":"2026-06-24T19:00:37","slug":"ada-ia-como-produto-da-engenharia-na-alice","status":"publish","type":"post","link":"https:\/\/alice.com.br\/tech\/ada-ia-como-produto-da-engenharia-na-alice\/","title":{"rendered":"Ada: IA como produto da engenharia na Alice"},"content":{"rendered":"<p>Na Alice, acreditamos que intelig\u00eancia artificial tem o potencial de aumentar drasticamente a velocidade de entrega de produtos. Mas flu\u00eancia em IA n\u00e3o escala por boa vontade. Distribuir licen\u00e7as de ferramentas de IA pro time inteiro e esperar que cada pessoa descubra sozinha como us\u00e1-la bem produz resultados desiguais: alguns devs viram refer\u00eancia, a maioria fica na superf\u00edcie e o conhecimento n\u00e3o circula.<\/p>\n<p>A nossa resposta foi tratar IA na engenharia como um produto de plataforma, com um framework que o time inteiro usa, a Ada. Este post \u00e9 sobre o que a Ada \u00e9, as decis\u00f5es de arquitetura que a sustentam e onde estamos na ado\u00e7\u00e3o.<\/p>\n<h3>De onde vem o nome<\/h3>\n<p>Ada \u00e9 sigla de <strong>Alice Development Approach<\/strong>, a forma como a Alice desenvolve software. O nome tamb\u00e9m homenageia Ada Lovelace, que escreveu o primeiro algoritmo da hist\u00f3ria em 1843, descrevendo um fluxo para uma m\u00e1quina executar. \u00c9 exatamente o que a plataforma sistematiza hoje: a forma como descrevemos trabalho para o Claude Code (ou qualquer outro coding agent) executar.<\/p>\n<h3><b>O que \u00e9 a Ada<\/b><\/h3>\n<p>Desde o in\u00edcio do ano, o time de engenharia n\u00e3o escreve mais c\u00f3digo \u00e0 m\u00e3o: descreve o que precisa, revisa e decide, e quem escreve o c\u00f3digo \u00e9 o Claude Code. A Ada \u00e9 um plugin do Claude Code, no marketplace privado da Alice, que distribui para o time um conjunto de fluxos de trabalho versionados. Todos os desenvolvedores instalam com um comando, rodam os mesmos comandos sobre as mesmas regras, e recebem atualiza\u00e7\u00f5es de forma centralizada.<\/p>\n<p>A Ada cobre o ciclo de desenvolvimento de ponta a ponta, onde uma feature passa por uma sequ\u00eancia de etapas bem definidas. H\u00e1 fluxos paralelos para investiga\u00e7\u00e3o de bugs com an\u00e1lise de causa raiz, revis\u00e3o de Pull Request e corre\u00e7\u00f5es pequenas que n\u00e3o justificam a cerim\u00f4nia completa.<\/p>\n<p>O que importa aqui \u00e9 menos em cada comando isolado e mais o fato de que todo o time roda os mesmos. Quando refinamos o fluxo de review, ele melhora para todo mundo na pr\u00f3xima atualiza\u00e7\u00e3o do plugin. Quando um padr\u00e3o de teste se firma, ele entra no <strong>\/execute<\/strong> e deixa de depender de quem est\u00e1 codando. \u00c9 isso que transforma um conjunto de prompts num produto: a melhoria fica centralizada e a distribui\u00e7\u00e3o acontece de forma autom\u00e1tica.<\/p>\n<h3><b>O que a Ada faz<\/b><\/h3>\n<p>A Ada organiza o trabalho em comandos. Cada um cobre uma etapa, e \/feature costura o caminho completo de ponta a ponta. Por baixo, os comandos acionam subagentes especialistas (mapeamento de m\u00f3dulo, revisores por dimens\u00e3o, detec\u00e7\u00e3o de squad), mas o dev interage s\u00f3 com os comandos abaixo.<\/p>\n<p><figure class=\"wp-attachment-274\" ><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-274\" src=\"https:\/\/alice.com.br\/tech\/wp-content\/uploads\/2026\/06\/2026-06-16-ciclo-de-feature-ada.png\" alt=\"\" width=\"3240\" height=\"810\" srcset=\"https:\/\/alice.com.br\/tech\/wp-content\/uploads\/2026\/06\/2026-06-16-ciclo-de-feature-ada.png 3240w, https:\/\/alice.com.br\/tech\/wp-content\/uploads\/2026\/06\/2026-06-16-ciclo-de-feature-ada-300x75.png 300w, https:\/\/alice.com.br\/tech\/wp-content\/uploads\/2026\/06\/2026-06-16-ciclo-de-feature-ada-768x192.png 768w\" sizes=\"auto, (max-width: 3240px) 100vw, 3240px\" \/><\/figure><\/p>\n<h4>Ciclo de desenvolvimento de uma feature<\/h4>\n<ul>\n<li><strong>\/feature<\/strong> orquestra o caminho completo, com um gate entre cada etapa.<\/li>\n<li><strong>\/spec<\/strong> transforma um brief em especifica\u00e7\u00e3o, com user stories, crit\u00e9rios de aceite e requisitos. \u00c9 o in\u00edcio de qualquer trabalho novo.<\/li>\n<li><strong>\/plan<\/strong> l\u00ea a spec, gera um plano de implementa\u00e7\u00e3o e todas as tasks que o agente dever\u00e1 executar.<\/li>\n<li><strong>\/execute<\/strong> implementa o plano com TDD, atualiza as tasks conforme avan\u00e7a e verifica a cada fase.<\/li>\n<li><strong>\/verify<\/strong> roda lint, typecheck, testes e build no escopo do que mudou, e devolve aprovado ou rejeitado.<\/li>\n<li><strong>\/deploy-dev<\/strong> verifica e sobe a branch para os ambientes de dev para valida\u00e7\u00e3o.<\/li>\n<li><strong>\/ship<\/strong> gera a descri\u00e7\u00e3o do PR a partir da spec e do plano, abre o PR e dispara o review.<\/li>\n<\/ul>\n<h4><strong>Gates opcionais, quando a feature ainda tem incerteza<\/strong><\/h4>\n<ul>\n<li><strong>\/brainstorm<\/strong> explora o problema e prop\u00f5e abordagens quando a ideia ainda est\u00e1 vaga. Roda antes da spec.<\/li>\n<li><strong>\/research<\/strong> dispara pesquisa em paralelo sobre APIs, exemplos e padr\u00f5es do c\u00f3digo quando a feature mexe com algo desconhecido. Roda antes do plano.<\/li>\n<li><strong>\/discuss<\/strong> varre a spec atr\u00e1s de ambiguidade, edge cases e integra\u00e7\u00f5es indefinidas, e faz perguntas ao desenvolvedor para melhorar a spec. Roda entre a spec e o plano.<\/li>\n<\/ul>\n<h4><strong>Bugs e suporte<\/strong><\/h4>\n<ul>\n<li><strong>\/bug<\/strong> investiga um ticket de suporte de ponta a ponta: define a squad respons\u00e1vel, faz a an\u00e1lise da causa raiz, valida as hip\u00f3teses contra os dados no Metabase e devolve um veredito.<\/li>\n<\/ul>\n<h4><strong>Review de PR<\/strong><\/h4>\n<ul>\n<li><strong>\/review<\/strong> roda o review can\u00f4nico da Alice, com classifica\u00e7\u00e3o simples ou complexo, revisores especialistas em paralelo, calibra\u00e7\u00e3o de severidade e um veredito expl\u00edcito. \u00c9 o que sustenta o auto review.<\/li>\n<li><strong>\/pr-review-digest<\/strong> resume os coment\u00e1rios de review (Ada, PR-Agent e pessoas) numa tabela do que ainda est\u00e1 em aberto.<\/li>\n<\/ul>\n<h4><strong>Atalho e apoio<\/strong><\/h4>\n<ul>\n<li><strong>\/quick<\/strong> \u00e9 o fast-track para mudan\u00e7as triviais, um fix pequeno ou um ajuste de config, que n\u00e3o justificam a cerim\u00f4nia de spec e plan.<\/li>\n<li><strong>\/feedback<\/strong> registra fric\u00e7\u00e3o na sess\u00e3o com o usu\u00e1rio ou capacidade faltante da pr\u00f3pria Ada, abre automaticamente um issue no github que alimenta o roadmap das pr\u00f3ximas vers\u00f5es.<\/li>\n<li><strong>\/scan-pii<\/strong> adiciona uma camada extra de verifica\u00e7\u00e3o de dados pessoais nos dados de avalia\u00e7\u00e3o de um PR.<\/li>\n<\/ul>\n<h3>Onde mora cada regra<\/h3>\n<p>\u00c9 mais dif\u00edcil decidir onde cada regra deve viver do que escolher o que automatizar. Uma instru\u00e7\u00e3o escrita no lugar errado ou vira ru\u00eddo (aparece em contextos onde n\u00e3o se aplica) ou vira lixo (ningu\u00e9m a encontra quando precisa).<\/p>\n<p>A Ada resolve isso por meio de duas perguntas:<\/p>\n<ol>\n<li><strong>A regra \u00e9 espec\u00edfica a um reposit\u00f3rio?<\/strong> Se sim, ela mora no pr\u00f3prio reposit\u00f3rio, num arquivo de conven\u00e7\u00f5es local. A Ada l\u00ea esse arquivo quando trabalha ali. Exemplo: a conven\u00e7\u00e3o de nomenclatura de migrations de um reposit\u00f3rio backend n\u00e3o tem por que estar no plugin, ela pertence ao reposit\u00f3rio backend.<\/li>\n<li><strong>A regra \u00e9 agn\u00f3stica de reposit\u00f3rio e envolve c\u00f3digo execut\u00e1vel?<\/strong> Se sim, ela mora na Ada como capacidade compartilhada. Sen\u00e3o, vai pra camada de helpers gen\u00e9ricos.<\/li>\n<\/ol>\n<p>Essa separa\u00e7\u00e3o \u00e9 o que mant\u00e9m a Ada enxuta. O plugin carrega o que \u00e9 genuinamente transversal, como revisar um PR ou estruturar uma spec, e delega ao reposit\u00f3rio tudo que \u00e9 local \u00e0quele c\u00f3digo. Cada repo continua dono das suas pr\u00f3prias regras, e a Ada n\u00e3o tenta saber tudo sobre todos.<\/p>\n<p>H\u00e1 uma consequ\u00eancia de design importante aqui: a Ada \u00e9 stack-aware. A Alice tem backend em Kotlin e v\u00e1rios frontends em Vue e React. O mesmo comando <strong>\/spec<\/strong> ou <strong>\/verify<\/strong> funciona nos dois mundos porque a Ada resolve a stack ativa a partir de um registro e aplica os comandos de verifica\u00e7\u00e3o certos pra cada uma. O dev n\u00e3o precisa saber qual mecanismo roda por baixo. Ele roda <strong>\/verify<\/strong> e a Ada sabe se chama o build do backend, frontend, mobile ou outras stacks.<\/p>\n<h3>Como constru\u00edmos<\/h3>\n<p>Em vez de adotar um framework fechado, combinamos o que funcionava melhor de seis refer\u00eancias do mercado numa abordagem pr\u00f3pria, desenhada pro nosso contexto.<\/p>\n<p>A Ada n\u00e3o tem uma squad dedicada. Ela \u00e9 constru\u00edda por um grupo transversal de staff engineers e engineering managers que n\u00e3o saem das pr\u00f3prias squads, e isso funcionou melhor do que concentrar tudo num time s\u00f3 pra isso. Quem desenha os fluxos \u00e9 quem sente a dor deles entregando produto todo dia.<\/p>\n<p>A Ada captura fric\u00e7\u00e3o do pr\u00f3prio uso, com um <strong>feedback loop embutido<\/strong>. Quando um fluxo falha ou frustra, isso vira um registro estruturado via github issue que alimenta a pr\u00f3xima itera\u00e7\u00e3o do plugin. O produto melhora a partir de como ele \u00e9 usado de verdade.<\/p>\n<h3>Onde estamos<\/h3>\n<p>Acompanhamos a ado\u00e7\u00e3o por tr\u00eas indicadores.<\/p>\n<ul>\n<li><strong>C\u00f3digo escrito com o Claude Code: 100%.<\/strong> O time de engenharia n\u00e3o escreve mais c\u00f3digo \u00e0 m\u00e3o. Todos os devs t\u00eam commits feitos com o Claude Code, e essa \u00e9 a forma padr\u00e3o de trabalhar.<\/li>\n<li><strong>Ado\u00e7\u00e3o da Ada: 90%.<\/strong> A maioria dos devs j\u00e1 roda os fluxos da Ada, al\u00e9m do Claude Code padr\u00e3o. Os restantes s\u00e3o os que codam em alguma stack que a Ada ainda n\u00e3o reconhece.<\/li>\n<li><strong>Review autom\u00e1tico de PR.<\/strong> Um agente revisa os PRs, acelerando o processo de code review para evitar gargalos, dado o maior volume de c\u00f3digo sendo produzido.<\/li>\n<\/ul>\n<p>Chegar a 100% de uso de IA \u00e9 relativamente f\u00e1cil quando a ferramenta est\u00e1 dispon\u00edvel. Chegar a 90% de uso de um produto de plataforma, com fluxos versionados e compartilhados, \u00e9 o sinal de um ganho organizacional, que circula pelo time inteiro em vez de ficar concentrado em alguns devs.<\/p>\n<h3>Remote Agents<\/h3>\n<p>Al\u00e9m disso, constru\u00edmos agentes que atuam diretamente no fluxo de pull requests e bug report. Um revisa cada PR automaticamente. O outro avalia se a mudan\u00e7a est\u00e1 apta a ir pro ar. Outro investiga e resolve bugs reportados.<\/p>\n<h4>Auto Review<\/h4>\n<p>Assim que um PR \u00e9 aberto, a Ada l\u00ea o c\u00f3digo inteiro e devolve uma revis\u00e3o estruturada em cerca de quatro minutos. Classifica a complexidade da mudan\u00e7a, sinaliza o que \u00e9 cr\u00edtico e sugere melhorias, com o c\u00f3digo pronto para corrigir em cada ponto. S\u00e3o recomenda\u00e7\u00f5es, e o autor decide o que aplicar. O ganho est\u00e1 em toda PR receber esse olhar, sempre. Hoje o auto review roda em 100% dos PRs de backend, frontend e mobile.<\/p>\n<h4>Auto-merge<\/h4>\n<p>O auto-merge \u00e9 uma camada mais r\u00edgida, voltada para a seguran\u00e7a. Ele roda uma checklist de doze crit\u00e9rios antes de dizer se a PR pode ser mergeado: n\u00e3o ser rascunho, apontar pra main, n\u00e3o ter migra\u00e7\u00e3o de banco, mudan\u00e7as restritas a um \u00fanico dom\u00ednio, revis\u00e3o aprovada, autor \u00e9 codeowner, e assim por diante. O sinal verde s\u00f3 aparece quando todos passam e o PR \u00e9 mergeado. Estamos sendo bem conservadores nesse primeiro momento, a maioria das nossas mudan\u00e7as ainda pedem o olhar de uma pessoa antes do merge.<\/p>\n<h4>Bug-triage<\/h4>\n<p>O bug-triage \u00e9 o primeiro a olhar um ticket de suporte. Ele l\u00ea o que foi reportado, identifica qual squad \u00e9 respons\u00e1vel e consulta a base de conhecimento daquela squad pra entender se aquilo j\u00e1 apareceu antes. No fim, classifica o ticket em uma de cinco categorias: bug conhecido, bug novo, d\u00favida, n\u00e3o pertinente ou inconclusivo. \u00c9 essa decis\u00e3o que define o que acontece a seguir. O resultado da triagem s\u00e3o dois coment\u00e1rios no pr\u00f3prio ticket: um t\u00e9cnico, escrito para a squad respons\u00e1vel, e outro em portugu\u00eas claro para a pessoa que reportou com a explica\u00e7\u00e3o que ela precisa. Se for um bug j\u00e1 conhecido, o usu\u00e1rio recebe o workaround na mesma hora. Se for algo que precisa de mais contexto, o agente pergunta. O ganho \u00e9 que o ticket deixa de esperar dias at\u00e9 algu\u00e9m de engenharia ter tempo de olhar \u2014 a primeira resposta sai em minutos.<\/p>\n<h4>Bug-solver<\/h4>\n<p>O bug-solver entra s\u00f3 quando o bug-triage diz que \u00e9 um bug novo. A ideia \u00e9 simples: se o bug \u00e9 genu\u00edno, n\u00e3o \u00e9 necess\u00e1rio esperar um agente humano come\u00e7ar a investigar. Ele clona o reposit\u00f3rio certo, l\u00ea as conven\u00e7\u00f5es daquele c\u00f3digo e investiga a causa do bug vasculhando arquivos, procurando padr\u00f5es, montando uma hip\u00f3tese. Quando chega a uma conclus\u00e3o, prop\u00f5e a corre\u00e7\u00e3o em forma de pull request, com a explica\u00e7\u00e3o do que mudou e por qu\u00ea. Antes de o PR ir pro ar, passa pelo review autom\u00e1tico da Ada e por uma checagem de dados sens\u00edveis. S\u00f3 depois disso o PR aparece no GitHub, pronto para o squad revisar, testar e decidir o que fazer.<\/p>\n<p><strong>Ada como remote agent.<\/strong> Esses agentes rodam como remote agents: o pr\u00f3prio evento de abertura do PR dispara a Ada remotamente, sem ningu\u00e9m precisar iniciar nada. Alertas no Datadog e tickets de report de bugs no JIRA disparam os agentes de bug. Al\u00e9m de viver como plugin no terminal de cada dev, a Ada opera de forma aut\u00f4noma dentro do fluxo de c\u00f3digo, no momento exato em que o trabalho acontece. \u00c9 o tipo de automa\u00e7\u00e3o de IA em produ\u00e7\u00e3o que aumenta drasticamente a capacidade de entrega do time de engenharia da Alice.<\/p>\n<h3>Como medimos o uso<\/h3>\n<p>Os n\u00fameros de ado\u00e7\u00e3o v\u00eam de tr\u00eas fontes: os commits e PRs no GitHub, incluindo os trailers que marcam quando o Claude Code ou a Ada participaram de cada mudan\u00e7a; e o volume por dev. Isso d\u00e1 uma leitura confi\u00e1vel, mas depende de coleta manual e de juntar as fontes a cada rodada.<\/p>\n<p>O pr\u00f3ximo passo \u00e9 tornar essa medi\u00e7\u00e3o cont\u00ednua. Estamos construindo o ada-mcp, um servidor interno de Developer Experience que funciona como ponto \u00fanico de entrada para m\u00e9tricas geradas por qualquer coding agent. Ele cobre duas frentes:<\/p>\n<ul>\n<li><strong>Telemetria de uso.<\/strong> Cada vez que algu\u00e9m roda um fluxo da Ada, o evento vai pro ada-mcp, que encaminha pro Datadog, sem depender de coleta manual.<\/li>\n<li><strong>M\u00e9tricas do pr\u00f3prio dev.<\/strong> Cada pessoa consulta o que rodou, por exemplo quantos <strong>\/spec<\/strong> fez na semana.<\/li>\n<\/ul>\n<p>Tem um detalhe que fecha o ciclo: o ada-mcp est\u00e1 sendo constru\u00eddo com a pr\u00f3pria Ada, passando por <strong>\/spec<\/strong>, <strong>\/plan<\/strong>, <strong>\/execute<\/strong>, <strong>\/verify<\/strong> e <strong>\/ship<\/strong>. Ada constr\u00f3i Ada.<\/p>\n<h3>O que isso significa<\/h3>\n<p>Tratar IA como produto de engenharia significa assumir que o trabalho n\u00e3o acaba quando a ferramenta est\u00e1 dispon\u00edvel. Ele apenas come\u00e7a. As decis\u00f5es de onde cada regra mora, de quem constr\u00f3i, e de como medimos uso real s\u00e3o o que separa &#8220;ter IA&#8221; de &#8220;fazer engenharia com IA&#8221;. \u00c9 isso que a Ada \u00e9 pra Alice, e seguimos construindo.<\/p>\n","protected":false},"excerpt":{"rendered":"A Alice trata IA na engenharia como um produto que o time inteiro usa. Chamamos de Ada.","protected":false},"author":1,"featured_media":277,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-271","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"acf":[],"_links":{"self":[{"href":"https:\/\/alice.com.br\/tech\/wp-json\/wp\/v2\/posts\/271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alice.com.br\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alice.com.br\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alice.com.br\/tech\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alice.com.br\/tech\/wp-json\/wp\/v2\/comments?post=271"}],"version-history":[{"count":3,"href":"https:\/\/alice.com.br\/tech\/wp-json\/wp\/v2\/posts\/271\/revisions"}],"predecessor-version":[{"id":275,"href":"https:\/\/alice.com.br\/tech\/wp-json\/wp\/v2\/posts\/271\/revisions\/275"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alice.com.br\/tech\/wp-json\/wp\/v2\/media\/277"}],"wp:attachment":[{"href":"https:\/\/alice.com.br\/tech\/wp-json\/wp\/v2\/media?parent=271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alice.com.br\/tech\/wp-json\/wp\/v2\/categories?post=271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alice.com.br\/tech\/wp-json\/wp\/v2\/tags?post=271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}