{"id":78730,"date":"2025-11-26T11:51:48","date_gmt":"2025-11-26T19:51:48","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=78730"},"modified":"2026-01-12T12:05:37","modified_gmt":"2026-01-12T20:05:37","slug":"ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt","status":"publish","type":"post","link":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/","title":{"rendered":"Ensinei Minha Av\u00f3 a Codificar Vibe (Aqui Est\u00e1 O Que Aconteceu)"},"content":{"rendered":"<div class=\"tldr-block\" style=\"display: none;\">\n\t<div class=\"svg\">\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 119.25 37.8\">\n\t<g>\n\t\t<g>\n\t\t\t<path fill=\"#ffffff\" d=\"M23.4,6.93h-8.1v24.57h-7.2V6.93H0V0h23.4v6.93Z\" \/>\n\t\t\t<path fill=\"#ffffff\" d=\"M45,24.57v6.93h-18.45V0h7.2v24.57h11.25Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M90.9,15.75c0,8.91-6.61,15.75-15.3,15.75h-12.6V0h12.6c8.68,0,15.3,6.84,15.3,15.75ZM83.97,15.75c0-5.4-3.42-8.82-8.37-8.82h-5.4v17.64h5.4c4.95,0,8.37-3.42,8.37-8.82Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M105.57,21.15h-3.42v10.35h-7.2V0h12.6c5.98,0,10.8,4.81,10.8,10.8,0,3.87-2.34,7.38-5.81,9.13l6.71,11.56h-7.74l-5.94-10.35ZM102.15,14.85h5.4c1.98,0,3.6-1.75,3.6-4.05s-1.62-4.05-3.6-4.05h-5.4v8.1Z\" \/>\n\t\t<\/g>\n\t\t<path\n\t\t\tfill=\"#0173ec\"\n\t\t\td=\"M53.97,37.8h-5.4l1.8-13.27h7.2l-3.6,13.27ZM49.02,12.55c0-2.34,1.93-4.27,4.27-4.27s4.27,1.94,4.27,4.27-1.93,4.27-4.27,4.27-4.27-1.94-4.27-4.27Z\"\n\t\t \/>\n\t<\/g>\n<\/svg>\n\t<\/div>\n\t<div class=\"tldr-wrap\">\n\t\t\n\n<ul class=\"wp-block-list\">\n<li>A codifica\u00e7\u00e3o por vibe permite que qualquer pessoa construa aplicativos funcionais atrav\u00e9s de conversas com IA, mas <a href=\"https:\/\/cset.georgetown.edu\/publication\/cybersecurity-risks-of-ai-generated-code\/\">48%<\/a> do c\u00f3digo gerado por IA cont\u00e9m falhas de seguran\u00e7a.<\/li>\n\n\n\n<li>Ensinar minha av\u00f3 a construir um aplicativo de acompanhamento de jardim mostrou exatamente onde a codifica\u00e7\u00e3o por vibe tem sucesso e falha catastroficamente.<\/li>\n\n\n\n<li>A viola\u00e7\u00e3o do aplicativo <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tea_(app)\">TEA de 2025<\/a> exp\u00f4s como o desenvolvimento r\u00e1pido sem revis\u00e3o de seguran\u00e7a cria aplicativos que funcionam lindamente enquanto escondem vulnerabilidades.<\/li>\n\n\n\n<li>Voc\u00ea pode construir prot\u00f3tipos rapidamente. Torn\u00e1-los prontos para produ\u00e7\u00e3o requer expertise.<\/li>\n\n\n<\/ul>\n\n\n\n\n\t<\/div>\n<\/div>\n\n<p>Minha av\u00f3 gerenciou planilhas de invent\u00e1rio para uma empresa t\u00eaxtil por 40 anos. Ela calcula descontos compostos na cabe\u00e7a mais r\u00e1pido do que a maioria das pessoas consegue com calculadoras, mas n\u00e3o tem experi\u00eancia alguma com programa\u00e7\u00e3o.&nbsp;<\/p>\n\n\n<p>Quando sugeri construir juntos um aplicativo de monitoramento de jardim usando IA, o ceticismo dela foi quase instant\u00e2neo.<\/p>\n\n\n<p>Duas horas depois, ela tinha um aplicativo web funcionando at\u00e9 que pedimos mais uma coisa, e o aplicativo quebrou. Esta \u00e9 uma hist\u00f3ria muito comum de vibe coding.&nbsp;<\/p>\n\n\n<p>Agora, eu tenho um Framework para entender o que a programa\u00e7\u00e3o de vibe realmente entrega em compara\u00e7\u00e3o ao que promete, para que voc\u00ea possa olhar al\u00e9m do exagero do marketing e fazer uso real do produto.&nbsp;<\/p>\n\n\n<h2 id=\"h-first-what-is-vibe-coding\" class=\"wp-block-heading\">Primeiro, O Que \u00c9 Vibe Coding?<\/h2>\n\n\n<p>Vibe coding \u00e9 <strong>construir software descrevendo o que voc\u00ea deseja em ingl\u00eas simples e deixando a IA escrever o c\u00f3digo para voc\u00ea.&nbsp;<\/strong><\/p>\n\n\n<p>O ex-diretor de IA da Tesla e cofundador da OpenAI, Andrej Karpathy, cunhou o termo em fevereiro de 2025 quando <a href=\"https:\/\/x.com\/karpathy\/status\/1886192184808149383?lang=en\">tweetou<\/a>: &#8220;<em>H\u00e1 um novo tipo de programa\u00e7\u00e3o que eu chamo de &#8216;programa\u00e7\u00e3o vibe&#8217;, onde voc\u00ea se entrega totalmente \u00e0s vibes, abra\u00e7a as exponenciais e esquece que o c\u00f3digo at\u00e9 existe<\/em>.&#8221;&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1291\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding.webp\" alt=\"Tweet de Andrej Karpathy descrevendo a abordagem de codifica\u00e7\u00e3o vibe onde ele depende muito de assistentes de codifica\u00e7\u00e3o de IA e copiar-colar em vez de entender o c\u00f3digo.\" class=\"wp-image-77857 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-300x242.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-1024x826.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-768x620.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-1536x1239.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-600x484.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-1200x968.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-730x589.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-1460x1178.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-784x633.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-1568x1265.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-877x708.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1291;\" \/><\/figure>\n\n\n<p>O post explodiu com mais de 5 milh\u00f5es de visualiza\u00e7\u00f5es, capturando uma abordagem de desenvolvimento que j\u00e1 se espalhava pela comunidade tecnol\u00f3gica.&nbsp;<\/p>\n\n\n<p>Em vez de aprender linguagens de programa\u00e7\u00e3o e lidar com a sintaxe, voc\u00ea simplesmente diz a uma IA o que deseja construir. A IA gera o c\u00f3digo. Voc\u00ea se torna um gerente de produto em vez de um programador, focado no que o aplicativo deve fazer em vez de como faz\u00ea-lo funcionar.<\/p>\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n<h3 class=\"wp-block-heading\" id=\"h-why-does-vibe-coding-matter-now\">Por Que a Codifica\u00e7\u00e3o de Vibra\u00e7\u00f5es Importa Agora?<\/h3>\n\n\n<p><a href=\"https:\/\/www.mckinsey.com\/capabilities\/people-and-organizational-performance\/our-insights\/five-fifty-the-skillful-corporation\">87% das empresas<\/a> enfrentam escassez de talentos ou esperam enfrent\u00e1-la nos pr\u00f3ximos anos, segundo a McKinsey.<a href=\"https:\/\/qubit-labs.com\/it-talent-gap-still-growing\/\">&nbsp;<\/a><\/p>\n\n\n<p>Ferramentas de codifica\u00e7\u00e3o com IA como Bolt.new, Lovable, Replit Agent e Cursor prometem resolver esse problema ao melhorar a produtividade para os desenvolvedores existentes e permitindo que n\u00e3o-desenvolvedores testem suas ideias rapidamente.<\/p>\n\n\n<p>Os n\u00fameros confirmam o hype:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Em mar\u00e7o de 2025, o Y Combinator revelou que <a href=\"https:\/\/techcrunch.com\/2025\/03\/06\/a-quarter-of-startups-in-ycs-current-cohort-have-codebases-that-are-almost-entirely-ai-generated\/\">25% do seu lote de inverno de 2025<\/a> tinha 95% de suas bases de c\u00f3digo geradas por IA.<\/li>\n\n\n\n<li>Em abril de 2025, o CEO da Microsoft, Satya Nadella, revelou que <a href=\"https:\/\/www.cnbc.com\/2025\/04\/29\/satya-nadella-says-as-much-as-30percent-of-microsoft-code-is-written-by-ai.html\">20\u201330%<\/a> da base de c\u00f3digo foi escrita por IA.<\/li>\n\n\n\n<li>Um quarto das startups<a href=\"https:\/\/techcrunch.com\/2025\/03\/06\/a-quarter-of-startups-in-ycs-current-cohort-have-codebases-that-are-almost-entirely-ai-generated\/\"> no atual grupo do YC<\/a> tem bases de c\u00f3digo quase inteiramente geradas por IA.<\/li>\n\n\n\n<li>O CEO da Google, Sundar Pichai, relatou n\u00fameros semelhantes, afirmando que <a href=\"https:\/\/blog.google\/inside-google\/message-ceo\/alphabet-earnings-q3-2024\/#search:~:text=Today%2C%20more%20than%20a%20quarter%20of%20all%20new%20code%20at%20Google%20is%20generated%20by%20AI%2C%20then%20reviewed%20and%20accepted%20by%20engineers.%20This%20helps%20our%20engineers%20do%20more%20and%20move%20faster\">mais de 25% do c\u00f3digo da Google<\/a> \u00e9 gerado por IA.<\/li>\n\n\n<\/ul>\n\n\n<p>Passamos do preenchimento autom\u00e1tico b\u00e1sico a escrever aplica\u00e7\u00f5es inteiras com entrada humana m\u00ednima.&nbsp;<\/p>\n\n\n<p>Mas as mesmas funcionalidades que tornam a codifica\u00e7\u00e3o de vibe acess\u00edvel, como entrada de linguagem natural, gera\u00e7\u00e3o aut\u00f4noma de c\u00f3digo e tratamento autom\u00e1tico de complexidade, criam problemas s\u00e9rios quando seu aplicativo precisa crescer al\u00e9m dessa primeira vers\u00e3o.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-can-you-actually-build-with-vibe-coding\">O Que Voc\u00ea Pode Realmente Construir com a Programa\u00e7\u00e3o Vibe?<\/h3>\n\n\n<p>Quando voc\u00ea pode realmente construir com vibe coding depende de tr\u00eas coisas:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Qu\u00e3o complexo seu aplicativo precisa ser<\/li>\n\n\n\n<li>Se voc\u00ea consegue identificar c\u00f3digo ruim e falhas de seguran\u00e7a<\/li>\n\n\n\n<li>Se voc\u00ea sabe quando parar de adicionar funcionalidades<\/li>\n\n\n<\/ul>\n\n\n<p>Se os requisitos do seu aplicativo s\u00e3o simples, e voc\u00ea consegue identificar lacunas t\u00e9cnicas e resistir a adi\u00e7\u00f5es desnecess\u00e1rias de funcionalidades, a programa\u00e7\u00e3o vibe pode ajudar a entregar resultados funcionais rapidamente.<\/p>\n\n\n<p>Contudo, \u00e0 medida que a complexidade aumenta ou se voc\u00ea precisa construir aplicativos de n\u00edvel de produ\u00e7\u00e3o, a revis\u00e3o profissional e o planejamento arquitet\u00f4nico tornam-se imprescind\u00edveis.<\/p>\n\n\n<p>A experi\u00eancia da minha av\u00f3 construindo um aplicativo de acompanhamento de jardim mostrou exatamente onde est\u00e3o esses limites.<\/p>\n\n\n<h2 id=\"h-what-happened-in-hour-one-simple-instructions-worked\" class=\"wp-block-heading\">O Que Aconteceu Na Primeira Hora? Instru\u00e7\u00f5es Simples Funcionaram<\/h2>\n\n\n<p>Existem pelo menos uma d\u00fazia de plataformas de codifica\u00e7\u00e3o com vibra\u00e7\u00e3o de IA como Bolt, Lovable, OpenAI Code, Claude Code, Google Opal, etc.&nbsp;<\/p>\n\n\n<p>Come\u00e7amos com a <a href=\"https:\/\/developers.openai.com\/codex\/ide\/\">extens\u00e3o OpenAI Codex no VS Code<\/a> porque eu j\u00e1 tinha uma assinatura, mas eu recomendaria come\u00e7ar com Bolt.new, Lovable ou Vercel para uma experi\u00eancia de codifica\u00e7\u00e3o visual mais envolvente.&nbsp;<\/p>\n\n\n<p>Nosso primeiro prompt:<em> &#8220;Crie um aplicativo de acompanhamento de jardim onde eu possa registrar o que plantei, quando plantei e quanto colhi. Inclua uma maneira de ver quais plantas tiveram o melhor desempenho em cada esta\u00e7\u00e3o.&#8221;<\/em><\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1525\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex.webp\" alt=\"Cursor AI IDE mostrando plano de v\u00e1rias etapas para construir um aplicativo de rastreamento de jardim com lista de tarefas e interface de chat para assist\u00eancia de IA.\" class=\"wp-image-77858 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-300x286.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-1024x976.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-768x732.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-1536x1464.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-600x572.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-1200x1144.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-730x696.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-1460x1392.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-784x747.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-1568x1495.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-877x836.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1525;\" \/><\/figure>\n\n\n<p><strong>Este prompt funcionou porque continha tr\u00eas elementos cr\u00edticos:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Estrutura de dados clara<\/strong> (nome da planta, data de plantio, quantidade de colheita, esta\u00e7\u00e3o)<\/li>\n\n\n\n<li><strong>Sa\u00edda definida<\/strong> (compara\u00e7\u00e3o de desempenho por esta\u00e7\u00e3o)<\/li>\n\n\n\n<li><strong>Contexto de uso espec\u00edfico<\/strong> (rastreamento de jardim pessoal)<\/li>\n\n\n<\/ul>\n\n\n<p>Em poucos minutos, o Codex gerou uma aplica\u00e7\u00e3o completa. Ele tinha um banco de dados SQLite com tabelas para <em>plantas, plantios e colheitas<\/em>, endpoints de API REST para opera\u00e7\u00f5es CRUD, um frontend Python com tabelas de dados e formul\u00e1rios de entrada, e estilo b\u00e1sico com CSS.<\/p>\n\n\n<p>J\u00e1 continha alguns dados de demonstra\u00e7\u00e3o por padr\u00e3o.<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1301\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default.webp\" alt=\"Interface do aplicativo Garden Tracker mostrando quatro cart\u00f5es de plantas com detalhes para Morango, Pepino, Tomate e Manjeric\u00e3o, incluindo datas de plantio e registros de colheita.\" class=\"wp-image-77859 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-300x244.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-1024x833.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-768x624.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-1536x1249.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-600x488.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-1200x976.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-730x594.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-1460x1187.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-784x637.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-1568x1275.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-877x713.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1301;\" \/><\/figure>\n\n\n<p>O aplicativo web <em>parecia<\/em> bom. Essa \u00e9 a superpot\u00eancia da programa\u00e7\u00e3o por vibe e seu maior perigo. Mas antes de entrar nisso, deixe-me explicar o que realmente est\u00e1 acontecendo por tr\u00e1s do pensamento do Codex. Eu brinquei com o aplicativo, descobri o que t\u00ednhamos e o que mais precis\u00e1vamos.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-happened-behind-the-interface\">O Que Aconteceu Atr\u00e1s da Interface<\/h3>\n\n\n<p>O c\u00f3digo gerado tomou decis\u00f5es arquitet\u00f4nicas para uma aplica\u00e7\u00e3o de usu\u00e1rio \u00fanico. O esquema do banco de dados podia lidar facilmente com novas entradas. A API seguiu as conven\u00e7\u00f5es RESTful. Os componentes do frontend foram separados logicamente.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"802\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface.webp\" alt=\"Editor Visual Studio Code mostrando c\u00f3digo TypeScript para um aplicativo de acompanhamento de jardim com o arquivo models.ts aberto exibindo as interfaces Plant e PlantLog.\" class=\"wp-image-77860 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-300x150.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-1024x513.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-768x385.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-1536x770.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-600x301.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-1200x602.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-730x366.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-1460x732.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-784x393.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-1568x786.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-877x440.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/802;\" \/><\/figure>\n\n\n<p>Entretanto, percebi que ele n\u00e3o fez considera\u00e7\u00f5es cr\u00edticas de seguran\u00e7a por padr\u00e3o. N\u00e3o havia valida\u00e7\u00e3o de entrada, nenhuma camada de autentica\u00e7\u00e3o, sem limita\u00e7\u00e3o de taxa, sem considera\u00e7\u00e3o de vulnerabilidades de inje\u00e7\u00e3o SQL e sem criptografia.<\/p>\n\n\n<p><strong>A arquitetura do agente de IA assumiu um \u00fanico usu\u00e1rio confi\u00e1vel em um ambiente controlado.<\/strong><\/p>\n\n\n<p>Considerando que este foi um projeto para a minha av\u00f3 e mais ningu\u00e9m, essas omiss\u00f5es s\u00e3o riscos gerenci\u00e1veis. No entanto, para qualquer pessoa que considere usar vibe coding para construir uma aplica\u00e7\u00e3o web multiusu\u00e1rio, esses s\u00e3o riscos de seguran\u00e7a cr\u00edticos que simplesmente n\u00e3o podem ser ignorados.&nbsp;<\/p>\n\n\n<p>Eu vejo frequentemente discuss\u00f5es sobre isso no Reddit ou PostStatus: desenvolvedores iteram com sucesso em c\u00f3digo gerado por IA porque identificam essas lacunas e implementam camadas de seguran\u00e7a adequadas. Usu\u00e1rios n\u00e3o t\u00e9cnicos veem um aplicativo funcionando e assumem que est\u00e1 pronto para produ\u00e7\u00e3o.<\/p>\n\n\n<h2 id=\"h-what-happened-in-hour-two-feature-creep-became-obvious\" class=\"wp-block-heading\">O Que Aconteceu Na Segunda Hora? O Aumento de Recursos Tornou-se Evidente<\/h2>\n\n\n<p>O aplicativo funcionou conforme o previsto, e esse momento decisivo ajudou ela a construir confian\u00e7a. Minha av\u00f3 come\u00e7ou a pensar em melhorias. \u00c9 aqui que as limita\u00e7\u00f5es da codifica\u00e7\u00e3o de vibra\u00e7\u00f5es se tornam evidentes.<\/p>\n\n\n<p>Tentamos uma solicita\u00e7\u00e3o de funcionalidade: <em>&#8220;Adicionar a capacidade de fazer upload de fotos de cada planta para que eu possa ver como elas estavam em diferentes est\u00e1gios de crescimento.&#8221;<\/em><\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1298\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex.webp\" alt=\"Interface de Cursor AI mostrando o progresso na implementa\u00e7\u00e3o do recurso de upload de fotos para plantas com detalhamento de tarefas e status de conclus\u00e3o.\" class=\"wp-image-77861 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-300x243.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-1024x831.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-768x623.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-1536x1246.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-600x487.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-1200x974.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-730x592.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-1460x1184.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-784x636.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-1568x1272.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-877x711.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1298;\" \/><\/figure>\n\n\n<p>Este pedido aparentemente simples desencadeou uma cascata de complexidade arquitet\u00f4nica.<\/p>\n\n\n<p><strong>Altera\u00e7\u00f5es necess\u00e1rias no esquema do banco de dados e m\u00f3dulo do aplicativo:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Nova tabela de fotos com colunas: id, plant_id (chave estrangeira), photo_url, upload_date, growth_stage<\/li>\n\n\n\n<li>Defini\u00e7\u00e3o de rela\u00e7\u00e3o entre plantas e fotos (um-para-muitos)<\/li>\n\n\n\n<li>Estrat\u00e9gia de migra\u00e7\u00e3o para dados existentes<\/li>\n\n\n<\/ul>\n\n\n<p><strong>Modifica\u00e7\u00f5es no backend necess\u00e1rias:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Ponto final de upload de arquivo com manipula\u00e7\u00e3o de formul\u00e1rio multipart<\/li>\n\n\n\n<li>Solu\u00e7\u00e3o de armazenamento de arquivos (sistema de arquivos local vs. armazenamento em nuvem)<\/li>\n\n\n\n<li>Novos pontos finais da API para opera\u00e7\u00f5es CRUD de fotos<\/li>\n\n\n\n<li>Atualizar os pontos finais de plantas existentes para incluir dados de fotos<\/li>\n\n\n<\/ul>\n\n\n<p><strong>Altera\u00e7\u00f5es no frontend necess\u00e1rias:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Componente de entrada de arquivo com arrastar e soltar<\/li>\n\n\n\n<li>Funcionalidade de pr\u00e9-visualiza\u00e7\u00e3o de imagem<\/li>\n\n\n\n<li>Exibi\u00e7\u00e3o de galeria de fotos para cada planta<\/li>\n\n\n\n<li>Atualizar cart\u00f5es de plantas existentes para mostrar miniaturas<\/li>\n\n\n\n<li>Estados de carregamento para progresso de upload<\/li>\n\n\n<\/ul>\n\n\n<p>OpenAI Codex tentou implementar tudo simultaneamente. O modelo mais recente GPT5-Codex-High conseguiu fazer isso funcionar em aproximadamente 5 minutos ap\u00f3s inserir o comando.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1774\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity.webp\" alt=\"P\u00e1gina de detalhes da planta Garden Tracker para Pepino mostrando hist\u00f3rico de colheita com duas entradas, colheita total de 5.60 lbs e se\u00e7\u00e3o de upload de foto.\" class=\"wp-image-77862 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-271x300.webp 271w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-924x1024.webp 924w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-768x852.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-1385x1536.webp 1385w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-600x665.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-1200x1331.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-730x809.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-1460x1619.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-784x869.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-1568x1739.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-877x972.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1774;\" \/><\/figure>\n\n\n<p>O problema \u00e9 que isso criou um c\u00f3digo com erros e inseguro. Veja o que quebrou:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>A estrutura da tabela de <em>plantas<\/em> original mudou<\/li>\n\n\n\n<li>Componentes do frontend que referenciavam o antigo esquema pararam de funcionar<\/li>\n\n\n\n<li>Conflitos de CSS entre os novos componentes de fotos e a UI existente (como vis\u00edvel na captura de tela) surgiram<\/li>\n\n\n<\/ul>\n\n\n<p>E ent\u00e3o havia o problema do excesso de engenharia: Codex gerou um sistema complexo com processamento de imagem desnecess\u00e1rio e dados capturados para cada foto, etc.&nbsp;<\/p>\n\n\n<p>Cada tentativa de corre\u00e7\u00e3o introduziu novos problemas. Atualize o esquema do banco de dados, quebre a API. Corrija a API, quebre o frontend. Resolva os problemas do frontend, descubra novos bugs no backend. O c\u00f3digo que funcionava perfeitamente com 200 linhas agora se espalhou por 1.500 linhas com depend\u00eancias interconectadas.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-the-non-extensible-architecture-trap\">A Armadilha da Arquitetura N\u00e3o Extens\u00edvel<\/h3>\n\n\n<p>A arquitetura do aplicativo foi otimizada <em>apenas<\/em> para o que pedimos na primeira hora. Com a programa\u00e7\u00e3o vibe, voc\u00ea precisa ser muito espec\u00edfico, e essa \u00e9 a parte dif\u00edcil para quem n\u00e3o \u00e9 desenvolvedor.<\/p>\n\n\n<p>Voc\u00ea n\u00e3o saberia o que significa arquitetura extens\u00edvel se a IA a implementasse.<\/p>\n\n\n<p>Se voc\u00ea tem um aplicativo simples pronto e depois precisa ampli\u00e1-lo, uma arquitetura n\u00e3o extens\u00edvel significaria reescrever o c\u00f3digo do zero para a IA.&nbsp;<\/p>\n\n\n<p><strong>Suposi\u00e7\u00f5es arquitet\u00f4nicas desde a primeira hora:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Design de tabela \u00fanica (razo\u00e1vel para dados simples)<\/li>\n\n\n\n<li>Consultas diretas da API ao banco de dados (r\u00e1pido para opera\u00e7\u00f5es com muita leitura)<\/li>\n\n\n\n<li>Defini\u00e7\u00f5es de componentes embutidos (aceit\u00e1vel para pequenas interfaces de usu\u00e1rio)<\/li>\n\n\n\n<li>Sem separa\u00e7\u00e3o entre l\u00f3gica de neg\u00f3cios e acesso a dados (adequado para CRUD simples)<\/li>\n\n\n<\/ul>\n\n\n<p><strong>Por que essas suposi\u00e7\u00f5es se tornaram restri\u00e7\u00f5es:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>O design de tabela \u00fanica impediu a modelagem de dados relacionais adequada para fotos<\/li>\n\n\n\n<li>Consultas diretas exigiam reescritas completas quando o esquema mudava<\/li>\n\n\n\n<li>Componentes embutidos significavam que mudan\u00e7as se propagavam por todo o c\u00f3digo<\/li>\n\n\n\n<li>A aus\u00eancia de uma camada de l\u00f3gica de neg\u00f3cios significava que cada funcionalidade tocava diretamente o banco de dados<\/li>\n\n\n<\/ul>\n\n\n<p>J\u00e1 t\u00ednhamos ultrapassado o ponto de retorno. Muito c\u00f3digo existia para abandonar. Cada tentativa de corre\u00e7\u00e3o consumia mais tokens tentando salvar uma arquitetura que n\u00e3o conseguia suportar os novos requisitos.<\/p>\n\n\n<h2 id=\"h-what-happened-in-hour-three-token-exhaustion-and-barely-functional-code-emerged\" class=\"wp-block-heading\">O Que Aconteceu Na Terceira Hora? Esgotamento De Tokens E C\u00f3digo Mal Funcional Surgiram<\/h2>\n\n\n<p>Depois que a funcionalidade de upload de fotos funcionou, tentamos melhorias adicionais.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>&#8220;Adicione categorias para tipos de plantas (vegetais, ervas, flores)&#8221;<\/li>\n\n\n\n<li>&#8220;Mostre recomenda\u00e7\u00f5es de plantio baseadas na esta\u00e7\u00e3o&#8221;<\/li>\n\n\n\n<li>&#8220;Permita-me marcar plantas como favoritas&#8221;<\/li>\n\n\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1030\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code.webp\" alt=\"Cursor AI exibindo a conclus\u00e3o da constru\u00e7\u00e3o do aplicativo de rastreamento de jardim com recursos adicionados incluindo categorias de plantas, recomenda\u00e7\u00f5es sazonais e favoritos com c\u00f3digo vis\u00edvel.\" class=\"wp-image-77863 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-300x193.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-1024x659.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-768x494.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-1536x989.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-600x386.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-1200x773.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-730x470.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-1460x940.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-784x505.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-1568x1009.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-877x565.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1030;\" \/><\/figure>\n\n\n<p>Cada solicita\u00e7\u00e3o seguiu o mesmo padr\u00e3o: Codex tentou uma implementa\u00e7\u00e3o completa para algumas solicita\u00e7\u00f5es aparentemente simples, introduziu mudan\u00e7as significativas, criou solu\u00e7\u00f5es superdimensionadas e consumiu milhares de tokens tentando corrigir os bugs resultantes.<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"932\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1024x932.webp\" alt=\"Painel do Garden Tracker mostrando recomenda\u00e7\u00f5es sazonais, lista de plantas com vegetais e a\u00e7\u00f5es, e sua se\u00e7\u00e3o de plantios com cart\u00f5es de Pepino e Manjeric\u00e3o.\" class=\"wp-image-77864 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1024x932.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-300x273.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-768x699.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1536x1399.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-600x546.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1200x1093.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-730x665.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1460x1330.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-784x714.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1568x1428.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-877x799.webp 877w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations.webp 1600w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/932;\" \/><\/figure>\n\n\n<p>O aplicativo funciona muito bem, e minha av\u00f3 ficou satisfeita com o resultado.&nbsp;<\/p>\n\n\n<p>Como desenvolvedor, no entanto, eu podia ver claramente que est\u00e1vamos no \u00faltimo est\u00e1gio em termos de c\u00f3digo. Mais algumas funcionalidades e o aplicativo seria uma bagun\u00e7a.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"620\" height=\"421\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/IMAGE-9.png\" alt=\"Meme do Bob Esponja mostrando Patrick frustrado no computador com o texto Funciona? e N\u00e3o, est\u00e1 quebrado, mas n\u00e3o quebre.\" class=\"wp-image-77865 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2025\/11\/IMAGE-9.png.webp 620w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/IMAGE-9-300x204.png 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2025\/11\/IMAGE-9-600x407.png.webp 600w\" data-sizes=\"(max-width: 620px) 100vw, 620px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 620px; --smush-placeholder-aspect-ratio: 620\/421;\" \/><\/figure>\n\n\n<p>via <a href=\"https:\/\/imgflip.com\/i\/tc9hy\">Imgflip<\/a><\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-why-is-this-such-a-common-problem\">Por Que Isso \u00c9 Um Problema T\u00e3o Comum?<\/h3>\n\n\n<p>Os agentes de codifica\u00e7\u00e3o s\u00e3o apenas grandes modelos de linguagem &#8220;programados&#8221; para produzir c\u00f3digo.&nbsp;<\/p>\n\n\n<p>Ent\u00e3o eles t\u00eam todos os problemas que os grandes modelos de linguagem t\u00eam, incluindo:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>N\u00e3o ser espec\u00edfico sobre o que \u00e9 esperado deles<\/li>\n\n\n\n<li>Inventando chamadas de fun\u00e7\u00f5es aleat\u00f3rias (alucina\u00e7\u00f5es)<\/li>\n\n\n\n<li>Escrevendo c\u00f3digo complicado para objetivos simples<\/li>\n\n\n<\/ul>\n\n\n<p>Al\u00e9m disso, \u00e0 medida que o hist\u00f3rico de chat cresce, os agentes de codifica\u00e7\u00e3o atingem seus <a href=\"https:\/\/www.ibm.com\/think\/topics\/context-window\">limites de janela de contexto<\/a>.&nbsp;<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Decis\u00f5es arquitet\u00f4nicas originais e suas raz\u00f5es<\/li>\n\n\n\n<li>Modifica\u00e7\u00f5es subsequentes e suas interdepend\u00eancias<\/li>\n\n\n\n<li>Bugs atuais e suas causas ra\u00edzes<\/li>\n\n\n\n<li>Funcionalidade desejada para novas funcionalidades<\/li>\n\n\n<\/ul>\n\n\n<p>Cada novo prompt foi interpretado isoladamente sem um entendimento completo da hist\u00f3ria arquitet\u00f4nica. A IA sugeriu solu\u00e7\u00f5es que faziam sentido para caracter\u00edsticas individuais, mas criava conflitos sist\u00eamicos quando integradas com o c\u00f3digo existente.<\/p>\n\n\n<p>Este <a href=\"https:\/\/www.reddit.com\/r\/ClaudeAI\/comments\/1kivv0w\/the_ultimate_vibe_coding_guide\/\">guia do Reddit enfatiza<\/a>: <em>&#8220;Quando o chat ficar muito grande, apenas abra um novo. A janela de contexto da IA \u00e9 limitada. Se o chat for muito grande, ele esquecer\u00e1 tudo o que foi dito anteriormente, esquecer\u00e1 quaisquer padr\u00f5es e design, e come\u00e7ar\u00e1 a produzir resultados ruins.&#8221;<\/em><\/p>\n\n\n<p>Mas abrir um novo chat significava perder todo o contexto sobre o que existia. Fornecer esse contexto consumia tokens. Mesmo com um contexto &#8220;resumido&#8221;, ainda estamos perdendo detalhes importantes quando se trata de c\u00f3digo.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-we-faced-the-tea-app-problem-at-a-smaller-scale\">Enfrentamos o Problema do Aplicativo TEA em Menor Escala<\/h3>\n\n\n<p>O aplicativo TEA demonstrou esse exato padr\u00e3o de falha em escala de produ\u00e7\u00e3o. Lan\u00e7ado em 2023 como uma plataforma de seguran\u00e7a para mulheres, ele rapidamente escalou para 1,6 milh\u00e3o de usu\u00e1rios.&nbsp;<\/p>\n\n\n<p><strong>Ent\u00e3o, em julho de 2025, falhou catastroficamente:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>A Viola\u00e7\u00e3o:<\/strong> Pesquisadores de seguran\u00e7a descobriram um bucket de armazenamento Firebase desprotegido contendo 72.000 imagens de usu\u00e1rios, incluindo 13.000 selfies de verifica\u00e7\u00e3o e identidades governamentais. Um segundo banco de dados exp\u00f4s 1,1 milh\u00e3o de mensagens privadas.<\/li>\n\n\n\n<li><strong>As falhas t\u00e9cnicas:<\/strong> Chaves de API codificadas diretamente no c\u00f3digo-fonte, bucket Firebase acess\u00edvel publicamente sem autentica\u00e7\u00e3o, sem prote\u00e7\u00f5es em tempo de execu\u00e7\u00e3o e sem camada de revis\u00e3o de seguran\u00e7a. Especialistas associaram essas vulnerabilidades a pr\u00e1ticas de codifica\u00e7\u00e3o apressadas, onde a velocidade de desenvolvimento de recursos eclipsou a arquitetura de seguran\u00e7a.<\/li>\n\n\n\n<li><strong>O resultado:<\/strong> Um p\u00f4ster an\u00f4nimo do 4chan descobriu e compartilhou ferramentas de download. A\u00e7\u00f5es coletivas movidas dentro de 48 horas. A plataforma foi desativada. Custo m\u00e9dio da viola\u00e7\u00e3o: $4,88 milh\u00f5es.<\/li>\n\n\n<\/ul>\n\n\n<p>A falha da TEA segue o mesmo padr\u00e3o que experimentamos em uma escala t\u00e3o pequena, o que me faz perguntar por que as pessoas n\u00e3o verificam o c\u00f3digo gerado por IA.&nbsp;<\/p>\n\n\n<p>Tivemos uma implementa\u00e7\u00e3o inicial que funcionou bem; no entanto, adi\u00e7\u00f5es de funcionalidades complicaram a arquitetura, considera\u00e7\u00f5es de seguran\u00e7a foram negligenciadas para novas funcionalidades, e vulnerabilidades sist\u00eamicas foram deixadas abertas para explora\u00e7\u00e3o sem conhecimento.<\/p>\n\n\n<h2 id=\"h-how-to-vibe-code-without-experiencing-the-same-problems-we-did\" class=\"wp-block-heading\">Como Programar com Vibra\u00e7\u00e3o Sem Enfrentar os Mesmos Problemas que N\u00f3s<\/h2>\n\n\n<p>Se voc\u00ea n\u00e3o \u00e9 um desenvolvedor, \u00e9 imposs\u00edvel evitar completamente os problemas. No entanto, existem formas de minimizar os problemas.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-1-start-with-ruthless-feature-minimalism\">1. Comece Com Minimalismo Implac\u00e1vel de Funcionalidades<\/h3>\n\n\n<p>Defina o conjunto m\u00ednimo absoluto de funcionalidades antes de escrever o primeiro prompt, mas sempre resista \u00e0 tenta\u00e7\u00e3o de adicionar funcionalidades durante o desenvolvimento inicial.<\/p>\n\n\n<p><strong>Framework de Escopo Eficaz:<\/strong><\/p>\n\n\n<ol class=\"wp-block-list\">\n<li>Liste todas as funcionalidades desejadas<\/li>\n\n\n\n<li>Identifique as 3\u20135 funcionalidades que validam sua hip\u00f3tese principal<\/li>\n\n\n\n<li>Construa apenas essas funcionalidades na primeira vers\u00e3o<\/li>\n\n\n\n<li>Lance, valide e itere<\/li>\n\n\n<\/ol>\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>N\u00e3o d\u00ea instru\u00e7\u00f5es como, &#8216;Construa-me essa funcionalidade inteira.&#8217; A IA vai alucinar e produzir um c\u00f3digo terr\u00edvel. Quebre qualquer funcionalidade em pelo menos 3\u20135 solicita\u00e7\u00f5es sequenciais.<\/em><\/p>\n\n\n<\/blockquote>\n\n\n<p>Se voc\u00ea n\u00e3o consegue identificar o conjunto m\u00ednimo de funcionalidades, use o \u201c<strong>Modo de plano<\/strong>\u201d ou o \u201c<strong>Modo de chat<\/strong>\u201d dispon\u00edvel na maioria das ferramentas de codifica\u00e7\u00e3o de IA.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1715\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode.webp\" alt=\"Interface do Claude Code mostrando estado vazio com personagem de pixel art e prompt para digitar \/model para selecionar a ferramenta de codifica\u00e7\u00e3o com IA.\" class=\"wp-image-77866 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-280x300.webp 280w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-955x1024.webp 955w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-768x823.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-1433x1536.webp 1433w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-600x643.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-1200x1286.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-730x782.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-1460x1565.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-784x840.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-1568x1681.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-877x940.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1715;\" \/><\/figure>\n\n\n<p>Isso permite que voc\u00ea diga ao agente o que deseja em linguagem natural e permite que a IA descubra como dividir o aplicativo em recursos ou arquivos individuais.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-commit-to-git-after-every-working-feature\">2. Fa\u00e7a Commit No Git Ap\u00f3s Cada Funcionalidade Funcionar<\/h3>\n\n\n<p>Para um n\u00e3o-desenvolvedor, o controle de vers\u00e3o pode parecer complicado, mas \u00e9 uma adi\u00e7\u00e3o necess\u00e1ria. Git \u00e9 uma ferramenta de controle de vers\u00e3o que cria pontos de restaura\u00e7\u00e3o quando adi\u00e7\u00f5es de recursos comprometem a funcionalidade existente.&nbsp;<\/p>\n\n\n<p><strong>Fluxo de trabalho Git para codifica\u00e7\u00e3o de vibe:<\/strong><\/p>\n\n\n<ol class=\"wp-block-list\">\n<li>Inicialize o reposit\u00f3rio antes do primeiro prompt<\/li>\n\n\n\n<li>Commit ap\u00f3s a vers\u00e3o inicial de trabalho<\/li>\n\n\n\n<li>Crie uma nova branch para cada adi\u00e7\u00e3o de funcionalidade<\/li>\n\n\n\n<li>Commit frequentemente durante o desenvolvimento da funcionalidade<\/li>\n\n\n\n<li>Teste completamente antes de mesclar para a branch principal<\/li>\n\n\n<\/ol>\n\n\n<p>Podes pedir ao agente de codifica\u00e7\u00e3o da tua prefer\u00eancia para fazer isto por ti, se n\u00e3o te sentires confort\u00e1vel com <a href=\"https:\/\/www.dreamhost.com\/blog\/git-commands\/\">comandos Git<\/a>.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-design-for-extension-in-initial-prompts\">3. Design Para Extens\u00e3o em Prompts Iniciais<\/h3>\n\n\n<p>Sua primeira solicita\u00e7\u00e3o define a base de c\u00f3digo. Solicita\u00e7\u00f5es simples fornecer\u00e3o apenas um aplicativo funcional at\u00e9 que voc\u00ea comece a pedir novos recursos.&nbsp;<\/p>\n\n\n<p>Em vez disso, solicite uma arquitetura extens\u00edvel logo no in\u00edcio.&nbsp;<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Prompt inicial ineficaz:<\/strong> &#8220;Construa um aplicativo de acompanhamento de jardim onde eu possa registrar o que plantei e colhi.&#8221;<\/li>\n\n\n\n<li><strong>Prompt inicial eficaz:<\/strong> &#8220;Construa um aplicativo de acompanhamento de jardim com um esquema de banco de dados extens\u00edvel que possa acomodar recursos futuros. Utilize uma arquitetura modular onde componentes de frontend, pontos de API e acesso ao banco de dados sejam separados. Inclua documenta\u00e7\u00e3o clara do esquema e estrutura da API para modifica\u00e7\u00f5es futuras.&#8221;<\/li>\n\n\n<\/ul>\n\n\n<p>Isso aumenta o uso de tokens inicialmente. No entanto, quando voc\u00ea come\u00e7a a adicionar novos recursos, a IA n\u00e3o precisar\u00e1 desperdi\u00e7ar tokens refatorando o c\u00f3digo antigo para acomodar as solicita\u00e7\u00f5es.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-4-choose-tools-based-on-architectural-stability\">4. Escolha Ferramentas Baseadas na Estabilidade Arquitet\u00f4nica<\/h3>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bolt.new, Agente Replit e Lovable:<\/strong> Excelente para prot\u00f3tipos de sess\u00e3o \u00fanica e f\u00e1cil implanta\u00e7\u00e3o. Ruim para adi\u00e7\u00f5es de recursos multi-sess\u00e3o. A arquitetura torna-se progressivamente fr\u00e1gil a cada modifica\u00e7\u00e3o.<\/li>\n\n\n\n<li><strong>Claude\/OpenAI\/Gemini, agentes de codifica\u00e7\u00e3o:<\/strong> \u00c0s vezes \u00fatil para codifica\u00e7\u00e3o complexa, mas pode parecer mais complicado em compara\u00e7\u00e3o com os aplicativos web visuais que vimos antes.<\/li>\n\n\n\n<li><strong>DreamHost Liftoff:<\/strong> \u00d3timo como uma base WordPress com padr\u00f5es de extensibilidade comprovados. A arquitetura do WordPress \u00e9 projetada para modifica\u00e7\u00e3o e adi\u00e7\u00f5es de Plugins. Isso resolve o problema da arquitetura n\u00e3o extens\u00edvel ao come\u00e7ar com uma base extens\u00edvel testada em batalha.<\/li>\n\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-5-implement-security-from-hour-one\">5. Implemente A Seguran\u00e7a Desde A Primeira Hora<\/h3>\n\n\n<p>De forma semelhante \u00e0 extensibilidade, voc\u00ea quer integrar a seguran\u00e7a desde o primeiro prompt. Assim, juntamente com a solicita\u00e7\u00e3o de uma arquitetura extens\u00edvel e modular, voc\u00ea tamb\u00e9m quer adicionar componentes com prioridade em seguran\u00e7a ao prompt inicial.<\/p>\n\n\n<p><strong>Aqui est\u00e1 um exemplo de como eu adicionaria seguran\u00e7a no primeiro prompt:<\/strong> <em>&#8220;Crie um aplicativo de rastreamento de jardim com hash de senha bcrypt, valida\u00e7\u00e3o de entrada em todos os campos, consultas SQL parametrizadas para prevenir ataques de inje\u00e7\u00e3o, limita\u00e7\u00e3o de taxa em todos os pontos de API e segredos armazenados em vari\u00e1veis de ambiente nunca expostos ao c\u00f3digo frontend.&#8221;<\/em><\/p>\n\n\n<p><strong>Se est\u00e1s a construir uma aplica\u00e7\u00e3o voltada para o cliente, aqui est\u00e3o algumas coisas a ter em mente:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Nunca confie nos dados do cliente\u2014valide e limpe pelo lado do servidor<\/li>\n\n\n\n<li>Mantenha segredos em vari\u00e1veis de ambiente<\/li>\n\n\n\n<li>Verifique as permiss\u00f5es para cada a\u00e7\u00e3o<\/li>\n\n\n\n<li>Use mensagens de erro gen\u00e9ricas\u2014registros detalhados apenas para desenvolvedores<\/li>\n\n\n\n<li>Implemente verifica\u00e7\u00f5es de propriedade para prevenir o acesso n\u00e3o autorizado aos dados<\/li>\n\n\n\n<li>Proteja as APIs com limites de taxa<\/li>\n\n\n<\/ul>\n\n\n<p>Entender <a href=\"https:\/\/www.dreamhost.com\/blog\/guide-to-generative-ai\/\">como a IA generativa funciona<\/a> ajuda voc\u00ea a reconhecer quando a IA faz suposi\u00e7\u00f5es de seguran\u00e7a que criam vulnerabilidades.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-6-know-when-to-start-fresh-vs-continue\">6. Saiba Quando Come\u00e7ar do Zero ou Continuar<\/h3>\n\n\n<p>Reconhe\u00e7a os sinais de que continuar ir\u00e1 desperdi\u00e7ar tokens.<\/p>\n\n\n<p><strong>Comece do zero quando:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>O consumo de tokens excede 300k sem funcionalidades ativas<\/li>\n\n\n\n<li>Cada corre\u00e7\u00e3o de erro introduz dois novos erros<\/li>\n\n\n\n<li>Modifica\u00e7\u00f5es arquitet\u00f4nicas quebram m\u00faltiplas funcionalidades existentes<\/li>\n\n\n\n<li>O hist\u00f3rico do chat ultrapassa 30 trocas<\/li>\n\n\n\n<li>Voc\u00ea n\u00e3o consegue explicar a arquitetura atual da base de c\u00f3digo<\/li>\n\n\n<\/ul>\n\n\n<p><strong>Continue quando:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Novas funcionalidades integram-se de forma limpa com o c\u00f3digo existente<\/li>\n\n\n\n<li>Corre\u00e7\u00f5es de bugs resolvem problemas sem efeitos colaterais<\/li>\n\n\n\n<li>O consumo de tokens mant\u00e9m-se dentro dos or\u00e7amentos<\/li>\n\n\n\n<li>A arquitetura permanece compreens\u00edvel<\/li>\n\n\n<\/ul>\n\n\n<p>Quando a IA erra e segue o caminho errado, voltar, alterar o comando e enviar novamente seria muito melhor do que completar este c\u00f3digo p\u00e9ssimo.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-7-review-with-ai-security-analysis\">7. Revis\u00e3o Com An\u00e1lise de Seguran\u00e7a de IA<\/h3>\n\n\n<p>Ap\u00f3s construir a funcionalidade principal, copie o c\u00f3digo-base completo para Gemini 2.5 Pro para uma an\u00e1lise de seguran\u00e7a abrangente. Eu prefiro este modelo de linguagem por causa de sua grande janela de contexto de dois milh\u00f5es de tokens, para que voc\u00ea possa mover toda a base de c\u00f3digo para ele.&nbsp;<\/p>\n\n\n<p><strong>Revis\u00e3o de Seguran\u00e7a:<\/strong> <em>&#8220;Aja como um especialista em seguran\u00e7a. Analise este c\u00f3digo completo em busca de vulnerabilidades. Identifique riscos de inje\u00e7\u00e3o SQL, vulnerabilidades XSS, fraquezas de autentica\u00e7\u00e3o, falhas de autoriza\u00e7\u00e3o, exposi\u00e7\u00e3o de credenciais e quaisquer problemas do OWASP Top 10. Forne\u00e7a locais espec\u00edficos no c\u00f3digo e recomenda\u00e7\u00f5es de remedia\u00e7\u00e3o.&#8221;<\/em><\/p>\n\n\n<p>Isso se aproxima de uma an\u00e1lise de seguran\u00e7a profissional por uma fra\u00e7\u00e3o do custo.&nbsp;<\/p>\n\n\n<p>\u00c9 insuficiente para implanta\u00e7\u00e3o em produ\u00e7\u00e3o, mas identifica falhas catastr\u00f3ficas em prot\u00f3tipos antes de alcan\u00e7arem os usu\u00e1rios.<\/p>\n\n\n<h2 id=\"h-when-does-vibe-coding-make-business-sense\" class=\"wp-block-heading\">Quando A Codifica\u00e7\u00e3o Vibe Faz Sentido Nos Neg\u00f3cios?<\/h2>\n\n\n<p>N\u00e3o precisas descartar completamente a codifica\u00e7\u00e3o por vibe s\u00f3 porque ela n\u00e3o consegue criar aplica\u00e7\u00f5es complicadas neste momento. Aqui est\u00e3o alguns casos em que penso que um prot\u00f3tipo ou aplicativo codificado por vibe realmente faz sentido.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Valida\u00e7\u00e3o R\u00e1pida de Conceito:<\/strong> Construa prot\u00f3tipos em horas para testar o interesse do mercado. Custo m\u00e9dio de valida\u00e7\u00e3o reduzido de $15.000\u2013$100.000+ para menos de $500. Use a codifica\u00e7\u00e3o vibe para responder: &#8220;Os clientes querem isso o suficiente para us\u00e1-lo?&#8221;<\/li>\n\n\n\n<li><strong>Automa\u00e7\u00e3o de Processos Internos:<\/strong> Forne\u00e7a ferramentas para sua equipe onde voc\u00ea controla o acesso e aceita uma maior toler\u00e2ncia a riscos porque o raio de impacto permanece limitado. Ferramentas internas podem evoluir em dire\u00e7\u00e3o \u00e0 seguran\u00e7a, em vez de exigir seguran\u00e7a desde o primeiro dia.<\/li>\n\n\n\n<li><strong>Especifica\u00e7\u00e3o Pr\u00e9-desenvolvimento:<\/strong> Entenda os requisitos antes de <a href=\"https:\/\/www.dreamhost.com\/blog\/how-to-hire-web-developer\/\">contratar desenvolvedores<\/a> para reduzir a comunica\u00e7\u00e3o dispendiosa. Prot\u00f3tipos codificados por vibe servem como documentos interativos de requisitos.<\/li>\n\n\n\n<li><strong>MVP para Capta\u00e7\u00e3o de Recursos:<\/strong> Demonstre funcionalidades para investidores enquanto \u00e9 transparente sobre a maturidade t\u00e9cnica. Muitas startups usam MVPs codificados por vibe para garantir financiamento inicial, depois reconstruem adequadamente com equipes profissionais.<\/li>\n\n\n<\/ul>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-when-professional-development-becomes-non-negotiable\">Quando O Desenvolvimento Profissional Se Torna Inegoci\u00e1vel<\/h3>\n\n\n<p>Aplica\u00e7\u00f5es voltadas para o cliente que processam qualquer dado do usu\u00e1rio requerem uma revis\u00e3o de seguran\u00e7a profissional. O custo de uma implementa\u00e7\u00e3o de seguran\u00e7a incorreta supera qualquer economia proveniente de codifica\u00e7\u00e3o ao acaso.<\/p>\n\n\n<p>Alguns casos em que precisas de uma revis\u00e3o profissional incluem:&nbsp;<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Autentica\u00e7\u00e3o multiusu\u00e1rio<\/li>\n\n\n\n<li>Processamento de pagamento<\/li>\n\n\n\n<li>Armazenamento de informa\u00e7\u00f5es pessoais<\/li>\n\n\n\n<li>Implanta\u00e7\u00e3o voltada ao p\u00fablico<\/li>\n\n\n\n<li>Situa\u00e7\u00f5es que envolvem requisitos de conformidade (como GDPR, CCPA, HIPAA)<\/li>\n\n\n<\/ul>\n\n\n<p>O CEO da Microsoft revelou que <a href=\"https:\/\/www.cnbc.com\/2025\/04\/29\/satya-nadella-says-as-much-as-30percent-of-microsoft-code-is-written-by-ai.html\">30% do c\u00f3digo da empresa<\/a> \u00e9 agora gerado por IA. O Google relatou <a href=\"https:\/\/abc.xyz\/investor\/events\/event-details\/2025\/2025-Q1-Earnings-Call\/\">n\u00fameros similares<\/a>. Ambos mant\u00eam processos extensivos de revis\u00e3o de seguran\u00e7a, testes automatizados e supervis\u00e3o humana.&nbsp;<\/p>\n\n\n<p>O deployment de produ\u00e7\u00e3o requer salvaguardas semelhantes, independentemente do m\u00e9todo de gera\u00e7\u00e3o de c\u00f3digo.<\/p>\n\n\n<p>Entender <a href=\"https:\/\/www.dreamhost.com\/blog\/will-ai-replace-developers\/\">se a IA substituir\u00e1 desenvolvedores<\/a> ajuda a estabelecer expectativas realistas sobre o que voc\u00ea pode construir e implementar sozinho. Explore os <a href=\"https:\/\/www.dreamhost.com\/blog\/best-online-resources-learn-to-code\/\">melhores recursos online para aprender a programar<\/a> para diminuir a dist\u00e2ncia entre prot\u00f3tipos de codifica\u00e7\u00e3o por vibra\u00e7\u00e3o e sistemas prontos para produ\u00e7\u00e3o.<\/p>\n\n\n<h2 id=\"h-faqs-about-vibe-coding\" class=\"wp-block-heading\">Perguntas Frequentes Sobre Vibe Coding<\/h2>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-is-vibe-coding-and-how-is-it-different-from-traditional-programming\">O que \u00e9 programa\u00e7\u00e3o por vibe e como ela difere da programa\u00e7\u00e3o tradicional?<\/h3>\n\n\n<p>Vibe coding \u00e9 o processo de construir aplica\u00e7\u00f5es descrevendo requisitos em ingl\u00eas simples para uma IA, que gera o c\u00f3digo para voc\u00ea. Diferente da programa\u00e7\u00e3o tradicional, que exige conhecimento de linguagens de programa\u00e7\u00e3o, o vibe coding muda o foco para a gest\u00e3o de produtos e a inten\u00e7\u00e3o, em vez da codifica\u00e7\u00e3o manual.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-can-non-developers-build-production-ready-apps-using-vibe-coding\">Podem os n\u00e3o desenvolvedores criar aplicativos prontos para produ\u00e7\u00e3o usando vibe coding?<\/h3>\n\n\n<p>Enquanto a codifica\u00e7\u00e3o por vibe permite que n\u00e3o desenvolvedores prototipem rapidamente aplicativos funcionais, a maior parte do c\u00f3digo gerado por IA carece da seguran\u00e7a e robustez necess\u00e1rias para implanta\u00e7\u00e3o em produ\u00e7\u00e3o. Dito isso, prot\u00f3tipos codificados por vibe s\u00e3o \u00f3timos para valida\u00e7\u00e3o de conceitos.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-are-the-biggest-risks-of-using-ai-generated-code-for-app-development\">Quais s\u00e3o os maiores riscos de usar c\u00f3digo gerado por IA para desenvolvimento de aplicativos?<\/h3>\n\n\n<p>Os riscos mais significativos incluem falhas de seguran\u00e7a (como falta de valida\u00e7\u00e3o, autentica\u00e7\u00e3o, limita\u00e7\u00e3o de taxa e prote\u00e7\u00e3o contra inje\u00e7\u00e3o SQL), arquitetura n\u00e3o extens\u00edvel e ac\u00famulo de funcionalidades que levam a sistemas fr\u00e1geis ou quebrados. A viola\u00e7\u00e3o do aplicativo TEA \u00e9 um exemplo de desenvolvimento r\u00e1pido sem uma revis\u00e3o de seguran\u00e7a adequada, resultando em consequ\u00eancias catastr\u00f3ficas.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-when-does-it-make-sense-to-use-vibe-coding-for-real-business-projects\">Quando faz sentido usar codifica\u00e7\u00e3o vibe para projetos de neg\u00f3cios reais?<\/h3>\n\n\n<p>O vibe coding \u00e9 ideal para prototipagem r\u00e1pida, ferramentas internas, especifica\u00e7\u00e3o pr\u00e9-desenvolvimento (coleta de requisitos) e MVPs para capta\u00e7\u00e3o de recursos. No entanto, para aplicativos voltados para o cliente ou que processem dados sens\u00edveis, invista sempre em desenvolvimento profissional e revis\u00f5es de seguran\u00e7a.<\/p>\n\n\n<h2 id=\"h-the-bottom-line-know-your-architectural-limits\" class=\"wp-block-heading\">A Linha De Fundo: Conhe\u00e7a Seus Limites Arquitet\u00f4nicos<\/h2>\n\n\n<p>Minha av\u00f3 mant\u00e9m seu rastreador de jardim simplificado para uso pessoal. Ela tamb\u00e9m adicionou an\u00e1lises funcionais (o bot\u00e3o da barra de navega\u00e7\u00e3o n\u00e3o ia a lugar algum antes) para ver como seu jardim est\u00e1 se saindo.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1572\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics.webp\" alt=\"Dashboard exibindo an\u00e1lises de desempenho de plantas com duas esta\u00e7\u00f5es de dados, destacando 22 colheitas de manjeric\u00e3o na primavera e 5,6 libras de pepinos no ver\u00e3o\" class=\"wp-image-77867 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-300x295.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-1024x1006.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-768x755.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-1536x1509.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-600x590.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-1200x1179.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-730x717.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-1460x1434.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-784x770.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-1568x1541.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-877x862.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1572;\" \/><\/figure>\n\n\n<p>Isso funciona como um aplicativo para um \u00fanico usu\u00e1rio. Se est\u00e1s a desenvolver uma plataforma para uso de m\u00faltiplos clientes, ainda assim poderias criar prot\u00f3tipos codificados por vibe, MVPs, etc., para dar in\u00edcio ao processo. Mas confiar apenas na codifica\u00e7\u00e3o por vibe sem entender o que est\u00e1 acontecendo \u00e9 simplesmente repetir a hist\u00f3ria do aplicativo TEA.&nbsp;<\/p>\n\n\n<p>A codifica\u00e7\u00e3o Vibe democratiza a cria\u00e7\u00e3o de software enquanto introduz novas responsabilidades. Voc\u00ea pode construir aplicativos em 30 minutos. No entanto, voc\u00ea deve entender os limites arquitet\u00f4nicos, implica\u00e7\u00f5es de seguran\u00e7a e padr\u00f5es de consumo de tokens antes de disponibilizar para os usu\u00e1rios.<\/p>\n\n\n<p>O futuro pertence aos construtores que entendem a lacuna entre prot\u00f3tipo e produ\u00e7\u00e3o.&nbsp;<\/p>\n\n\n<p>Pronto para construir seu primeiro aplicativo web? Comece com <a href=\"https:\/\/www.dreamhost.com\/features\/ai-website-builder\/\">DreamHost Liftoff<\/a> para codifica\u00e7\u00e3o com vibra\u00e7\u00e3o impulsionada por WordPress que inclui arquitetura extens\u00edvel, hospedagem gerenciada, infraestrutura de seguran\u00e7a e escalabilidade comprovada desde o primeiro dia. Construa r\u00e1pido. Estenda com seguran\u00e7a. Seja dono do seu c\u00f3digo.<\/p>\n\n\n\n<div class=\"article-cta-shared article-cta-small article-cta--product\">\n\t<div class=\"tr-img-wrap-outer jsLoading\"><img decoding=\"async\" class=\"js-img-lazy \" src=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/lazy-loading-transparent.webp\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/product-cta-pro-services-design-877x586.webp 1x, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/product-cta-pro-services-design.webp 2x\"  \/><\/div>\n\n\t<a href='https:\/\/www.dreamhost.com\/pro-services\/design\/' class='link-top' target='_blank' rel='noopener noreferrer'>\n\t\t<span>Pro Services &#8211; Design<\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\" width=\"15\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n\n\t<div class=\"content-btm\">\n\t\t<h2 class=\"h2--md\">\n\t\t\tBeautiful Websites, Designed From Scratch\n\t\t<\/h2>\n\t\t<p class=\"p--md\">\n\t\t\tStand out from the crowd with a modern WordPress website that\u2019s 100% unique to you.\n\t\t<\/p>\n\n\t\t        <a\n            href=\"https:\/\/www.dreamhost.com\/pro-services\/design\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            See More                    <\/a>\n\n\t<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Minha av\u00f3 gerenciou planilhas de invent\u00e1rio para uma empresa t\u00eaxtil por 40 anos. Ela calcula descontos compostos na cabe\u00e7a mais r\u00e1pido do que a maioria das pessoas consegue com calculadoras, mas n\u00e3o tem nenhuma experi\u00eancia com programa\u00e7\u00e3o. Quando sugeri construir juntos um aplicativo de acompanhamento de jardim usando IA, seu ceticismo foi quase instant\u00e2neo. Duas horas depois, ela tinha um site funcional [\u2026]<\/p>\n","protected":false},"author":1058,"featured_media":77870,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_metadesc":"","toc_headlines":"[[\"h-first-what-is-vibe-coding\",\"Primeiro, O Que \u00c9 Vibe Coding?\"],[\"h-what-happened-in-hour-one-simple-instructions-worked\",\"O Que Aconteceu Na Primeira Hora? Instru\u00e7\u00f5es Simples Funcionaram\"],[\"h-what-happened-in-hour-two-feature-creep-became-obvious\",\"O Que Aconteceu Na Segunda Hora? O Aumento de Recursos Tornou-se Evidente\"],[\"h-what-happened-in-hour-three-token-exhaustion-and-barely-functional-code-emerged\",\"O Que Aconteceu Na Terceira Hora? Esgotamento De Tokens E C\u00f3digo Mal Funcional Surgiram\"],[\"h-how-to-vibe-code-without-experiencing-the-same-problems-we-did\",\"Como Programar com Vibra\u00e7\u00e3o Sem Enfrentar os Mesmos Problemas que N\u00f3s\"],[\"h-when-does-vibe-coding-make-business-sense\",\"Quando A Codifica\u00e7\u00e3o Vibe Faz Sentido Nos Neg\u00f3cios?\"],[\"h-faqs-about-vibe-coding\",\"Perguntas Frequentes Sobre Vibe Coding\"],[\"h-the-bottom-line-know-your-architectural-limits\",\"A Linha De Fundo: Conhe\u00e7a Seus Limites Arquitet\u00f4nicos\"]]","hide_toc":false,"footnotes":""},"categories":[14858],"tags":[],"class_list":["post-78730","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-pt"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Ensinei Minha Av\u00f3 a Codificar Vibe (Aqui Est\u00e1 O Que Aconteceu) - DreamHost Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ensinei Minha Av\u00f3 a Codificar Vibe (Aqui Est\u00e1 O Que Aconteceu)\" \/>\n<meta property=\"og:description\" content=\"Minha av\u00f3 gerenciou planilhas de invent\u00e1rio para uma empresa t\u00eaxtil por 40 anos. Ela calcula descontos compostos na cabe\u00e7a mais r\u00e1pido do que a maioria das pessoas consegue com calculadoras, mas n\u00e3o tem nenhuma experi\u00eancia com programa\u00e7\u00e3o. Quando sugeri construir juntos um aplicativo de acompanhamento de jardim usando IA, seu ceticismo foi quase instant\u00e2neo. Duas horas depois, ela tinha um site funcional [\u2026]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-26T19:51:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-12T20:05:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"1095\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Ian Hernandez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ian Hernandez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ensinei Minha Av\u00f3 a Codificar Vibe (Aqui Est\u00e1 O Que Aconteceu) - DreamHost Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/","og_locale":"en_US","og_type":"article","og_title":"Ensinei Minha Av\u00f3 a Codificar Vibe (Aqui Est\u00e1 O Que Aconteceu)","og_description":"Minha av\u00f3 gerenciou planilhas de invent\u00e1rio para uma empresa t\u00eaxtil por 40 anos. Ela calcula descontos compostos na cabe\u00e7a mais r\u00e1pido do que a maioria das pessoas consegue com calculadoras, mas n\u00e3o tem nenhuma experi\u00eancia com programa\u00e7\u00e3o. Quando sugeri construir juntos um aplicativo de acompanhamento de jardim usando IA, seu ceticismo foi quase instant\u00e2neo. Duas horas depois, ela tinha um site funcional [\u2026]","og_url":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2025-11-26T19:51:48+00:00","article_modified_time":"2026-01-12T20:05:37+00:00","og_image":[{"width":1460,"height":1095,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp","type":"image\/webp"}],"author":"Ian Hernandez","twitter_card":"summary_large_image","twitter_creator":"@dreamhost","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Ian Hernandez","Est. reading time":"20 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/#article","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/"},"author":{"name":"Ian Hernandez","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/220faf2464d5ae08e41cf5f3b28fdc96"},"headline":"Ensinei Minha Av\u00f3 a Codificar Vibe (Aqui Est\u00e1 O Que Aconteceu)","datePublished":"2025-11-26T19:51:48+00:00","dateModified":"2026-01-12T20:05:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/"},"wordCount":4601,"publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp","articleSection":["AI"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/","url":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/","name":"Ensinei Minha Av\u00f3 a Codificar Vibe (Aqui Est\u00e1 O Que Aconteceu) - DreamHost Blog","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/#primaryimage"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp","datePublished":"2025-11-26T19:51:48+00:00","dateModified":"2026-01-12T20:05:37+00:00","breadcrumb":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/#primaryimage","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp","width":1460,"height":1095,"caption":"I Taught My Grandma To Vibe Code (What Happened)"},{"@type":"BreadcrumbList","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/ensinei-minha-avo-a-codificar-vibe-aqui-esta-o-que-aconteceu-pt\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dhblog.dream.press\/blog\/"},{"@type":"ListItem","position":2,"name":"Ensinei Minha Av\u00f3 a Codificar Vibe (Aqui Est\u00e1 O Que Aconteceu)"}]},{"@type":"WebSite","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website","url":"https:\/\/www-dev.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www-dev.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www-dev.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/220faf2464d5ae08e41cf5f3b28fdc96","name":"Ian Hernandez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/04\/ian-hernandez-dreamhost-150x150.png","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/04\/ian-hernandez-dreamhost-150x150.png","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/04\/ian-hernandez-dreamhost-150x150.png","caption":"Ian Hernandez"},"description":"Ian is a Product Designer based in Los Angeles, California. He is responsible for driving brand and product design at DreamHost, developing and maintaining our internal design system, and writing frontend code when he can. In his free time, he enjoys walking his dog, learning history, and discovering new music online and irl. Connect with him on LinkedIn: https:\/\/www.linkedin.com\/in\/ianhernandez23\/","url":"https:\/\/www-dev.dreamhost.com\/blog\/author\/ianh\/"}]}},"lang":"pt","translations":{"pt":78730,"es":77777,"en":77844,"de":78687,"it":78701,"fr":78738,"pl":78752,"nl":78760,"uk":78899,"ru":78968},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/78730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/1058"}],"replies":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/comments?post=78730"}],"version-history":[{"count":3,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/78730\/revisions"}],"predecessor-version":[{"id":78797,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/78730\/revisions\/78797"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/77870"}],"wp:attachment":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=78730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=78730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=78730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}