<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Josip Culav, Author at ShiftMag</title>
	<atom:link href="https://shiftmag.dev/author/josip-culav/feed/" rel="self" type="application/rss+xml" />
	<link>https://shiftmag.dev/author/josip-culav/</link>
	<description>Insightful engineering content &#38; community</description>
	<lastBuildDate>Mon, 12 Jan 2026 13:05:05 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shiftmag.dev/wp-content/uploads/2024/08/cropped-ShiftMag-favicon-32x32.png</url>
	<title>Josip Culav, Author at ShiftMag</title>
	<link>https://shiftmag.dev/author/josip-culav/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>If You’re Going to Vibe Code, Vibe Responsibly!</title>
		<link>https://shiftmag.dev/if-youre-going-to-vibe-code-vibe-responsibly-7540/</link>
		
		<dc:creator><![CDATA[Josip Culav]]></dc:creator>
		<pubDate>Mon, 12 Jan 2026 12:31:57 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[vibe coding]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=7540</guid>

					<description><![CDATA[<p>We’re writing more code than ever thanks to AI - but remembering how it all works a year later is quickly becoming the real hard problem.</p>
<p>The post <a href="https://shiftmag.dev/if-youre-going-to-vibe-code-vibe-responsibly-7540/">If You’re Going to Vibe Code, Vibe Responsibly!</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-post-featured-image"><img fetchpriority="high" decoding="async" width="1200" height="630" src="https://shiftmag.dev/wp-content/uploads/2026/01/vibe-coding.png?x73249" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/01/vibe-coding.png 1200w, https://shiftmag.dev/wp-content/uploads/2026/01/vibe-coding-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/01/vibe-coding-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/01/vibe-coding-768x403.png 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></figure>


<p>Thanks to LLMs, developers are getting a serious productivity boost. With vibe coding &#8211; telling AI what you want in plain language and letting it generate the code while you review and tweak it &#8211; we’re producing more code than ever. </p>



<p>It only makes sense that, compared to just a few years ago, we’re now expected to <strong>maintain far more repositories</strong>.</p>



<p>It used to be that developers wrote their own code and, through debugging and researching solutions, learned and memorized how it worked in depth. With AI-generated code, this happens less often. Since we’re not the ones writing it from scratch, it’s <strong>easy to forget where things are and how they function</strong>.</p>



<p>So what’s the issue? </p>



<p>After some time has passed, when we need to revisit a service or repository, it takes a while to remember how the details actually work.</p>



<h2 class="wp-block-heading"><span id="making-ai-code-easy-to-work-with">Making AI code easy to work with</span></h2>



<p>To make life easier, we’ve relied on <strong>design principles</strong> that improve code readability and make it more scalable and maintainable. These include:</p>



<ul class="wp-block-list">
<li><strong>KISS </strong>(Keep It Simple, Stupid)</li>



<li><strong>DRY </strong>(Don’t Repeat Yourself)</li>



<li><strong>YAGNI </strong>(You Aren’t Gonna Need It)</li>



<li><strong>Separation of Concerns </strong>(SoC)</li>
</ul>



<p>In a year or two, when most of our code is AI-generated, debugging and expanding the codebase will become significantly harder. That’s because<strong> we likely never explored the generated code in depth</strong> &#8211; we focused on making sure it worked, ran efficiently, and looked right.</p>



<h2 class="wp-block-heading"><span id="if-you-can%e2%80%99t-explain-it-it%e2%80%99s-too-complex">If you can’t explain it, it’s too complex</span></h2>



<p>So, how do we address this?</p>



<p>In my opinion, two principles are becoming more important than the rest: <strong>Readable Code is Better than Clever Code</strong> and <strong>KISS (Keep It Simple, Stupid)</strong>.</p>



<p>Being able to open a codebase and start working immediately is going to be crucial for developers. So how do we make our services more accessible? When reviewing pull requests, one key question should guide every new feature or component: </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Is this simple enough that I can read it like a notebook, without having to dig through the code?</p>
</blockquote>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="1024" src="https://shiftmag.dev/wp-content/uploads/2026/01/j1-1024x1024.jpg?x73249" alt="" class="wp-image-7558" srcset="https://shiftmag.dev/wp-content/uploads/2026/01/j1-1024x1024.jpg 1024w, https://shiftmag.dev/wp-content/uploads/2026/01/j1-300x300.jpg 300w, https://shiftmag.dev/wp-content/uploads/2026/01/j1-150x150.jpg 150w, https://shiftmag.dev/wp-content/uploads/2026/01/j1-768x768.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>And as always, <strong>documentation and testing remain essential</strong>. One perhaps controversial opinion: </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Don’t use AI to generate docs or tests, at least not the first draft.</p>
</blockquote>



<p>Rephrasing is fine, but if you can’t explain the code in your own simple words or write straightforward unit and integration tests, the service is either too complex, or you’ve &#8220;vibed&#8221; a little too hard.</p>



<h2 class="wp-block-heading"><span id="ask-the-llm-to-generate-meaningful-metrics-and-logs">Ask the LLM to generate meaningful metrics and logs</span></h2>



<p>Additionally, when generating code, make sure to prompt the LLM to include <strong>meaningful metrics and logs</strong>, ones that let you pinpoint issues without even diving into the codebase. Use logs sparingly, but make debug logs detailed and informative.</p>



<p>Imagine opening a repository you’ve never touched before, needing to implement a change or fix a bug. What kind of logs and graphs would make it easy for you to debug the service quickly?</p>



<p>When balancing code simplicity and performance, remember this: while keeping code performant is important, <strong>overly complex solutions can hurt future developers</strong> (especially juniors) who may need to maintain or fix it later.</p>



<h2 class="wp-block-heading"><span id="less-code-more-value">Less code, more value</span></h2>



<p>Another key principle is the <strong>Pareto principle</strong>, or the 80/20 rule, which is widely used across industries, including software development. The idea is that 20% of a developer’s time produces 80% of the value.</p>



<p>Applied to code, you could say that <strong>80% of the code delivers only 20% of the value</strong>. So how does this tie into vibe coding?</p>



<p>Sometimes an LLM might &#8220;hallucinate&#8221; a call to a library that doesn’t exist. A natural next step would be to implement that library yourself &#8211; but by then, you may have already gone too far. </p>



<p>I like to think of the Pareto principle in this context, as the <a href="https://grugbrain.dev/" target="_blank" rel="noreferrer noopener">Grug-Brained Developer</a> puts it: &#8220;<strong>80 want with 20 code.&#8221;</strong> The solution might not have every bell-and-whistle the project manager imagined; it might even be a little rough around the edges, but it works, delivers most of the value, and keeps unnecessary complexity in check. Avoiding extra code like this helps keep the codebase more readable and maintainable in the long run.</p>



<h2 class="wp-block-heading"><span id="code-fast-secure%e2%80%a6-faster">Code fast, secure… faster!</span></h2>



<p>With the rise of LLM usage, <strong>security leaks have surged</strong> &#8211; but why?</p>



<p>When coding with LLMs, are you giving them the real context of your application’s deployment &#8211; just letting them write code in a test playground? Most developers aren’t.</p>



<p>We’ve seen a YoY increase in shared API keys and other sensitive data on GitHub, and it’s pretty clear there’s a correlation.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="635" src="https://shiftmag.dev/wp-content/uploads/2026/01/output-3-1024x635.png?x73249" alt="" class="wp-image-7559" srcset="https://shiftmag.dev/wp-content/uploads/2026/01/output-3-1024x635.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/01/output-3-300x186.png 300w, https://shiftmag.dev/wp-content/uploads/2026/01/output-3-768x476.png 768w, https://shiftmag.dev/wp-content/uploads/2026/01/output-3.png 1580w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Also, <strong>be wary of the comments you’re leaving behind</strong>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="984" height="57" src="https://shiftmag.dev/wp-content/uploads/2026/01/image.jpg?x73249" alt="" class="wp-image-7560" srcset="https://shiftmag.dev/wp-content/uploads/2026/01/image.jpg 984w, https://shiftmag.dev/wp-content/uploads/2026/01/image-300x17.jpg 300w, https://shiftmag.dev/wp-content/uploads/2026/01/image-768x44.jpg 768w" sizes="auto, (max-width: 984px) 100vw, 984px" /></figure>



<p>And for the grand finale &#8211; how should we approach this?</p>



<ul class="wp-block-list">
<li>Ask the AI you’re using to perform a security analysis on the codebase. </li>



<li>Use Sonar, Snyk, or another code analysis tool.</li>
</ul>



<p>In short: If you’re going to vibe code,&nbsp;<strong>vibe responsibly</strong>!</p>
<p>The post <a href="https://shiftmag.dev/if-youre-going-to-vibe-code-vibe-responsibly-7540/">If You’re Going to Vibe Code, Vibe Responsibly!</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 

Served from: shiftmag.dev @ 2026-04-04 09:07:51 by W3 Total Cache
-->