<?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>development Archives - ShiftMag</title>
	<atom:link href="https://shiftmag.dev/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>https://shiftmag.dev/tag/development/</link>
	<description>Insightful engineering content &#38; community</description>
	<lastBuildDate>Mon, 27 Apr 2026 08:54:59 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://shiftmag.dev/wp-content/uploads/2024/08/cropped-ShiftMag-favicon-32x32.png</url>
	<title>development Archives - ShiftMag</title>
	<link>https://shiftmag.dev/tag/development/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>What 4 engineers with 10+ years of experience say about staying relevant in the AI era</title>
		<link>https://shiftmag.dev/what-4-engineers-with-10-years-of-experience-say-about-staying-relevant-in-the-ai-era-9309/</link>
		
		<dc:creator><![CDATA[Marko Crnjanski]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 13:58:54 +0000</pubDate>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[career advice]]></category>
		<category><![CDATA[development]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=9309</guid>

					<description><![CDATA[<p>I spoke with four veteran software engineers to explore how they’re approaching long-term career resilience and adapting their skills to stay effective in the field.</p>
<p>The post <a href="https://shiftmag.dev/what-4-engineers-with-10-years-of-experience-say-about-staying-relevant-in-the-ai-era-9309/">What 4 engineers with 10+ years of experience say about staying relevant in the AI era</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Let’s start with a cliché: AI has quickly become part of everyday work in tech, reshaping what it means to be a developer.</p>



<p class="wp-block-paragraph">A field that, just a few years ago, felt stable and full of opportunity now comes with more uncertainty -breaking in is harder, and <strong>staying relevant takes constant effort</strong>.</p>



<p class="wp-block-paragraph">We spoke with software engineers who have more than 10 years of experience to hear how they’re navigating these changes.</p>



<h2 class="wp-block-heading"><span id="thinking-back-on-your-career-what%e2%80%99s-helped-you-stay-relevant-as-technologies-and-trends-kept-evolving">Thinking back on your career, what’s helped you stay relevant as technologies and trends kept evolving?</span></h2>



<p class="wp-block-paragraph"><strong>Denis</strong>:<strong> </strong>&#8220;I was always looking for ways to improve my workflow, so I could spend more time on the interesting, creative parts of the job and less on repetitive, routine tasks. I focused on really understanding problems and possible solutions, which meant <strong>building deeper knowledge rather than relying on quick fixes from the internet</strong>. I read books, followed blogs, attended both live and online conferences, and learned from experienced people in the industry to get different perspectives and form my own conclusions.</p>



<p class="wp-block-paragraph">To stay relevant, I focused on real user use cases and the problems behind them, building solutions that create real value. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I also made a point of staying close to the products, users, and solutions over time to see what actually works and what doesn’t, regardless of hype or trends.</p>
</blockquote>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="256" src="https://shiftmag.dev/wp-content/uploads/2026/04/denis-1024x256.png?x94846" alt="" class="wp-image-9339" srcset="https://shiftmag.dev/wp-content/uploads/2026/04/denis-1024x256.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/04/denis-300x75.png 300w, https://shiftmag.dev/wp-content/uploads/2026/04/denis-768x192.png 768w, https://shiftmag.dev/wp-content/uploads/2026/04/denis.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Working in teams and collaborating closely helped a lot, as there are always tough questions and healthy discussions that lead to better decisions in the end.&#8221;</p>



<p class="wp-block-paragraph"><strong>Marina: </strong>&#8220;Staying relevant over the years came down to <strong>curiosity and hands‑on learning</strong>. I regularly read blogs and watch online conferences to keep up with&nbsp;new technologies, but I learned the most by trying things out through small POCs. Experimenting helped me understand problems more deeply and see what really worked.&nbsp;&nbsp;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Changing teams also played&nbsp;a big role. Working with people who had&nbsp;different backgrounds&nbsp;and experiences exposed me to new ways of thinking and pushed me to grow.&nbsp;&nbsp;</p>
</blockquote>



<p class="wp-block-paragraph">Finally, <strong>working on real products in production environments</strong> (especially in larger teams) taught me lessons you simply&nbsp;can’t&nbsp;learn alone. Collaboration, shared ownership, and learning from others helped me continuously adapt as the industry evolved.&#8221;</p>



<p class="wp-block-paragraph"><strong>Marko</strong>: &#8220;For me it&#8217;s a <strong>combination of continuous learning and a strong focus on fundamentals</strong>. I always tried to explore&nbsp;new technologies&nbsp;and different domains, but with an emphasis on really understanding the core principles behind them. That way, the knowledge stays useful even if my career moves in a different direction, and it becomes much easier to build on top of it later.</p>



<p class="wp-block-paragraph">Just like for the other guys, another important factor was working on real products running in serious production environments, especially in larger teams. <strong>Collaboration, communication, and learning from others in a shared codebase</strong> bring insights you simply can’t get when working alone. Those experiences helped me grow not only technically, but also in how I approach problems and make decisions in the long run.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I’d&nbsp;describe myself as a cautious early adopter. I enjoy experimenting with&nbsp;new technologies, but I try to understand the fundamentals behind them first, so I can evaluate where they truly make sense and how they contribute real value rather than just following hype.</p>
</blockquote>



<p class="wp-block-paragraph">Finally, <strong>self-reflection played&nbsp;a big role</strong>.&nbsp;Regularly asking&nbsp;myself what skills&nbsp;I’m&nbsp;missing, how I can contribute more to my team or company, and then actively working towards that has led to many good long-term career decisions.&#8221;</p>



<p class="wp-block-paragraph"><strong>Mario</strong>: &#8220;Talking to other people, watching what others build, and experimenting myself plus exploring open source projects, YouTube videos, and Udemy courses on 2x speed to quickly understand what’s possible with unfamiliar tools. I also follow Hacker News and similar newsletters. </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="256" src="https://shiftmag.dev/wp-content/uploads/2026/04/mario-1024x256.png?x94846" alt="" class="wp-image-9340" srcset="https://shiftmag.dev/wp-content/uploads/2026/04/mario-1024x256.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/04/mario-300x75.png 300w, https://shiftmag.dev/wp-content/uploads/2026/04/mario-768x192.png 768w, https://shiftmag.dev/wp-content/uploads/2026/04/mario.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">But staying relevant isn’t just about knowing what’s new; it’s about knowing what’s actually worth adopting &#8211; and when.</p>
</blockquote>



<p class="wp-block-paragraph"><strong>Understanding the high-level concepts</strong> <strong>and the problem</strong> I’m trying to solve is what allows me to pick something that looks like the right tool. After that, trying it out and <strong>getting first-hand experience</strong>: how it feels under the fingers, and whether it really solves my problem and makes my life easier &#8211; is mostly the deciding factor for me, but not the only one. If I’m doing a quick throwaway POC, I can try anything and really find the best tool.</p>



<p class="wp-block-paragraph">But if&nbsp;I&#8217;m&nbsp;working in a team environment where cognitive load is already high,&nbsp;I&#8217;m&nbsp;careful <strong>not to introduce&nbsp;new technologies&nbsp;every other day</strong> just because&nbsp;it&#8217;s&nbsp;the new cool shiny thing &#8211; even if it&nbsp;actually is&nbsp;the best tool.&nbsp;It&#8217;s&nbsp;a&nbsp;tradeoff, and one that needs careful consideration. And sometimes the best&nbsp;isn&#8217;t&nbsp;even needed &#8211; something that works is good enough.&#8221;</p>



<h2 class="wp-block-heading"><span id="in-your-opinion-is-long-term-success-more-about-being-a-deep-specialist-or-a-broad-generalist-has-your-perspective-changed-over-time">In your opinion, is long-term success more about being a deep specialist or a broad generalist? Has your perspective changed over time?</span></h2>



<p class="wp-block-paragraph"><strong>Denis</strong>: For long-term success (whatever that is),&nbsp;it&#8217;s&nbsp;generally better&nbsp;to develop <strong>M-shaped skills</strong>. That will take some time, but only with great collaboration and multiple deep&nbsp;expertise&nbsp;areas can you be innovative and versatile, bringing measurable value and not be easily replaceable.</p>



<p class="wp-block-paragraph"><strong>Marina</strong>: Earlier in my career, I believed that being a T‑shaped developer was the ideal path and I assumed that trying to learn more than one thing deeply would only lead to superficial knowledge and that focusing on a single specialization was the safest way to grow.&nbsp;Over time, my view changed.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Through real-world experience, I realized it’s possible to build strong, meaningful expertise in multiple areas without losing depth. As systems became more complex, having deeper knowledge across several domains helped me understand the bigger picture better, make better technical decisions, and collaborate more effectively with others.</p>
</blockquote>



<p class="wp-block-paragraph">Today,&nbsp;I believe long‑term success&nbsp;comes from <strong>combining depth with breadth</strong> &#8211; developing strong&nbsp;expertise&nbsp;in more than one area and continuously expanding that range as technology evolves. This flexibility has helped me stay relevant and adapt as roles and technologies have changed.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="256" src="https://shiftmag.dev/wp-content/uploads/2026/04/marina_final-1024x256.png?x94846" alt="" class="wp-image-9342" srcset="https://shiftmag.dev/wp-content/uploads/2026/04/marina_final-1024x256.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/04/marina_final-300x75.png 300w, https://shiftmag.dev/wp-content/uploads/2026/04/marina_final-768x192.png 768w, https://shiftmag.dev/wp-content/uploads/2026/04/marina_final.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong>Mario:</strong> I wonder if&nbsp;it&#8217;s&nbsp;possible to be M-shaped <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> For a long time, I was a firm believer that T-shaped is the way to go &#8211; a broad overview, but with at least one area of genuine deep&nbsp;expertise. And I still think&nbsp;that&#8217;s&nbsp;a solid foundation for any engineer.</p>



<p class="wp-block-paragraph">But over 20+ years, curiosity kept pulling me in different directions: low-level Linux internals, networking, compilers, containers, orchestration, and large-scale distributed systems, working at different layers of the stack. And each time, I went deep enough to solve a real problem. That <strong>experience adds up over time</strong>.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Understanding the problem and figuring out which layer it needs to be solved in matters more than the technology layer itself, and then it’s about stitching everything together.</p>
</blockquote>



<p class="wp-block-paragraph">Do that long enough, across enough domains, and you naturally grow more spikes.&nbsp;So&nbsp;my view has evolved &#8211; <strong>I started as a T-shaped believer, and somewhere along the way I became something closer to M-shaped</strong>. Not by design, but by following the problems. And if you ask me what&nbsp;I&#8217;m&nbsp;an expert at specifically,&nbsp;I&#8217;d&nbsp;say solving&nbsp;problems, if&nbsp;that counts as&nbsp;expertise.&nbsp;That&#8217;s&nbsp;at least what I currently strive for.</p>



<p class="wp-block-paragraph"><strong>Marko:</strong> Today,&nbsp;I’d&nbsp;describe myself as <strong>somewhere between T-shaped and M-shaped</strong>,&nbsp;maybe N-shaped, still evolving. Early in my career, the T-shaped model made perfect sense, broad knowledge with depth in one area. Over time, as access to knowledge became easier and technologies evolved faster, I realized how valuable it is to develop depth in multiple areas</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">What ties all of this together is problem-solving. Technologies change, but problems&nbsp;remain. Being able to learn continuously, adapt, and apply concepts from one domain to&nbsp;seemingly unrelated&nbsp;problems&nbsp;becomes&nbsp;incredibly valuable over the long term.</p>
</blockquote>



<p class="wp-block-paragraph">If I were to advise myself 10 years ago or to others today, it would be to <strong>stay curious, keep learning, and surround yourself with people you can both learn from and teach</strong>. Also,&nbsp;don’t&nbsp;be afraid to broaden your horizons, look for ways to contribute beyond your narrow specialization, pick up complementary skills, and take some risks. Growth often happens outside your comfort zone.</p>



<h2 class="wp-block-heading"><span id="how-do-you-see-ai-toolsimpactinglong-term-developer-careers">How do you see AI tools&nbsp;impacting&nbsp;long-term developer careers?</span></h2>



<p class="wp-block-paragraph"><strong>Mario:</strong> AI impact is real, especially in engineering. We’re much faster at writing code, and I can smart-search unfamiliar codebases and quickly understand how things work (something that used to take a huge effort). </p>



<p class="wp-block-paragraph">But there’s a price.</p>



<p class="wp-block-paragraph"><strong>The amount of generated code is huge, yet humans still need to review, understand, and own it</strong>. AI isn’t the one waking up when something breaks. Creating PRs with AI is easy, being responsible for them is another story.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Our role has shifted to making sure code that looks ok is actually ok &#8211; fits the intended architecture, the broader system, the business rules, all the things AI isn’t aware of. The value is the same: understanding whether the code works as intended and preventing it from degrading into a ball of mud nobody can understand or fix at 3am.</p>
</blockquote>



<p class="wp-block-paragraph">What’s changed is how much harder that challenge has become with code being generated at this speed. <strong>Young developers are in a tight spot</strong> &#8211; suddenly expected to skip writing code by hand but still have the same depth of understanding.</p>



<p class="wp-block-paragraph">And I’m not sure you can skip that part. There’s something about writing code by hand, hitting a wall, debugging it yourself, and feeling the pain of it not working that builds intuition you can’t shortcut. Even if AI is faster and easier. The best advice is to learn the concepts, fundamentals, and engineering best practices that hold regardless of AI.</p>



<p class="wp-block-paragraph">You need to be able to<strong> look at AI-generated code and know whether a for loop is acceptable or a dictionary lookup fits better</strong>, that’s software engineering 101. AI can generate the code, but we still need to understand whether it actually fits.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Write as much code by hand as you can. Use AI to review it, ask for other options, and have it challenge your approach, and then actually think through the answers. That way you learn faster while still building real understanding. </p>
</blockquote>



<p class="wp-block-paragraph">And <strong>don’t skip debugging AI-generated code step by step</strong>; I do it regularly. It’s how you move from just looking at code to actually feeling it. That difference becomes obvious once you try it.</p>



<p class="wp-block-paragraph">You’ll often be surprised how much you miss just by reading &#8211; sometimes it’s &#8220;this is not how I thought it worked&#8221;, sometimes it’s &#8220;I did not expect this at all.&#8221; Both are valuable, and both come from actually stepping through it.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="256" src="https://shiftmag.dev/wp-content/uploads/2026/04/marko-1024x256.png?x94846" alt="" class="wp-image-9341" srcset="https://shiftmag.dev/wp-content/uploads/2026/04/marko-1024x256.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/04/marko-300x75.png 300w, https://shiftmag.dev/wp-content/uploads/2026/04/marko-768x192.png 768w, https://shiftmag.dev/wp-content/uploads/2026/04/marko.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong>Marko:</strong> AI tools already have&nbsp;a huge impact&nbsp;on my daily work, from writing code and understanding codebases to reviews, idea generation, debugging, and learning new topics. Overall, I see AI as a strong positive force for developers. It significantly reduces the time spent on repetitive or low-value coding tasks and frees up more space for thinking about architecture, system design, and solving complex problems that truly matter in production.</p>



<p class="wp-block-paragraph">That said, some things won’t disappear. Understanding the problem and broader context, making architectural trade-offs, communicating well, and taking ownership are still firmly human. When something breaks at 2 a.m., it’s still engineers who make decisions and take responsibility. AI is powerful, but only as effective as the person using it.</p>



<p class="wp-block-paragraph">For junior developers, don’t skip the fundamentals. Expectations are higher than ever, but strong foundations are key for a sustainable career. The good news is that access to knowledge and AI tools is better than ever. Use AI to accelerate learning, not replace understanding. Give yourself time, build experience, and master the basics—that investment pays off for decades.</p>



<p class="wp-block-paragraph"><strong>Marina: </strong>AI tools will significantly change how developers work, but I&nbsp;don’t&nbsp;see them replacing strong engineers. Instead, they will amplify those who understand what they are building. For younger developers, <strong>the key is to learn with AI, not just watch AI work</strong>.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">It’s important to <strong>question AI output</strong>, understand why it made certain changes, and how those changes affect the system. Treat AI as a learning partner rather than a shortcut. Blindly accepting generated code can limit growth, while actively analysing and improving it builds real&nbsp;expertise.&nbsp;&nbsp;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Younger developers should also focus heavily on architecture and system design. When you understand how systems are structured, how components interact, and what trade‑offs exist, AI becomes far more powerful.&nbsp;It’s&nbsp;much easier to ask the right questions (and get useful results) when you already understand the problem space.</p>
</blockquote>



<p class="wp-block-paragraph"><strong>Denis</strong>: <strong>AI tools have made coding skills almost irrelevant</strong>. Still, other skills and practices related to quality, such as trunk-based development, TDD, continuous delivery, modularity, cohesion, DDD, etc., are more valuable than before. </p>



<p class="wp-block-paragraph">AI tools are a <strong>powerful amplifier</strong>, and they need guidance, so software engineers with those skills will remain relevant and in demand for a long time.&nbsp;Understanding of the (business) problem and the solution&nbsp;shouldn&#8217;t&nbsp;be outsourced to the AI. Software engineers still need to understand trade-offs,&nbsp;architecture,&nbsp;and code.&nbsp;</p>



<h2 class="wp-block-heading"><span id=""><strong>&nbsp;</strong></span></h2>


<figure class="wp-block-post-featured-image"><img loading="lazy" decoding="async" width="1200" height="630" src="https://shiftmag.dev/wp-content/uploads/2026/04/shift_final.png?x94846" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/04/shift_final.png 1200w, https://shiftmag.dev/wp-content/uploads/2026/04/shift_final-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/04/shift_final-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/04/shift_final-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure><p>The post <a href="https://shiftmag.dev/what-4-engineers-with-10-years-of-experience-say-about-staying-relevant-in-the-ai-era-9309/">What 4 engineers with 10+ years of experience say about staying relevant in the AI era</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How Uber Engineers Use AI Agents</title>
		<link>https://shiftmag.dev/how-uber-engineers-use-ai-agents-8617/</link>
		
		<dc:creator><![CDATA[Ivan Brezak Brkan]]></dc:creator>
		<pubDate>Fri, 13 Mar 2026 15:39:36 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Uber]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=8617</guid>

					<description><![CDATA[<p>At the Pragmatic Summit, I heard firsthand that Uber engineers aren’t just using AI to write code anymore, they’re assigning it work. Let’s see how that plays out.</p>
<p>The post <a href="https://shiftmag.dev/how-uber-engineers-use-ai-agents-8617/">How Uber Engineers Use AI Agents</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="800" height="480" src="https://shiftmag.dev/wp-content/uploads/2026/03/73.png?x94846" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/03/73.png 800w, https://shiftmag.dev/wp-content/uploads/2026/03/73-300x180.png 300w, https://shiftmag.dev/wp-content/uploads/2026/03/73-768x461.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>


<p class="wp-block-paragraph"><em><strong>Uber engineers aren&#8217;t just using AI to write code; they&#8217;re rethinking how developers work with it. That shift matters because, <a href="https://shiftmag.dev/this-cto-says-93-of-developers-use-ai-but-productivity-is-still-10-8013/">despite 93% adoption, productivity gains remain flat</a>.</strong></em></p>



<p class="wp-block-paragraph">At the Pragmatic Summit, I listened to Uber’s Director of Engineering, <strong>Anshu Chadha</strong>, and Principal Engineer, <strong>Ty Smith</strong>, discuss how one of the world’s largest technology companies is integrating generative AI into its engineering workflow.</p>



<p class="wp-block-paragraph">Then, they shared:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">At Uber, engineers are beginning to assign coding tasks to AI agents much like managers distribute work among their teams.</p>
</blockquote>



<h2 class="wp-block-heading">Say hello to my new colleague &#8211; AI</h2>



<p class="wp-block-paragraph">Uber has been using AI for years in systems like its matching platform, but bringing generative AI into the day-to-day work of engineers is a newer step. </p>



<p class="wp-block-paragraph">According to Anshu, <strong>the goal isn’t to replace engineers</strong> &#8211; it’s to help them get more done.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">We’re not pushing for AI to automate all humans in the company. Our goal is to let engineers focus on creative work rather than toil.</p>
</blockquote>



<p class="wp-block-paragraph">Practically speaking, <strong>repetitive tasks</strong> such as code migrations, upgrades, documentation, and bug fixes <strong>are now being handled by AI-powered agents</strong>. According to Anshu, it frees engineers to build features and enhance the user experience.</p>



<h2 class="wp-block-heading"><span id="the-end-of-hands-on-programming-as-we-know-it">The end of hands-on programming as we know it?</span></h2>



<p class="wp-block-paragraph">One of the biggest shifts Uber has observed is the transition from traditional AI-assisted coding tools toward <strong>agent-based workflows</strong>. </p>



<p class="wp-block-paragraph">Tools like GitHub Copilot made coding faster by helping developers in the moment, but now we’re entering a new era: <strong>AI agents that can work independently</strong>, tackling tasks without needing someone at the keyboard.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Back in 2022 and 2023, developer velocity saw a modest 10–15% increase. Today, the paradigm has shifted to what we call &#8220;peer programming,&#8221; where developers can delegate workloads to AI agents and intervene or redirect them as needed.</p>
</blockquote>



<p class="wp-block-paragraph">This approach essentially <strong>positions engineers as</strong> <strong>tech leads directing AI agents</strong>. Developers define the goal, while agents execute parts of the work in the background and return results for review.</p>



<p class="wp-block-paragraph">Uber has built an <strong>internal platform that plugs AI agents right into its engineering workflow,</strong> mostly on Michelangelo, its machine learning platform. This gives access to models from OpenAI and Anthropic, as well as Uber’s own internal models.</p>



<p class="wp-block-paragraph">On top of that, they’ve created <strong>agent-driven tools that tap into company data</strong> (source code, documentation, Jira tickets, Slack) so the AI agents have enough context to actually get work done.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1344" height="747" src="https://shiftmag.dev/wp-content/uploads/2026/03/Screenshot-2026-03-13-at-14.26.09.png?x94846" alt="" class="wp-image-8665" srcset="https://shiftmag.dev/wp-content/uploads/2026/03/Screenshot-2026-03-13-at-14.26.09.png 1344w, https://shiftmag.dev/wp-content/uploads/2026/03/Screenshot-2026-03-13-at-14.26.09-300x167.png 300w, https://shiftmag.dev/wp-content/uploads/2026/03/Screenshot-2026-03-13-at-14.26.09-1024x569.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/03/Screenshot-2026-03-13-at-14.26.09-768x427.png 768w" sizes="auto, (max-width: 1344px) 100vw, 1344px" /></figure>



<h2 class="wp-block-heading"><span id="ai-tackles-toil-but-gaining-trust-is-the-real-challenge">AI tackles toil, but gaining trust is the real challenge</span></h2>



<p class="wp-block-paragraph">At the conference, a standout demo was <strong>Uber’s &#8220;Minions&#8221; system</strong>. Engineers submit a prompt via web, Slack, or command line, and it generates code changes and opens pull requests automatically. Ty says:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">You give the agent a prompt and expect a pull request as the output. A few minutes later the system notifies you on Slack that the task is complete and the PR is ready to review.</p>
</blockquote>



<p class="wp-block-paragraph">The platform also helps engineers <strong>craft better prompts</strong> by suggesting improvements when instructions are unclear, increasing the likelihood that the agent will succeed.</p>



<p class="wp-block-paragraph">When Uber first rolled out agentic workflows, they found about 70% of submitted tasks were &#8220;toil&#8221; &#8211; repetitive maintenance work developers usually avoid. These predictable tasks are ideal for AI, creating a feedback loop: the more AI handles, the more developers are willing to delegate.</p>



<p class="wp-block-paragraph">Still, scaling AI isn’t just about technology. Supporting engineers as they adjust from traditional workflows and gain confidence in AI-generated code is an important focus.</p>



<h2 class="wp-block-heading"><span id="sharing-success-stories-sparks-faster-ai-adoption">Sharing success stories sparks faster AI adoption</span></h2>



<p class="wp-block-paragraph">Uber found that <strong>peer-driven adoption worked better than mandates</strong>. Anshu points out:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">The most successful tactic has been sharing wins. When engineers see examples from their peers where AI helped them accomplish something impressive, adoption spreads quickly.</p>
</blockquote>



<p class="wp-block-paragraph">But measuring real impact remains tricky. </p>



<p class="wp-block-paragraph">Uber tracks metrics like developer satisfaction, productivity, and code output, but connecting them to business outcomes is harder. &#8220;These are activity metrics, not business outcomes,&#8221; Anshu says.</p>



<p class="wp-block-paragraph">To fix this, Uber is <strong>working to track the full development lifecycle</strong> (from design to production) to see how AI truly speeds up product delivery.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="480" src="https://shiftmag.dev/wp-content/uploads/2026/03/74.png?x94846" alt="" class="wp-image-8626" srcset="https://shiftmag.dev/wp-content/uploads/2026/03/74.png 800w, https://shiftmag.dev/wp-content/uploads/2026/03/74-300x180.png 300w, https://shiftmag.dev/wp-content/uploads/2026/03/74-768x461.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<h2 class="wp-block-heading"><span id="ai-is-powerful-but-expensive">AI is powerful but EXPENSIVE</span></h2>



<p class="wp-block-paragraph">Cost is also becoming an issue. Running large language models at scale requires expensive compute resources, and AI infrastructure spending has grown dramatically, Anshu explains:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Since 2024, our costs have gone up at least six times. This technology is amazing, but the cost of AI is too high.</p>
</blockquote>



<p class="wp-block-paragraph">That&#8217;s why Uber is investing in AI infrastructure that <strong>picks the right model for each task</strong>, balancing performance and cost. With the AI landscape changing fast, the company continuously evaluates new tools and updates its stack:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">What’s successful this month may be overtaken next month. So we constantly test new tools, gather feedback from developers, and adapt.</p>
</blockquote>



<p class="wp-block-paragraph"><em><strong>This is a fundamentally different approach from the standard coding-assistant model, one that addresses the real constraints. See the broader context: <a href="https://shiftmag.dev/state-of-code-2025-7978/">42% of code is AI-assisted, yet 96% of developers don&#8217;t fully trust it</a>.</strong></em></p>



<h2 class="wp-block-heading"><span id="uber%e2%80%99s-coding-agent-now-writes-1-800-code-changes-per-week">Uber’s coding agent now writes 1.800 code changes per week</span></h2>



<p class="wp-block-paragraph">Just one day after we published this article, <strong>Praveen Neppalli Naga</strong>, Uber’s CTO, shared in a <a href="https://www.linkedin.com/posts/pneppalli_agentic-software-engineering-adoption-is-activity-7439402236541157376-6PwV?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAACLVy5sBN8dLDrcn59RanHua0YyYGA1cslI" target="_blank" rel="noreferrer noopener">LinkedIn post</a> that agentic software engineering adoption is accelerating rapidly at Uber:</p>



<ul class="wp-block-list">
<li>1.800 code changes per week are now written entirely by Uber’s internal background coding agent.</li>



<li>95% of engineers use AI every month across tracked tools.</li>
</ul>



<p class="wp-block-paragraph">Over the past few months, Uber has leaned in heavily, and as Neppalli Naga notes, the results have been phenomenal:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">84% of AI users are now working with agent-style workflows, not just tab completion. Usage of Claude Code nearly doubled in two months (32% → 63%), while traditional IDE-based tools have largely plateaued.</p>
</blockquote>



<p class="wp-block-paragraph">He also said that <strong>engineers are shifting from accepting suggestions to delegating tasks</strong>. Even within traditional IDEs, around 70% of committed code is now AI-generated.</p>



<p class="wp-block-paragraph">All of this suggests a quiet but significant shift: </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Background agents are increasingly writing code autonomously. Uber’s internal coding agent grew from contributing less than 1% of all code changes to 8% in just a few months, with zero human authoring. Engineers review and approve, but the code itself is written entirely by AI.</p>
</blockquote>
<p>The post <a href="https://shiftmag.dev/how-uber-engineers-use-ai-agents-8617/">How Uber Engineers Use AI Agents</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Glossary You Must Read If You Wanna Talk About AI</title>
		<link>https://shiftmag.dev/the-glossary-you-must-read-if-you-wanna-talk-about-ai-8413/</link>
		
		<dc:creator><![CDATA[Zvonimir Petkovic]]></dc:creator>
		<pubDate>Wed, 04 Mar 2026 15:08:43 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[development]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=8413</guid>

					<description><![CDATA[<p>I often hear AI terms used loosely, so I put together this guide to explain key concepts like agents, tools, and LLMs clearly.</p>
<p>The post <a href="https://shiftmag.dev/the-glossary-you-must-read-if-you-wanna-talk-about-ai-8413/">The Glossary You Must Read If You Wanna Talk About AI</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/2026/03/AI-glossary-2.png?x94846" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/03/AI-glossary-2.png 1200w, https://shiftmag.dev/wp-content/uploads/2026/03/AI-glossary-2-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/03/AI-glossary-2-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/03/AI-glossary-2-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p class="wp-block-paragraph">AI terminology <strong>can be confusing</strong>, especially when words like agents, skills, tools, and LLMs get used interchangeably. </p>



<p class="wp-block-paragraph">That’s why I put together this glossary as a quick reference, to explain these concepts and help everyone, technical or not, talk about AI clearly.</p>



<h2 class="wp-block-heading"><span id="agent-skill">Agent Skill</span></h2>



<p class="wp-block-paragraph">An agent skill is a predefined <strong>capability or behavior that an AI agent uses to accomplish specific tasks</strong> like searching the web, writing code, sending emails, or reading files. Skills give agents a structured way to interact with tools, APIs, or data sources, making them more reliable and reusable across workflows. Think of them as modular &#8220;superpowers&#8221; you can plug into an agent.</p>



<p class="wp-block-paragraph">At a minimum, skills are just folders the agent reads, containing logic, instructions, assets, templates, and more. Most of today’s state-of-the-art agent apps let you create your own custom skills.</p>



<h2 class="wp-block-heading"><span id="mcp">MCP</span></h2>



<p class="wp-block-paragraph">MCP (Model Context Protocol) is an open standard that <strong>lets AI agents connect to external tools and data sources consistently</strong>. Instead of creating a custom integration for every service (like Slack, Google Drive, or GitHub&#8230;) MCP provides a universal &#8220;plug-in&#8221; format, allowing any MCP-compatible server to communicate with any MCP-compatible AI. </p>



<p class="wp-block-paragraph">Think of it as USB-C, but for AI tool integrations.</p>



<h2 class="wp-block-heading"><span id="agent-tool">Agent Tool</span></h2>



<p class="wp-block-paragraph">A tool is a <strong>function (code) that an AI agent can execute when it decides to</strong>. That’s why each tool has a name and a description, which influence when the model chooses to use it (for example, &#8220;Use this function to pull the latest tickets from a Jira project&#8221;).</p>



<p class="wp-block-paragraph">Besides the name and description, the function contains the code that the AI agent runs with the required arguments. For example, the agent could call:</p>



<pre class="wp-block-preformatted">jira_fetch_tickets(project="AI", limit=10)</pre>



<p class="wp-block-paragraph">Tools are also components that power MCP servers. In Open WebUI project, users can even write custom Python tools that agents can invoke.</p>



<h2 class="wp-block-heading"><span id="large-language-model-llm">Large Language Model (LLM)</span></h2>



<p class="wp-block-paragraph">An <strong>AI model within the deep learning spectrum</strong>, primarily designed for language understanding and content generation. LLMs excel at processing and generating human-like text.</p>



<h2 class="wp-block-heading"><span id="token">Token</span></h2>



<p class="wp-block-paragraph">In Generative AI, a token is <strong>the smallest unit of information a language model processes</strong>. Depending on the language and the model’s design, a token can represent a whole word, part of a word, or even a single character. Tokens are the building blocks that language models use to understand and generate text.</p>



<h2 class="wp-block-heading"><span id="context-window">Context Window</span></h2>



<p class="wp-block-paragraph">The context window is <strong>the number of tokens an LLM can process as input or generate as output</strong>. Input and output limits are usually different, with the input capacity typically much larger than the output.<br>For example, GPT-4o has an input limit of 128.000 tokens and an output limit of 16.384 tokens.</p>



<h2 class="wp-block-heading"><span id="fine-tuning">Fine-Tuning</span></h2>



<p class="wp-block-paragraph">Fine-tuning is <strong>the process of modifying a language model’s neural network using your own data</strong>. It’s different from simply adding documents to a conversation or adjusting prompts, which don’t change the model’s underlying structure (see RAG for an alternative approach).</p>



<h2 class="wp-block-heading"><span id="retrieval-augmented-generation-rag">Retrieval Augmented Generation (RAG)</span></h2>



<p class="wp-block-paragraph">Retrieval-Augmented Generation (RAG) is a <strong>system that uses a vector database to store ingested data</strong>, such as documents, web pages, and other sources. When a question is asked, relevant data is retrieved and combined with the question before being sent to a language model (LLM). The LLM itself doesn’t change, but it “sees” the retrieved information, allowing it to answer based on this additional context.</p>



<h2 class="wp-block-heading"><span id="prompt">Prompt</span></h2>



<p class="wp-block-paragraph">A prompt is <strong>the user’s input that kicks off the model’s text generation</strong>. It guides the model to produce relevant and coherent responses based on the context or question. Prompts can be simple or detailed, shaping the quality and direction of the output.</p>



<h2 class="wp-block-heading"><span id="chatgpt">ChatGPT</span></h2>



<p class="wp-block-paragraph">ChatGPT is an <strong>OpenAI product built on the GPT family of large language models (LLMs)</strong>. As a product, it can use different LLMs, such as GPT-4o, GPT-4o-mini, and o1.</p>



<h2 class="wp-block-heading"><span id="ai-agent">AI Agent</span></h2>



<p class="wp-block-paragraph">An AI agent is a <strong>software system powered by LLMs that performs tasks, answers questions, and automates processes for users</strong>. They can range from simple chatbots to advanced digital or robotic systems capable of running complex workflows autonomously. Key features include planning, using tools, perceiving their environment, and remembering past interactions, which help them improve performance over time.</p>



<h2 class="wp-block-heading"><span id="prompt-injection">Prompt Injection</span></h2>



<p class="wp-block-paragraph">Prompt injection is a <strong>type of cyberattack on large language models (LLMs)</strong>, where malicious inputs are disguised as normal prompts to manipulate the model’s behavior or output. These attacks can make the model ignore safeguards, reveal sensitive information, or carry out unauthorized actions.</p>



<h2 class="wp-block-heading"><span id="google-gemini">Google Gemini</span></h2>



<p class="wp-block-paragraph">Google&#8217;s family of Large Language Models (LLMs).</p>



<h2 class="wp-block-heading"><span id="anthropic-claude">Anthropic Claude</span></h2>



<p class="wp-block-paragraph">Anthropic&#8217;s family of Large Language Models (LLMs).</p>



<h2 class="wp-block-heading"><span id="meta-llama">Meta Llama</span></h2>



<p class="wp-block-paragraph">Meta&#8217;s family of Large Language Models.</p>



<h2 class="wp-block-heading"><span id="llm-parameters">LLM Parameters</span></h2>



<p class="wp-block-paragraph">LLM parameters are t<strong>he components within a large language model that determine its behavior and capabilities</strong>. Learned during training, they include weights and biases that help the model understand and generate language. Generally, more parameters mean a smarter model, but they also require more computing power, especially memory (RAM), to run.</p>



<h2 class="wp-block-heading"><span id="copilot">Copilot</span></h2>



<p class="wp-block-paragraph">Copilot is <strong>Microsoft’s branding for different AI agents</strong>, such as:</p>



<ul class="wp-block-list">
<li>GitHub Copilot, which assists with coding</li>



<li>Copilot 365, which helps with Office and Windows tasks</li>
</ul>



<h2 class="wp-block-heading"><span id="system-prompt">System Prompt</span></h2>



<p class="wp-block-paragraph">A system prompt is a <strong>set of instructions or guidelines given to a language model</strong> to set its behavior, tone, and limits during a conversation.</p>



<h2 class="wp-block-heading"><span id="prompt-engineering">Prompt Engineering</span></h2>



<p class="wp-block-paragraph">Prompt engineering is <strong>the practice of designing and refining prompts to optimize a language model’s performance and output</strong>. It involves crafting specific inputs that guide the model to produce the desired responses, improving accuracy, relevance, and coherence.</p>



<h2 class="wp-block-heading"><span id="digital-twin">Digital Twin</span></h2>



<p class="wp-block-paragraph">Digital twins are <strong>virtual representations of assets, people, or processes and their environments that simulate strategies and optimize behaviors</strong>. In the CPaaS space, this usually refers to AI agents that mimic people using audio and video modalities.</p>



<h2 class="wp-block-heading"><span id="multimodal">Multimodal</span></h2>



<p class="wp-block-paragraph">Multimodal refers to <strong>the ability of AI systems to process and combine multiple types of data inputs</strong> (text, images, audio, video) to perform tasks or generate outputs. This approach allows AI models to understand and create content across different modalities, resulting in more comprehensive and context-aware applications.</p>



<h2 class="wp-block-heading"><span id="vector-database">Vector Database</span></h2>



<p class="wp-block-paragraph">Unlike traditional databases that store structured data in tables, vector databases are <strong>optimized for operations like similarity search</strong>, allowing efficient retrieval of data points that are mathematically close to a given query vector.</p>



<p class="wp-block-paragraph">This capability is essential for applications such as recommendation systems, image recognition, natural language processing, and other AI-driven tasks where data is represented as vectors. For a common implementation, see RAG (Retrieval-Augmented Generation).</p>



<h2 class="wp-block-heading"><span id="hybrid-search">Hybrid Search</span></h2>



<p class="wp-block-paragraph">Hybrid search <strong>combines the strengths of vector search and traditional full-text search</strong> to improve the relevance of retrieved results. Vector search captures the semantic meaning of queries, matching based on context and intent, while full-text search ensures precise keyword matches. </p>



<p class="wp-block-paragraph">By blending these approaches, hybrid search increases the likelihood of retrieving the most relevant documents, even when queries are vague or phrased differently from the source content. This boosts the accuracy of retrieval and enhances the overall effectiveness of the RAG (Retrieval-Augmented Generation) pipeline.</p>



<h2 class="wp-block-heading"><span id="embedding-model">Embedding Model</span></h2>



<p class="wp-block-paragraph">An embedding model is a <strong>machine learning model trained to convert input text into numerical vectors</strong>, which can then be used for vector similarity search. Embedding models are a key part of the RAG (Retrieval-Augmented Generation) pipeline, as they transform user questions into vector representations.</p>
<p>The post <a href="https://shiftmag.dev/the-glossary-you-must-read-if-you-wanna-talk-about-ai-8413/">The Glossary You Must Read If You Wanna Talk About AI</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>I Tried Recreating OpenClaw &#8211; And The Hype Is Real</title>
		<link>https://shiftmag.dev/i-tried-recreating-openclaw-and-the-hype-is-real-8232/</link>
		
		<dc:creator><![CDATA[Josip Antolis]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 14:58:12 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[OpenClaw]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=8232</guid>

					<description><![CDATA[<p>After spending time with OpenClaw and seeing how it actually works, I’m convinced the hype is real. It shows that autonomous AI agents are finally living up to their promise.</p>
<p>The post <a href="https://shiftmag.dev/i-tried-recreating-openclaw-and-the-hype-is-real-8232/">I Tried Recreating OpenClaw &#8211; And The Hype Is Real</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="1350" height="709" src="https://shiftmag.dev/wp-content/uploads/2026/02/openclaw.png?x94846" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/openclaw.png 1350w, https://shiftmag.dev/wp-content/uploads/2026/02/openclaw-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/openclaw-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/openclaw-768x403.png 768w" sizes="auto, (max-width: 1350px) 100vw, 1350px" /></figure>


<p class="wp-block-paragraph">I was skeptical when I first ran <a href="https://openclaw.ai/" target="_blank" rel="noreferrer noopener">OpenClaw</a>, it looked like just another AI tool riding the hype. Turns out, it’s not.</p>



<p class="wp-block-paragraph">After experimenting with it and extending its messaging, I also found out that <strong>much of its core power</strong> (its AI agent architecture and human-in-the-loop interactions) <strong>can be recreated with off-the-shelf tools</strong> like the Agents SDK and Messages API.</p>



<p class="wp-block-paragraph">In this post, I’ll share what I learned from using OpenClaw, explain why messaging is what makes autonomous agents truly work, and show how developers can leverage existing tools to build something similar without starting from scratch.</p>



<h2 class="wp-block-heading"><span id="the-agent-that-broke-the-internet%e2%80%af">The agent that broke the internet </span></h2>



<p class="wp-block-paragraph">In just three months, it’s taken off on GitHub, earning <a href="https://openclaw.report/news/openclaw-200k-github-stars" target="_blank" rel="noreferrer noopener">200k stars in 84 days</a> and thousands of forks. By mid-February, SecurityScorecard was <a href="https://declawed.io/" target="_blank" rel="noreferrer noopener">tracking over 240k instances</a> running in the wild.</p>



<p class="wp-block-paragraph">With LLM token costs of <a href="https://openclawd.ai/" target="_blank" rel="noreferrer noopener">$5-50 per instance</a>, the project is already accounting for millions in inference spending, and it’s even causing <a href="https://www.techradar.com/computing/macs/mac-mini-shortages-are-starting-to-happen-and-the-openclaw-ai-boom-is-a-key-reason" target="_blank" rel="noreferrer noopener">Mac mini shortages</a> as people rush to self-host OpenClaw. (<a href="https://openclawd.ai/#pricing-title" target="_blank" rel="noreferrer noopener">You can actually run it on much cheaper hardware</a>, which makes the story even crazier.)</p>



<p class="wp-block-paragraph">The hype around the project is undeniable, <strong>even with a steep barrier to entry</strong> (users must install and run the server software themselves) and despite ongoing <a href="https://adversa.ai/blog/openclaw-security-101-vulnerabilities-hardening-2026/" target="_blank" rel="noreferrer noopener">security concerns</a> and <a href="https://app.opencve.io/cve/?vendor=openclaw" target="_blank" rel="noreferrer noopener">reported vulnerabilities</a>.&nbsp;</p>



<h2 class="wp-block-heading"><span id="why%c2%a0i-think-the-hype%c2%a0is-justified">Why I think the hype is justified</span></h2>



<p class="wp-block-paragraph">OpenClaw’s AHA moment is hard to ignore. It shows there’s real demand for autonomous AI agents, ones that free users from being stuck in a chat window on sites like chatgpt.com.</p>



<p class="wp-block-paragraph">I’ve always felt that calling those website chatbots &#8220;agents&#8221; was a stretch &#8211; they’re more like conversation buddies than AI doing real work for you.</p>



<p class="wp-block-paragraph"><strong>True agents</strong>, in my view, <strong>should run in the background</strong>, acting and reacting on their own without forcing users to stay glued to a single site. That’s exactly the experience OpenClaw delivers.</p>



<h2 class="wp-block-heading">The &#8220;hold my beer&#8221; moment</h2>



<p class="wp-block-paragraph">As a developer, I was curious. Running OpenClaw was impressive, but I wanted to know: how does it actually work? And even more, what would it take to recreate its wow factor myself? Let’s break it down.</p>



<p class="wp-block-paragraph"><strong>The first key ingredient is an AI agent, and I mean this in a very specific sense</strong>. </p>



<p class="wp-block-paragraph"><a href="https://www.anthropic.com/engineering/building-effective-agents#what-are-agents" target="_blank" rel="noreferrer noopener">As Anthropic puts it</a>, agents are systems where the LLM controls the program’s flow, instead of classic code deciding when to call the LLM. At a high level, agent apps are basically a while loop that calls the LLM and hooks in all the tools the AI might need. With the rise of <a href="https://shiftmag.dev/tag/mcp/" target="_blank" rel="noreferrer noopener">MCP</a>, connecting these tools has become easier and more standardized.</p>



<p class="wp-block-paragraph">On the surface this seemed simple, but I quickly got bogged down in a bunch of edge cases and details to implement. Luckly, we don’t need to reinvent the wheel here. There are <strong>ready to use SDKs wrapping all the agent logic</strong>, recently renamed <a href="https://platform.claude.com/docs/en/agent-sdk/overview" target="_blank" rel="noreferrer noopener">Agents SDK</a> being a prime example. That got the AI agent part covered. But there was still one secret ingredient missing.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="900" height="600" src="https://shiftmag.dev/wp-content/uploads/2026/02/OpenClawMeme.png?x94846" alt="" class="wp-image-8249" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/OpenClawMeme.png 900w, https://shiftmag.dev/wp-content/uploads/2026/02/OpenClawMeme-300x200.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/OpenClawMeme-768x512.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure>



<h2 class="wp-block-heading"><span id="users-still-need-to-approve-important-actions">Users still need to approve important actions</span></h2>



<p class="wp-block-paragraph">Let’s go back to the OpenClaw user experience. Even when freed from a chat website, agents still need a way to stay in touch with their users. </p>



<p class="wp-block-paragraph">The <strong>human-in-the-loop approach remains essential for responsible AI</strong>: no one should discover their agent’s spending spree on a month-end bank statement. Critical actions still need user approval, and important results still need to be communicated. </p>



<p class="wp-block-paragraph">That’s why <strong>messaging channels</strong> are the very first feature highlighted in <a href="https://docs.openclaw.ai/concepts/features" target="_blank" rel="noreferrer noopener">OpenClaw’s documentation</a>. </p>



<p class="wp-block-paragraph">Messaging is what makes autonomous AI agents actually work <em>for</em> you. It lets them check in, keep you in the loop, and get your approval for important actions, without forcing you to refresh a page or babysit a chat window. It’s what gives you peace of mind, convenience, and, most importantly, <strong>control</strong>.</p>



<h2 class="wp-block-heading"><span id="cheat-codes%c2%a0for-messaging">Cheat codes for messaging</span></h2>



<p class="wp-block-paragraph">Back to coding. </p>



<p class="wp-block-paragraph"><strong>Connecting to mobile operators or chat services</strong> might sound intimidating at first, but I had a secret weapon: I work at <a href="https://www.infobip.com/?utm_source=shiftmag_mcp&amp;utm_medium=referral&amp;utm_campaign=2182025_c_referral_lg-web-ss_general_gl_zz_en_i_mcp&amp;utm_term=en_developers-na_general_gl_zz" target="_blank" rel="noreferrer noopener">Infobip</a>. Luckily, you don’t need that advantage, <strong>anyone can pick up the unified <a href="https://www.infobip.com/docs/messages-api?utm_source=shiftmag_mcp&amp;utm_medium=referral&amp;utm_campaign=2182025_c_referral_lg-web-ss_general_gl_zz_en_i_mcp&amp;utm_term=en_developers-na_general_gl_zz" target="_blank" rel="noreferrer noopener">Messages API </a></strong>and start sending and receiving messages on users’ phones.</p>



<p class="wp-block-paragraph">With connectivity sorted, all I had to do was figure out how to hook the agent up to it. </p>



<p class="wp-block-paragraph">There are few flows:</p>



<ul class="wp-block-list">
<li>First up is <strong>passing new messages from users to the agent as prompts</strong>; basically, launching new tasks.</li>



<li>Secondly, the agent needs a way to <strong>send out reports</strong>. <a href="https://www.infobip.com/docs/mcp?utm_source=shiftmag_mcp&amp;utm_medium=referral&amp;utm_campaign=2182025_c_referral_lg-web-ss_general_gl_zz_en_i_mcp&amp;utm_term=en_developers-na_general_gl_zz" target="_blank" rel="noreferrer noopener">MCP servers</a> work best here, as they are easy to integrate and trigger by LLMs. </li>



<li>Finally, <strong>sending the agent’s output to the phone and getting the user’s feedback or confirmation</strong>. This is the all-important human-in-the-loop part! Historically interpreting free form input from users might have been hard, but these days we can easily pass it to an LLM and ask it to summarize the intent: does the user approve of the suggested action or not? Easy. </li>
</ul>



<p class="wp-block-paragraph">And with that my experiment was over. </p>



<p class="wp-block-paragraph">Do a few off-the-shelf components (like the Agents SDK and Messages API) replicate the full OpenClaw experience? Not entirely. But they can <strong>help you kickstart a new project</strong>, up to the point where you can focus on your core features. And that’s the part that really matters.</p>



<h2 class="wp-block-heading"><span id="it%e2%80%99s-time-to-pay-attention-to-autonomous-agents">It’s time to pay attention to autonomous agents</span></h2>



<p class="wp-block-paragraph">If you’re already working in AI (or thinking about it) autonomous agents are where things are moving. OpenClaw shows the demand is real, and the tools to build agents that can reason, act, and communicate are already here. <strong>Messaging isn’t just nice to have</strong>; it’s how your agent stays useful without you having to babysit it. With unified messaging APIs and MCP, sending updates and notifications is easy, so you can focus on shaping how your agent thinks and acts.</p>
<p>The post <a href="https://shiftmag.dev/i-tried-recreating-openclaw-and-the-hype-is-real-8232/">I Tried Recreating OpenClaw &#8211; And The Hype Is Real</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>It’s Time to Redesign How Product Teams Work</title>
		<link>https://shiftmag.dev/its-time-to-redesign-how-product-teams-work-7935/</link>
		
		<dc:creator><![CDATA[Alexander Kirillov]]></dc:creator>
		<pubDate>Tue, 10 Feb 2026 16:05:50 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[product development]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=7935</guid>

					<description><![CDATA[<p>With AI building features, teams must shift from doing tasks to orchestrating them - PMs guide intent, engineers oversee systems, designers review output live, and QA builds self-healing processes.</p>
<p>The post <a href="https://shiftmag.dev/its-time-to-redesign-how-product-teams-work-7935/">It’s Time to Redesign How Product Teams Work</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="1350" height="709" src="https://shiftmag.dev/wp-content/uploads/2026/02/product-teams.png?x94846" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/product-teams.png 1350w, https://shiftmag.dev/wp-content/uploads/2026/02/product-teams-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/product-teams-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/product-teams-768x403.png 768w" sizes="auto, (max-width: 1350px) 100vw, 1350px" /></figure>


<p class="wp-block-paragraph">Three months ago, I started using Claude Code to handle the <strong>repetitive, day-to-day work of product management</strong>. </p>



<p class="wp-block-paragraph">It was an immediate improvement over standard chatbots I have been using for the past few years for handling core PM tasks:</p>



<ul class="wp-block-list">
<li>Deep market, competitive and technical investigations&nbsp;&nbsp;</li>



<li>Turning raw customer input into structured change requests&nbsp;&nbsp;</li>



<li>Generating high-fidelity specs for the SDLC and user docs</li>
</ul>



<p class="wp-block-paragraph">I soon moved from simple tasks to <strong>rapid prototyping</strong>. </p>



<p class="wp-block-paragraph">Having coded early in my career (if you know MFC, you know how long ago), it felt natural to create interactive mockups for feature ideas. When ChatGPT came out, I prompted it for Python and JavaScript, copied the code into an IDE, and fed back errors for fixes. This time, it was a different experience:<strong> I could get a working prototype in hours</strong> and initial feedback within a day.</p>



<h2 class="wp-block-heading"><span id="a-dream-of-autonomous-coding-directly-applied-to-my-product">A dream of autonomous coding, directly applied to my product</span></h2>



<p class="wp-block-paragraph">Prototyping worked well, but it made me wonder: Could a coding agent take my specifications and produce full, working features? </p>



<p class="wp-block-paragraph">Answering this would mean a <strong>major shift in my workflow</strong>. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I would stop generating piles of specifications for the product team to convert into working features and start managing &#8220;executable intent&#8221; for agentic coding.&nbsp; My job was no longer overseeing a list of tasks; it was to architect the specific goals, guardrails, and project context an AI needs to turn a requirement into a production-ready feature.</p>
</blockquote>



<p class="wp-block-paragraph">My ultimate vision was <strong>autonomous coding applied directly to my product</strong>. The transition would start with small, scoped increments and bug fixes to learn the agentic system’s nuances and build trust. Once we prove success on isolated components, we can scale to larger cross-domain features and multi-agent setups.</p>



<p class="wp-block-paragraph">So I went searching for design patterns that promised HOOTL (human out of the loop, no ongoing human intervention), and soon the name <a href="https://ghuntley.com/ralph/" target="_blank" rel="noreferrer noopener">Ralph Wiggum</a> came up (see the side note).</p>



<h2 class="wp-block-heading"><span id="what-is-the-ralph-wiggium-loop">What is the Ralph Wiggium Loop?</span></h2>



<p class="wp-block-paragraph">Named after the lovably persistent Simpsons character, the Ralph Wiggum Loop is an <strong>orchestration pattern for autonomous AI agents</strong>.&nbsp; Popularized by developer Geoffrey Huntley in mid-2025, it shifted AI from &#8220;reactive chat&#8221; to &#8220;autonomous worker.&#8221;</p>



<p class="wp-block-paragraph">Unlike typical one-off prompts, the Ralph Loop runs an agent repeatedly (like a &#8220;while loop&#8221;) until a task, such as a complex software refactor, is fully complete. It’s become popular because <strong>it solves &#8220;context rot&#8221;</strong>: each iteration starts fresh, so the AI doesn’t get tripped up by its previous errors and can keep working for hours without human oversight.</p>



<p class="wp-block-paragraph">Ralph showed me <em>how</em>, but being naturally skeptical, I wanted to test it first &#8211; a &#8220;sandbox&#8221; to see if the workflow actually worked in a real project before rolling out full autonomous coding in production.</p>



<h2 class="wp-block-heading"><span id="ai-built-90-of-a-feature-i-finished-the-rest">AI built 90% of a feature, I finished the rest</span></h2>



<p class="wp-block-paragraph">I picked an open-source framework called <a href="https://nicegui.io/" target="_blank" rel="noreferrer noopener">NiceGUI</a> (a Python framework for building web UIs) as my playground.&nbsp;</p>



<p class="wp-block-paragraph">The idea was to<strong> implement a new component</strong>, an enhanced data table with inline editing, inheriting from the existing table.&nbsp;It had to be a repeatable process enabled by the agentic coding loop, so I decided to build one.</p>



<p class="wp-block-paragraph">First, I used Claude Code to scout the repository and extract &#8220;institutional knowledge&#8221; &#8211; the specific tech stack, coding patterns, and standards of the project.&nbsp;I fed this context and a detailed feature request into a custom <a href="https://github.com/Radical-commits/ralph-prd-factory" target="_blank" rel="noreferrer noopener">Ralph PRD Factory</a>. This turned my requirements into a JSON-formatted PRD file that the Ralph loop is driven by and that serves as the “executable intent.”</p>



<p class="wp-block-paragraph">After one day of prep work, I turned the agent loose. In under four hours, it completed the task autonomously &#8211; or so it told me.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">In reality, I spent a few more hours weeding out UI bugs and minor quirks until it finally felt complete.&nbsp;Still, having the agent take me to 90% was a clear success. The autonomous coding worked.</p>
</blockquote>



<h2 class="wp-block-heading"><span id="redesigning-how-our-product-team-works">Redesigning how our product team works</span></h2>



<p class="wp-block-paragraph">In traditional development,<strong> ideas often get lost in translation</strong>, passing from PM to designer to engineer to QA, each handoff can dilute or distort the original intent.</p>



<p class="wp-block-paragraph">When AI builds features from scratch, the old handoff-heavy workflow falls apart. To succeed, <strong>teams need to shift from doing manual work to orchestrating the system</strong>:</p>



<ul class="wp-block-list">
<li><strong>The PM as Intent Architect</strong> &#8211; The PM’s output is no longer a ticket; it is the “brain” of the feature. By owning the context engine, the PM ensures the agent has the exact data and guardrails needed to execute. Success is measured by the precision of the context, not the volume of tasks.</li>



<li><strong>The Engineer as Architectural Oversight</strong> &#8211; Senior developers can stop spending 80% of their time on boilerplate. They become guardians of the system, focusing on high-level architecture, security, and complex logic that agents cannot yet handle.</li>



<li><strong>The Designer as Real-Time Reviewer</strong> &#8211; Instead of static handovers, designers review live agent output as it is generated. They move from static creation to dynamic orchestration, adjusting the visual intent on the fly.</li>



<li><strong>The QA as Quality Architect</strong> &#8211; Testing moves from manual bug-hunting to designing &#8220;self-healing loops.&#8221; They build automated systems to catch failures early, allowing humans to focus on strategy and edge cases.</li>
</ul>



<h2 class="wp-block-heading"><span id="let-the-ai-orchestration-games-begin">Let the AI orchestration games begin</span></h2>



<p class="wp-block-paragraph">This experiment wasn’t just about building a feature in hours, it offered a glimpse into a <strong>bigger shift in how we create products</strong>. Autonomous agents building features are becoming reality. It’s not a magic solution, we still have a lot to learn about using agentic AI effectively and guiding it toward the results we want.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">This shift doesn’t eliminate specialized roles, it moves us away from manual &#8220;doing&#8221; and toward orchestrating and designing systems.</p>
</blockquote>



<p class="wp-block-paragraph">To succeed, we all need to <strong>level up and expand our roles</strong> &#8211; moving from doing manual tasks to guiding and orchestrating AI. I’m excited about this shift. It’s time to stop just managing backlogs and start shaping the future.</p>
<p>The post <a href="https://shiftmag.dev/its-time-to-redesign-how-product-teams-work-7935/">It’s Time to Redesign How Product Teams Work</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My View of Software Engineering Has Changed For Good</title>
		<link>https://shiftmag.dev/my-view-of-software-engineering-has-changed-for-good-7790/</link>
		
		<dc:creator><![CDATA[Frantisek Lucivjansky]]></dc:creator>
		<pubDate>Tue, 03 Feb 2026 11:41:16 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<category><![CDATA[development]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=7790</guid>

					<description><![CDATA[<p>We’re past just making better tools: machines will do the repetitive coding, and humans will focus on guiding, judging, and architecture.</p>
<p>The post <a href="https://shiftmag.dev/my-view-of-software-engineering-has-changed-for-good-7790/">My View of Software Engineering Has Changed For Good</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="1500" height="788" src="https://shiftmag.dev/wp-content/uploads/2026/02/frantisek-1.png?x94846" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/frantisek-1.png 1500w, https://shiftmag.dev/wp-content/uploads/2026/02/frantisek-1-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/frantisek-1-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/frantisek-1-768x403.png 768w" sizes="auto, (max-width: 1500px) 100vw, 1500px" /></figure>


<p class="wp-block-paragraph">Some time ago, I wrote an article called <a href="https://shiftmag.dev/the-illusion-of-vibe-coding-5297/" target="_blank" rel="noreferrer noopener">The Illusion of Vibe Coding</a>. In it, I argued that <strong>there are no shortcuts to mastery</strong>, and that relying on AI-generated code without deep understanding only shifts problems downstream. That article came from skepticism.</p>



<p class="wp-block-paragraph">Recently, after seeing early autonomous agent systems like<a href="https://openclaw.ai/" target="_blank" rel="noreferrer noopener"> OpenClaw</a>, I realized something important: <strong>the skepticism is still there, but my perspective has shifted</strong>.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">In my view, we are no longer just discussing “better tools for developers.” We are starting to see the outlines of an entirely different operating model for software engineering.</p>



<p class="wp-block-paragraph"></p>
</blockquote>



<h2 class="wp-block-heading" id="FromVibeCodingtoAutonomousAgents:HowMyViewonSoftwareEngineeringIsEvolving-FromWritingCodetoExpressingIntent"><span id="we-no-longer-writing-code-we-express-intent">We no longer writing code, we express intent</span></h2>



<p class="wp-block-paragraph">For years, the industry has framed progress as AI &#8220;assisting&#8221; engineers: smarter autocomplete, faster refactoring, better suggestions. All useful, but still stuck in the same old mindset &#8211;  and I don’t think that way of thinking works anymore.</p>



<p class="wp-block-paragraph">The future of software engineering isn’t just developers using AI tools. It’s <strong>autonomous coding agents and humans working together</strong>, each guiding the other.</p>



<p class="wp-block-paragraph">Today, software development is all about execution. Humans break work into tickets, write and review code, test, deploy, and repeat. Even with better tools, the mental load of coordination and context switching hasn’t changed.</p>



<p class="wp-block-paragraph">In <a href="https://shiftmag.dev/the-illusion-of-vibe-coding-5297/" target="_blank" rel="noreferrer noopener">The Illusion of Vibe Coding</a>, I argued that <strong>skipping understanding makes systems fragile</strong>. I still believe that. What’s different is who I think will do the executing.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I believe autonomous coding agents will take over much of the mechanical work, while humans move up the stack.</p>
</blockquote>



<p class="wp-block-paragraph">Instead of assigning tasks, <strong>we’ll define intent: outcomes, constraints, trade-offs</strong>. Agents will plan, execute, and consult humans only when uncertainty is high.</p>



<p class="wp-block-paragraph">Humans are no longer the primary executors, we become the checkpoint. From the agent’s view, we’re part of the control loop, not collaborators. </p>



<p class="wp-block-paragraph">Karpaty, ex director of AI at Tesla, also notes that as execution shifts to machines, <a href="https://shiftmag.dev/llm-agents-claude-7751/" target="_blank" rel="noreferrer noopener">humans’ focus naturally moves toward guiding principles, architecture, and intent</a>. This aligns with what I’ve observed: our role is increasingly supervisory and strategic, not mechanical.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="781" src="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-02-at-15.05.39-1024x781.png?x94846" alt="" class="wp-image-7838" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-02-at-15.05.39-1024x781.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-02-at-15.05.39-300x229.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-02-at-15.05.39-768x586.png 768w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-02-at-15.05.39.png 1162w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="FromVibeCodingtoAutonomousAgents:HowMyViewonSoftwareEngineeringIsEvolving-AgentsThatUnderstandSystems,NotJustFiles"><span id="agents-never-forget-the-system-humans-do">Agents never forget the system, humans do</span></h2>



<p class="wp-block-paragraph">This shift isn’t just better code generation, it’s context.</p>



<p class="wp-block-paragraph"><strong>Autonomous agents can read entire systems in ways humans can’t</strong>: traverse repos, inspect dependencies, analyze history, read docs, and link decisions across months or years.</p>



<p class="wp-block-paragraph">What we call &#8220;tribal knowledge&#8221; is mostly a workaround for human memory. Agents don’t forget, avoid legacy code, or shy away from repos. They treat the system itself as the unit of change, not a ticket, file, or pull request.</p>



<h2 class="wp-block-heading" id="FromVibeCodingtoAutonomousAgents:HowMyViewonSoftwareEngineeringIsEvolving-Self-VerificationBecomesaCoreCapability"><span id="trust-in-software-will-shift-from-the-output-to-the-process-itself">Trust in software will shift from the output to the process itself</span></h2>



<p class="wp-block-paragraph">One aspect I think is often underestimated is <strong>verification</strong>.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I believe autonomous agents won’t just write code and wait for CI, they’ll run tests, add coverage, debug failures, and review their work against architecture.</p>
</blockquote>



<p class="wp-block-paragraph">In <em><a href="https://shiftmag.dev/the-illusion-of-vibe-coding-5297/" target="_blank" rel="noreferrer noopener">The Illusion of Vibe Coding</a></em>, I warned against blind trust in generated code. Now, I think <strong>trust should shift from output to process</strong>. CI stops being a gate for humans and becomes a feedback loop agents actively use. Software moves from “written then checked” to continuously reasoned about.</p>



<h2 class="wp-block-heading" id="FromVibeCodingtoAutonomousAgents:HowMyViewonSoftwareEngineeringIsEvolving-TwoTypesofCompaniesWillEmerge"><span id="companies-will-adopt-autonomous-agents-in-different-ways">Companies will adopt autonomous agents in different ways</span></h2>



<p class="wp-block-paragraph">I don’t think companies will adopt autonomous agents uniformly. Instead, I expect a clear split.</p>



<ul class="wp-block-list">
<li>Some companies will <strong>deeply integrate autonomous agents</strong> into their systems, aligning them with architecture, security, and risk. The advantage won’t be the model itself, but the alignment layer, which will quietly become intellectual property.</li>



<li>Other companies will <strong>use cloud-based agents</strong>, prioritizing speed, accessibility, and low overhead. They’ll excel with standard architectures and fast-moving teams, even if they don’t fully grasp the business, often an acceptable trade-off.</li>
</ul>



<p class="wp-block-paragraph"><strong>Most organizations will likely go hybrid</strong>, using cloud agents for experimentation and self-hosted agents for core systems. As today, the most sensitive parts of the business will stay in-house.</p>



<h2 class="wp-block-heading" id="FromVibeCodingtoAutonomousAgents:HowMyViewonSoftwareEngineeringIsEvolving-WhatThisMeansforSoftwareEngineers"><span id="so-what-does-this-mean-for-software-engineers">So, what does this mean for software engineers?</span></h2>



<p class="wp-block-paragraph">I don’t believe this future eliminates engineers, but it will force a sorting.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Experts remain essential, shifting from coding to orchestrating autonomous agents, ensuring output is secure, maintainable, and aligned with intent.</p>
</blockquote>



<p class="wp-block-paragraph">I think <strong>infrastructure engineers become even more critical</strong> &#8211; they build, run, and improve the systems autonomous agents rely on. I believe the most important production system won’t be the application itself, but the system that creates and evolves it.</p>



<p class="wp-block-paragraph">What’s interesting is that this shift is already changing where the bottleneck lives.</p>



<p class="wp-block-paragraph">Robert C. Martin&nbsp;recently described this succinctly:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="265" src="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-02-at-13.48.40-1024x265.png?x94846" alt="" class="wp-image-7819" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-02-at-13.48.40-1024x265.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-02-at-13.48.40-300x78.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-02-at-13.48.40-768x199.png 768w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-02-at-13.48.40.png 1160w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">In other words, <strong>humans are becoming the bottleneck</strong>.</p>



<p class="wp-block-paragraph">Execution can be automated; judgment and responsibility cannot. The middle layer shrinks, and value moves to architecture, risk, and knowing what not to build.</p>



<p class="wp-block-paragraph">One thing responsibility that stays the same: responsibility cannot be outsourced.</p>



<h2 class="wp-block-heading" id="FromVibeCodingtoAutonomousAgents:HowMyViewonSoftwareEngineeringIsEvolving-WhatAboutInternsandJuniorEngineers—ButNotJustThem?"><span id="what-will-happen-to-interns-and-junior-engineers">What will happen to interns and junior engineers?</span></h2>



<p class="wp-block-paragraph">This is the part where I don’t have a confident or comforting answer, and pretending otherwise would be dishonest.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">If agents handle most execution, the old path for juniors (doing small tasks to learn) won’t work anymore. That doesn’t doom them, but the way they gain experience will have to change.</p>



<p class="wp-block-paragraph"></p>
</blockquote>



<p class="wp-block-paragraph">I think <a href="https://www.anthropic.com/research/AI-assistance-coding-skills" target="_blank" rel="noreferrer noopener">Anthropic’s research</a> is spot on: struggling and effort are essential for mastery, and removing friction too early quietly erodes learning. </p>



<p class="wp-block-paragraph">And this isn’t just a junior problem; I think <strong>it applies equally to experienced developers</strong>.</p>



<p class="wp-block-paragraph">When agents let us skip hard thinking, growth stalls: juniors may never build fundamentals, and experienced engineers can slowly lose judgment and architectural instinct. The ones who thrive will be those who actively choose to remain experts, even when tools make shortcuts tempting.</p>



<h2 class="wp-block-heading"><span id="two-types-of-developers-will-emerge">Two types of developers will emerge</span></h2>



<p class="wp-block-paragraph">As I described earlier, two broad roles are likely to emerge, and both will require deep knowledge:</p>



<ul class="wp-block-list">
<li>One path is for <strong>engineers who orchestrate autonomous agents</strong>. They need a solid grasp of system architecture, can turn business needs into technical solutions, and have the judgment to know if a change is safe, maintainable, and scalable. That kind of judgment isn’t learned by cutting corners, it comes from wrestling with trade-offs, failure modes, and long-term consequences.</li>
</ul>



<ul class="wp-block-list">
<li>The other path is <strong>engineers who build and run the autonomy infrastructure itself</strong>. They need deep expertise in infrastructure, security, networking, permissions, observability, and cost management, and in self-hosted setups, also skills in model hosting, fine-tuning, or even training specialized systems.</li>
</ul>



<p class="wp-block-paragraph">Both paths lead to highly skilled experts. Neither is shallow.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">What worries me isn’t juniors being replaced &#8211; it’s everyone getting passive, letting agents do the thinking that actually builds real skill.</p>
</blockquote>



<p class="wp-block-paragraph">My advice hasn’t changed since <a href="https://shiftmag.dev/the-illusion-of-vibe-coding-5297/" target="_blank" rel="noreferrer noopener">The Illusion of Vibe Coding</a>: <strong>keep learning, keep experimenting, and don’t outsource your understanding</strong>. Use agents to amplify your thinking, not replace it. The difference now is urgency, and how we learn must evolve at every level.</p>



<p class="wp-block-paragraph">Imagine an engineer adding a feature. Instead of just coding, they first understand why it matters, what could break, and how it fits in the system. They might use an agent to propose a solution but review it critically. Over time, they don’t just write better code, <strong>they get better at judging designs, spotting risks, and turning vague ideas into solid solutions</strong>. That’s the kind of skill that keeps you valuable when execution is cheap.</p>



<h2 class="wp-block-heading" id="FromVibeCodingtoAutonomousAgents:HowMyViewonSoftwareEngineeringIsEvolving-AQuietInversion"><span id="machines-will-execute-humans-will-supervise-and-judge">Machines will execute, humans will supervise and judge</span></h2>



<p class="wp-block-paragraph">We keep asking how AI will assist developers. That question assumes the old hierarchy stays. It won’t.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">In my view, software engineering is heading toward a quiet inversion: machines will execute, and humans will supervise, constrain, and judge, not because humans are weaker, but because machines excel at execution, and humans excel at responsibility.</p>
</blockquote>



<p class="wp-block-paragraph">Vibe coding was never the goal &#8211; it was just a step. The future isn’t about coding faster. It’s about deciding, deliberately, what’s actually worth building.</p>
<p>The post <a href="https://shiftmag.dev/my-view-of-software-engineering-has-changed-for-good-7790/">My View of Software Engineering Has Changed For Good</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Andrej Karpathy Admits Software Development Has Changed for Good</title>
		<link>https://shiftmag.dev/llm-agents-claude-7751/</link>
		
		<dc:creator><![CDATA[Marko Crnjanski]]></dc:creator>
		<pubDate>Thu, 29 Jan 2026 14:55:44 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Claude]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<category><![CDATA[development]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=7751</guid>

					<description><![CDATA[<p>Ex-Tesla AI director now programs mostly in plain English with AI, calling it the biggest workflow change in 20 years.</p>
<p>The post <a href="https://shiftmag.dev/llm-agents-claude-7751/">Andrej Karpathy Admits Software Development Has Changed for Good</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When <strong>Andrej Karpathy</strong>, former director of AI at Tesla and one of the most influential voices in modern artificial intelligence, <a href="https://x.com/karpathy/status/2015883857489522876" target="_blank" rel="noreferrer noopener">casually admitted on X</a> that he now <strong>does most of his programming in English rather than code</strong>, it struck a nerve.</p>



<p class="wp-block-paragraph">Not because developers weren’t already sensing this shift, but because he said it, and because he revealed something many wouldn’t openly admit:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">It hurts the ego a bit.</p>
</blockquote>



<p class="wp-block-paragraph">This wasn’t just another AI hot take. A top expert openly admitted that <strong>software development has changed in a fundamental way</strong>. Karpathy was clear:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">This is easily the biggest change to my basic coding workflow in 2 decades of programming and it happened over the course of the few weeks. </p>
</blockquote>



<h2 class="wp-block-heading"><span id="karpathy-in-his-own-words"><strong>Karpathy, in his own words</strong></span></h2>



<p class="wp-block-paragraph">Karpathy explains how, over the course of just a few weeks coding in Claude, his workflow flipped almost entirely. <strong>What was once mostly handwritten code is now largely driven by LLMs</strong>, guided through natural language.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I really am mostly programming in English now, a bit sheepishly telling the LLM what code to write… in words. It hurts the ego a bit, but the power to operate over software in large &#8220;code actions&#8221; is just too net useful.</p>
</blockquote>



<p class="wp-block-paragraph">That sentence carries more weight than it first appears. It openly acknowledges the productivity gains while naming the quiet discomfort many developers feel but rarely articulate. Even for Karpathy, something is unsettling about no longer being the one writing the code line by line.</p>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="500" data-dnt="true"><p lang="en" dir="ltr">It feels like I’m cheating. Which is a very weird feeling to have. It takes a while to unpack. It’s because some code that used to be a point of pride and high IQ and knowledge is suddenly free and instant and it’s very disorienting.</p>&mdash; Andrej Karpathy (@karpathy) <a href="https://twitter.com/karpathy/status/2015895365674021136?ref_src=twsrc%5Etfw">January 26, 2026</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<p class="wp-block-paragraph">This shift isn’t about convenience or a slightly better tool. Karpathy describes it as a phase change, not an incremental improvement.</p>



<p class="wp-block-paragraph">The role of software engineers moves away from writing individual lines of code and toward orchestrating large code actions. LLMs don’t behave like perfect assistants; <strong>they act more like eager but sloppy junior developers: fast, capable, and occasionally careless</strong>. They don’t ask clarifying questions, they guess. And sometimes they guess wrong.</p>



<p class="wp-block-paragraph">The result is faster output, but also a different kind of responsibility. Less mechanical, more abstract. Less about syntax, more about judgment.</p>



<h2 class="wp-block-heading"><span id="community-reaction-and-a-bruised-identity">Community reaction and a bruised identity</span></h2>



<p class="wp-block-paragraph">The reaction to Karpathy’s post helps explain why it resonated so widely. Some developers see this evolution as liberating, with fewer repetitive tasks, more leverage, and more time spent on meaningful problem-solving. Others see something more troubling: a slow erosion of the craft that shaped their professional identity.</p>



<p class="wp-block-paragraph">A familiar split emerges: on one side are builders who embrace orchestration, prompting, and verification, on the other are developers who feel that if they’re not writing code, they’re not really programming anymore.</p>



<p class="wp-block-paragraph"><strong>That tension is emotional, not technical</strong>. Programming has never been just a job. For many, it’s a source of pride. When that pride is challenged, even by efficiency, it stings.</p>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="500" data-dnt="true"><p lang="en" dir="ltr">I let Claude Code turn <a href="https://twitter.com/karpathy?ref_src=twsrc%5Etfw">@karpathy</a>&#39;s post into agent skills. It first generated a bunch of skill files and around 800 lines of descriptions.<br><br>Then I let it use these agent skills to review itself. Boom, it cut itself down to 70 lines of clean, solid instructions.… <a href="https://t.co/YF7p6DpHe0">https://t.co/YF7p6DpHe0</a> <a href="https://t.co/W9MLoigt2R">pic.twitter.com/W9MLoigt2R</a></p>&mdash; Jiayuan (JY) Zhang (@jiayuan_jy) <a href="https://twitter.com/jiayuan_jy/status/2015998216517583211?ref_src=twsrc%5Etfw">January 27, 2026</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<p class="wp-block-paragraph">What makes this moment particularly interesting is that Karpathy <strong>hasn’t been blindly optimistic about AI agents</strong>. In the past, he’s openly questioned their maturity, arguing that today’s agents are unreliable and far from fully autonomous.</p>



<p class="wp-block-paragraph">This contrast is important. He’s saying these tools are too useful to ignore, but he’s also clear they’re still messy, fragile, and imperfect. This isn’t hype, it’s real challenges. And challenges are what spark meaningful discussion.</p>



<h2 class="wp-block-heading"><span id="am-i-really-a-developer-if-i%e2%80%99m-not-writing-code">Am I really a developer if I’m not writing code?</span></h2>



<p class="wp-block-paragraph">This conversation goes beyond the usual AI discourse cycle. If top engineers are moving from writing code to guiding systems, if success is measured by results rather than lines of code, and if pride, not skill, is the main barrier, then something bigger is happening.</p>



<p class="wp-block-paragraph">We’re not just changing tools, <strong>we’re renegotiating what it means to be a developer</strong>. </p>



<p class="wp-block-paragraph">The real question isn’t if this trend will keep going. It’s this: If programming becomes mostly about language, judgment, and style, what happens to being defined by code?</p>



<p class="wp-block-paragraph">Karpathy’s post doesn’t give answers but shows the tension. Is moving away from manual coding progress or loss? Empowerment or subtle deskilling? </p>



<p class="wp-block-paragraph">And if top engineers admit it &#8220;hurts the ego,&#8221; what does that mean for the future of the profession?</p>



<p class="wp-block-paragraph">By the end of 2025, LLM coding agents reached a level of coherence that triggered a shift in software engineering. <strong>Intelligence is now outpacing tools, workflows, and organizational structures</strong>. The industry is just starting to catch up, and 2026 is shaping up to be a fast-moving year as development learns to harness this new power.</p>


<figure class="wp-block-post-featured-image"><img loading="lazy" decoding="async" width="1200" height="630" src="https://shiftmag.dev/wp-content/uploads/2026/01/claude_final.png?x94846" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/01/claude_final.png 1200w, https://shiftmag.dev/wp-content/uploads/2026/01/claude_final-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/01/claude_final-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/01/claude_final-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure><p>The post <a href="https://shiftmag.dev/llm-agents-claude-7751/">Andrej Karpathy Admits Software Development Has Changed for Good</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What It Takes to Fully Benefit from a Deployment Pipeline</title>
		<link>https://shiftmag.dev/what-it-takes-to-fully-benefit-from-a-deployment-pipeline-7463/</link>
		
		<dc:creator><![CDATA[Denis Kranjcec]]></dc:creator>
		<pubDate>Wed, 24 Dec 2025 13:34:53 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Continuous Delivery]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Deployment Pipeline]]></category>
		<category><![CDATA[development]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=7463</guid>

					<description><![CDATA[<p>To get the full power of a Deployment Pipeline, you need more than tools - you need practices that let it shine and reveal both your strengths and your weaknesses.</p>
<p>The post <a href="https://shiftmag.dev/what-it-takes-to-fully-benefit-from-a-deployment-pipeline-7463/">What It Takes to Fully Benefit from a Deployment Pipeline</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/12/development-pipeline-1.png?x94846" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2025/12/development-pipeline-1.png 1200w, https://shiftmag.dev/wp-content/uploads/2025/12/development-pipeline-1-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2025/12/development-pipeline-1-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2025/12/development-pipeline-1-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p class="wp-block-paragraph">The Deployment Pipeline is a critical tool for ensuring software quality &#8211; and <a href="https://shiftmag.dev/the-dilemma-of-quality-versus-speed-is-false-3310/" target="_blank" rel="noreferrer noopener">quality is a prerequisite for speed</a>.</p>



<p class="wp-block-paragraph">So, what is a <strong>Deployment Pipeline</strong>? How has it helped us improve both quality and speed? And what are, in my experience, the common problems in using and implementing deployment pipelines?</p>



<blockquote class="wp-block-quote is-style-plain is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">A Deployment Pipeline is a machine that helps us move from an idea to valuable software in the hands of users by organizing software development work. It enables us to go from commit to releasable outcome as quickly and efficiently as possible, in a repeatable and reliable way.</p>



<p class="wp-block-paragraph">— Dave Farley, <em><a href="https://leanpub.com/cd-pipelines/" target="_blank" rel="noreferrer noopener">Continuous Delivery Pipelines: How to Build Better Software Faster</a></em></p>
</blockquote>



<p class="wp-block-paragraph">Before exploring how Deployment Pipelines have helped us, it is helpful to briefly introduce <strong>Continuous Integration</strong> and <strong>Continuous Delivery</strong>.</p>



<h2 class="wp-block-heading"><span id="continuous-integration">Continuous Integration</span></h2>



<p class="wp-block-paragraph">Continuous Integration is a software development practice that helps us <strong>create and maintain a high-quality codebase</strong> that is easy to change and to implement new features.</p>



<p class="wp-block-paragraph">As Martin Fowler points out, <a href="https://martinfowler.com/articles/continuousIntegration.html" target="_blank" rel="noreferrer noopener">the practices of Continuous Integration</a> are:</p>



<ul class="wp-block-list">
<li>Put everything in a version controlled mainline​</li>



<li>Automate the Build​</li>



<li>Make the Build Self-Testing​</li>



<li>Everyone Pushes Commits To the Mainline Every Day​</li>



<li>Every Push to Mainline Should Trigger a Build​</li>



<li>Fix Broken Builds Immediately​</li>



<li>Keep the Build Fast​</li>



<li>Hide Work-in-Progress​</li>



<li>Test in a Clone of the Production Environment​</li>



<li>Everyone can see what&#8217;s happening​</li>



<li>Automate Deployment​</li>
</ul>



<ol start="1" class="wp-block-list"></ol>



<p class="wp-block-paragraph">Kent Beck developed the practice of Continuous Integration as part of Extreme Programming in the 1990s. The book <em><a href="https://www.informit.com/store/continuous-integration-improving-software-quality-and-9780321336385" target="_blank" rel="noreferrer noopener">Continuous Integration</a></em> by Paul M. Duvall, Steve Matyas, and Andrew Glover was published in 2007. While this is nothing new, <strong>many software engineers and teams still do not practice Continuous Integration</strong> and therefore miss out on the benefits it provides.</p>



<h2 class="wp-block-heading"><span id="continuous-delivery">Continuous Delivery</span></h2>



<p class="wp-block-paragraph">Continuous Delivery can further help create and maintain high-quality software. The excellent book <em><a href="https://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912" target="_blank" rel="noreferrer noopener">Continuous Delivery</a> </em>by Jez Humble and David Farley was published in 2010. and it describes the idea behind continuous delivery in detail, and it introduces &#8220;<em>&#8230;the central paradigm of the book &#8211; a pattern we call the <strong>deployment pipeline</strong></em>&#8220;.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Continuous Delivery is the ability to get changes of all types &#8211; including new features, configuration changes, bug fixes and experiments &#8211; into production, or into the hands of users, safely and quickly in a sustainable way.</p>



<p class="wp-block-paragraph">&#8211; <a href="https://continuousdelivery.com/">https://continuousdelivery.com/</a></p>
</blockquote>



<p class="wp-block-paragraph"><strong>Continuous Integration is a prerequisite for Continuous Delivery</strong>.</p>



<p class="wp-block-paragraph">The minimum activities required for Continuous Delivery, as defined by <a href="https://minimumcd.org/" target="_blank" rel="noreferrer noopener">minimumcd.org</a>, are:</p>



<ul class="wp-block-list">
<li>Use Continuous Integration<em>​</em></li>



<li>The application pipeline is the only way to deploy to any environment​</li>



<li>The pipeline decides the releasability of changes, its verdict is definitive​</li>



<li>Artifacts created by the pipeline always meet the organization’s definition of deployable​</li>



<li>Immutable artifact (no human changes after commit)​</li>



<li>All feature work stops when the pipeline is red​</li>



<li>Production-like test environment​</li>



<li>Rollback on-demand​</li>



<li>Application configuration deploys with artifact​</li>
</ul>



<h2 class="wp-block-heading"><span id="deployment-pipeline">Deployment Pipeline</span></h2>



<p class="wp-block-paragraph">The best description of deployment pipelines, and practical advice on how to implement them, I found in another excellent book <a href="https://leanpub.com/cd-pipelines/" target="_blank" rel="noreferrer noopener"><em>Continuous Delivery Pipelines, How to Build Better Software Faster</em> </a>by Dave Farley. According to him, automation is the key… and is the engine that drives an effective Deployment Pipeline:</p>



<ul class="wp-block-list">
<li>Test Automation​​</li>



<li>Build and Deployment Automation​​</li>



<li>Automate Data Migration​​</li>



<li>Automate Monitoring and Reporting​​</li>



<li>Infrastructure Automation​</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="624" height="412" src="https://shiftmag.dev/wp-content/uploads/2025/12/denis.jpg?x94846" alt="" class="wp-image-7471" srcset="https://shiftmag.dev/wp-content/uploads/2025/12/denis.jpg 624w, https://shiftmag.dev/wp-content/uploads/2025/12/denis-300x198.jpg 300w" sizes="auto, (max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">The simplest deployment pipeline should, after each commit, compile the code (if needed), run all unit tests, create a deployable artifact, execute acceptance tests, and enable deployment to production.</p>



<p class="wp-block-paragraph">However, a <strong>deployment pipeline can do much more</strong>, such as:</p>



<ul class="wp-block-list">
<li>Static code analysis</li>



<li>Enable manual testing</li>



<li>Performance tests (e.g., latency, throughput, load)</li>



<li>Data and data migration tests</li>



<li>Security tests</li>



<li>Reliability tests etc.</li>
</ul>



<h2 class="wp-block-heading"><span id="ci-practices"><strong>CI practices</strong></span></h2>



<p class="wp-block-paragraph">I see many teams/companies have a Jenkins job that compiles source code, runs (a few) unit tests, creates an artifact &#8211; often a Docker image &#8211; and have a separate deploy job/button to deploy to the dev and production environments. And they will say they are &#8220;using&#8221; CI/CD. But <strong>most of them are skipping some of the CI practices</strong> and don&#8217;t have code in an always-deployable state, even as a goal, yet still think they are &#8220;using&#8221; CI/CD. </p>



<p class="wp-block-paragraph"><strong>CI practices</strong> are not a menu where you can choose what you like and still have all the benefits CI can help you with.</p>



<h2 class="wp-block-heading"><span id="make-the-build-self-testing"><em>Make the build self-testing</em></span></h2>



<p class="wp-block-paragraph"><strong>Test-Driven Development (TDD)</strong>, or test-first development, is still an exception, and developers usually write tests after the code. Those tests are mostly unit tests (developer-oriented) and much fewer acceptance tests (user-oriented) that cover only parts of the functionalities. The test-after approach usually covers less functionality because the code is harder to test, and tests are complex to write and maintain. Such tests don&#8217;t provide fast and good-enough feedback to automate &#8220;releasability of changes&#8221; or &#8220;enable refactoring for sustained productivity.&#8221; Developers don&#8217;t trust such tests, so manual verification and team coordination are needed to decide when code can be deployed, which is never fully reliable, and more bugs reach production.</p>



<h2 class="wp-block-heading"><span id="everyone-pushes-commits-to-the-mainline-every-day"><em>Everyone pushes commits to the mainline every day</em></span></h2>



<p class="wp-block-paragraph">Same as TDD, <strong>trunk-based development</strong> is still an exception, and almost everyone is using branches and pull requests with many PR reviews at the end of the sprint, so they are not practicing continuous integration by definition. They are missing the benefits CI brings, like &#8220;less time wasted in integration&#8221; and &#8220;enables refactoring for sustained productivity.&#8221;</p>



<h2 class="wp-block-heading"><span id="test-in-a-clone-of-the-production-environment%e2%80%8b"><em>Test in a clone of the production environment​</em></span></h2>



<p class="wp-block-paragraph">Some companies have a <strong>&#8220;static&#8221; copy of production</strong>, with test data already prepared in a database, where they deploy their applications and run tests. As a result, developers can’t run tests on their laptops, test preparation is complex and slow, and they regularly break other tests. Feature flags can’t be tested, and it takes a long time from commit to getting test feedback. This demotivates developers from writing tests, and over time, this negative spiral creates &#8216;legacy&#8217; code that is hard to change.</p>



<p class="wp-block-paragraph">Rarely does any company I know create, on demand, a <strong>&#8220;clone of production&#8221;</strong> &#8211; with the configuration needed for a suite of tests set up exactly as in production, where the tested application is deployed the same way as in production and then tested to determine the releasability of changes.</p>



<p class="wp-block-paragraph">Usually, a Jenkins job starts the needed <strong>testcontainers</strong> during the integration test phase and tests parts of the application &#8211; or a &#8220;test&#8221; version of the application &#8211; that differ from the production application. These tests don’t cover the application artifact that will actually be deployed, nor do they test deployment, configuration, or dependencies (e.g., microservices) that aren’t properly mocked. Instead, some fake repository or adapter implementations are used that don’t exist in production.</p>



<h2 class="wp-block-heading"><span id="the-application-pipeline-is-the-only-way-to-deploy-to-any-environment-and-the-pipeline-decides-the-releasability-of-changes-its-verdict-is-definitive%e2%80%8b"><em>The application pipeline is the only way to deploy to any environment</em> AND <em>The pipeline decides the releasability of changes; its verdict is definitive​</em></span></h2>



<p class="wp-block-paragraph">From what I’ve seen or heard, everyone has a workaround that allows deployment of artifacts that didn’t pass the Deployment Pipeline. Sometimes they create artifacts on their laptop and push them to the repository so they can be deployed. Other times, the pipeline itself allows deployment of code that hasn’t passed all required verifications. </p>



<p class="wp-block-paragraph">This can happen when a &#8220;non-important&#8221; or &#8220;flaky&#8221; test fails, or when a dependency has a critical vulnerability, etc. Usually, the team says these problems will be fixed later, when there’s time, but the new feature is considered urgent and must be deployed ASAP. In practice, <strong>the team never has time to fix these issues</strong>, workarounds become the norm, and the deployment pipeline turns into a theater.</p>



<h2 class="wp-block-heading"><span id="keep-the-build-fast"><em>Keep the build fast</em></span></h2>



<p class="wp-block-paragraph">With microservices being so popular, build time shouldn’t be a major problem. Yet it’s common to see builds lasting half an hour or more. </p>



<p class="wp-block-paragraph">In my experience (mostly with Java), if you create tests &#8211; unit tests, acceptance tests, etc. &#8211; that can run in parallel, it’s easy to have a deployment pipeline finish in under 5 minutes, excluding deployment. Just <strong>run everything in parallel</strong>: unit tests, acceptance tests, services with different feature flags enabled or disabled, and static code analysis.</p>



<h2 class="wp-block-heading"><span id="a-deployment-pipeline-must-be-built-not-bought">A Deployment Pipeline must be built, not bought</span></h2>



<p class="wp-block-paragraph">A deployment pipeline automates your software development process and reveals both its strengths and weaknesses. When your practices are strong, the pipeline amplifies them, providing significant benefits. Conversely, if your practices are weak, the pipeline makes this very apparent &#8211; it can be difficult or even impossible to implement effectively. </p>



<p class="wp-block-paragraph">This is why Continuous Integration and Continuous Delivery are so valuable: they <strong>encourage good practices and make problems visible early</strong>. A Deployment Pipeline is not a product you can buy or outsource; you must build it yourself, leveraging various tools.</p>



<p class="wp-block-paragraph">In my experience, the best way to achieve both speed and quality in software development is to <strong>combine pair or mob programming with test-driven, trunk-based development</strong>, supported by a deployment pipeline that automates feedback on key aspects of the process. This approach provides rapid feedback, within minutes, on ideas and experiments through frequent commits and accompanying tests. It allows the codebase to evolve continuously through refactoring and enables the frequent, low-risk release of new features with minimal stress.</p>
<p>The post <a href="https://shiftmag.dev/what-it-takes-to-fully-benefit-from-a-deployment-pipeline-7463/">What It Takes to Fully Benefit from a Deployment Pipeline</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>We Should All Do What ElevenLabs Did With Its VoiceAI Hackathon</title>
		<link>https://shiftmag.dev/we-should-all-do-what-elevenlabs-did-with-its-voiceai-hackathon-7326/</link>
		
		<dc:creator><![CDATA[Ivan Pelivanovic]]></dc:creator>
		<pubDate>Tue, 16 Dec 2025 10:18:32 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Eleven Labs hackathon]]></category>
		<category><![CDATA[voice software development]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=7326</guid>

					<description><![CDATA[<p>17 countries, 20 hours, and a lot of voice-driven experiments: Warsaw became a playground for builders testing the limits of AI, gaming, and storytelling at the Project Europe x ElevenLabs hackathon</p>
<p>The post <a href="https://shiftmag.dev/we-should-all-do-what-elevenlabs-did-with-its-voiceai-hackathon-7326/">We Should All Do What ElevenLabs Did With Its VoiceAI Hackathon</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">At the beginning of December, Warsaw transformed into a buzzing hub of innovation, as <strong>developers from 17 countries</strong> came together for an intense 20-hour sprint at the <a href="https://project-elevenlabs.lovable.app/" target="_blank" rel="noreferrer noopener">Project Europe x ElevenLabs hackathon</a>, crafting bold, voice-driven experimental projects.</p>



<p class="wp-block-paragraph">The goal? Experiment with ElevenLabs technology and build something &#8211; business case optional.</p>



<p class="wp-block-paragraph">The hackathon ran across two tracks: </p>



<ul class="wp-block-list">
<li><strong>The developer track</strong> that focused on agentic workflows, real-time APIs, and enterprise-grade LLM integrations and essentially anything that pushes the technical boundaries of voice-enabled systems.</li>



<li><strong>The creative track</strong> encouraged teams to explore the artistic, unconventional side of ElevenLabs’ voice and sound tools &#8211; pushing them in directions unlikely to appear on a typical product roadmap.</li>
</ul>



<p class="wp-block-paragraph">While one track raced after technical brilliance, the other ran wild with imagination and creativity. Together, they proved exactly what the event set out to show: <strong>Europe’s engineers can innovate across both worlds </strong>when given the freedom to experiment.</p>



<h2 class="wp-block-heading"><span id="talent-exists-locally-but-building-globally-is-key">Talent exists locally, but building globally is key</span></h2>



<p class="wp-block-paragraph">ElevenLabs’ return to Warsaw with this hackathon was intentional. As CEO <strong>Mati Staniszewski</strong> noted, this city isn’t just another dot on their global map:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">This is where me and my co-founder Piotr Dabkowski first spent weekends building small experimental projects that would eventually evolve into what Forbes called the &#8220;multi-billion-dollar voice of AI.&#8221;</p>
</blockquote>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="614" src="https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-4-1024x614.jpg?x94846" alt="" class="wp-image-7333" srcset="https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-4-1024x614.jpg 1024w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-4-300x180.jpg 300w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-4-768x461.jpg 768w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-4.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Foto: Ivan Pelivanović</figcaption></figure>



<p class="wp-block-paragraph">So, bringing the hackathon to Warsaw wasn’t just about shipping prototypes, it was about <strong>returning to the environment that shaped the company’s earliest ideas</strong> and inviting a new generation of builders to do the same. </p>



<p class="wp-block-paragraph">Mati underscored something the broader tech community often underestimates: <strong>the talent is here</strong> &#8211; deep maths and CS backgrounds, strong ownership, and a mindset that gets excited by constraints.</p>



<p class="wp-block-paragraph">Many of ElevenLabs’ most impactful contributors come from this region, and Mati’s message to founders and engineers was clear &#8211; <strong>don’t think locally</strong>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Aim global from day one. Iterate in public. Move fast. And believe that teams here can genuinely compete with the sharpest builders anywhere in the world.</p>
</blockquote>



<h2 class="wp-block-heading"><span id="what-teams-created-in-20-hours">What teams created in 20 hours</span></h2>



<p class="wp-block-paragraph">Many teams gravitated toward conversational agents or creative audio experiments. <em>DevTierUS</em> from the US went with <strong>molecular design and drug discovery</strong>. Their project tackled a critical problem: how medicinal chemists search for alternative molecular structures without violating patents &#8211; an area where AI is already reshaping research workflows.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">First, we focused on identifying bioisosteres &#8211; chemically modified structures that mimic the biological behavior of patented or expensive molecules. For pharmaceutical researchers, these alternatives are essential for maintaining efficacy while navigating complex intellectual property landscapes.</p>
</blockquote>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="614" src="https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-5-1024x614.jpg?x94846" alt="" class="wp-image-7334" srcset="https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-5-1024x614.jpg 1024w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-5-300x180.jpg 300w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-5-768x461.jpg 768w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-5.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Foto: Ivan Pelivanović</figcaption></figure>



<p class="wp-block-paragraph">Despite advances in biotech, many medicinal chemists still<strong> rely on outdated tools </strong>&#8211; manual notes and siloed software. The team saw both a gap and an opportunity. As team member Pranav Iyer put it:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Vertical AI gets a lot of attention, but many fields still run on pen and paper. We saw a chance to bring AI into those workflows.</p>
</blockquote>



<p class="wp-block-paragraph">To build their solution, <strong>they</strong> <strong>kept the stack simple</strong>: TypeScript on the front end and Python on the back end. The innovation was in the pipeline. Drawing on teammates’ biotech experience (including one in large-scale drug discovery) they implemented a sequential AI-driven process: identify the molecule, break it into building blocks, and use AI to search massive chemical spaces for viable alternative fragments. </p>



<p class="wp-block-paragraph">This approach surfaced dozens or even hundreds of substitutes &#8211; <strong>what once took days or weeks can now be done in minutes</strong>. You can check their <a href="https://drive.google.com/file/d/1LskK-2QAi2bUhpub4-mM2RPHb0a95FT6/view">video demo here</a> and their <a href="https://github.com/asboppana/chemhop-voice">GitHub on the link.</a></p>



<p class="wp-block-paragraph">Another team, UK students now calling themselves <em>HackAvengers</em>, took the hackathon in the opposite direction. Their project combined <strong>education, gaming, and immersive voice interaction</strong>: a first-person language-learning game powered by ElevenLabs’ multilingual real-time voices.</p>



<p class="wp-block-paragraph">Since the team shared an interest in games and languages, the concept came naturally, as noted by Natalie Chan:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Almost every hackathon we’ve ever done, we’ve had this underlying theme of games. What’s the best way to combine education and games? Language learning<em>.</em></p>
</blockquote>



<p class="wp-block-paragraph">These personal experiences shaped the project’s ambition: to make language learning feel like entering a game world, not just completing exercises on a screen.</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/12/Editorial-IP-6-1024x614.jpg?x94846" alt="" class="wp-image-7335" srcset="https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-6-1024x614.jpg 1024w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-6-300x180.jpg 300w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-6-768x461.jpg 768w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-6.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Foto: Cosmin Calugaru</figcaption></figure>



<p class="wp-block-paragraph">Technically, ElevenLabs handled voice interaction across 17+ languages, while Anthropic generated the dynamic 3D environments players enter. This was layered with Descartes, providing real-time AI-powered video streaming:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">We wanted immersion. People are most engaged with what they can relate to… so we chose a first-person video game.</p>
</blockquote>



<p class="wp-block-paragraph">Their full demo presentation is available <a href="https://www.loom.com/share/40c4abc0c0b2490990ae13c7a388ecf9" target="_blank" rel="noreferrer noopener">here</a>, and you can try the game yourself at <a href="https://mega-pr-mocha.vercel.app/" target="_blank" rel="noreferrer noopener">this link</a>.</p>



<h2 class="wp-block-heading"><span id="the-%e2%82%ac10-000-winners">The €10.000 Winners</span></h2>



<p class="wp-block-paragraph">The hackathon’s €10.000 grand prize went to <em>qForge</em>, a team that <strong>turned voice into a fully interactive storytelling engine</strong>. The winners started the event with nothing, according to a group member.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Before the hackathon we basically didn’t have any idea. We spent the first one or two hours trying to figure out something.</p>
</blockquote>



<p class="wp-block-paragraph">What united them was a shared <strong>background in gaming</strong>. Their brainstorming explored D&amp;D-style narratives and tower defense mechanics until one teammate suggested a direction that immediately clicked &#8211; storytelling.</p>



<p class="wp-block-paragraph">The result: a short, voice-driven narrative and, more importantly, <strong>the foundation of a game builder anyone can use</strong>.</p>



<p class="wp-block-paragraph">While some team members refined the story, another focused on the underlying engine, giving the project surprising depth for a one-day build. A major challenge &#8211; synchronizing sound effects with voice &#8211; was solved by defining clear interfaces, schemas, and types through Cloud Code, which sped up development. You can the demo of their game at <a href="https://infinite-bard.fly.dev/" target="_blank" rel="noreferrer noopener">this link.</a></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/12/Editorial-IP-7-1024x614.jpg?x94846" alt="" class="wp-image-7337" srcset="https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-7-1024x614.jpg 1024w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-7-300x180.jpg 300w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-7-768x461.jpg 768w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-7.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Foto: Ivan Pelivanović</figcaption></figure>



<h2 class="wp-block-heading"><span id="a-hundred-ideas-will-always-beat-ten">A hundred ideas will always beat ten</span></h2>



<p class="wp-block-paragraph">At the end, Mati reminded everyone that innovation rarely comes from waiting for the perfect idea</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Remember what Coinbase’s Brian Armstrong said: action produces information. The more teams build, test, discard, and rebuild, the faster they move toward something meaningful.</p>
</blockquote>



<p class="wp-block-paragraph">He highlighted that <strong>even the smartest engineers make the right call only part of the time</strong>, but those who create relentlessly &#8211; trying a hundred ideas instead of ten &#8211; dramatically increase their chances of stumbling onto something exceptional. </p>



<p class="wp-block-paragraph">The insight resonated because the room was full of people who had just lived that philosophy, shipping ambitious prototypes on almost no sleep. It also shaped the judging.</p>



<p class="wp-block-paragraph">While many teams delivered polished or highly technical projects, the €10,000 winners stood out for embodying Mati’s principle: <strong>originality paired with strong execution</strong>. Their concept didn’t play it safe, it showed the future of voice-driven experiences.</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/12/Editorial-IP-8-1024x614.jpg?x94846" alt="" class="wp-image-7340" srcset="https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-8-1024x614.jpg 1024w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-8-300x180.jpg 300w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-8-768x461.jpg 768w, https://shiftmag.dev/wp-content/uploads/2025/12/Editorial-IP-8.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Foto: Ivan Pelivanović</figcaption></figure>



<p class="wp-block-paragraph">In that sense, the hackathon became a snapshot of what Europe’s builders can achieve when they’re given space to experiment. It showed that <strong>voice technology is no longer a niche tool</strong>, but a creative surface for teams working across science, gaming, storytelling, and beyond. Builder-first hackathons remove rigid roadmaps and replace them with speed, curiosity, and real experimentation. In a short time, teams ship, test, and learn far more than they would in months of planning. </p>



<p class="wp-block-paragraph">For companies, this creates an unusually honest feedback loop. Builders push the technology in unexpected directions, surface edge cases, and uncover use cases that rarely appear in product meetings. At the same time, these events strengthen local ecosystems, attract top talent, and send a clear signal that serious innovation can happen here. That combination is precisely why more companies should be organizing events like this across Europe.</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/12/ShiftMag-cover-1.jpg?x94846" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2025/12/ShiftMag-cover-1.jpg 1200w, https://shiftmag.dev/wp-content/uploads/2025/12/ShiftMag-cover-1-300x158.jpg 300w, https://shiftmag.dev/wp-content/uploads/2025/12/ShiftMag-cover-1-1024x538.jpg 1024w, https://shiftmag.dev/wp-content/uploads/2025/12/ShiftMag-cover-1-768x403.jpg 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure><p>The post <a href="https://shiftmag.dev/we-should-all-do-what-elevenlabs-did-with-its-voiceai-hackathon-7326/">We Should All Do What ElevenLabs Did With Its VoiceAI Hackathon</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Postmortem: The Boiler Incident</title>
		<link>https://shiftmag.dev/postmortem-the-boiler-incident-6986/</link>
		
		<dc:creator><![CDATA[Hrvoje Rancic]]></dc:creator>
		<pubDate>Fri, 21 Nov 2025 13:53:24 +0000</pubDate>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<category><![CDATA[development]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=6986</guid>

					<description><![CDATA[<p>The following is an attempt to clarify the circumstances of a production incident that happened more than 10 years ago; it is also a lesson to all of us to decouple our production servers from boilers in distant Balkan countries.</p>
<p>The post <a href="https://shiftmag.dev/postmortem-the-boiler-incident-6986/">Postmortem: The Boiler Incident</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/11/shifmag_final.png?x94846" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2025/11/shifmag_final.png 1200w, https://shiftmag.dev/wp-content/uploads/2025/11/shifmag_final-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2025/11/shifmag_final-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2025/11/shifmag_final-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p class="wp-block-paragraph">A couple of weeks ago, while we were having a casual conversation over a cup of coffee, one of our veteran engineers said something that piqued my interest.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">&#8220;This reminds me of the time when boiler broke down in the Zagreb office, and <strong>production went down</strong>.&#8221; &#8211; he made a casual remark.</p>



<p class="wp-block-paragraph">&#8220;I beg your pardon?&#8221; &#8211; I expressed my interest, and my left eyebrow rose slightly to signal disbelief.&nbsp;</p>



<p class="wp-block-paragraph">&#8220;We experienced <strong>major degradation of service across all products served over data center in Frankfurt</strong>.&#8221; – he continued in a neutral tone of voice, as if he was reading the airport announcement for an upcoming flight.&nbsp;</p>



<p class="wp-block-paragraph">&#8220;You are not being serious!&#8221; – I exclaimed in a shocked tone of voice, as if I realized I was late for a flight.&nbsp;</p>



<p class="wp-block-paragraph">“Of course I am serious!&#8221; &#8211; he said.</p>



<p class="wp-block-paragraph">Here’s the full story.</p>



<h2 class="wp-block-heading"><span id="boiler-in-zagreb-crashed-the-servers-in-frankfurt">Boiler in Zagreb crashed the servers in Frankfurt</span></h2>



<p class="wp-block-paragraph">&#8220;You remember the old office building in Zagreb, the skyscraper with the giant advertisement for toilet paper?&#8221; &#8211; he asked me.&nbsp;</p>



<p class="wp-block-paragraph">&#8220;Of course I do, I worked there for a couple of years. Very appropriate ad for the state the building was in.&#8221; I answered&nbsp;</p>



<p class="wp-block-paragraph">&#8220;Well, there was an <strong>old rusty water heater in the basement, and it broke down</strong>&#8221; &#8211; he said.&nbsp;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">The next thing we know is that we are getting a ton of angry calls from our customers. I don’t remember the details, but it was connected somehow, a boiler in Zagreb crashed the servers in Frankfurt.</p>
</blockquote>



<p class="wp-block-paragraph">&#8220;Sounds plausible.&#8221; &#8211; I stated calmly, convinced he was pulling my leg. </p>



<p class="wp-block-paragraph">&#8220;Who can tell me more about it?&#8221; &#8211; and <strong>provoked him to continue</strong>, which he did without hesitation.&nbsp;&nbsp;</p>



<h2 class="wp-block-heading"><span id="the-authorization-server-went-down-first">The authorization server went down first</span></h2>



<p class="wp-block-paragraph">&#8220;I think the authorization server was the first to crash; it was handled by One API team. The team was disbanded years ago, but most of the people who worked in the team still work here, so you can try talking to them.&#8221; &#8211; he gave me names, and I jotted them down in my notebook.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">It made sense that an <strong>issue with the authorization server would affect all the products</strong>. It is an obstacle all aspiring requests must overcome, whatever their place of origin may be, if they wish to mature and become successful responses one day. </p>



<p class="wp-block-paragraph">But how does the boiler fit in the picture? Did we start as a water heater provider, and then pivot to communication platform space? </p>



<p class="wp-block-paragraph">The code of the authorization server I checked out provided no clues, so I sent a <strong>Slack message to the former One API team leader</strong>.&nbsp;</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="847" height="444" src="https://shiftmag.dev/wp-content/uploads/2025/11/image.png?x94846" alt="" class="wp-image-6987" srcset="https://shiftmag.dev/wp-content/uploads/2025/11/image.png 847w, https://shiftmag.dev/wp-content/uploads/2025/11/image-300x157.png 300w, https://shiftmag.dev/wp-content/uploads/2025/11/image-768x403.png 768w" sizes="auto, (max-width: 847px) 100vw, 847px" /></figure>



<p class="wp-block-paragraph">&#8220;I remember nothing!&#8221; she replied and moved on with her duties, ignoring further prompts, so I decided to continue my investigation elsewhere.</p>



<h2 class="wp-block-heading"><span id="boredom-led-me-into-the-dark-archives-of-jira">Boredom led me into the dark archives of Jira</span></h2>



<p class="wp-block-paragraph">As coding agents and other AI tools are doing my work now and I have nothing better to do, <strong>I started digging through git history and Jira archives</strong>. </p>



<p class="wp-block-paragraph">After a couple of hours I found a clue, <strong>there was a ticket with description</strong> <em>Reimplement the logging and email adapter, so that we avoid the issues such as the one we had when there was no electricity in Zagreb office.</em></p>



<p class="wp-block-paragraph">There was a link to a pull request attached to the ticket; the username of the author belonged to a prominent figure, so I sent a Slack message to our Engineering Director: &#8220;We need to talk about a <strong>pull request you made to the auth server ten years ago</strong>.&#8221; Shortly after, he invited me to his office.&nbsp;</p>



<p class="wp-block-paragraph">&#8220;It was a warm Spring day, the Sun was shining, the birds were chirping, the children were playing and production was down. We were drinking in the pub.&#8221; &#8211; he started reminiscing, &#8220;The production had a habit of crashing each time we went for a beer.&#8221;&nbsp; He confirmed that there was a serious outage and that it was connected to an email server; he <strong>couldn’t quite remember how the boiler fit into the story</strong>.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">&#8220;Why was authorization server sending emails?&#8221; &#8211; I asked.&nbsp;&nbsp;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">At the time we implemented a brute force attack detection mechanism that could ban or lock attackers. Sometimes a legitimate customer would get banned, so they would contact their dedicated account managers to help them. When a user, or a combination of a username and an IP address to be more precise, was blocked the authorization server would automatically send the data that might come in handy to the account manager.</p>
</blockquote>



<p class="wp-block-paragraph">&#8220;I see, so you mean something like <em>detailed</em> <em>description of our current algorithm, automation and telemetry that helps resolve the issue but edited out because of security reasons and not breaching NDA via public magazine article</em>?&#8221; &#8211; I asked only to show off my understanding of our security infrastructure in hopes he would be impressed and commend me to someone who is responsible for raising my salary.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">&#8220;It was nowhere near that complex, we were not operating on this scale, and <strong>such issues would not happen very often</strong>, unless someone got too enthusiastic with pen testing&#8221; &#8211; he responded bluntly and with a look on his face that I interpreted as him having no intention to commend my deep understanding of our security infrastructure to someone responsible for the pay raise. </p>



<p class="wp-block-paragraph">Then he shared a couple of interesting production outage stories from the early days and gave me advice to <strong>talk to our first system administrator in the company</strong>, since that gentleman was maintaining the email server at the time.&nbsp;&nbsp;</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="846" height="594" src="https://shiftmag.dev/wp-content/uploads/2025/11/image-1.png?x94846" alt="" class="wp-image-6988" srcset="https://shiftmag.dev/wp-content/uploads/2025/11/image-1.png 846w, https://shiftmag.dev/wp-content/uploads/2025/11/image-1-300x211.png 300w, https://shiftmag.dev/wp-content/uploads/2025/11/image-1-768x539.png 768w" sizes="auto, (max-width: 846px) 100vw, 846px" /></figure>



<h2 class="wp-block-heading"><span id="let%e2%80%99s-pay-a-visit-to-our-sre-team">Let’s pay a visit to our SRE team</span></h2>



<p class="wp-block-paragraph">As I talked to the system administrator, he shared stories that can put this one to shame: duck taped disks, convincing people to put servers somewhere where rain won’t affect them, crashing the premises of a 3<sup>rd</sup> party vendor (euphemism for a guy who has a couple of servers at home and rents them out to small companies) who is putting server offline to make a firmware update during peak traffic time. </p>



<p class="wp-block-paragraph">He <strong>could not remember the boiler issue</strong> but recalled there was an unrelated air conditioner incident one summer in the same office building when an air conditioner cooling the centralized control system for other air conditioners overheated because it was installed on the rooftop.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">I decided to pay a visit to our <strong>SRE department</strong> as their lead engineer was a member of the One API team once upon a time. </p>



<p class="wp-block-paragraph">The SRE department is taking care that our global platform, spanning several continents and dozens of data centers, works reliably. They are working on <strong>early detection and quick mitigation of service degradations</strong> that can happen as we make thousands of changes to production every day. </p>



<p class="wp-block-paragraph">Surely, their lead engineer has nothing better to do than to talk to me about a production issue from a decade ago.&nbsp;&nbsp;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">There was some electrical maintenance in the office building, and right before it someone reconfigured auth server to send e-mails to a standby instance in Zagreb office, twenty-one thousand four hundred and eighty-seven emails were stuck in the queue. Can’t talk now, sharks are eating network cables again.</p>
</blockquote>



<p class="wp-block-paragraph">…he said, hurrying off with his coffee.&nbsp;</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="808" height="699" src="https://shiftmag.dev/wp-content/uploads/2025/11/image-2.png?x94846" alt="" class="wp-image-6989" srcset="https://shiftmag.dev/wp-content/uploads/2025/11/image-2.png 808w, https://shiftmag.dev/wp-content/uploads/2025/11/image-2-300x260.png 300w, https://shiftmag.dev/wp-content/uploads/2025/11/image-2-768x664.png 768w" sizes="auto, (max-width: 808px) 100vw, 808px" /></figure>



<h2 class="wp-block-heading"><span id="boiler-blew-mail-server-died-everything-froze">Boiler blew, mail server died, everything froze</span></h2>



<p class="wp-block-paragraph">I have finally connected all the dots and <strong>found someone to confirm the theory</strong>.&nbsp;</p>



<p class="wp-block-paragraph">Our principal engineer &#8211; once a junior contributor to the auth server &#8211; explained what happened when he returned from parental leave:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">The same thread that banned the user also sent the email synchronously via RPC, with no timeout. When the boiler broke, it tripped the circuit breaker, cutting power to the floor. The mail server was down, and so were we &#8211; waiting in the pub for the electricity company. When customers complained, we were one thread dump away from realizing all request-handling threads were stuck waiting on the mail server.</p>
</blockquote>



<p class="wp-block-paragraph">&#8220;The circuit breaker broke, but there was no <a href="https://martinfowler.com/bliki/CircuitBreaker.html" target="_blank" rel="noreferrer noopener">circuit breaker</a> around the call to mail server!&#8221; &#8211; I joked nerdishly.</p>



<p class="wp-block-paragraph">&#8220;Exactly! After the electricity company fixed the issue, in order to increase reliability someone duck taped the circuit breaker. If we had those things back then, could you imagine what would status page and post incident review look like?&#8221; &#8211; he asked laughingly as we continued to entertain that thought.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Status page &#8211; Frankfurt: Service degradation across all products</strong>&nbsp;</p>



<p class="wp-block-paragraph"><em>We are experiencing service degradation across all products due to boiler malfunctions. The plumber is on his way to the office building, and we expect to resolve the problem shortly. We apologize for any inconvenience this may cause.&nbsp;</em></p>



<h2 class="wp-block-heading"><span id="postmortem-boiler-malfunction-incident-420">Postmortem: Boiler malfunction (incident #420)</span></h2>



<p class="wp-block-paragraph"><strong>Date: </strong>April 1, 2010&nbsp;</p>



<p class="wp-block-paragraph"><strong>Authors: </strong>Alice, Bob&nbsp;</p>



<p class="wp-block-paragraph"><strong>Status: </strong>Complete, action items in progress&nbsp;</p>



<p class="wp-block-paragraph"><strong>Summary: </strong>The boiler broke down and all products experienced service degradation for 2 hours&nbsp;</p>



<p class="wp-block-paragraph"><strong>Impact: </strong>A large number of messages never went out, there was a noticeable financial impact, new valve on the boiler and 1000 dollars for one hour of plumbers’ work&nbsp;</p>



<p class="wp-block-paragraph"><strong>Root causes: </strong>Cascading failure due to a water heater malfunction in Zagreb office building, the floor lost electricity, and so the email server went down. At the time the authorization server in Frankfurt was configured to send emails over that email server. The calls to the email server were sent synchronously with no timeout, so all threads were blocked on the call to the email server, and there were no available threads to serve the incoming requests.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Trigger: </strong>Malfunction in the boiler, waiting for the analysis from the plumber.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Resolution: </strong>Authorization server reconfigured to use the email server instances in Frankfurt data center.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Detection: </strong>The customers complained before we detected the issue.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph"><strong>Action items:</strong>&nbsp;</p>



<ol start="1" class="wp-block-list">
<li>Batch emails and send them asynchronously&nbsp;</li>
</ol>



<ol start="2" class="wp-block-list">
<li>Introduce a circuit breaker around RPC call&nbsp;</li>
</ol>



<ol start="3" class="wp-block-list">
<li>Duct tape the circuit breaker of the water heater&nbsp;</li>
</ol>



<ol start="4" class="wp-block-list">
<li>Put the electrician and plumber’s phone number on speed dial&nbsp;</li>
</ol>



<p class="wp-block-paragraph"><strong>Lessons Learned</strong></p>



<p class="wp-block-paragraph">Don’t couple the production traffic to the boiler.&nbsp;&nbsp;</p>



<h2 class="wp-block-heading"><span id="timeline">Timeline</span></h2>



<p class="wp-block-paragraph">2010-04-01 (all times UTC)&nbsp;</p>



<ul class="wp-block-list">
<li>9:45 &#8211; deployment of authorization server in Frankfurt, it starts using mail server in Zagreb due to a configuration mistake&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>10:32 &#8211; the boiler burns out and triggers an issue with electrical supply to the building, the rack with the email server also loses power&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>10:45 &#8211; the office building manager calls the electricity company&nbsp;&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>10:50 &#8211; One API team goes for a beer in the nearby pub&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>11:05 &#8211; a young and enthusiastic application security engineer hears about the new brute force detection mechanism and decides to test it&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>11:30 &#8211; electricians blame the plumbers&nbsp;&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>11:35 &#8211; <strong>OUTAGE BEGINS</strong> a lot of request handling threads are waiting for response from the email server, authorization server starts throttling incoming requests&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>11:45 &#8211; customers start calling the customer support, the line is busy we are trying to reach the plumber&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>11:50 <strong>INCIDENT BEGINS</strong> all of request handling threads are in waiting state, no traffic is processed&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>12:00 &#8211; in the pub One API team jokes about how the last two times they went for a beer production went down&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>12:05 &#8211; plumber answers the telephone and starts negotiating his hourly rate&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>12:30 &#8211; plumber agrees on an hourly rate&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>12:45 &#8211; One Api team notices missed calls from the customer support team&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>12:55 &#8211; One API team rushes back to the office and bumps into team of electricians telling them they can’t go in right now&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>13:20 &#8211; One API team makes a thread dump and figures out the issue&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>13:35 &#8211; the configuration of authorization server is changed&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>13:45 &#8211; <strong>OUTAGE MITIGATED</strong> the service stars recovering&nbsp;&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>13:50 &#8211; <strong>INCIDENT ENDS&nbsp;</strong>&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>15:55 &#8211; the plumber enters the building&nbsp;&nbsp;</li>
</ul>



<ul class="wp-block-list">
<li>16:05 &#8211; the plumber leaves the building after replacing the valve on the boiler&nbsp;</li>
</ul>
<p>The post <a href="https://shiftmag.dev/postmortem-the-boiler-incident-6986/">Postmortem: The Boiler Incident</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-05-26 06:17:09 by W3 Total Cache
-->