<?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>Productivity Archives - ShiftMag</title>
	<atom:link href="https://shiftmag.dev/category/productivity/feed/" rel="self" type="application/rss+xml" />
	<link>https://shiftmag.dev/category/productivity/</link>
	<description>Insightful engineering content &#38; community</description>
	<lastBuildDate>Thu, 19 Feb 2026 13:02: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>Productivity Archives - ShiftMag</title>
	<link>https://shiftmag.dev/category/productivity/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Developer Goals Don’t Have to Be Corporate Theatre</title>
		<link>https://shiftmag.dev/developer-goals-dont-have-to-be-corporate-theatre-8028/</link>
		
		<dc:creator><![CDATA[Piotr Machner]]></dc:creator>
		<pubDate>Thu, 19 Feb 2026 13:02:04 +0000</pubDate>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[business goals]]></category>
		<category><![CDATA[OKR]]></category>
		<category><![CDATA[personal development goals]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=8028</guid>

					<description><![CDATA[<p>I get it - goals often feel like extra homework. But I’ve found they don’t have to be. Done right, they can keep you focused, accelerate your learning, and guide better decisions.</p>
<p>The post <a href="https://shiftmag.dev/developer-goals-dont-have-to-be-corporate-theatre-8028/">Developer Goals Don’t Have to Be Corporate Theatre</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/02/OKRs-goals.png?x91379" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/OKRs-goals.png 1200w, https://shiftmag.dev/wp-content/uploads/2026/02/OKRs-goals-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/OKRs-goals-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/OKRs-goals-768x403.png 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></figure>


<p>From my experience as a people manager (and an even longer stint as a developer), I’ve noticed that <strong>many engineers don’t see much value in goals</strong>. </p>



<p>If this is how you feel when your manager asks you to set yearly goals (or hands you new ones) <strong>you’re not alone</strong>.</p>



<p>In my perspective, they often feel like extra homework, tacked on after the &#8220;real work&#8221; of coding, only to resurface at the end of the year when someone asks about your progress. And from where I stand, you’re right: when treated this way, goals rarely deliver tangible benefits. </p>



<p>But <strong>it doesn’t have to be like this</strong>.</p>



<h2 class="wp-block-heading"><strong>You&#8217;re missing out (on what exactly?)</strong></h2>



<p><strong>Periodic goals</strong>, when used correctly, are a powerful long-term focus tool. In fast-paced teams, swamped with Jira tickets, code reviews, and spikes, you can be constantly busy yet rarely challenge the true priority or value of your next task.</p>



<p>That’s what goals are for:</p>



<ul class="wp-block-list">
<li><strong>Company goals</strong>&nbsp;make sure you’re working on what matters.</li>



<li><strong>Personal development goals</strong>&nbsp;help you learn intentionally from your day-to-day work.</li>
</ul>



<p>If your goals aren’t doing that, it’s probably because they’re not being used as intended.</p>



<h2 class="wp-block-heading"><span id="how-goals-started-making-sense-and-bringing-value-to-me"><strong>How goals started making sense (and bringing value) to me</strong></span></h2>



<p>Once again: <strong>you must pick something that you truly feel strongly about</strong>. Realising this simple truth was the change in my case. It is better to have one goal that truly meets this requirement than four you only slightly care about.</p>



<p>My turning point came from my personal, not professional, life.&nbsp;I realised that my life wasn&#8217;t heading where I wanted, and if I didn’t change course, I wouldn’t be happy with how I’d spent it. This insight helped me see the importance of long-term planning (and I wouldn’t have seen it if I hadn’t read Stephen Covey&#8217;s classic book&nbsp;<em>The 7 Habits of Highly Effective People</em>).</p>



<p>From there, I began setting goals, actually tracking them, and finally seeing the value.</p>



<h2 class="wp-block-heading"><span id="how-to-make-goals-work">How to make goals work</span></h2>



<p>For goals to work for you, you need&nbsp;<strong>three simple requirements:</strong></p>



<ol class="wp-block-list">
<li>Choose goals you <strong>genuinely believe are important and valuable</strong>. </li>



<li><strong>Track</strong> <strong>progress</strong> <strong>regularly</strong> (if you’re not tracking, it’s usually a sign that requirement 1 isn’t really met).</li>



<li>Connect goals to your <strong>daily work</strong>, so progress happens as you ship, not as an afterthought.</li>
</ol>



<h2 class="wp-block-heading"><span id="don%e2%80%99t-isolate-goals-from-your-workflow">Don’t isolate goals from your workflow</span></h2>



<p>A common problem is that the goals are too detached from your daily work. You likely spend most of your time in the codebase, making changes based on your issue‑tracking system. Now consider a goal like:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>By the end of the year, I will have finished a Kotlin fundamentals training.</em></p>
</blockquote>



<p>That’s planning to fail. Will you truly make room for this while putting tickets on hold? If yes, great. But for most of us, day-to-day tasks feel more urgent. December arrives, and you realise you’ve made no progress. Cue the last-minute scramble.</p>



<p><strong>Define a different goal instead</strong>: </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>When I see a Kotlin feature in the codebase that I don’t understand, I’ll read the documentation and make a note of it (at least once a week).</em></p>
</blockquote>



<p>Why this works: you don’t need much extra time, it won’t derail the task at hand, it’s easy to track, and it builds a habit of continuous learning rather than a one-off course completion.</p>



<h2 class="wp-block-heading">Focus on the &#8220;how,&#8221; not just &#8220;what&#8221;</h2>



<p>Another tip is defining goals that focus you on <strong>how you&#8217;d like to accomplish something</strong>. Probably the task from the issue tracking system already tells you what you need to do. A goal can help you define additional criteria or focus on the quality.</p>



<p>Let&#8217;s say you introduced a few bugs into the system recently and want to avoid this in the future. You could define a goal:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>For every applicable pull request, I will leave a comment documenting measured test coverage before and after the change and ensure it increases.</em></p>
</blockquote>



<p>This keeps the goal anchored in your daily work while adding a perspective often missing from the ticket.</p>



<h2 class="wp-block-heading"><span id="keep-the-goals-visible">Keep the goals visible</span></h2>



<p>This relates to Requirement 2: if you do not see the goal often, you&#8217;re likely to forget to track it. Keep them in sight: as a sticky note on your monitor or pinned at the top of your to-do list.</p>



<h2 class="wp-block-heading"><span id="use-okrs-or-something-similarly-effective">Use OKRs (or something similarly effective)</span></h2>



<p>There’s a reason OKRs have stuck around: they’re simple and effective. A practical check I like is to define the&nbsp;<strong>Objective</strong>&nbsp;and then ask:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Will it really happen once these KRs are met?</em></p>
</blockquote>



<p>If the answer is &#8220;not quite,&#8221; adjust your Key Results until they make the objective inevitable.</p>



<h2 class="wp-block-heading"><span id="final-thought">Final thought</span></h2>



<p>If you&#8217;ve made it this far, I hope it’s a bit clearer how goals can help. Pick goals that matter, track them regularly, and tie them to your daily work. You’ll feel the difference.</p>



<p><strong>Happy goal‑setting!</strong></p>
<p>The post <a href="https://shiftmag.dev/developer-goals-dont-have-to-be-corporate-theatre-8028/">Developer Goals Don’t Have to Be Corporate Theatre</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Code Isn’t Slowing Your Project Down, Communication Is</title>
		<link>https://shiftmag.dev/code-isnt-slowing-your-project-down-communication-is-7889/</link>
		
		<dc:creator><![CDATA[Marek Sontag]]></dc:creator>
		<pubDate>Fri, 06 Feb 2026 12:57:57 +0000</pubDate>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<category><![CDATA[software architecture]]></category>
		<category><![CDATA[team collaboration]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=7889</guid>

					<description><![CDATA[<p>When teams don’t share information, clash on priorities, or follow unclear processes, even simple tasks can drag on for months.</p>
<p>The post <a href="https://shiftmag.dev/code-isnt-slowing-your-project-down-communication-is-7889/">Code Isn’t Slowing Your Project Down, Communication Is</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-post-featured-image"><img decoding="async" width="1500" height="788" src="https://shiftmag.dev/wp-content/uploads/2026/02/teams-ownership.png?x91379" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/teams-ownership.png 1500w, https://shiftmag.dev/wp-content/uploads/2026/02/teams-ownership-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/teams-ownership-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/teams-ownership-768x403.png 768w" sizes="(max-width: 1500px) 100vw, 1500px" /></figure>


<p id="Keepteamsownershipbutmaintaintherightarchitecture.CommunicationandConway'sLawinaction.-What'stheETA?">You get an idea and a moment later, the code’s already in your head. And before you know it &#8211; <em>bam!</em> &#8211; it’s on GitHub.</p>



<p>But hey, it was your side project, <strong>not your day job</strong>. Because once you step into a &#8220;real job,&#8221; things get complicated by the minute. </p>



<p>At first, you might think, <em>Oh, we refine the task, put it in the next sprint, implement it, do a PR, testing… and it’ll be done in about two weeks.</em> No <em>bam!</em> this time, but it’s still fast… comparatively.</p>



<p>That speed reminds you of working alone (or with a small, familiar team) where ideas move almost as quickly as they appear. Code follows a thought, and suddenly it’s in the repo. </p>



<p>But once an idea crosses teams or touches parts you don’t own, time stretches. Days turn into weeks, weeks into months &#8211; <strong>not because the code is harder, but because communication is</strong>: unfamiliar code, processes, priorities, even languages.</p>



<h2 class="wp-block-heading"><span id="who-you-work-with-is-everything">Who you work with is EVERYTHING</span></h2>



<p>Now I’m going to challenge you even more: <strong>how long would it take to implement a system‑wide feature</strong>? I’m not talking about some fancy, super‑complex, revolutionary refactor, just something that stretches across many components that aren’t yours. You don’t know them. You don’t even know the maintainers.</p>



<p>And let’s be honest, you don’t want to talk &#8211; you’re a programmer, after all, right? You think, <em>Well, a couple of sprints… maybe a few months…</em> if you’re feeling optimistic.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="250" height="266" src="https://shiftmag.dev/wp-content/uploads/2026/02/aikera.jpg?x91379" alt="" class="wp-image-7896"/></figure>



<p>When you’re <strong>working alone</strong>, the only communication is between your neurons, and that’s pretty fast, isn’t it?</p>



<p>The same goes when you <strong>collaborate with teammates you know well</strong>. You understand each other, don’t need to repeat much, and many things are already covered by your working agreements (whether written down or just implicit) so you barely have to mention them.</p>



<p>But step into a <strong>new or larger team</strong>, and suddenly communication is full of obstacles. You don’t know the people, you don’t know how they work, they might speak another language &#8211; or worse, code in another language! Cooperation suddenly feels almost impossible.</p>



<p>It will take months, because you need to talk to the others, discuss multiple opinions, understand different perspectives and reach number of compromises. Implementation is easy-peasy.&nbsp;</p>



<h2 class="wp-block-heading" id="Keepteamsownershipbutmaintaintherightarchitecture.CommunicationandConway'sLawinaction.-Doityourwayor...talktoastranger?"><span id="the-less-we-know-about-the-project-the-more-we-try-to-handle-it-ourselves">The less we know about the project, the more we try to handle it ourselves</span></h2>



<p>Recently we’ve been <strong>implementing a very custom solution for a big client</strong>. We generally don’t provide custom solutions, but sometimes customers, especially big ones, manage to convince us s<em>omehow</em>.&nbsp;</p>



<p>For most of our integrations, we rely on two key components:</p>



<ol class="wp-block-list">
<li><strong>Component A</strong> handles queuing, throttling, and light request processing.&nbsp;</li>



<li><strong>Component B</strong> handles more substantial model transformations and aligns our data with the external provider’s protocol.</li>
</ol>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="347" src="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-06-at-11.21.03-1024x347.png?x91379" alt="" class="wp-image-7901" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-06-at-11.21.03-1024x347.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-06-at-11.21.03-300x102.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-06-at-11.21.03-768x260.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>In this case, <strong>no major model manipulation was required</strong>. However, we couldn’t simply send data from A to the provider. We were aware of the configuration possibilities in Component A.</p>



<p>So the question arose: Should we stick to our usual A+B setup, following the well‑worn path? Or should we step outside our comfort zone, reconfigure Component A, and see if we can eliminate the need for Component B altogether?</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="387" src="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-06-at-11.26.25-1024x387.png?x91379" alt="" class="wp-image-7905" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-06-at-11.26.25-1024x387.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-06-at-11.26.25-300x113.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-06-at-11.26.25-768x290.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>If both were ours, the answer would be easy. But we didn’t know much about A &#8211; we didn’t even know the maintainers. </p>



<p>The temptation to stick with the usual path grew. Then someone had the clever idea to explore Component A using Claude Code. <em>Now we know it, we’re AI-powered! We can do anything, even talk to strangers! Bring them on!</em> we thought. This time, we did it the right way.</p>



<p>Jokes aside, Components A and B (and their ownership by different teams) are a classic example of <a href="https://en.wikipedia.org/wiki/Conway%27s_law" target="_blank" rel="noreferrer noopener">Conway’s Law</a>: the tendency to copy organizational structure into system design. <strong>The harder it is for two people or teams to collaborate, the more likely they are to build separate, siloed parts of the system </strong>(have you heard about <a href="https://en.wikipedia.org/wiki/Information_silo" target="_blank" rel="noreferrer noopener">silos</a>?).</p>



<p>Still doubt that poor communication shapes architecture? Reread the first paragraph &#8211; you probably didn’t even notice it the first time. Or check out the insightful presentation <em><a href="https://www.youtube.com/watch?v=5IUj1EZwpJY" target="_blank" rel="noreferrer noopener">The Only Unbreakable Law</a></em>.</p>



<p>Still unconvinced? Here’s a knockout argument: think back to the last time you tried to sort something out at a government office. How many doors did you have to knock on? How many forms did you have to fill out? How many organizational units did you have to visit? And all for just one issue…</p>



<figure class="wp-block-image"><img decoding="async" src="https://media.licdn.com/dms/image/v2/D4E12AQHKTlzZGXDJNw/article-cover_image-shrink_720_1280/B4EZflMzo.G4AM-/0/1751897030168?e=2147483647&amp;v=beta&amp;t=uOKuWYQjGLrSooRyHYm-uqCPCczE4zWWyRYKyhdpiZE" alt="Permit A38: the dilemma of artificial intelligence"/></figure>



<p>In a well-designed company, this doesn’t always need to be an issue. Why would a corporate lawyer need to talk to a DevOps engineer? Or an accountant to a UI tester?</p>



<p>But when it comes to software, the boundaries aren’t always so clear. In our example, <strong>the less we know about the people maintaining a given component, the more likely we are to misuse it and try to solve the problem on our own</strong>. That often leads first to overcomplicated architecture, and then to technical and organizational silos.</p>



<h2 class="wp-block-heading" id="Keepteamsownershipbutmaintaintherightarchitecture.CommunicationandConway'sLawinaction.-Let'sfightthelaw"><span id="this-is-how-my-team-fought-the-conway%e2%80%99s-law">This is how my team fought the Conway’s Law</span></h2>



<p>You’re probably thinking there must be a way around this, and you’re right. There’s an approach called the <strong>Inverse Conway Maneuver</strong>: if the organization shapes the architecture, why not design teams to build the system we want? </p>



<p>Sounds clever, but it’s not easy, especially in established companies. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Management must be tech-savvy and understand the right architecture, and engineers need to grasp the target design and reasoning, since changes often involve reorganizing the codebase.</p>
</blockquote>



<p><strong>Organizational changes don’t have to impact the whole company</strong> and they can be applied on a smaller scale. Here’s a simple example from my experience. </p>



<p>We used to work on a product end-to-end and our area was defined by the product, not the architecture. Sounds nice, right?</p>



<p>However, <strong>we were backend developers, and </strong>since <strong>the product included front-end applications</strong>, we also had to develop and maintain the user-facing parts. We were never front-end experts, so we struggled a lot. We knew the product and its business specifics, but our tech gaps were a constant drag.</p>



<p>Eventually, we decided to hand it over to front-end experts. What a relief! Product Managers got what they wanted on time, backend developers could focus on our strengths, and frontend developers had fun fixing our mistakes.</p>



<p>We thought everything was sorted, until later, when we all got together in one room, despite being geographically distributed, to talk about the product. During that session, <strong>we uncovered a few weird issues we hadn’t noticed before</strong>. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>The key was sharing knowledge about how each part worked and how they worked together, which revealed bugs invisible when working in isolation. It was eye-opening, and I can’t overlook another benefit: building team spirit through shared activities and discoveries, which greatly improved our future collaboration.</p>
</blockquote>



<h2 class="wp-block-heading" id="Keepteamsownershipbutmaintaintherightarchitecture.CommunicationandConway'sLawinaction.-Reality"><span id="sit-down-and-listen-to-other-teams">Sit down and listen to other teams</span></h2>



<p>So here’s the thing: <strong>Conway’s Law isn’t going away</strong>. No matter how hard you try, no matter how many architecture diagrams you draw, your system will always reflect how your teams communicate… or don’t.</p>



<p>But before you panic, remember the government office analogy: you’re knocking on doors because that’s how the organization is structured, not because doors are inherently evil. The same applies here. Yes, your architecture will mirror organizational boundaries, but it’s on you whether you knock or find a workaround.</p>



<p>Every time you sit in a room with people from another team and actually listen, every time you take the time to understand how the system really works, <strong>you’re actively shaping the architecture</strong> &#8211; whether you realize it or not.</p>



<p><a href="https://confluence.infobip.com/spaces/~msontag/pages/829690279/Keep+teams+ownership+but+maintain+the+right+architecture.+Communication+and+Conway+s+Law+in+action."></a></p>
<p>The post <a href="https://shiftmag.dev/code-isnt-slowing-your-project-down-communication-is-7889/">Code Isn’t Slowing Your Project Down, Communication Is</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Zencoder CEO: Hustle Hype Didn’t Drive Our $2B Exit &#8211; Sustainable Work Did</title>
		<link>https://shiftmag.dev/stop-the-hustle-hype-the-2b-truth-behind-smart-grind-6931/</link>
		
		<dc:creator><![CDATA[Anastasija Uspenski]]></dc:creator>
		<pubDate>Fri, 12 Dec 2025 11:29:11 +0000</pubDate>
				<category><![CDATA[Event]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Andrew Filev]]></category>
		<category><![CDATA[Zencoder]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=6931</guid>

					<description><![CDATA[<p>Sleepless nights? Not needed. Smart grind? Absolutely. How Zencoder built a $2B exit.</p>
<p>The post <a href="https://shiftmag.dev/stop-the-hustle-hype-the-2b-truth-behind-smart-grind-6931/">Zencoder CEO: Hustle Hype Didn’t Drive Our $2B Exit &#8211; Sustainable Work Did</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Silicon Valley’s &#8220;work till you drop&#8221; culture has long been romanticized as the path to billion-dollar success.</p>



<p>At the <a href="https://shiftmag.dev/tag/web-summit-2025/" target="_blank" rel="noreferrer noopener">Web Summit conference</a>, <strong>Andrew Filev</strong>, CEO of Zencoder &#8211; a company that achieved a $2.25B exit &#8211; <strong>debunked that myth</strong>. He called it blind hustle, a mindset that destroys long-term innovation and sustainable growth.</p>



<p>For engineers and founders navigating fierce competition, Filev argues that success depends not on the number of hours worked but on the <strong>quality, focus, and sustainability of effort</strong>. He calls this approach <em>the smart grind</em>.</p>



<h2 class="wp-block-heading"><span id="the-toxic-cult-of-996">The toxic cult of 996</span></h2>



<p>Filev highlights how overwork has become normalized, especially through the infamous “996” schedule, <strong>9 AM to 9 PM, 6 days a week</strong>, a routine common in hyper-competitive tech markets. </p>



<p>This panic-driven culture often disguises itself as passion but ultimately stunts professional growth.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Creative output peaks only within a certain range; beyond that, productivity nosedives. Those extra hours often add little value and instead drain the energy needed for rest, reflection, and strategic thinking.</p>
</blockquote>



<p>Many skilled engineers fall into what Filev calls the<strong> </strong>&#8220;over-engineer’s trap,&#8221; where they <strong>chase hours instead of impact</strong>. In doing so, they trade clear, strategic thinking for the illusion of productivity, creating overly complex solutions when simpler ones would suffice.</p>



<p>Even stepping away can feel difficult. Filev recalls taking vacations yet constantly feeling pulled back into work, a cycle that slowly erodes creativity. Innovation, he argues, depends on perspective &#8211; and perspective only comes when you truly disconnect.</p>



<h2 class="wp-block-heading">The &#8220;smart grind&#8221; mindset</h2>



<p>Instead of chasing blind hustle, Filev promotes the smart grind, which drives <strong>lasting, industry-defining success</strong>.</p>



<p>The myth of the &#8220;overnight success&#8221; fuels burnout. Filev explains that every transformative company, including his own, grew from years of consistent, intentional work. Real progress demands a <strong>sustainable pace</strong>, not a desperate sprint.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>I’d rather work in a way that increases the law of probability that success finds me.</p>
</blockquote>



<p>True success isn’t a lottery. It’s the outcome of steady, high-quality decisions that compound over time.</p>



<h2 class="wp-block-heading"><span id="think-clearly-and-direct-ai-effectively"><strong>Think clearly and direct AI effectively!</strong></span></h2>



<p>Shift your focus from how long you work to what you work on and how you approach it. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Start by recognizing patterns, study market trends, and your team’s performance to make smarter, more informed choices.</p>
</blockquote>



<p>Then, guide your direction by ensuring every hour of effort supports your long-term strategy instead of reacting to short-term, low-impact tasks.</p>



<p>Filev warns that AI could amplify the blind hustle mindset. As automation handles more tasks, the real advantage belongs to people who can <strong>think clearly</strong> and <strong>direct AI effectively</strong>. Burnout dulls that ability, leaving even talented teams ineffective as AI “bosses.”</p>



<p>The edge no longer comes from working longer, but from maintaining the mental clarity to make <strong>high-impact, strategic decisions</strong>. Filev’s message is simple: </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>The $2.25B exit didn’t come from sleepless nights at the office. It came from years of disciplined, well-rested, high-quality decisions. True innovation and lasting success come from sustainability, not sacrifice.</p>
</blockquote>


<figure class="wp-block-post-featured-image"><img loading="lazy" decoding="async" width="800" height="480" src="https://shiftmag.dev/wp-content/uploads/2025/11/zencoder1.png?x91379" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2025/11/zencoder1.png 800w, https://shiftmag.dev/wp-content/uploads/2025/11/zencoder1-300x180.png 300w, https://shiftmag.dev/wp-content/uploads/2025/11/zencoder1-768x461.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure><p>The post <a href="https://shiftmag.dev/stop-the-hustle-hype-the-2b-truth-behind-smart-grind-6931/">Zencoder CEO: Hustle Hype Didn’t Drive Our $2B Exit &#8211; Sustainable Work Did</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Need Someone to Handle Support, Tech Debt, and Team Focus? Meet the Paladin</title>
		<link>https://shiftmag.dev/need-someone-to-handle-support-tech-debt-and-team-focus-meet-the-paladin-6547/</link>
		
		<dc:creator><![CDATA[Tino Petrina]]></dc:creator>
		<pubDate>Thu, 16 Oct 2025 12:06:57 +0000</pubDate>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<category><![CDATA[Paladin]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=6547</guid>

					<description><![CDATA[<p>Every team needs a hero, especially when support pings, bugs, and tech debt all strike at once.</p>
<p>The post <a href="https://shiftmag.dev/need-someone-to-handle-support-tech-debt-and-team-focus-meet-the-paladin-6547/">Need Someone to Handle Support, Tech Debt, and Team Focus? Meet the Paladin</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Every sprint, team members juggle a <strong>mountain of responsibilities</strong> &#8211; planning new features, fixing bugs, running tests, and still trying to squeeze in time for support, monitoring, and ceremonies. And let’s be honest: technical debt usually ends up somewhere near the bottom of that never-ending to-do list.</p>



<p>Enter the <strong>Paladin</strong> &#8211; a brave soul with a new set of duties each sprint. </p>



<p>This role helps teams stay focused, move faster, and still tackle the things that usually fall through the cracks. Curious how it works? Let me share what we’ve learned in my team.</p>



<h2 class="wp-block-heading" id="Paladinroleempoweragileteamsthroughdedicatedsupport-IntroducingPaladinrole">Meet the Paladin &#8211; defender of focus, slayer of tech debt</h2>



<p>The Paladin is a dedicated team member with <strong>unique responsibilities each sprint</strong> &#8211; a hybrid between a sprint host and a support guardian.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>This role runs <strong>alongside the sprint</strong>, not within its planned capacity, serving as the shield that protects the team from distractions, context switching, and chaos.</p>
</blockquote>



<p>Duties of the Paladin:</p>



<ol class="wp-block-list">
<li><strong>Monitor</strong> team support and monitoring channels.</li>



<li><strong>Provide</strong> immediate support and troubleshooting for reported problems.</li>



<li><strong>Host</strong> all sprint-related ceremonies, such as daily standups, sprint reviews, and sprint planning.</li>



<li><strong>Resolve</strong> tech debt and improvement tasks during support downtime.</li>
</ol>



<p>The Paladin helps the team stay <strong>laser-focused on sprint goals</strong> while reducing distracting context switches. It speeds up response times for support, monitoring, and incident handling &#8211; all without impacting sprint or company objectives.</p>



<p>And a happy side effect? It <strong>frees up time to tackle tech debt</strong> and improvement tickets that would otherwise languish in the backlog.</p>



<h2 class="wp-block-heading" id="Paladinroleempoweragileteamsthroughdedicatedsupport-Howitlooksinpractice"><span id="what-it-looks-like-in-action">What it looks like in action?</span></h2>



<p>Our team has a <strong>dedicated Kanban board for tech debt and improvement tasks</strong> (including tasks with special labels and bugs). This allows us to prioritize items that the Paladin can tackle without affecting the team’s availability or deliverability.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Some examples of tasks the Paladin has successfully handled include migrating microservices to a new framework (.NET 6 to .NET 8), improving CI/CD pipelines, ensuring compliance with various ADRs, enhancing logging, and moving background logic to dedicated jobs.</p>
</blockquote>



<p>Beyond task management, the Paladin also <strong>participates in PR reviews</strong>. This serves two purposes: </p>



<ul class="wp-block-list">
<li>Ensuring there are enough team members for quality reviews.</li>



<li>Keeping the Paladin up to date with ongoing sprint tasks.</li>
</ul>



<p>Additionally, having the Paladin facilitate sprint-related ceremonies indirectly <strong>strengthens soft skills</strong> while helping push sprint goals forward. Another indirect benefit is that the Paladin frees up time for tasks that often get sidelined in the normal team flow, such as improving documentation, support, and monitoring.</p>



<h2 class="wp-block-heading" id="Paladinroleempoweragileteamsthroughdedicatedsupport-Isitworthit?"><span id="do-you-need-a-paladin">Do you need a Paladin?</span></h2>



<p>The biggest value of the Paladin role is that it allows teams to <strong>focus their sprint time on delivering sprint and company goals</strong> without losing too much time to mundane tasks like support, monitoring, tech debt, and sprint ceremonies. </p>



<p>By having a dedicated team member each sprint to handle these responsibilities, we indirectly increase the value of the whole team and improve our ability to support future features. Of course, every team is different, and the challenges they face are unique, so this role can be used as <strong>a template to tailor the best experience</strong> for your own team.</p>



<p></p>


<figure class="wp-block-post-featured-image"><img loading="lazy" decoding="async" width="1200" height="630" src="https://shiftmag.dev/wp-content/uploads/2025/10/paladin.png?x91379" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2025/10/paladin.png 1200w, https://shiftmag.dev/wp-content/uploads/2025/10/paladin-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2025/10/paladin-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2025/10/paladin-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure><p>The post <a href="https://shiftmag.dev/need-someone-to-handle-support-tech-debt-and-team-focus-meet-the-paladin-6547/">Need Someone to Handle Support, Tech Debt, and Team Focus? Meet the Paladin</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Your Platform Might Already Be Incompatible With the Future</title>
		<link>https://shiftmag.dev/matt-biilmann-on-mastering-agentic-experience-6237/</link>
		
		<dc:creator><![CDATA[Marko Crnjanski]]></dc:creator>
		<pubDate>Fri, 26 Sep 2025 09:06:51 +0000</pubDate>
				<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Agent Experience]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AX]]></category>
		<category><![CDATA[Matt Biilmann Christensen]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[Shift Conference 2025]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=6237</guid>

					<description><![CDATA[<p>Software design has always been human-centered. But in the age of AI agents, that’s starting to look like a limitation, not a virtue. The future of software is not in good UX, but in great AX.</p>
<p>The post <a href="https://shiftmag.dev/matt-biilmann-on-mastering-agentic-experience-6237/">Your Platform Might Already Be Incompatible With the Future</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>At this year’s <a href="https://shift.infobip.com/#hero" target="_blank" rel="noreferrer noopener">Infobip Shift conference</a>, <a href="https://shiftmag.dev/tag/matt-biilman/" target="_blank" rel="noreferrer noopener">Matt Biilmann Christensen</a>, co-founder and CEO of Netlify, spotlighted the next major evolution in software: <strong>agentic experience (AX)</strong>. </p>



<p>He drew a clear line through past transformations — User Experience (UX) reshaped digital products in the 1990s, and Developer Experience (DX) redefined platforms in the 2010s. Matt argues that AX drives the critical design frontier in the era of AI-driven development. </p>



<p><strong>“Good DX doesn’t always mean good AX,”</strong> Matt said. Tools that feel intuitive for humans often frustrate AI agents. He urged builders to design platforms that deliver seamless human usability and strong agentic experience, allowing AI systems to interact, adapt, and create value without friction.</p>



<h2 class="wp-block-heading"><span id="redefining-the-developer-population"><strong>Redefining the Developer Population</strong></span></h2>



<p>Matt opened by challenging how we define a “developer.” He reminded the audience that the industry once dismissed frontend developers as “pseudo-developers,” only later to acknowledge them as essential builders of the modern web.</p>



<p>Similarly, he argued that <a href="https://shiftmag.dev/tag/ai-agents/" target="_blank" rel="noreferrer noopener">today’s AI agents</a> sit at the edge of legitimacy. <strong>With the right platforms and tooling, they could redefine development and bring billions more people into the fold</strong>.</p>



<p>Matt envisioned a future not limited to millions of professional software engineers but open to as many as three billion people — anyone with technical acumen and an internet connection — who could step into development through agents.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>The opportunity is not just to grow the developer market, but to redefine what development means for the &#8220;next 100 million people coming online&#8221;.</p>
</blockquote>



<h2 class="wp-block-heading"><span id="access-context-and-tools-the-three-pillars-of-ax"><strong>Access, Context, and Tools: The Three Pillars of AX</strong></span></h2>



<p>Matt framed AX around three core challenges: <strong>access, context, and tools.</strong> </p>



<p>Access focuses on how easily agents can interact with a product. Traditional authentication models, like OAuth scopes, often block agents that need open-ended flexibility. Matt highlighted<strong> “anonymous flows” and sandboxed environments</strong>, which let agents experiment before locking in permissions.</p>



<p>Netlify, Neon, and Clerk provided clear examples of this pattern, granting limited access first and formalizing accounts only when necessary. Context ensures agents understand a product’s existence and how to use it effectively. </p>



<p>Matt spotlighted “context engineering,” where structured documentation — <strong>Markdown files, MCP servers, or custom <code>.md </code>rules — feeds LLMs the information they need to generate reliable output</strong>. He also suggested that search engine optimization could evolve into Generative AI Optimization, helping models surface and apply product knowledge more accurately. </p>



<p>Tools form the final pillar, shaping how agents act on information. Matt stressed that platforms must offer intuitive APIs, predictable interfaces, and robust debugging options so agents can perform reliably at scale.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://shiftmag.dev/wp-content/uploads/2025/09/bilman_2_-1024x538.png?x91379" alt="" class="wp-image-6247" srcset="https://shiftmag.dev/wp-content/uploads/2025/09/bilman_2_-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2025/09/bilman_2_-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2025/09/bilman_2_-768x403.png 768w, https://shiftmag.dev/wp-content/uploads/2025/09/bilman_2_.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="has-small-font-size">For Matt, AX is not a feature or protocol but a discipline, much like UX. It requires constant observation, iteration, and empathy.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>On the other hand, tools are the interfaces through which agents interact with products. Even well-designed CLIs and APIs can fail when faced with non-human users. </p>
</blockquote>



<p>Matt showed how Netlify’s CLI, long celebrated for its developer experience, repeatedly tripped up an<strong> AI coding agent during deployment</strong>. He transformed the tool into an AX-ready platform by adding a single non-interactive command — useless for most humans but ideal for agents.</p>



<h2 class="wp-block-heading"><span id="standards-and-ecosystem-shifts"><strong>Standards and Ecosystem Shifts</strong></span></h2>



<p>A recurring theme in Matt&#8217;s lecture was the lack of standards around agentic experience (AX). He highlighted early frameworks like the <a href="https://shiftmag.dev/how-infobips-mcp-enables-true-agentic-ai-5220/" target="_blank" rel="noreferrer noopener">Model Context Protocol (MCP)</a> and lightweight conventions such as <code>llms.txt</code> as signals of the industry&#8217;s direction. </p>



<p><strong>Matt warned against naively exposing entire APIs to agents</strong>. He urged developers to treat MCP like a user interface for LLMs, carefully designing the minimal tools and context agents need to succeed. </p>



<p>He contrasted Salesforce&#8217;s closed approach, which pushes proprietary agents while restricting integration, with HubSpot&#8217;s open strategy, which embraces MCP to give agents seamless access. The latter, Matt argued, shows how embracing AX can differentiate products in a fast-evolving ecosystem. </p>



<p><strong>For Matt, AX isn&#8217;t just a feature or protocol — it&#8217;s a discipline, like UX</strong>. It demands constant observation, iteration, and empathy, not just for human end-users but also for the agents acting on their behalf. He suggested this shift could unlock enormous economic potential by serving existing professionals and bringing entirely new demographics into web development.</p>



<p>At Netlify, early investments in AX have already delivered results. Since launching these efforts a year ago, <strong>the company has seen a fivefold increase in daily signups and a sevenfold jump in paid conversions</strong>. Even more importantly, AX has empowered millions of new users with little or no coding background to become active builders on the platform.</p>



<h2 class="wp-block-heading"><span id="a-call-to-developers"><strong>A Call to Developers</strong></span></h2>



<p>As AI agents take on more tasks — writing, debugging, and deploying code — the barriers to entry for development are collapsing. <strong>Skills like algorithm design and CLI expertise may lose weight</strong>, while qualities such as product sense, empathy, and domain knowledge gain importance.</p>



<p><strong>“This is an opportunity to invite so many more people into the room,”</strong> Matt said, highlighting use cases from HR teams designing surveys to marketers prototyping campaigns with AI agents.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>The next generation of developers are coming, and it’s up to us to ensure the web is ready for them.</p>
</blockquote>



<p>For developers, Matt delivered a clear message: just as UX and DX once drove competitive advantage, mastering <strong>agentic experience (AX)</strong> may soon decide which tools — and which companies — define the future of software.</p>



<p><strong>Want to know what else was discussed at Infobip Shift at Zadar in 2025? Find out <a href="https://shiftmag.dev/tag/shift-conference-2025/" target="_blank" rel="noreferrer noopener">here</a>!</strong></p>


<figure class="wp-block-post-featured-image"><img loading="lazy" decoding="async" width="1200" height="630" src="https://shiftmag.dev/wp-content/uploads/2025/09/bilman_1_.png?x91379" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2025/09/bilman_1_.png 1200w, https://shiftmag.dev/wp-content/uploads/2025/09/bilman_1_-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2025/09/bilman_1_-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2025/09/bilman_1_-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p></p>
<p>The post <a href="https://shiftmag.dev/matt-biilmann-on-mastering-agentic-experience-6237/">Your Platform Might Already Be Incompatible With the Future</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>5 Times LLMs Help You Code… and 5 Times They Fail</title>
		<link>https://shiftmag.dev/5-times-llms-help-you-code-and-5-times-they-fail-5978/</link>
		
		<dc:creator><![CDATA[Anastasija Uspenski]]></dc:creator>
		<pubDate>Fri, 05 Sep 2025 13:49:05 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[LLMs]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=5978</guid>

					<description><![CDATA[<p>84% of developers now use AI daily - mostly LLMs. They’re great for cutting workloads, but risky in the wrong spots. Here are 5 times AI shines, and 5 times it can totally wreck your work!</p>
<p>The post <a href="https://shiftmag.dev/5-times-llms-help-you-code-and-5-times-they-fail-5978/">5 Times LLMs Help You Code… and 5 Times They Fail</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Stack Overflow’s survey shows <a href="https://shiftmag.dev/stack-overflow-survey-2025-ai-5653/" target="_blank" rel="noreferrer noopener">devs don’t fully trust AI</a> &#8211; yet they can’t stop using it! While agentic AI remains mostly hype, <strong>LLMs continue to dominate everyday developer workflows</strong>.</p>


<figure class="wp-block-post-featured-image"><img loading="lazy" decoding="async" width="1600" height="896" src="https://shiftmag.dev/wp-content/uploads/2025/09/aislop.png?x91379" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2025/09/aislop.png 1600w, https://shiftmag.dev/wp-content/uploads/2025/09/aislop-300x168.png 300w, https://shiftmag.dev/wp-content/uploads/2025/09/aislop-1024x573.png 1024w, https://shiftmag.dev/wp-content/uploads/2025/09/aislop-768x430.png 768w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></figure>


<p>The survey shows GPT models dominate, with 82% of developers using them last year. Claude Sonnet is gaining ground too &#8211; especially among pros (45%) over beginners (30%). While many try &#8220;vibe coding,&#8221; 77% say it’s not part of their real workflow. </p>



<p>This gap between use and trust drove us to explore <strong>where LLMs truly help and where they can make a mess</strong>. To break it down, we put together a list of the top 5 good ways to use these AI tools, along with 5 situations where you should absolutely steer clear.</p>



<h2 class="wp-block-heading"><span id="llms-as-superstars-for-these-tasks">LLMs as superstars for these tasks</span></h2>



<p>LLMs excel at <strong>practical, time-saving tasks</strong> &#8211; particularly those that are repetitive or well-structured. From generating boilerplate code and debugging to drafting docs or translating languages, they act as tireless productivity boosters. They’re also handy learning companions, offering explanations and exercises on demand. <br><br>Next, we’ll highlight where LLMs truly add value in everyday development.</p>



<h3 class="wp-block-heading"><span id="1-boilerplate-and-setup">1. Boilerplate and setup</span></h3>



<p>We all know that <a href="https://medium.com/@sunnypatel124555/automated-code-generation-with-large-language-models-llms-0ad32f4b37c8" target="_blank" rel="noreferrer noopener">LLMs solve repetitive tasks excellently</a>. That happens because they can automatically generate a project template, initialization code, config files, or standard classes and functions in just one second. </p>



<p>For example, ChatGPT needs only one second to hit the usual patterns and syntax on the first attempt. <strong>They are most effective for generating base code</strong>, which the developer then reviews, shapes, and adapts.</p>



<h3 class="wp-block-heading"><span id="2-debugging-assistance">2. Debugging assistance</span></h3>



<p>LLMs always step in as reliable assistants when you need <a href="https://www.index.dev/blog/llms-for-debugging-error-detection" target="_blank" rel="noreferrer noopener">&#8220;another pair of eyes&#8221; to find a bug</a>. <strong>They analyse code surprisingly well because</strong> they can spot logical gaps, propose fixes, and even explain why a function fails specific tests. </p>



<p>For example, you only need to insert an error message and ask, &#8220;What is wrong here?&#8221; &#8211; the model will suggest where the issue hides. Of course, always check suggestions through tests.</p>



<h3 class="wp-block-heading"><span id="3-documentation-and-comments">3. Documentation and comments</span></h3>



<p>Writing documentation and comments often feels boring, <a href="https://blog.jetbrains.com/ai/2025/02/how-do-llms-benefit-developer-productivity/" target="_blank" rel="noreferrer noopener">but LLMs do it quickly and efficiently</a>. They can generate <strong>docstrings, README sections, or comments based on code</strong>.</p>



<p>As one Reddit user says: &#8220;for simple tasks &#8211; like adding documentation or looking up syntax &#8211; I can get a near-instant solution.&#8221; So, in this case, LLMs are excellent for filling documentation gaps or creating explanations for colleagues who need help.</p>



<h3 class="wp-block-heading"><span id="4-code-conversion">4. Code conversion</span></h3>



<p>Porting code between languages or frameworks often feels exhausting. <strong>ChatGPT can help translate a Python function into Java or C# code</strong>. <a href="https://www.researchgate.net/publication/389417666_A_Study_on_ChatGPT-Based_Code_Translation_from_Python_to_Java" target="_blank" rel="noreferrer noopener">It works best with popular languages and standard patterns</a>. </p>



<p>Naturally, you always need to validate the translated code and adapt idioms or APIs, but as a first step, it can significantly speed up the process.</p>



<h3 class="wp-block-heading"><span id="5-learning-aid">5. Learning aid</span></h3>



<p>Naturally, <a href="https://blog.stackademic.com/why-large-language-models-llms-are-a-great-reason-to-learn-coding-a12d205a6d43" target="_blank" rel="noreferrer noopener">the thing we all use LLMs for: quick learning!</a> They can serve as an educator available 24/7. They can<strong> explain concepts, clarify syntax, or offer exercises</strong>.</p>



<p>For example, you can ask ChatGPT: &#8220;What does this error mean?&#8221; or &#8220;Give me a recursion exercise for beginners.&#8221; The model will generate explanations and examples that align with your knowledge level. </p>



<p>Again, this proves very useful for self-study, with the note that you must verify every claim.</p>



<h2 class="wp-block-heading"><span id="where-llms-consistently-fail">Where LLMs consistently fail</span></h2>



<p>LLMs aren’t perfect. They can speed up development, but <strong>real-world tasks reveal their limits</strong> &#8211; from subtle bugs and insecure code to flawed designs and privacy risks. Over-reliance can even weaken core developer skills. </p>



<p>Next, we highlight where LLMs often fall short and the risks teams should watch for.</p>



<h3 class="wp-block-heading"><span id="1-risks-in-production-code">1. Risks in production code</span></h3>



<p><a href="https://kodus.io/en/the-biggest-dangers-of-ai-generated-code/" target="_blank" rel="noreferrer noopener">Do not assume that AI code works for production</a>. Even when it looks correct, it can contain hidden bugs or incomplete logic. </p>



<p>Experienced developers warn: always <strong>&#8220;double-check your code, run the appropriate tests, and use your best logical judgement.&#8221;</strong> Also, keep in mind that models act non-deterministically—the same prompt can yield different results.</p>



<h3 class="wp-block-heading"><span id="2-security-vulnerabilities">2. <strong>Security vulnerabilities</strong></span></h3>



<p>AI often suggests insecure patterns. Research shows that about <a href="https://arxiv.org/abs/2108.09293" target="_blank" rel="noreferrer noopener">40% of Copilot suggestions contained exploitable vulnerabilities</a>. </p>



<p><strong>ChatGPT can generate similar problems (e.g., SQL injection, weak encryption)</strong>. Best practice dictates treating every AI-generated code as insecure until you check it with static analysis and a code review process.</p>



<h3 class="wp-block-heading"><span id="3-limitations-in-system-design">3. Limitations in system design</span></h3>



<p>LLMs do not suit the creation of architecture or complex systems. They can assemble a diagram or deployment script,<a href="https://medium.com/@harshal.hayat/the-problem-of-llm-assisted-software-development-and-its-origins-f0b8fc21c94f" target="_blank" rel="noreferrer noopener"> but lack an understanding of context and trade-off decisions</a>. </p>



<p>They can also suggest <strong>outdated libraries or naive choices</strong>. Use them only for smaller parts of the design you control and verify.</p>



<h3 class="wp-block-heading"><span id="4-data-privacy-issues">4. Data privacy issues</span></h3>



<p>Stay careful with what you send to LLM services. <strong>Prompts often get logged and stored</strong>. <a href="https://medium.com/@gurpreets_87390/data-privacy-and-security-challenges-in-using-llms-for-business-4a2945009847" target="_blank" rel="noreferrer noopener">That means your code may end up in a future training set</a>.</p>



<p>Experts warn that uploading source code into a public model can &#8220;inadvertently disclose vital trade secrets.&#8221; Never input confidential data (passwords, internal comments, user information) into public models.</p>



<h3 class="wp-block-heading"><span id="5-skill-degradation">5. Skill degradation</span></h3>



<p>Excessive reliance on LLMs can <a href="https://www.turkiyetoday.com/lifestyle/study-warns-overusing-ai-tools-may-weaken-critical-thinking-and-brain-activity-3205968" target="_blank" rel="noreferrer noopener">cause developers to neglect fundamental skills</a>. Junior developers skip learning basics, while seniors lose the habit of diving deep into problems.</p>



<p>As analyses warn,<strong> &#8220;skills atrophy&#8221; is a real risk</strong>. Over time, teams may code quickly but stay underprepared for unexpected issues. Best practice suggests using LLMs as assistants and tutors, not as crutches.</p>



<p>LLMs serve as helpful assistants but never as infallible ones. Treat them best <strong>&#8220;like Stack Overflow snippets: useful, but unreliable.&#8221;</strong> </p>



<p><em>Take advantage of the &#8220;yay&#8221; areas to accelerate routine tasks, but always keep the &#8220;nay&#8221; risks in mind. With careful use and human oversight, LLMs can help you increase productivity without breaking your codebase.</em></p>



<p></p>
<p>The post <a href="https://shiftmag.dev/5-times-llms-help-you-code-and-5-times-they-fail-5978/">5 Times LLMs Help You Code… and 5 Times They Fail</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Saying NO is not a free action in the world of software engineering</title>
		<link>https://shiftmag.dev/saying-no-is-not-a-free-action-in-the-world-of-software-engineering-5339/</link>
		
		<dc:creator><![CDATA[Michal Ganzarcik]]></dc:creator>
		<pubDate>Wed, 03 Sep 2025 13:27:05 +0000</pubDate>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<category><![CDATA[development]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=5339</guid>

					<description><![CDATA[<p>'Who could refuse that?' Turns out, almost no one - especially when faced with puppy eyes, heartfelt asks, or a desperate Pikachu. Refusing is hard, and it costs more than we admit.</p>
<p>The post <a href="https://shiftmag.dev/saying-no-is-not-a-free-action-in-the-world-of-software-engineering-5339/">Saying NO is not a free action in the world of software engineering</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-post-featured-image"><img loading="lazy" decoding="async" width="1200" height="630" src="https://shiftmag.dev/wp-content/uploads/2025/06/saying-no.png?x91379" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2025/06/saying-no.png 1200w, https://shiftmag.dev/wp-content/uploads/2025/06/saying-no-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2025/06/saying-no-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2025/06/saying-no-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p>We all agree: <strong>saying <em>no</em> is important</strong> &#8211; it can be liberating, support work-life balance, and is a crucial life skill.</p>



<p>What’s discussed far less is the cost of refusing, especially the <strong>psychological cost</strong>. That’s what I’d like to explore: the emotional toll of refusing &#8211; on ourselves and on those we ask for something, even when we reassure them, &#8220;It’s totally fine if you can’t.&#8221;</p>



<h2 class="wp-block-heading">It’s hard to refuse &#8211; and all too easy to agree</h2>



<p>Overall, <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2443710/">saying <em>no</em> often carries negative connotations</a>, which is why we tend to avoid it. We dislike being in situations where <strong>our words or actions might be perceived as negative</strong>. It becomes even more difficult to decline in person &#8211; especially when we know the person well or feel emotionally connected to them or the topic.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>People are generally more dismissive online or in anonymous settings, where <strong>the perceived consequences are minimal</strong>. It’s much easier to ignore or mock a request to &#8220;like&#8221; a post on social media than to say <em>no</em> to your mum when she asks for help picking apples.</p>
</blockquote>



<p>In a professional setting, declining becomes even more complicated.</p>



<p>We’ve created a work culture where <strong>declining requests too often can feel like a career risk</strong>, especially for <a href="https://shiftmag.dev/the-journey-of-a-lone-female-software-developer-2876/" target="_blank" rel="noreferrer noopener">women</a> and members of <a href="https://www.harpersbazaar.com/culture/features/a36687625/naomi-osaka-and-the-cost-of-saying-no/">minority groups</a>. Declining isn’t only disappointing for the person who asked; it might also mean missing out on a promotion or an exciting opportunity. <a href="https://en.wikipedia.org/wiki/Carp" target="_blank" rel="noreferrer noopener">Holy carp</a>!</p>



<p>Conversely, <strong>accepting is effortless</strong>. </p>



<p>It feels nice and positive. You&#8217;re pleasing the other person, maybe even securing a future reward for yourself. What could be better? Since <a href="https://en.wikipedia.org/wiki/Hyperbolic_discounting">humans are wired to chase immediate rewards</a> and often <a href="http://spia.uga.edu/faculty_pages/tyler.scott/teaching/PADP6950_Spring2017/Readings/Odonoghue.Rabin.2000.pdf">overlook future pain</a>, we tend to say <em>yes</em> just to see that happy twinkle in someone’s eye &#8211; consequences be damned!</p>



<p>If you Google <a href="https://www.google.com/search?q=how+to+say+no">&#8220;how to say no&#8221;</a>, you’ll get a lot of results, mostly focused on the actual skill of rejecting something. If you Google <a href="https://www.google.com/search?q=how+to+say+yes">&#8220;how to say yes&#8221;</a>, you mostly get results about how to say words and phrases in different languages. <strong>Declining is a tricky soft skill</strong>; accepting is often just about language.</p>



<h2 class="wp-block-heading"><span id="turning-something-down-is%e2%80%a6-stressful">Turning something down is… stressful.</span></h2>



<p>So, where are we with <em>no</em>?</p>



<ul class="wp-block-list">
<li>We&#8217;re not that great at saying it.</li>



<li>It&#8217;s not a pleasant thing to do.</li>



<li>It can have negative consequences.</li>
</ul>



<p>As a result,<strong> it’s often stressful to refuse a request</strong>. </p>



<p>We tend to worry about it before, during, and after the fact. This stress can be even worse if we’re already dealing with things like <strong>burnout, impostor syndrome, or anxiety</strong>. Saying <em>no</em> in those situations can feel like adding fuel to the fire. If I already don’t believe I’m doing a stellar job, turning something down might only reinforce the fear that others see me as a failure.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Our tendency toward <a href="https://en.wikipedia.org/wiki/Herd_mentality">herd mentality</a> doesn’t help either. When most of the team says <em>yes</em> and we&#8217;re the only ones who want to say <em>no</em>, <strong>we often end up going along with the group</strong>, even if we feel conflicted inside.</p>
</blockquote>



<p>Many of us have experienced this in sprint planning and sprint reviews &#8211; the team takes on more work than necessary during planning to avoid refusing requests, and then feels deflated and disappointed when they can&#8217;t deliver everything by the end. Over time, this can <strong>hurt team morale and spirit</strong>, lower motivation, and even create a toxic dynamic between teams and their stakeholders.</p>



<p>All of this leads to a simple point: <strong>refusing comes with its own burden</strong>. Telling someone to &#8220;just say <em>no</em>&#8221; can be disingenuous &#8211; placing the emotional and social cost of rejection on them, while pretending it’s easy.</p>



<h2 class="wp-block-heading"><span id="expecting-a-simple-refusal-hurts-the-ones-who-care-most">Expecting a simple refusal hurts the ones who care most</span></h2>



<p>The people who are most invested in a project, those who care deeply about the quality of their work and their team’s delivery, often your &#8220;best performers&#8221;, are <strong>usually the ones who find it hardest to say <em>no</em></strong>. As a result, they often take the initiative to pick up tasks that others might reject.</p>



<p>If you keep asking, they may continue to agree, depending on their situation, until they eventually hit a wall and burn out.</p>



<h2 class="wp-block-heading"><span id="be-kind-don%e2%80%99t-act-like-no-is-just-a-simple-word">Be kind. Don’t act like <em>no</em> is just a simple word</span></h2>



<p>We should be<strong> mindful of our colleagues’ workloads</strong> and, whenever possible, avoid asking them for additional tasks if we know they might already have a full plate. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>It’s important to recognize that they may feel unable or reluctant to refuse, even when they want to. And even when they do refuse, it can still come at a cost to their emotional well-being or personal life.</p>
</blockquote>



<p>We should also recognize that <strong>refusal comes in many forms</strong>. It can mean:</p>



<ul class="wp-block-list">
<li>Literally saying <em>no</em>.</li>



<li>Taking only 5 tasks out of 10 that were offered.</li>



<li>Choosing not to volunteer when most others do.</li>



<li>Not attending a meeting or participating in a Slack discussion.</li>
</ul>



<p>All of the above can be difficult to do and <strong>may lead to negative consequences down the road</strong>, for both the individual and the team.</p>



<h2 class="wp-block-heading"><span id="what%e2%80%99s-the-solution">What’s the solution?</span></h2>



<ul class="wp-block-list">
<li><strong>Talk openly with your colleagues.</strong> Be aware of the challenges they face and the workloads they carry. Don’t expect them to simply reject additional work &#8211; understand their situation through honest conversations.</li>



<li><strong>Keep expectations realistic.</strong> Avoid presenting people or teams with overwhelming wish lists they can’t reasonably deliver. Don’t assume others will just say <em>no</em> to unreasonable demands.</li>



<li><strong>Diversify your requests for help.</strong> Instead of always turning to the same people who tend to say <em>yes</em>, reach out to others and distribute the load more evenly.</li>



<li><strong>Avoid herd mentality pressure.</strong> Give individuals space and time to make decisions independently, and encourage sharing outcomes in a safe environment. This is why practices like writing retrospective points individually or revealing estimations simultaneously in planning poker are important.</li>



<li><strong>Lead by example.</strong> Show that saying <em>no</em> when it’s appropriate is acceptable. Recognize that you might also struggle with this and discuss it openly with your team.</li>



<li><strong>Establish fair systems and processes.</strong> Ensure workloads are distributed transparently and fairly, rather than relying on informal methods that often favor those who find it easier to say <em>no</em> &#8211; which can unfairly burden those who care most about the project’s success.</li>



<li><strong>Don’t reward or idolize overwork.</strong> Encourage a culture that values balance and sustainable effort over relentless hustle.</li>
</ul>
<p>The post <a href="https://shiftmag.dev/saying-no-is-not-a-free-action-in-the-world-of-software-engineering-5339/">Saying NO is not a free action in the world of software engineering</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why Do Software Engineers Procrastinate?</title>
		<link>https://shiftmag.dev/why-do-software-engineers-procrastinate-5709/</link>
		
		<dc:creator><![CDATA[Antonija Bilic Arar]]></dc:creator>
		<pubDate>Tue, 02 Sep 2025 13:47:05 +0000</pubDate>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<category><![CDATA[procrastination]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=5709</guid>

					<description><![CDATA[<p>The first-ever scientific research on procrastination among developers revealed 14 positive and 9 negative effects of delaying work.</p>
<p>The post <a href="https://shiftmag.dev/why-do-software-engineers-procrastinate-5709/">Why Do Software Engineers Procrastinate?</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-post-featured-image"><img loading="lazy" decoding="async" width="1200" height="630" src="https://shiftmag.dev/wp-content/uploads/2025/07/developer-procrastination.png?x91379" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2025/07/developer-procrastination.png 1200w, https://shiftmag.dev/wp-content/uploads/2025/07/developer-procrastination-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2025/07/developer-procrastination-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2025/07/developer-procrastination-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p>Procrastination &#8211; the act of delaying or postponing something &#8211; has been studied in academic settings, but never in the context of software engineers. What do developers procrastinate? How does it affect their work?<br><br>Researchers from the <a href="https://www.computer.org/csdl/proceedings-article/icse/2025/056900a735/251mHgxubJe" target="_blank" rel="noreferrer noopener">University of Southern California</a>, Department of Computer Science, conducted an interview study with developers across different industries and levels of seniority to understand the process of procrastination.</p>



<p>They&#8217;ve found that procrastination has positive and negative effects, as well as factors that trigger it, as perceived by participants.</p>



<h2 class="wp-block-heading"><span id="getting-that-deadline-high">Getting That Deadline High</span></h2>



<p>Among the 14 negative effects are rushed coding, accumulation of technical debt, poor code quality, and last-minute stress, which can lead to reduced team trust when tasks consistently run late. All of the participants also cited <strong>emotional distress</strong> as a negative effect of procrastination.<br><br>Yet, 80% of developers reported at least one positive effect, such as improved mood, creativity, or near-deadline efficiency. Racing against a deadline also<strong> boosts focus and productivity.</strong></p>



<h2 class="wp-block-heading"><span id="why-do-engineers-procrastinate">Why do Engineers Procrastinate</span></h2>



<p>The study distills procrastination triggers into three buckets:</p>



<ol class="wp-block-list">
<li><strong>Task-related factors</strong> such as vague expectations, unpredictable scope, or excessive cognitive load.</li>



<li><strong>Personal factors,</strong> including low energy, stress, impostor syndrome, or low intrinsic motivation.</li>



<li><strong>External factors</strong> like shifting priorities, unclear ownership, dependency on others, or organizational friction.</li>
</ol>



<p>The study highlights 19 practical techniques for mitigating procrastination. These include building awareness of patterns, structured planning, micro‑tasking, pairing or peer support, and task framing to raise engagement.<br><br><strong><em>Struggling with procrastination? Read some first-hand advice from a fellow engineer:</em></strong></p>



<figure class="wp-block-embed is-type-wp-embed is-provider-shiftmag wp-block-embed-shiftmag"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="iUPFuQMznI"><a href="https://shiftmag.dev/fighting-distractions-as-a-software-developer-3175/">There is always something: Fighting distractions as a software developer</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;There is always something: Fighting distractions as a software developer&#8221; &#8212; ShiftMag" src="https://shiftmag.dev/fighting-distractions-as-a-software-developer-3175/embed/#?secret=NM2qhuKusq#?secret=iUPFuQMznI" data-secret="iUPFuQMznI" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p><br>&nbsp;</p>
<p>The post <a href="https://shiftmag.dev/why-do-software-engineers-procrastinate-5709/">Why Do Software Engineers Procrastinate?</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How We Built an AI Learning Assistant &#8211; Approved by Teachers</title>
		<link>https://shiftmag.dev/ai-assistant-enters-the-classroom-but-teachers-arent-going-anywhere-5845/</link>
		
		<dc:creator><![CDATA[Jelena Matecic]]></dc:creator>
		<pubDate>Fri, 29 Aug 2025 11:10:21 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI Learning Assistant]]></category>
		<category><![CDATA[LLM]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=5845</guid>

					<description><![CDATA[<p>Textbooks are great, but let’s be honest - sometimes students need a study buddy with a sense of humor and a knack for explaining photosynthesis. This is where our AI assistant enters the scene.</p>
<p>The post <a href="https://shiftmag.dev/ai-assistant-enters-the-classroom-but-teachers-arent-going-anywhere-5845/">How We Built an AI Learning Assistant &#8211; Approved by Teachers</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Textbooks are full of rich knowledge, but let&#8217;s face it: <strong>students often miss the good stuff</strong>. Important facts get buried in small print, side notes, or skipped pages, and curiosity can fade fast.</p>



<p>That got us thinking: <em>what if an AI assistant could make learning more interactive, personal, and fun?</em></p>



<p>In this article, I’ll share how the AI Base Engineering team at Infobip &#8211; of which I’m a member &#8211; built a <strong>prototype AI tutor for biology</strong>. I’ll explain why we chose this subject, how we tested it, and the key lessons we learned along the way.</p>



<p>Spoiler: it’s not about replacing teachers &#8211; it’s about helping students learn in new and meaningful ways.</p>



<h2 class="wp-block-heading"><span id="so%e2%80%a6-why-an-ai-study-buddy">So… Why an AI study buddy?</span></h2>



<p>Our challenge was simple but ambitious: <strong>make textbook content more accessible, engaging, and curiosity-driven</strong>.</p>



<p>Biology was the perfect testing ground: it’s well-structured, widely taught, and available in digital form. For our prototype, we used official Croatian school textbooks, spanning 7th grade through the second year of high school.</p>



<p>The goal? <strong>To support every kind of learner </strong>&#8211; those falling behind, those racing ahead, and everyone in between. The AI assistant acts like a responsive study buddy: highlighting overlooked facts, answering questions from verified sources, and adapting explanations to each student’s level of understanding.</p>



<p>And just to be clear: this was never about replacing teachers. Our vision is to help students learn and engage more deeply, while keeping teachers central to the process.</p>



<h2 class="wp-block-heading"><span id="our-ai-tutor-explains-not-just-defines">Our AI tutor explains, not just defines</span></h2>



<p>To build a reliable assistant, we grounded everything in the curriculum. Using trusted digital textbook content, we crafted precise prompts to guide the assistant toward clarity, simplicity, and curiosity-driven learning.</p>



<p>One of our favorite tactics? <strong>The assistant doesn&#8217;t just dump definitions</strong>. Instead, it might explain photosynthesis like this:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Plants are like little factories; sunlight turns water and air into sugar. Do you want to know more about how that happens?</p>
</blockquote>



<p>We also trained the assistant to <strong>ask questions back:</strong> A Socratic approach that encourages critical thinking. It doesn&#8217;t just answer; it engages.</p>



<h2 class="wp-block-heading"><span id="we-taught-our-ai-to-talk-the-talk">We taught our AI to talk the talk</span></h2>



<p>Designing the assistant&#8217;s tone in Croatian was no small feat. The language includes formality distinctions and gendered grammar, so we had to strike a delicate balance: <strong>friendly, but not too casual; professional, but not robotic</strong>.</p>



<p>We also taught it to respond to tricky situations &#8211; from inappropriate language to sensitive topics like human reproduction &#8211; with calm professionalism and respect. When students pushed boundaries, the assistant didn’t scold; it simply guided them back toward curious, respectful inquiry.</p>



<p>To meet students where they already are, <strong>we brought the assistant to WhatsApp</strong>. And with Infobip’s <a href="https://www.infobip.com/voice" target="_blank" rel="noreferrer noopener">Voice API</a>, they can ask questions or get answers as voice messages. The result? A judgment-free, always-available biology buddy &#8211; just a tap (or a voice note) away.</p>



<h2 class="wp-block-heading"><span id="when-ai-gets-creative-and-sometimes-wrong">When AI gets creative (and sometimes WRONG)</span></h2>



<p>Let’s address the elephant in the room: the hallucinations.</p>



<p>Like all LLMs, ours<strong> sometimes got a bit too creative</strong>. Ask for an example? It might cheerfully invent one from thin air. Say hi? You could end up with a TED Talk on evolution. Ask who&#8217;s stronger, a lion or a wolf? You might get a philosophical journey through mammal diets, fur types, and migration patterns.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>These hallucinations were part of the process &#8211; and even charming at times &#8211; but accuracy is essential in education. We improved prompts and curated the assistant&#8217;s knowledge base more tightly to fix this. Hallucinations might not disappear entirely, but we learned how to keep the assistant on track.</p>
</blockquote>



<p>After all, when a student asks about mitosis, they shouldn’t end up hearing about whales.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="614" src="https://shiftmag.dev/wp-content/uploads/2025/08/AI.Assistant2-1024x614.png?x91379" alt="" class="wp-image-5854" srcset="https://shiftmag.dev/wp-content/uploads/2025/08/AI.Assistant2-1024x614.png 1024w, https://shiftmag.dev/wp-content/uploads/2025/08/AI.Assistant2-300x180.png 300w, https://shiftmag.dev/wp-content/uploads/2025/08/AI.Assistant2-768x461.png 768w, https://shiftmag.dev/wp-content/uploads/2025/08/AI.Assistant2.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading"><span id="test-drive-phase-by-phase-first-staff-then-students">Test drive, phase by phase: first staff, then students!</span></h2>



<h3 class="wp-block-heading"><span id="phase-1-internal-pilot">Phase 1: Internal Pilot</span></h3>



<p>Our first testers were<strong> internal education and tech staff</strong>. They knew what to look for and how to break things. Their feedback helped iron out glitches and set a strong foundation.</p>



<h3 class="wp-block-heading"><span id="phase-2-teacher-feedback">Phase 2: Teacher Feedback</span></h3>



<p>Next, we brought in <strong>real teachers</strong>. They tested the assistant against real student questions. Could it explain clearly? Did it stay age-appropriate? Was it pedagogically sound?</p>



<p>The feedback surprised us in a good way. Teachers appreciated the assistant&#8217;s thoroughness. When students asked if they could use the assistant during tests, it responded with integrity:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>That wouldn&#8217;t be correct. But I can help you prepare by giving you 10 questions and evaluating your answers.</p>
</blockquote>



<p>Not hardcoded, just good training.</p>



<h3 class="wp-block-heading"><span id="phase-3-student-trials">Phase 3: Student Trials</span></h3>



<p>Finally, <strong>students used the assistant in a classroom setting</strong>. They used it like a study buddy, asking it to quiz them or explain tricky terms. The results? Excited engagement.</p>



<p>They loved the follow-up questions that kept the conversation going. They liked the longer answers.</p>



<p>The only complaint? <strong>Voice messages sounded robotic</strong>! And yes, it sometimes reads formatting symbols out loud (literally saying &#8220;star&#8221; instead of bolding).</p>



<h2 class="wp-block-heading"><span id="how-ai-can-help-students-learn-and-engage">How AI Can Help Students Learn and Engage</span></h2>



<p>Here&#8217;s what we saw, again and again: AI can help students learn and engage by providing:</p>



<ul class="wp-block-list">
<li><strong>Instant help </strong>&#8211; Students can ask questions privately, anytime, without fear of judgment.<br></li>



<li><strong>Personalized explanations</strong> &#8211; If one metaphor doesn&#8217;t work, the assistant tries another.<br></li>



<li><strong>Active learning</strong> &#8211; With questions like &#8220;Can you think of household acids?&#8221;, the assistant nudges students to connect concepts to real life.<br></li>



<li><strong>A safe space</strong> &#8211; For shy students, the AI is a no-pressure place to be curious.</li>
</ul>



<p>Notably, the assistant always encouraged students to verify with their teacher and the textbook. Teachers remain the core of the classroom, and the assistant is just that, an assistant.</p>



<h2 class="wp-block-heading"><span id="lessons-learned-and-the-road-ahead">Lessons Learned and the Road Ahead</span></h2>



<p>This project started with a simple goal: help students get unstuck. Along the way, it became a deeper exploration of<strong> what AI can do in education</strong>. What we discovered is this: with careful design and clear boundaries, AI can enhance learning and engagement &#8211; complementing, not replacing, human teaching.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Success comes down to the details: prompt phrasing, tone, voice, UX, and content quality. Teacher and student feedback proved invaluable, showing how much students respond when learning feels personal, responsive, and judgment-free.</p>
</blockquote>



<p>Next steps? We’ll improve voice UX, expand to new subjects, and keep gathering feedback to make the experience even better.</p>



<p>And to educators and tech innovators alike: <strong>building an AI assistant isn’t just a coding exercise</strong>, it’s a collaborative effort between tech and teaching. Done right, it becomes more than a tool &#8211; it becomes a trusted companion in the learning journey.</p>



<p>And if one more student walks away thinking, &#8220;Hey, biology is kinda cool,&#8221; then we know we&#8217;ve done something right.</p>
<p>The post <a href="https://shiftmag.dev/ai-assistant-enters-the-classroom-but-teachers-arent-going-anywhere-5845/">How We Built an AI Learning Assistant &#8211; Approved by Teachers</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Code Review: From Bottleneck to Productivity Booster</title>
		<link>https://shiftmag.dev/code-review-problems-and-fixes-5060/</link>
		
		<dc:creator><![CDATA[Olga Koroleva]]></dc:creator>
		<pubDate>Thu, 20 Mar 2025 14:01:22 +0000</pubDate>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[code review]]></category>
		<category><![CDATA[Developer Experience]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=5060</guid>

					<description><![CDATA[<p>The code review process should work for the team, not against it.</p>
<p>The post <a href="https://shiftmag.dev/code-review-problems-and-fixes-5060/">Code Review: From Bottleneck to Productivity Booster</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-post-featured-image"><img loading="lazy" decoding="async" width="1200" height="630" src="https://shiftmag.dev/wp-content/uploads/2025/03/Code-Review.png?x91379" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2025/03/Code-Review.png 1200w, https://shiftmag.dev/wp-content/uploads/2025/03/Code-Review-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2025/03/Code-Review-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2025/03/Code-Review-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p>How often do developers create pull requests (PRs) just because the process requires it, without thinking about their&nbsp;<strong>actual value</strong>? <br>And how frequently does your PR&nbsp;<strong>sit unreviewed for days</strong>&nbsp;because all potential reviewers are busy? <br>On the other hand, some might want to skip this part of the process:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;I’ve only changed one line of code. Can I push it to master?&#8221;</p>
</blockquote>



<p>What could go wrong?</p>



<ul class="wp-block-list">
<li>A&nbsp;<strong>critical bug</strong>&nbsp;in production.</li>



<li><strong>Sensitive data</strong>&nbsp;is exposed.</li>



<li>The team&nbsp;<strong>has no visibility</strong>&nbsp;into what changed.</li>



<li>Developers&nbsp;<strong>experience burnout</strong>&nbsp;due to inefficient and frustrating review cycles.</li>
</ul>



<p>Code reviews are essential, but if not structured well, they become a bottleneck instead of a productivity tool.</p>



<p>This article explores <strong>common code review challenges</strong> and <strong>practical solutions</strong> to make the process faster, more effective, and enjoyable for everyone.</p>



<h2 class="wp-block-heading" id="CodeReview:frombottlenecktoproductivitybooster-Goalsofthecodereview"><span id="goals-of-the-code-review">Goals of the Code Review</span></h2>



<p>Code reviews are not just about catching bugs. Well-structured code review process should:</p>



<ul class="wp-block-list">
<li><strong>Ensure code quality</strong>&nbsp;– Reviewers provide valuable insights to improve the code.</li>



<li><strong>Maintain consistency</strong>&nbsp;– Code style, patterns, and best practices remain aligned across the team.</li>



<li><strong>Enable knowledge sharing</strong>&nbsp;– Developers learn from each other through reviews.</li>



<li><strong>Offer a fresh perspective</strong>&nbsp;– The author may miss issues another developer can spot.</li>
</ul>



<p>However, without a clear structure, these benefits are often lost.</p>



<h2 class="wp-block-heading" id="CodeReview:frombottlenecktoproductivitybooster-Codereviewproblemsandpossiblefixes"><span id="code-review-problems-and-possible-fixes"><strong>Code Review Problems and Possible Fixes</strong></span></h2>



<h3 class="wp-block-heading" id="CodeReview:frombottlenecktoproductivitybooster-Reviewsaretooslowor“notimeforcodereview”"><span id="reviews-are-too-slow-or-%e2%80%9cno-time-for-code-review%e2%80%9d">Reviews are too slow, or “no time for code review”</span></h3>



<p><strong>Example scenario:</strong>&nbsp;A developer submits a PR on Monday. By Friday, it’s still waiting for a review.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Can someone review my PR?</em><br><br></p>



<p><em>Yeah, I’ll get to it soon&#8230;[everyone is busy with urgent stuff]</em></p>
</blockquote>



<p>By the time someone finally looks at it, the&nbsp;<strong>author has lost context</strong>, making it harder to address feedback efficiently.</p>



<h3 class="wp-block-heading"><span id="how-to-fix-it"><strong>How to fix it:</strong></span></h3>



<ul class="wp-block-list">
<li><strong>Dedicated time slot for reviews</strong><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><strong>—</strong>S</span>ome teams implement a&nbsp;&#8220;Morning review hour,&#8221; where engineers spend the first 30 minutes of their day reviewing PRs before diving into deep work. This helps to avoid delays caused by context-switching.<br></li>



<li>Use team agreements to&nbsp;<strong>align expectations</strong>&nbsp;around how quickly PRs should be reviewed; for example &#8211; “PRs should be reviewed within 24 hours”<br></li>



<li><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><strong>Se</strong></span><strong>t up well-defined statuses </strong>(e.g., &#8220;ready for review,&#8221; &#8220;needs work,&#8221; &#8220;blocked,” “ready for merge”) that reflect progress.<br></li>



<li><strong>Align on the code style</strong> so there will be no disputes around the code style preferences.<br></li>



<li><strong>Dedicated Slack channel for the PRs</strong>&nbsp;that need attention; automatic reminders set up for PRs that are waiting too long.<br></li>



<li><strong>Improve commenting techniques</strong>&nbsp;to make the process faster
<ul class="wp-block-list">
<li><span style="box-sizing: border-box; margin: 0px; padding: 0px;">Use&nbsp;<a href="https://www.ssw.com.au/rules/use-prefixes-to-improve-code-review-communication/#prefixes" target="_blank">prefixes</a>&nbsp;in comments to streamline discussi</span>ons so the creator knows if it is a blocker or suggestion.</li>



<li>Write what exactly you took a look at if not everything was reviewed.<br></li>
</ul>
</li>



<li>Introduce a&nbsp;<strong>code review checklist</strong>, which could include the following steps:
<ul class="wp-block-list">
<li>Is the code well-structured and easy to understand?</li>



<li>Are functions and classes small and modular?</li>



<li>Are there any potential race conditions or concurrency issues?</li>



<li>Does the code introduce unnecessary dependencies?</li>



<li>Are API keys, credentials, or sensitive data hardcoded?<br></li>
</ul>
</li>



<li><strong>Ensure PRs have clear descriptions</strong>. The description should outline what changed, why it changed, and any areas of focus for the review. It may also contain any additional information that could help reviewers.<br>
<ul class="wp-block-list">
<li>Title</li>



<li>What changed?</li>



<li>Why?</li>



<li>What to check?</li>



<li>How is it tested?</li>



<li>Potential risks &amp; mitigations</li>
</ul>
</li>
</ul>



<ul class="wp-block-list">
<li><strong>Provide clear documentation in the code</strong>, which helps to understand the logic behind the changes.<br></li>



<li><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><strong>Separate logical parts into different commits</strong> in the PRs and make the proper message; th</span>is could help the reviewer to navigate through changes.</li>
</ul>



<p>While speeding up PR reviews is crucial, it’s only part of the solution. Many bottlenecks also come from <span style="box-sizing: border-box; margin: 0px; padding: 0px;"><strong>a </strong></span><strong>lack of automation and PRs that are too large to review efficiently. </strong></p>



<h3 class="wp-block-heading" id="CodeReview:frombottlenecktoproductivitybooster-Large,complexPRsareintimidatingandhardtorevieweffectively."><span id="large-complex-prs-are-intimidating-and-hard-to-review-effectively"><strong>Large, complex PRs are intimidating and hard to review effectively</strong></span></h3>



<p><strong>Example scenario:</strong>&nbsp;A developer created PR with 1000+ lines of code changed.<br><br>The title? &#8211;&nbsp;<em>&#8220;Refactoring + feature + bug fixes + cleanup + magic”<br><br></em>As a result<span style="box-sizing: border-box; margin: 0px; padding: 0px;">, no one wanted to review it. When someone finally looks at it, they request&nbsp;<strong>dozens of changes</strong></span>, and the cycle repeats.</p>



<h3 class="wp-block-heading"><span id="how-to-fix-it"><strong>How to fix it:</strong></span></h3>



<ul class="wp-block-list">
<li><strong>Limit PR size</strong>—Teams could use a&nbsp;&#8220;Max x lines per PR&#8221;&nbsp;rule (e.g., 200 &#8211; 400 lines). Research suggests that the optimal code review rate is between 200 and 400 lines per hour. Productivity and defect detection ability significantly drop after an hour of continuous review.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="345" height="226" src="https://shiftmag.dev/wp-content/uploads/2025/03/code-review-best-practices-figure-02.gif?x91379" alt="" class="wp-image-5074"/></figure>



<p>source:&nbsp;<a href="https://web.archive.org/web/20151009202810/http://smartbear.com/all-resources/articles/best-practices-for-peer-code-review/">smartbear.com</a></p>



<ul class="wp-block-list">
<li><strong>Break changes into multiple PRs</strong>:<br><strong>PR 1</strong>&nbsp;– Refactoring.<br><strong>PR 2</strong>&nbsp;– Adding the feature.<br><strong>PR 3</strong>&nbsp;– Fixing UI issues.<br></li>



<li><strong>For large changes, schedule a &#8220;Team Code Review&#8221; (TCR) meeting</strong>&nbsp;where the author explains the key changes before submission. This will make it easier to actually review the code.</li>
</ul>



<h3 class="wp-block-heading" id="CodeReview:frombottlenecktoproductivitybooster-Novolunteerstoreviewthecode"><span id="no-volunteers-to-review-the-code">No volunteers to review the code</span></h3>



<p><strong>Example scenario:</strong>&nbsp;In an engineering team, only the tech lead consistently reviewed PRs.<br><br>The rest of the team hesitated, thinking:&nbsp;<em>“He knows the codebase best, so I’ll let him handle it.”<br><br></em>Over time, this became a bottleneck—the lead was overwhelmed, reviews slowed, and the team was not aligned on the code base.</p>



<h3 class="wp-block-heading"><span id="how-to-fix-it"><strong>How to fix it</strong>:</span></h3>



<ul class="wp-block-list">
<li><strong>Implement review rotations</strong><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><strong>. </strong>Every team member wi</span>ll participate in reviews. PRs will be distributed better, preventing burnout. Junior developers will improve their skills by taking ownership. The tech leaders will be freed up for other strategic tasks instead of only reviewing.<br></li>



<li><strong>Assign a &#8220;review duty&#8221; each sprint</strong>&nbsp;– One engineer is responsible for making sure reviews happen.<br></li>



<li><strong>Encourage team engagement</strong>&nbsp;– Tracking who is the most active commenter on PRs, which PRs took longer than others can highlight imbalances.<br></li>



<li><strong>Limit code review sessions to a maximum of 60 minutes per day</strong>. As mentioned earlier, productivity and defect detection ability drop significantly after an hour of continuous review.<br></li>



<li>Provide the team with information about the&nbsp;<strong>goals of the Code Review practice</strong>&nbsp;and ensure alignment based on the team&#8217;s agreement on the topic.<br></li>



<li>Establish a <strong>positive code review culture</strong> where feedback is constructive and good practices are recognized (be objective, not personal; explain why; offer alternatives; encourage collaboration)<br><br><em><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6ab.png" alt="🚫" class="wp-smiley" style="height: 1em; max-height: 1em;" /> &#8220;You forgot to handle edge cases.&#8221;</em><br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>&#8220;I see the main logic is solid. Just wondering, how does this handle cases where the input is empty? Maybe we could add a test for that?&#8221;</em></li>
</ul>



<h3 class="wp-block-heading" id="CodeReview:frombottlenecktoproductivitybooster-Lackofautomation"><span id="lack-of-automation"><strong>Lack of automation</strong></span></h3>



<p><strong>Example:</strong> Review comments are filled with:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Fix indentation.<br>This function name should be camelCase.<br>Did you write tests for this?</p>
</blockquote>



<p>Instead of focusing on <strong>logic and architecture</strong>, reviewers spend time pointing out issues that could be checked automatically.</p>



<h3 class="wp-block-heading"><span id="how-to-fix-it"><strong>How to fix it:</strong></span></h3>



<ul class="wp-block-list">
<li><strong>Run automated tests in CI/CD</strong><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><strong>—</strong></span>PRs should not be allowed to merge if tests fail. Measuring&nbsp;test coverage&nbsp;could also be done; however, it serves as information rather than a metric that guarantees the functionality is well-tested.<br></li>



<li><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><strong>Automate formatting</strong>&nbsp;– Use tools like&nbsp;<strong>Prettier and ESLint</strong>&nbsp;to apply consistent styling automatically.</span><br></li>



<li><strong>Use static analysis tools</strong>&nbsp;that can catch security vulnerabilities, and code smells (e. g.&nbsp;<a href="https://en.wikipedia.org/wiki/SonarQube" target="_blank" rel="noreferrer noopener">SonarQube</a>).<br></li>



<li><strong>Tracking PR review patterns and efficiency metrics</strong>&nbsp;could help identify patterns that could be improved, such as when only one person reviews PRs or when some PRs are reviewed longer than others, which PRs are getting stuck.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="520" height="290" src="https://shiftmag.dev/wp-content/uploads/2025/03/merge-pull-request.png?x91379" alt="" class="wp-image-5075" srcset="https://shiftmag.dev/wp-content/uploads/2025/03/merge-pull-request.png 520w, https://shiftmag.dev/wp-content/uploads/2025/03/merge-pull-request-300x167.png 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /></figure>



<h2 class="wp-block-heading" id="CodeReview:frombottlenecktoproductivitybooster-WhenCodeReviewsmaynotbenecessary"><span id="when-code-reviews-may-not-be-necessary"><br><strong>When Code Reviews May Not Be Necessary</strong></span></h2>



<p><strong>Example scenario:</strong>&nbsp;A high-traffic platform experiences a critical production outage. The team has an urgent fix ready, but if they wait for a formal review, millions of dollars could be lost in just a few hours.</p>



<p>Instead of waiting, they applied an emergency fix immediately and agreed to do the review afterward, ensuring the long-term stability of the codebase.</p>



<p>Not every change needs a formal review, considering that automated checks were done. Teams can define exceptions for situations like:</p>



<ul class="wp-block-list">
<li><strong>Emergency Fixes:</strong>&nbsp;Allow expedited processes for critical bugs, however completely skipping reviews for even emergency fixes can be risky. One approach is ‘<strong>post-mortem reviews</strong>’ &#8211; after deployment, the fix is reviewed retrospectively.<br></li>



<li><strong><a href="https://shiftmag.dev/pair-programming-benefits-challenges-563/" target="_blank" rel="noreferrer noopener">Pair Programming:</a></strong>&nbsp;Real-time collaboration to replace code reviews could be applicable in some cases, rotate pairs regularly to&nbsp;<strong>spread knowledge across the team</strong>.<br></li>



<li><strong>Isolated Changes:</strong>&nbsp;You could have in your team agreement that reviews are not necessary for small, well-contained updates if appropriate automated checks are in place.</li>
</ul>



<h1 class="wp-block-heading" id="CodeReview:frombottlenecktoproductivitybooster-Buildinganefficientcodereviewprocess"><span id="building-an-efficient-code-review-process"><strong>Building an Efficient Code Review Process</strong></span></h1>



<p>By solving the problems mentioned above, teams can transform PRs from a bottleneck into a productive workflow.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>The code review process should work for the team, not against it.</p>
</blockquote>



<p>Code reviews aren’t just about catching bugs &#8211; they’re an opportunity to foster collaboration, maintain code quality, and strengthen team trust.</p>



<p>To make them truly effective:</p>



<ul class="wp-block-list">
<li><strong>Set clear expectations</strong>&nbsp;– Define review timelines and responsibilities.</li>



<li><strong>Make PRs easy to review</strong>&nbsp;– Keep them small and well-documented.</li>



<li><strong>Automate what you can</strong>&nbsp;– Use automation tools to eliminate repetitive tasks.</li>



<li><strong>Encourage collaboration</strong>&nbsp;– Reviews should be a learning opportunity, not just a process step.</li>
</ul>



<p>Before submitting your next PR, ask yourself:</p>



<p><strong>&#8220;How can I make this review easier for my teammates? How can we improve our code review practices today?”</strong></p>



<p>By taking small, deliberate steps to streamline reviews, advocating for process improvement, and starting to make small improvements, you’ll create a process that supports your team and your product—not one that holds them back.</p>
<p>The post <a href="https://shiftmag.dev/code-review-problems-and-fixes-5060/">Code Review: From Bottleneck to Productivity Booster</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-19 23:43:03 by W3 Total Cache
-->