{"id":134,"date":"2025-09-09T21:32:21","date_gmt":"2025-09-09T19:32:21","guid":{"rendered":"https:\/\/stefanescu.lu\/?p=134"},"modified":"2025-09-17T09:03:24","modified_gmt":"2025-09-17T07:03:24","slug":"learning-to-stop-worrying-and-love-the-vibe","status":"publish","type":"post","link":"https:\/\/stefanescu.lu\/?p=134","title":{"rendered":"Learning to Stop Worrying and Love the Vibe"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/stop_worrying_and_learn_to_love-1-1024x683.png\" alt=\"\" class=\"wp-image-135\" srcset=\"https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/stop_worrying_and_learn_to_love-1-1024x683.png 1024w, https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/stop_worrying_and_learn_to_love-1-300x200.png 300w, https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/stop_worrying_and_learn_to_love-1-768x512.png 768w, https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/stop_worrying_and_learn_to_love-1-450x300.png 450w, https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/stop_worrying_and_learn_to_love-1.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>The post is a reflection based on building <a href=\"https:\/\/github.com\/stefanesco\/obsidize\" title=\"\">obsidize<\/a>, I wrote more about it in:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/stefanescu.lu\/?p=149\">Scratching the Vibe \u2013 How I Learned to Stop Worrying and Love the Vibe<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/stefanescu.lu\/?p=147\">Scratching the Vibe \u2013 The Itch<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/stefanescu.lu\/?p=144\">Scratching the Vibe \u2013 The Scratch<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/stefanescu.lu\/?p=139\">Scratching the Vibe \u2013 The Vibe<\/a><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>I\u2019ve been fascinated by computers\u2014and what they can be taught to do\u2014since my childhood in the \u201980s. It always seemed like with the right secret incantation you could open portals to new worlds, new possibilities; you could gain superpowers if only you knew how to conjure the magic.<\/p>\n\n\n\n<p>I wanted this power, and I admired those who had it. It seemed a skill difficult to master, a skill arriving from the future, a skill the grown-ups around me struggled with\u2014which made it all the more desirable.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>My first programming experiences came in the early 1990s on clones of the&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Zilog_Z80\">Z80<\/a>\/<a href=\"https:\/\/en.wikipedia.org\/wiki\/ZX_Spectrum\">ZX Spectrum<\/a>. I used&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/BASIC\">BASIC<\/a>&nbsp;to draw and animate simple geometric shapes, or later to write (well, copy) games published as text listings in the back of&nbsp;<a href=\"https:\/\/web.archive.org\/web\/19991018232056\/http:\/\/www.agora.ro:80\/pcrep\/arhiva.htm\">PC Report<\/a> magazine.<\/p>\n\n\n\n<p>My high school diploma project (Assistant Programming Analyst) was a&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/FoxPro\">FoxPro<\/a>&nbsp;clone of&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Norton_Commander\">Norton Commander<\/a>. My engineering diploma project was a C\/C++&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Defragmentation\">disk defragmentation<\/a>&nbsp;application.<\/p>\n\n\n\n<p>FoxPro, disk defragmentation, BASIC (not to mention Pascal, MFC, CORBA, and others): I watched each of these fade into obsolescence during my career. Yet in a way, the essence of programming didn\u2019t change. That first code I wrote 35 years ago\u2014reading input, initializing state, controlling flow, calling library functions\u2014that was programming. That was software. Until 2022.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>By then, my understanding of what makes software successful had already shifted. While writing code remained the only way to \u201cteach your computer to do something,\u201d the viability of that \u201csomething\u201d\u2014its relevance, cost, and chance of survival\u2014was less about coding and more about capturing real business needs. It was about growing solutions that could evolve with a changing domain, team, or organization (or better yet,&nbsp;<a href=\"https:\/\/www.agileanalytics.cloud\/blog\/team-topologies-the-reverse-conway-manoeuvre\">growing the right team to build the right solution<\/a>). I\u2019ve seen too many thousands of lines of clean, elegant code wasted by bad requirements, misaligned business goals, dysfunctional organizations, clueless management. In that world, being \u201ccode complete\u201d was just one small step.<\/p>\n\n\n\n<p><strong>Software engineering is about solving real problems with software, in the most cost-effective way possible.<\/strong>&nbsp;And in the projects I worked, the main problems were rarely the code itself. I found myself focusing more on process, specification, and communication.<\/p>\n\n\n\n<p>And then \u201cteaching your computer to do something\u201d changed.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Andrej Karpathy coined the term&nbsp;<a href=\"https:\/\/x.com\/karpathy\/status\/1886192184808149383?lang=en\">\u201cvibe coding\u201d<\/a>&nbsp;to describe letting large language models drive implementation. He called it \u201cfully giving in to the vibes, embracing exponentials, and forgetting that the code even exists.\u201d In this style, the \u201cassistant\u201d is no longer just an assistant: it builds functionality, proposes architectures, suggests next features. The human supplies guidance, feedback, and high-level direction.<\/p>\n\n\n\n<p>On&nbsp;<a href=\"https:\/\/github.com\/stefanesco\/obsidize\">obsidize<\/a>, I set out to lean on coding assistants as far as they could go. And they can go surprisingly far. By the end, although I spent many hours testing and debugging, I can\u2019t honestly say I\u2019ve read every line of code in the repository.<\/p>\n\n\n\n<p>Of course, I ran black-box end-to-end tests\u2014the \u201cacceptance testing.\u201d I read and reworked the documentation the assistants generated. I zoomed in on specific namespaces when needed, wrote some code, requested features, made architectural decisions. I decided what to implement and when to stop. But I didn\u2019t read every line. I didn\u2019t write (or review) every test.<\/p>\n\n\n\n<p>Does that make me just a&nbsp;<a href=\"https:\/\/www.wired.com\/story\/why-did-a-10-billion-dollar-startup-let-me-vibe-code-for-them-and-why-did-i-love-it\/#intcid=_wired-verso-hp-trending_54e5b858-ec6b-4faa-ad55-77606952df38_popular4-2\">responsible babysitter<\/a>&nbsp;for the code assistants? Was I just vibing, or was I doing proper \u201cAI-assisted engineering\u201d?<\/p>\n\n\n\n<p>In human teams, you\u2019re not expected to read all the code either\u2014not in large projects. You trust your teammates, and that trust is reinforced with conventions, reviews, tests, demos, documentation. Code assistants are new, and the level of implicit trust they deserve is still being defined. But similar checks are emerging in the LLM world: multiple personas to review code from different angles (something <a href=\"https:\/\/docs.claude.com\/en\/docs\/claude-code\/sub-agents\" title=\"\">Claude-Code already implements<\/a>), <a href=\"https:\/\/support.claude.com\/en\/articles\/11932705-automated-security-reviews-in-claude-code\" title=\"\">security reviews<\/a>, chained tasks, and structured implementation phases.<\/p>\n\n\n\n<p>Using code assistants means you\u2019re not only writing code\u2014but you\u2019re not a pure product owner either. Oversight is tighter. You manage direction, but you must also stay close to the code, watch the repo carefully (ready to revert an agent\u2019s mess), validate changes. And unlike with humans, you must be willing to discard huge amounts of work\u2014hundreds of lines, entire modules. Code is cheap now. Agents don\u2019t take ownership of their mistakes. You can\u2019t let sloppy code slip by hoping someone else will fix it later. It\u2019s better to throw it away, redefine the task, and go again. The agent won\u2019t be offended.<\/p>\n\n\n\n<p>That raises another question: if code is cheap, if agents write most of it, does the choice of programming language matter? I think it does. You still need to read it, debug it, play with it when the AI stalls in its stochastic echo chamber. Languages that are well-designed, consistent, and concise may gain an edge. Clojure, for example, is known for brevity (good for context windows and tokens), functional purity, and explicit state handling. And with the&nbsp;<a href=\"https:\/\/github.com\/bhauman\/clojure-mcp\">Clojure-MCP server<\/a>, Claude can interact directly with a live REPL\u2014iterating like an experienced developer.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Are coding assistants silver bullets for software development?<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/cloud-silver-bulet-1-1024x683.jpg\" alt=\"\" class=\"wp-image-136\" srcset=\"https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/cloud-silver-bulet-1-1024x683.jpg 1024w, https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/cloud-silver-bulet-1-300x200.jpg 300w, https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/cloud-silver-bulet-1-768x512.jpg 768w, https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/cloud-silver-bulet-1-450x300.jpg 450w, https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/cloud-silver-bulet-1.jpg 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>It depends on the monster you\u2019re trying to slay.<\/p>\n\n\n\n<p>If you need to churn code faster, or tackle technologies outside your core competence, then yes: they help. I had never finished a production-ready personal project before. I always got stuck on deployment and packaging, lost interest when forced to learn some necessary but boring technology. With AI teammates, I got further than ever.<\/p>\n\n\n\n<p>For companies that see software as a manufacturing task\u2014cranking out features and polishing wheels\u2014assistants will boost productivity. More stuff will be built.<\/p>\n\n\n\n<p>For companies in novel domains, where constraints come from the business environment, assistants can accelerate iteration, get you to working prototypes, let you test hypotheses quickly. Not a silver bullet, but a powerful tool.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>In the late \u201990s, <a href=\"https:\/\/creatingaction.stanford.edu\/pdf\/cathedral-bazaar.pdf\" title=\"\">Eric S. Raymond experimented with a then-new paradigm<\/a>: the Linux model, open source, massively collaborative, free. That movement powered the cloud and SaaS revolutions. At the time, critics worried free software would kill developer jobs, handing value to corporations. And maybe it did: those <a href=\"https:\/\/www.hbs.edu\/faculty\/Pages\/item.aspx?num=65230\" title=\"\">$8.8 trillion in open-source software<\/a> didn\u2019t land in contributors\u2019 pockets, but they did lower corporate costs. At the same time, free software spawned countless small companies that didn\u2019t need to reinvent the wheel.<\/p>\n\n\n\n<p>Did open source create opportunities for software engineers, or take them away? In the early 2000s, you were still expected to implement your own circular buffers, even your own network stack. Today, most software development is an integration exercise of open-source standards. Writing from scratch is a \u201ccode smell.\u201d The building blocks changed.<\/p>\n\n\n\n<p>Now the granularity shifts again. Coding assistants\u2014trained on hundreds of millions of open-source lines\u2014are the new layer of abstraction. They integrate the standard industry tools for you, ready to use.<\/p>\n\n\n\n<p>Fed by free and open-source software, we are approaching an uncanny version of <a href=\"https:\/\/www.gnu.org\/philosophy\/shouldbefree.en.html\" title=\"Richard Stallman\u2019s vision\">Richard Stallman\u2019s vision<\/a>: software nearly free as in beer, but not free as in freedom. Everyone can create software. Few get paid for it. The agribusiness of code, controlled by a handful of AI companies.<\/p>\n\n\n\n<p>Some see this as the end of the software engineer. I don\u2019t. Those critics have always underestimated what engineering really is. Software engineering has always been about more than code. And maybe, now that code itself is less central, the other parts of the craft\u2014problem framing, communication, iteration, validation\u2014will finally get their due.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"683\" height=\"1024\" src=\"https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/software-craftsman-1-683x1024.jpg\" alt=\"\" class=\"wp-image-137\" srcset=\"https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/software-craftsman-1-683x1024.jpg 683w, https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/software-craftsman-1-200x300.jpg 200w, https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/software-craftsman-1-768x1152.jpg 768w, https:\/\/stefanescu.lu\/wp-content\/uploads\/2025\/09\/software-craftsman-1.jpg 1024w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The post is a reflection based on building obsidize, I wrote more about it in: I\u2019ve been fascinated by computers\u2014and what they can be taught to do\u2014since my childhood in the \u201980s. It always seemed like with the right secret &hellip; <a href=\"https:\/\/stefanescu.lu\/?p=134\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-134","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/stefanescu.lu\/index.php?rest_route=\/wp\/v2\/posts\/134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stefanescu.lu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stefanescu.lu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stefanescu.lu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stefanescu.lu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=134"}],"version-history":[{"count":8,"href":"https:\/\/stefanescu.lu\/index.php?rest_route=\/wp\/v2\/posts\/134\/revisions"}],"predecessor-version":[{"id":191,"href":"https:\/\/stefanescu.lu\/index.php?rest_route=\/wp\/v2\/posts\/134\/revisions\/191"}],"wp:attachment":[{"href":"https:\/\/stefanescu.lu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stefanescu.lu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stefanescu.lu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}