<?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>Developer Experience Archives - ShiftMag</title>
	<atom:link href="https://shiftmag.dev/category/developer-experience/feed/" rel="self" type="application/rss+xml" />
	<link>https://shiftmag.dev/category/developer-experience/</link>
	<description>Insightful engineering content &#38; community</description>
	<lastBuildDate>Mon, 12 Oct 2026 12:02:30 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://shiftmag.dev/wp-content/uploads/2026/09/cropped-Shift-32x32.webp</url>
	<title>Developer Experience Archives - ShiftMag</title>
	<link>https://shiftmag.dev/category/developer-experience/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Netflix Engineering Levels Explained: L3 to L7 Career Ladder, Scope, and Pay</title>
		<link>https://shiftmag.dev/netflix-engineering-levels-explained-l3-to-l7-career-ladder-scope-and-pay-12572/</link>
		
		<dc:creator><![CDATA[Marko Crnjanski]]></dc:creator>
		<pubDate>Mon, 12 Oct 2026 12:01:46 +0000</pubDate>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[career leader]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=12572</guid>

					<description><![CDATA[<p>Want to become a Netflix software engineer? Here’s an overview of Netflix’s engineering career ladder, from entry-level L3 to Software Engineer L7.</p>
<p>The post <a href="https://shiftmag.dev/netflix-engineering-levels-explained-l3-to-l7-career-ladder-scope-and-pay-12572/">Netflix Engineering Levels Explained: L3 to L7 Career Ladder, Scope, and Pay</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Netflix&#8217;s public engineering job titles include Software Engineer 3, Software Engineer 4, Senior Software Engineer (L5), Staff Software Engineer (L6), and Software Engineer L7. </p>



<p class="wp-block-paragraph">This article looks at those five individual-contributor levels. It uses <strong>Netflix job descriptions</strong>, t<strong>he company’s culture and compensation policies</strong>, and <strong>reported pay data from <a href="https://www.levels.fyi/?tab=levels" target="_blank" rel="noreferrer noopener">Levels.fyi </a></strong>to show the kind of work associated with each level. Those hiring examples should not be treated as Netflix’s internal promotion criteria.</p>



<h1 class="wp-block-heading" id="engineering-levels-and-compensation">Engineering levels and compensation</h1>



<p class="wp-block-paragraph">Levels.fyi labels L3 through L7 as Engineer, Engineer II, Senior Engineer, Staff Engineer, and Principal Engineer. Netflix&#8217;s recruiting titles vary, sometimes using only a number. The examples below describe particular advertised roles; <strong>they are not a uniform specification for every engineer at that level</strong>.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="256" src="https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.31-1024x256.png?x32039" alt="" class="wp-image-12583" srcset="https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.31-1024x256.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.31-300x75.png 300w, https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.31-767x192.png 767w, https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.31.png 1147w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Based on the last information checked on October 9, 2026, the individual US level pages on Levels.fyi displayed average annual total compensation of approximately <strong>$214K at L3, $321K at L4, $509K at L5, $704K at L6, and $1.14M at L7</strong>. </p>



<p class="wp-block-paragraph">Separately, the company overview reported a median of $430K across US software engineer submissions. What should be noted is these are reported compensation figures, not Netflix&#8217;s official pay bands or a representative census of its employees.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="259" src="https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.18-1024x259.png?x32039" alt="" class="wp-image-12584" srcset="https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.18-1024x259.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.18-300x76.png 300w, https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.18-766x194.png 766w, https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.18.png 1145w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Netflix&#8217;s engineering listings generally describe annual compensation without a separate bonus. Its <em><a href="https://jobs.netflix.com/work-life-philosophy" target="_blank" rel="noreferrer noopener">Work Life Philosophy</a></em> says eligible employees <strong>choose each year how much compensation to receive as salary or stock options</strong>. Under its Personal Top of Market approach, the company assesses an individual&#8217;s market value rather than defining the market through fixed bands and grades. The advertised ranges still depend on the role and can vary by location.</p>



<p class="wp-block-paragraph">For example, the L4 DevOps listing specifies $250K to $413K, and the L6 Developer Productivity listing specifies $600K to $1.066M. The published L7 Growth Engineering description gives a range of $240K to $1.2M. Such overlapping ranges are a reason to check the specific role and offer: <strong>they cannot be used as a standard salary schedule for L4, L6, or L7</strong>.</p>



<h1 class="wp-block-heading" id="l3-and-l4-experience-requirements-and-project-ownership">L3 and L4 Experience requirements and project ownership</h1>



<p class="wp-block-paragraph">Netflix has a dedicated US <a href="https://jobs.netflix.com/careers/new-grads" target="_blank" rel="noreferrer noopener">new-graduate program</a> that includes technical roles, onboarding, and training. Its careers page says new-graduate openings typically appear in September or October, depending on hiring needs. Levels.fyi identifies L3 as entry level, but that <strong>does not mean every Software Engineer 3 vacancy is suitable for someone straight out of university</strong>.</p>



<p class="wp-block-paragraph">The Software Engineer 3 role at Ink, for example, asks for three to five years of software engineering experience, preferably in animation production. It involves working with senior colleagues on tools and platforms for AI-assisted production. That is a specific hiring requirement for a specialist role, not a universal experience threshold for L3.</p>



<p class="wp-block-paragraph">Speaking about L4, the DevOps and CI/CD posting asks for at least four years of professional experience or equivalent practical experience. It describes work on defined parts of larger platform initiatives, with guidance from senior engineers and a manager. An Android L4 posting expects ownership from project scoping through delivery, while still stressing the importance of team support.</p>



<p class="wp-block-paragraph">Together, those examples suggest <strong>increasing independence at L4, with the amount of guidance depending on the role</strong>. Project ownership and support from more experienced colleagues appear together in these descriptions.</p>



<h1 class="wp-block-heading" id="l5-senior-engineering-and-system-ownership">L5 Senior engineering and system ownership</h1>



<p class="wp-block-paragraph">Globally popular streaming platform has advertised Senior Software Engineer positions at L5. A useful example is its Analysis role in the Experimentation Platform team, which combines responsibility for production systems with input into architecture and the team&#8217;s roadmap.</p>



<p class="wp-block-paragraph">The archived Analysis listing describes workflows processing billions of events each day. Its responsibilities include developing experiment-analysis tooling, responding to incidents, improving reliability, and agreeing data and API contracts with other teams. <strong>The engineer is also expected to understand how product teams use experiments</strong>. These details show that the job extends beyond implementing a predefined feature.</p>



<p class="wp-block-paragraph">In this role, senior responsibility includes <strong>accounting for the operational consequences of a design</strong> and the needs of the teams using it. Netflix&#8217;s emphasis on independent judgment provides context for that work, but the Culture Memo applies across the company rather than defining separate expectations for L5.</p>



<h1 class="wp-block-heading" id="l6-staff-engineering-across-teams">L6 Staff engineering across teams</h1>



<p class="wp-block-paragraph">At L6, Netflix explicitly advertises <strong>Staff Software Engineer roles</strong>. The AIMS Platform Systems examples make the wider scope concrete: the engineer works on infrastructure used by other engineering and research teams.</p>



<p class="wp-block-paragraph">The <strong>Developer Productivity role</strong> covers development environments, build and test systems, CI/CD, and tools used to move research into production experiments. It also calls for measuring build times and iteration speed, supporting adoption, and setting shared technical standards.</p>



<p class="wp-block-paragraph">The <strong>Staff ML role</strong> focuses on observability, infrastructure cost, and reliability, alongside contributing to architecture and migration planning with other teams.</p>



<p class="wp-block-paragraph">These examples suggest <strong>that Staff responsibility includes getting shared systems adopted and making them useful across AIMS</strong>. The developer productivity posting makes that test concrete: the tools need to improve how other teams build and run experiments. The work combines hands-on engineering with coordination across teams.</p>



<h1 class="wp-block-heading" id="l7-technical-direction-across-an-organization">L7 Technical direction across an organization</h1>



<p class="wp-block-paragraph">Levels.fyi calls Netflix L7 Principal Engineer, while the Growth Engineering job description uses Software Engineer L7. Its responsibilities are defined around the Growth Engineering organization, so the scope is more informative than the title alone.</p>



<p class="wp-block-paragraph">The published role reports to a Senior Director <strong>and asks for at least 15 years of professional software development experience as an individual contributor</strong>. It includes setting architectural direction across Growth Engineering, connecting business goals to technology investments, and working with senior leaders and other L7 engineers. The experience requirement belongs to this vacancy, not to a published rule for every L7 role.</p>



<p class="wp-block-paragraph">The remit is broad technical leadership within Growth Engineering. It combines architectural decisions with continued expertise in production systems and mentoring other engineers, including helping managers support their teams&#8217; development.</p>



<h1 class="wp-block-heading" id="comparing-level-names-across-companies">Comparing level names across companies</h1>



<p class="wp-block-paragraph">Level numbers are company-specific. Levels.fyi places <a href="https://shiftmag.dev/google-career-ladder-explained-for-engineers-10368/" data-type="post" data-id="10368" target="_blank" rel="noreferrer noopener">Google&#8217;s Senior Software Engineer title</a> at L5 and Staff at L6, while Amazon uses L6 for Senior SDE and L7 for Principal SDE. Meta uses E-level labels in the same database. These naming conventions can help a candidate navigate vacancies, but they do not establish equivalent responsibilities or hiring standards.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="261" src="https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.02-1024x261.png?x32039" alt="" class="wp-image-12585" srcset="https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.02-1024x261.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.02-766x195.png 766w, https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.02-300x76.png 300w, https://shiftmag.dev/wp-content/uploads/2026/10/Screenshot-2026-10-09-at-12.51.02.png 1147w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The distinction matters most above Senior. For example, Google&#8217;s L7 is Senior Staff and its Principal title appears at L8, whereas Levels.fyi labels Netflix L7 Principal. <strong>A shared title or similar number does not show where an engineer would be placed after changing companies</strong>. The role&#8217;s technical remit and the employer&#8217;s assessment remain necessary context.</p>



<h1 class="wp-block-heading" id="how-culture-affects-engineering-work">How culture affects engineering work</h1>



<p class="wp-block-paragraph">Netflix&#8217;s <a href="https://jobs.netflix.com/culture" target="_blank" rel="noreferrer noopener">Culture Memo</a> highlights <strong>judgment, candid feedback, and giving employees enough context to make decisions</strong>. It also expects managers to stay involved and coach their teams. Autonomy should therefore not be mistaken for an absence of support, nor treated as a benefit reserved for senior levels.</p>



<p class="wp-block-paragraph">The keeper test is part of that performance culture. Managers are asked whether they would try to retain someone or choose to hire them again.<strong> If the answer is no, Netflix says it favors ending the employment relationship promptly</strong>. The memo also says to assess a person&#8217;s overall record, discuss performance regularly, and support employees through short-term setbacks.</p>



<p class="wp-block-paragraph">For a candidate, the practical next step is to ask how the hiring team defines scope at the advertised level, what support is available, and how progression is assessed. Public postings can help frame that conversation. They cannot supply a guaranteed promotion timetable or the terms of an individual offer.</p>


<figure class="wp-block-post-featured-image"><img loading="lazy" decoding="async" width="1672" height="941" src="https://shiftmag.dev/wp-content/uploads/2026/10/netflix-career-ladder.png?x32039" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/10/netflix-career-ladder.png 1672w, https://shiftmag.dev/wp-content/uploads/2026/10/netflix-career-ladder-300x169.png 300w, https://shiftmag.dev/wp-content/uploads/2026/10/netflix-career-ladder-768x432.png 768w, https://shiftmag.dev/wp-content/uploads/2026/10/netflix-career-ladder-1024x576.png 1024w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /></figure><p>The post <a href="https://shiftmag.dev/netflix-engineering-levels-explained-l3-to-l7-career-ladder-scope-and-pay-12572/">Netflix Engineering Levels Explained: L3 to L7 Career Ladder, Scope, and Pay</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>You Should Bring Your Ops to Slack</title>
		<link>https://shiftmag.dev/you-should-bring-your-ops-to-slack-11860/</link>
		
		<dc:creator><![CDATA[Toni Babic]]></dc:creator>
		<pubDate>Wed, 09 Sep 2026 15:13:55 +0000</pubDate>
				<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[AI agents]]></category>
		<category><![CDATA[MCP]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=11860</guid>

					<description><![CDATA[<p>We're burning thousands of dollars on AI conversations that should've been a single slash command.</p>
<p>The post <a href="https://shiftmag.dev/you-should-bring-your-ops-to-slack-11860/">You Should Bring Your Ops to Slack</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/09/bring-your-ops-to-slack.png?x32039" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/09/bring-your-ops-to-slack.png 1200w, https://shiftmag.dev/wp-content/uploads/2026/09/bring-your-ops-to-slack-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/09/bring-your-ops-to-slack-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/09/bring-your-ops-to-slack-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p class="wp-block-paragraph">AI makes ad hoc operational work so easy that <strong>we stop building the tools around it</strong>.</p>



<p class="wp-block-paragraph">Why write a script when you can just ask Claude or Copilot to restart the canary? Why build a dashboard when ChatGPT can summarize today’s deploy status in 15 seconds?</p>



<p class="wp-block-paragraph">Because that 15-second conversation, repeated by 50 engineers 20 times a day, <strong>stops being convenience and starts becoming a tax</strong>.</p>



<h2 class="wp-block-heading" id="conversation-driven-operations-have-a-hidden-cost">Conversation-driven operations have a hidden cost</h2>



<p class="wp-block-paragraph">Let&#8217;s walk through a real example: <strong>restarting a canary deployment</strong>.</p>



<p class="wp-block-paragraph"><strong>Manual AI-assisted workflow</strong>:</p>



<ol start="1" class="wp-block-list">
<li>You: &#8220;Check the health of the canary deployment for payment-service&#8221;</li>



<li>AI: <em>calls monitoring API, returns data</em> (~800 tokens)</li>



<li>You: &#8220;It looks unhealthy, restart it&#8221;</li>



<li>AI: <em>calls deployment API, confirms restart</em> (~600 tokens)</li>



<li>You: &#8220;Monitor it for the next 5 minutes and confirm if it stabilizes&#8221;</li>



<li>AI: <em>polls metrics, returns confirmation</em> (~900 tokens)</li>
</ol>



<p class="wp-block-paragraph">That&#8217;s ~2,300 tokens per restart. Three restarts a day across a team = ~200k tokens/month. For a task that takes one CLI command.</p>



<p class="wp-block-paragraph">Now compare:</p>



<p class="wp-block-paragraph"><code>/canary-restart payment-service</code></p>



<p class="wp-block-paragraph">One message, zero AI tokens. The bot routes the intent to an internal tool that handles health checks, restart logic, and confirmation, all without an LLM in the loop.</p>



<p class="wp-block-paragraph"><strong>Use AI to build the tool once, so you don’t keep paying for the conversation</strong>.</p>



<h2 class="wp-block-heading" id="why-slack">Why Slack?</h2>



<p class="wp-block-paragraph">Because <strong>that&#8217;s where the work already happens</strong>.</p>



<p class="wp-block-paragraph">Incidents get declared in Slack. Deploy notifications land in Slack. Someone pings you in Slack asking &#8220;is prod healthy?&#8221; The response to that message shouldn&#8217;t require opening a terminal, switching to a dashboard, or navigating to another tool.</p>



<p class="wp-block-paragraph">Your team already works in Slack, so your commands, context, and decisions should live there too, directly connected to the machines.</p>



<p class="wp-block-paragraph">The alternative is telling every engineer: &#8220;When something breaks, leave the place where your team is coordinating, open a different tool, figure out what command to run, then come back here to tell everyone what happened.&#8221; We&#8217;ve been doing that for years and it&#8217;s never been good. We just didn&#8217;t have a better option.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://shiftmag.dev/wp-content/uploads/2026/09/bring-your-ops-to-slack-1-1024x538.png?x32039" alt="" class="wp-image-11878" srcset="https://shiftmag.dev/wp-content/uploads/2026/09/bring-your-ops-to-slack-1-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/09/bring-your-ops-to-slack-1-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/09/bring-your-ops-to-slack-1-768x403.png 768w, https://shiftmag.dev/wp-content/uploads/2026/09/bring-your-ops-to-slack-1.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="the-bot-is-there-to-connect-not-to-decide">The bot is there to connect, not to decide</h2>



<p class="wp-block-paragraph">This is where most Slack bot projects go off track: <strong>they pack business logic directly into the bot itself</strong>. Message handlers start calling APIs, transforming data, and handling retries, and before long the bot turns into a monolith.</p>



<p class="wp-block-paragraph"><strong>The Slack bot should be thin.</strong> It does exactly three things:</p>



<ol start="1" class="wp-block-list">
<li>Parse the incoming command or message</li>



<li>Route it to the right internal service</li>



<li>Format the response back to the user</li>
</ol>



<p class="wp-block-paragraph">No business logic, no database queries, no retry loops, and no secret management.</p>



<p class="wp-block-paragraph"><strong>The actual work lives in your internal tools and services</strong>. The same ones your GUI calls, your MCP server exposes, your CLI wraps, your CI/CD pipeline triggers. The Slack bot is just one connector among many.</p>



<p class="wp-block-paragraph">The tool service owns the business logic. Every connector, GUI, MCP, Slack, CLI, is a thin shell that calls the same service. Write the logic once, expose it everywhere.</p>



<h2 class="wp-block-heading" id="choose-configuration-over-code-for-adding-tools">Choose configuration over code for adding tools</h2>



<p class="wp-block-paragraph">If adding a new Slack command requires a PR, a deploy, and someone from the platform team to review it, you&#8217;ve already lost. It won&#8217;t get done.</p>



<p class="wp-block-paragraph"><strong>Adding a tool should be a configuration change</strong>:</p>



<pre class="wp-block-code"><code>tools:
  - name: canary-restart
    description: "Restart a canary deployment"
    endpoint: http://tool-service/internal/canary/restart
    parameters:
      - name: service
        type: string
        required: true
    acl:
      - platform-team
      - oncall

  - name: feature-flag
    description: "Toggle a feature flag"
    endpoint: http://tool-service/internal/feature-flags/toggle
    parameters:
      - name: flag-name
        type: string
        required: true
      - name: environment
        type: string
        default: staging
    acl:
      - developers</code></pre>



<p class="wp-block-paragraph">The bot reads this config, registers the slash commands, and routes them. The tool service behind those endpoints can be built and deployed independently, by any team, in any language, on any cadence.</p>



<p class="wp-block-paragraph">This separation means:</p>



<ul class="wp-block-list">
<li><strong>The ops team</strong> owns tool-service deployments and logic</li>



<li><strong>The platform team</strong> owns the bot and routing config</li>



<li><strong>Any engineer</strong> can propose a new tool by opening a config PR</li>



<li><strong>No one</strong> ever modifies bot code to add a capability</li>
</ul>



<p class="wp-block-paragraph">The bot becomes part of the infrastructure (quiet, reliable, and rarely changed). The tools behind it keep moving forward.</p>



<h2 class="wp-block-heading" id="this-is-what-it-looks-like-in-practice">This is what it looks like in practice</h2>



<p class="wp-block-paragraph"><strong>Incident response, today without a bot</strong>:</p>



<p class="wp-block-paragraph">Alert fires, someone opens PagerDuty, 5 people join a Slack huddle, one person shares their screen navigating dashboards, someone else runs CLI commands, results copy-pasted back to the thread.</p>



<p class="wp-block-paragraph"><strong>Incident response with a bot connector</strong>:</p>



<p class="wp-block-paragraph">Alert fires, <code>/incident declare payment-service-health-check-failing</code>, bot creates incident channel, rolls back the canary, posts the deploy diff, pings the on-call, everyone joins the channel with full context already there.</p>



<p class="wp-block-paragraph"><strong>Feature flag management, today</strong>:</p>



<p class="wp-block-paragraph">&#8220;Can someone toggle the new checkout flow to 10% in staging?&#8221;, wait for platform team to wake up, ticket, CLI command, &#8220;done&#8221;.</p>



<p class="wp-block-paragraph"><strong>Feature flag management with a bot connector</strong>:</p>



<p class="wp-block-paragraph"><code>/feature-flag new-checkout-flow --env staging --rollout 10</code>, bot calls the feature-flag service, responds with confirmation, done in 3 seconds.</p>



<p class="wp-block-paragraph">None of these Slack commands contain business logic. They all call the same internal services your MCP server, admin GUI, and CLI already use. The bot is just the most accessible surface.</p>



<h2 class="wp-block-heading" id="practical-takeaways">Practical takeaways</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th class="has-text-align-left" data-align="left">Principle</th><th class="has-text-align-left" data-align="left">Why</th></tr><tr><td class="has-text-align-left" data-align="left">Build tools, not conversations</td><td class="has-text-align-left" data-align="left">A tool costs you once. A conversation costs you every time.</td></tr><tr><td class="has-text-align-left" data-align="left">Slack as the pane of glass</td><td class="has-text-align-left" data-align="left">Don&#8217;t make engineers leave the coordination layer to do the work.</td></tr><tr><td class="has-text-align-left" data-align="left">Bot is connector, not brain</td><td class="has-text-align-left" data-align="left">Business logic in shared services. Bot only routes and formats.</td></tr><tr><td class="has-text-align-left" data-align="left">Tools as config</td><td class="has-text-align-left" data-align="left">Adding a command shouldn&#8217;t mean deploying the bot. YAML config, picked up live.</td></tr><tr><td class="has-text-align-left" data-align="left">One service, many surfaces</td><td class="has-text-align-left" data-align="left">Same tool service behind GUI, MCP, Slack, CLI. Write once.</td></tr><tr><td class="has-text-align-left" data-align="left">ACL on every tool</td><td class="has-text-align-left" data-align="left">Not every slash command is for every user. Build access control in from the start.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading" id="put-operational-logic-in-internal-services-not-slack-bots-or-clis">Put operational logic in internal services, not Slack bots or CLIs</h2>



<p class="wp-block-paragraph">This isn’t about Slack bots, MCP servers, GUIs, or CLIs. They’re all just ways to connect things. What really changes is this:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Stop scattering operational logic across interfaces. Centralize it in internal services. Then build whatever connector makes sense for the context. Slack for incident coordination, MCP for AI agents, GUI for exploratory work, CLI for automation.</p>
</blockquote>



<p class="wp-block-paragraph">And when someone asks &#8220;can we add that to the bot?&#8221;, the answer should be yes, and it should take 5 minutes and a config change, not a sprint. If it can&#8217;t, the architecture is wrong.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://shiftmag.dev/you-should-bring-your-ops-to-slack-11860/">You Should Bring Your Ops to Slack</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Small Lies Developers Tell to Keep Work Moving</title>
		<link>https://shiftmag.dev/the-small-lies-developers-tell-to-keep-work-moving-10305/</link>
		
		<dc:creator><![CDATA[Anastasija Uspenski]]></dc:creator>
		<pubDate>Mon, 15 Jun 2026 13:03:39 +0000</pubDate>
				<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Deadlines]]></category>
		<category><![CDATA[Developers Answer]]></category>
		<category><![CDATA[Software Engineer]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=10305</guid>

					<description><![CDATA[<p>Developers share how they handle deadlines, pressure, and team communication - and why small white lies sometimes help engineering teams keep moving.</p>
<p>The post <a href="https://shiftmag.dev/the-small-lies-developers-tell-to-keep-work-moving-10305/">The Small Lies Developers Tell to Keep Work Moving</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/06/shiftmag_devs.jpg?x32039" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/06/shiftmag_devs.jpg 1200w, https://shiftmag.dev/wp-content/uploads/2026/06/shiftmag_devs-300x158.jpg 300w, https://shiftmag.dev/wp-content/uploads/2026/06/shiftmag_devs-1024x538.jpg 1024w, https://shiftmag.dev/wp-content/uploads/2026/06/shiftmag_devs-768x403.jpg 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p class="wp-block-paragraph"><a href="https://shiftmag.dev/we-asked-20-developers-why-they-really-got-into-tech-it-wasnt-the-money-10101/" type="link" id="https://shiftmag.dev/we-asked-20-developers-why-they-really-got-into-tech-it-wasnt-the-money-10101/" target="_blank" rel="noreferrer noopener">We played &#8220;Truth or Dare&#8221; with developers again</a>, truth only, with no option to dodge the answer by doing push-ups. </p>



<p class="wp-block-paragraph">Developers from different parts of the industry spoke about how they survive tight deadlines, tension inside engineering teams, and the subtle, protective lies they use to get through the week.</p>



<h2 class="wp-block-heading" id="theres-a-pressure-to-sound-confident">There&#8217;s a pressure to sound confident</h2>



<p class="wp-block-paragraph">In engineering teams, pressure, shifting priorities, and the need to move quickly shape communication. In that environment, <strong>“truth” is more about signaling confidence</strong>, alignment, and forward progress than precision.</p>



<p class="wp-block-paragraph">Weekly meetings, fast delivery cycles, and constantly changing priorities push developers to learn that how they communicate can matter as much as the work itself.</p>



<p class="wp-block-paragraph">That is why we asked how developers manage expectations. The <strong>phrase “it will be done” often appears early</strong>, sometimes before anyone fully understands the scope of the task. Under pressure, estimates tend to be optimistic, and reality usually forces adjustments as the work moves forward.</p>



<p class="wp-block-paragraph">At the same time, developers handle that pressure in different ways &#8211; some narrow their focus and push through tight deadlines, while others start by asking whether those deadlines even make sense.</p>



<h2 class="wp-block-heading" id="the-truth-about-deadlines">The truth about deadlines</h2>



<p class="wp-block-paragraph">Deadlines sound like a nightmare for an engineering mind, so we asked our developers how they deal with them. </p>



<p class="wp-block-paragraph">Some described how <strong>short deadlines increase focus and force prioritization</strong>. Others questioned whether extreme deadlines reflect process problems rather than urgency.</p>



<p class="wp-block-paragraph">Hrvoje Rančić, Senior Software Engineer, described how constant pressure can indicate systemic misalignment rather than effective planning:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I realized that deadlines can sometimes be a mechanism of manipulation. If there are too many short deadlines, something is wrong in the process. Either people are making unrealistic promises, expectations are unrealistic, or there is poor communication between product and engineering.</p>
</blockquote>



<p class="wp-block-paragraph">At the same time, other participants admitted that deadlines can help with focus and discipline, but<strong> only when they are based on a realistic scope of work</strong>, not on constant escalation of pressure.</p>



<p class="wp-block-paragraph">The point is not that deadlines are <em>bad</em>, but that misaligned and unrealistic deadlines often point to deeper organizational issues.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Secrets, Deadlines &amp; Workplace Myths In Software Development" width="500" height="281" src="https://www.youtube.com/embed/ZGXQWjChuO0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading" id="engineering-is-often-about-people-not-just-code">Engineering is often about people, not just code</h2>



<p class="wp-block-paragraph">The stereotype of the isolated, antisocial engineer still exists, even though modern software development is highly collaborative. That misconception often clashes with the reality of teamwork, where communication<strong>, negotiation, and constant alignment are a key part of the job</strong>.</p>



<p class="wp-block-paragraph">Kristina Valjak, Engineering Lead, summarized it:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Some people think engineers are introverts who don’t socialize, who sit in basements and stare at screens all day. Maybe it’s true that we’re not social enough, but in reality, everyone is smart.</p>
</blockquote>



<p class="wp-block-paragraph">The irony is that engineering work is rarely isolated. Most of the tension developers describe does not come from code, but from coordination between them, the product teams, and management.</p>



<h2 class="wp-block-heading" id="how-developers-smooth-over-the-truth-at-work">How developers smooth over the truth at work</h2>



<p class="wp-block-paragraph">Developers often tell small, strategic lies to keep work flowing smoothly. These are not dramatic deceptions, but everyday adjustments such as overconfidence in estimates, downplaying uncertainty, or agreeing in meetings while problems are resolved in the background.</p>



<p class="wp-block-paragraph">Emin Mulaimović, Junior AI Engineer, reflected on this broader communication culture, recalling an anecdote from his first job:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">At my first job they told me not to say I was happy at work, so I kept complaining all the time. I think that’s the only lie I tell. I don’t tell them how much fun I actually have working there and how much I enjoy the job.</p>



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



<p class="wp-block-paragraph">In another example, a developer described solving an issue during a break and returning to the meeting without interrupting the flow of discussion. In other cases, developers admitted to deliberately <strong>inflating estimates or simplifying status reports to avoid unnecessary tension</strong>.</p>



<p class="wp-block-paragraph">This behavior is not so much about deception as it is about reducing “noise” in systems that are already complex enough.</p>



<p class="wp-block-paragraph"><strong>Want to hear more? Check out the video.</strong></p>



<p class="wp-block-paragraph"><em>Special thanks to our fellow colleagues at Infobip, the publisher of ShiftMag!</em></p>
<p>The post <a href="https://shiftmag.dev/the-small-lies-developers-tell-to-keep-work-moving-10305/">The Small Lies Developers Tell to Keep Work Moving</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>20 Year Old Unicorn Goes AI-First Without Mass AI Layoffs</title>
		<link>https://shiftmag.dev/ai-first-izabel-jelenic-infobip-10156/</link>
		
		<dc:creator><![CDATA[Anastasija Uspenski]]></dc:creator>
		<pubDate>Wed, 10 Jun 2026 12:03:47 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[agentic AI]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI-first]]></category>
		<category><![CDATA[CTO]]></category>
		<category><![CDATA[infobip]]></category>
		<category><![CDATA[Izabel Jelenić]]></category>
		<category><![CDATA[MCP]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=10156</guid>

					<description><![CDATA[<p>A CTO with 20 years of experience through multiple tech shifts sees layoffs not as an AI effect, but as a correction after an unsustainable hiring boom. He sees AI as a reset: an opportunity for strong junior engineers, and a wake-up call for senior developers facing an existential shift in how they stay relevant.</p>
<p>The post <a href="https://shiftmag.dev/ai-first-izabel-jelenic-infobip-10156/">20 Year Old Unicorn Goes AI-First Without Mass AI Layoffs</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Whether you are a skeptical senior AI engineer, a cautious junior, or an enthusiast who has been fully engaged in AI since the moment you discovered it, the interview I prepared will stay with you.</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/05/izo1-1.png?x32039" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/05/izo1-1.png 1200w, https://shiftmag.dev/wp-content/uploads/2026/05/izo1-1-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/05/izo1-1-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/05/izo1-1-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p class="wp-block-paragraph">This May, I spoke with a CTO who truly understands the spirit of the moment and brings a grounded, realistic view of the current wave of AI expansion. <strong>He applies that perspective across a team of roughly 1,000 developers.</strong></p>



<p class="wp-block-paragraph">That is <a href="https://www.linkedin.com/in/izabel-jelenic-1855974/">Izabel Jelenić</a>, CTO of <a href="https://www.infobip.com/" target="_blank" rel="noreferrer noopener">Infobip</a>, first Croatian unicorn. As a co-founder, he has been there since the very beginning, when two university friends started a small startup that later grew into a billion-dollar global organization. <strong>Over the past 20 years, this veteran tech leader has navigated every major technological shift while helping scale the company worldwide.</strong></p>



<p class="wp-block-paragraph">The conversation comes at a moment when we are in the middle of the agentic AI era, where AI systems move beyond answering questions and begin executing tasks, supporting and automating real workflows. At Infobip, this shift has been embraced early and deliberately through an <strong>AI-first transformation that extends across the entire organization, engaging not only developers but employees in every function</strong>.</p>



<h2 class="wp-block-heading" id="developers-should-adopt-ai-gradually">Developers should adopt AI gradually</h2>



<p class="wp-block-paragraph">I asked Izabel to explain what AI-first means and how the idea of shifting to an AI-first mindset emerged.</p>



<p class="wp-block-paragraph">What followed was a comprehensive breakdown of its evolution, core principles, and practical execution. With over two decades in the tech industry, my interlocutor emphasizes that he has never witnessed a technological shift this monumental, signaling clear proof that AI is rapidly moving from mere hype into everyday utility. </p>



<p class="wp-block-paragraph">That makes mastering these capabilities and maximizing their potential absolutely crucial. A common pitfall, however, is assuming AI belongs solely to developers, which completely misses the mark given the technology&#8217;s universal transformative power:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">That is why Infobip promotes a mindset in which all technical and non-technical employees embrace curiosity toward AI so they can be part of the new business and technological order instead of letting it overtake them. That is the AI-first shift the company has chosen as its business philosophy for the future.</p>
</blockquote>



<p class="wp-block-paragraph">While technical teams naturally adopt new tools faster and more efficiently, he believes those outside software engineering shouldn&#8217;t be left behind. Providing non-technical employees with the right resources and training allows them to leverage AI agents as personal assistants, ultimately making their daily work both easier and faster.</p>



<p class="wp-block-paragraph">When it comes to software developers, the Infobip CTO sees two extremes:</p>



<ol id="block-2e1c8206-e7bb-4608-9086-979d2a7323a0" class="wp-block-list">
<li>Some cling tightly to writing code and represent the anti-AI camp.</li>



<li>Others rely fully on AI and embrace vibe coding.</li>
</ol>



<p class="wp-block-paragraph">In his view, <strong>neither approach is correct</strong>.</p>



<p class="wp-block-paragraph">Because technological development has not yet reached the &#8220;dark factory&#8221; stage (where systems run entirely automated and unassisted), rushing into a full AI concept remains premature. Instead, this direction serves as a north star—a long-term guide rather than an immediate reality. While it remains uncertain if a fully autonomous state is entirely achievable, forcing such an approach today is clearly unwise.</p>



<p class="wp-block-paragraph"><strong>Developers should adopt AI gradually</strong>. They should understand which tools suit them best, such as coding, review, and testing.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="682" src="https://shiftmag.dev/wp-content/uploads/2026/05/DSC04514-1024x682.jpg?x32039" alt="AI-first mindset" class="wp-image-9717" title="AI-first mindset" srcset="https://shiftmag.dev/wp-content/uploads/2026/05/DSC04514-1024x682.jpg 1024w, https://shiftmag.dev/wp-content/uploads/2026/05/DSC04514-300x200.jpg 300w, https://shiftmag.dev/wp-content/uploads/2026/05/DSC04514-768x512.jpg 768w, https://shiftmag.dev/wp-content/uploads/2026/05/DSC04514.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Photo credit: Neven Kacun</figcaption></figure>



<h2 class="wp-block-heading" id="if-you-are-a-bad-developer-ai-cant-help-you">If you are a bad developer, AI can&#8217;t help you</h2>



<p class="wp-block-paragraph">From the CTO&#8217;s perspective, Infobip developers have adopted an AI-first mindset naturally and with little friction, though overdoing it remains a risk. There is a critical need to retain ownership and maintain a strong architecture, especially since AI often acts as an amplifier, scaling both good practices and underlying flaws:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">If you are a bad developer, AI will not help you write good code. If you are a good developer, AI can help you a lot in terms of speed. But you have to know how to guide it and recognize its mistakes, because it can be very convincing.</p>
</blockquote>



<p class="wp-block-paragraph">He explains that an AI-first mindset changes how organizations operate. <strong>AI speeds up processes by automating everything that can be automated</strong>. People can master this technology by adopting engineering logic, and they gain a strong advantage for the future.</p>



<p class="wp-block-paragraph">By ignoring AI, a person pushes themselves out of the industry. Izabel finds it surprising that some smaller companies do not adopt AI faster. They are in a growth phase where AI could make a huge difference. They could implement it quickly because teams are small and compact. Despite this, adoption remains low.</p>



<p class="wp-block-paragraph">The Infobip co-founder sees a common misconception that AI is mainly for developers. <strong>The biggest impact actually appears in GTM</strong> because AI automates business processes extremely well. Hyper-personalization becomes fast, advanced, and efficient. It can significantly help business scaling:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">You can automatically analyze the market, get a list of potential clients, identify use cases that clients need, and do outreach. With hyper-personalization, you can prepare content in a way that immediately helps a person understand what a company sells, but from their perspective.</p>
</blockquote>



<h2 class="wp-block-heading" id="ai-will-reshape-roles-in-tech-companies">AI will reshape roles in tech companies</h2>



<p class="wp-block-paragraph">Even though AI can quickly improve business organization, he notices that people mostly focus on coding. Coding has never been the biggest problem in IT businesses, <strong>the real bottlenecks usually appear in sales</strong>.</p>



<p class="wp-block-paragraph">This is where AI transforms work, making processes more efficient and cost-effective. Far from replacing client relationships or removing the human element, the goal is simply to automate repetitive operational tasks, leading to a much more streamlined workflow:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">People need to get on the AI train. If they do not use AI, new companies will emerge that are AI-native. They start with two people and AI. Their approach will feel more natural and much faster than those who use AI only for software development.</p>
</blockquote>



<p class="wp-block-paragraph">When asked to describe what an AI-first transformation looks like from the inside (using Infobip as an example) and whether the company will abandon certain processes or redistribute roles, the answer is far from black and white. This transition will happen gradually, <strong>marking the most significant technological shift in over two decades</strong>. </p>



<p class="wp-block-paragraph">Ultimately, enthusiastic professionals eager to learn will be the ones expanding their roles by actively implementing these new technologies:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">People experienced in one specialization can now work much more broadly. They can keep their core role, but they can accomplish much more. Someone who used to be only a backend developer can now work with databases or frontend. They may not reach the level of an experienced database engineer, but they can handle simple tasks. They do not need to wait for anyone.</p>
</blockquote>



<p class="wp-block-paragraph">The concept of Agentic AI is another major focal point, pointing toward a future where everyone operates with multiple digital assistants. By helping manage core business tasks faster and more efficiently, these agents streamline daily operations while actively expanding a professional&#8217;s overall skill set.</p>



<h2 class="wp-block-heading" id="ai-agents-are-still-nothing-without-people">AI agents are still nothing without people</h2>



<p class="wp-block-paragraph">As part of its AI-first mindset, Infobip is building its own <a href="https://www.infobip.com/mcp" target="_blank" rel="noreferrer noopener">Model Context Protocol (MCP)</a>, integrations, enabling AI agents to easily consume and interact with Infobip services. CTO believes this is vital because <strong>AI agents will soon be everywhere</strong>, embedded in business systems, running on personal devices, practically on anything you can imagine:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Once it became clear that AI agents are the primary means of interacting with the outside world, adoption accelerated rapidly. Companies realized how easy it is to connect these agents to external systems and services. The key point is that AI agents can now perform real-world tasks by consuming various APIs, especially those available on platforms like MCP. This capability makes them an integral part of business operations, and it’s why we believe their presence will become ubiquitous in the near future.</p>
</blockquote>



<p class="wp-block-paragraph">However, he stresses <strong>the importance of human involvement</strong>. It should not disappear:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Communication must continue to exist. We cannot fully hand it over to AI agents. They can help, but communication becomes even more important because everyone becomes more productive. Without alignment, you can end up with many generated tools that no one understands.</p>
</blockquote>



<p class="wp-block-paragraph">There is also a clear warning regarding hyperproduction, which can easily spiral into chaos if teams begin operating without proper coordination.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="682" src="https://shiftmag.dev/wp-content/uploads/2026/05/DSC04413-1024x682.jpg?x32039" alt="" class="wp-image-9720" srcset="https://shiftmag.dev/wp-content/uploads/2026/05/DSC04413-1024x682.jpg 1024w, https://shiftmag.dev/wp-content/uploads/2026/05/DSC04413-300x200.jpg 300w, https://shiftmag.dev/wp-content/uploads/2026/05/DSC04413-768x512.jpg 768w, https://shiftmag.dev/wp-content/uploads/2026/05/DSC04413.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Photo credit: Neven Kacun</figcaption></figure>



<h2 class="wp-block-heading" id="there-are-fewer-junior-developers-but-they-are-still-valuable">There are fewer junior developers, but they are still valuable</h2>



<p class="wp-block-paragraph">I also wanted to ask an experienced professional what will happen to junior developers. Demand for them has decreased globally. AI now generates much of the code that juniors used to write.</p>



<p class="wp-block-paragraph">At the same time, a generational shift could lead to a talent shortage. Looking back at the end of the pandemic when the IT sector saw a massive influx of talent, Izabel notes that many recent layoffs in US companies are likely happening under the cover of AI:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">They use AI as an excuse for inflated numbers and inflated costs. That is why fewer juniors get hired. I think balance is returning. We will not see excessive hiring from before, but there will still be a need for young, smart people who bring new ideas and fresh energy into processes.</p>
</blockquote>



<p class="wp-block-paragraph">To combat these talent gaps, Infobip runs targeted internships and collaborates closely with universities, frequently transitioning these students into permanent roles. In CTO&#8217;s experience, these fresh perspectives bring genuine value and innovative ideas to the team. </p>



<p class="wp-block-paragraph"><strong>AI plays a pivotal role in this onboarding process by granting immediate access to learning resources</strong>, allowing junior engineers to upskill rapidly. By leveraging AI as a 24/7 virtual mentor alongside human guidance, juniors can accelerate their professional growth and secure key positions within the company much faster</p>



<h2 class="wp-block-heading" id="experienced-developers-face-an-identity-crisis-because-of-ai">Experienced developers face an identity crisis because of AI</h2>



<p class="wp-block-paragraph">Skepticism among experienced developers toward AI, in the view of Infobip&#8217;s co-founder, stems from a natural feeling of disappointment and an ego hit that is not easy to accept. At the same time, he points out that over twenty years, workflows, frameworks, programming languages, and machines have all continually evolved:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">You spend 20 years writing code as a developer, refining it, running it, seeing how it works, writing tests, and then suddenly you stop looking at the code and start talking to a tool. You experience an identity crisis because you used to identify with the code you wrote.</p>
</blockquote>



<p class="wp-block-paragraph"><strong>My interlocutor views these feelings as entirely legitimate</strong>, but encourages professionals to expand their scope and boost productivity. Ultimate purpose does not need to remain locked within a single job description when fulfillment can be found in wider responsibilities. </p>



<p class="wp-block-paragraph">This adaptation is admittedly difficult, but as he points out, once people move past the &#8220;this is useless&#8221; phase, they position themselves for rapid growth by embracing the new reality.</p>



<p class="wp-block-paragraph">Speaking from his experience as a CTO for 20 years, Izabel describes the transition to an AI-first mindset:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">These changes are quite painful. We also went through turbulence, but at some point you see that AI brings value and you have to use it. Claims about AI being prohibitively expensive often serve as mere excuses. Open-source models can already run locally on standard laptops, completely bypassing the need for intensive training in many scenarios. Ultimately, running a model and training one are two entirely different concepts. Today, hardware capabilities and overall quality are night and day compared to what was available just a few years ago.</p>
</blockquote>



<p class="wp-block-paragraph">The question may be how good an LLM you use, but you will not be able to work without it. The technology is here to stay. It is important to understand its strengths and weaknesses and use it as soon as possible.</p>



<h2 class="wp-block-heading" id="the-future-is-uncertain-but-exciting">The future is uncertain but exciting</h2>



<p class="wp-block-paragraph">Finally, when asked what the next twenty years of Infobip will look like, the answer was a candid &#8220;I don&#8217;t know.&#8221; Just as no one could have predicted the current shift, no one can definitively predict the next. Still, one thing is certain: there is immense excitement about this change. </p>



<p class="wp-block-paragraph">Within Infobip, both technical and non-technical teams are fully embracing AI. Another deep reshaping is underway, business as usual no longer exists. Instead, the industry is witnessing a real transformation:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Twenty years ago we said &#8220;We are just starting&#8221;, and now we are in the same situation again. That will probably continue for the next 20 years. Our best people keep learning new things that drive them forward instead of standing still.</p>
</blockquote>



<p class="wp-block-paragraph">This mindset feels humble, but also necessary in a time of major technological transformation. It reflects the Socratic idea that true wisdom begins with understanding how little we know.</p>



<p class="wp-block-paragraph"><em>Infobip is the publisher of ShiftMag, recognizing the need for high-quality content for developers.</em></p>
<p>The post <a href="https://shiftmag.dev/ai-first-izabel-jelenic-infobip-10156/">20 Year Old Unicorn Goes AI-First Without Mass AI Layoffs</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>We Asked 20 Developers Why They Really Got Into Tech. It Wasn&#8217;t the Money.</title>
		<link>https://shiftmag.dev/we-asked-20-developers-why-they-really-got-into-tech-it-wasnt-the-money-10101/</link>
		
		<dc:creator><![CDATA[Anastasija Uspenski]]></dc:creator>
		<pubDate>Mon, 01 Jun 2026 13:39:32 +0000</pubDate>
				<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Engineer Explains]]></category>
		<category><![CDATA[infobip]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=10101</guid>

					<description><![CDATA[<p>Twenty developers got real about their jobs: the rush of shipping something that actually works, the way a fat paycheck can make you stay longer than you probably should, and the slow death of sitting through another meeting that should've been an email.</p>
<p>The post <a href="https://shiftmag.dev/we-asked-20-developers-why-they-really-got-into-tech-it-wasnt-the-money-10101/">We Asked 20 Developers Why They Really Got Into Tech. It Wasn&#8217;t the Money.</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/05/developers_answer_shiftmag.jpg?x32039" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/05/developers_answer_shiftmag.jpg 1200w, https://shiftmag.dev/wp-content/uploads/2026/05/developers_answer_shiftmag-300x158.jpg 300w, https://shiftmag.dev/wp-content/uploads/2026/05/developers_answer_shiftmag-1024x538.jpg 1024w, https://shiftmag.dev/wp-content/uploads/2026/05/developers_answer_shiftmag-768x403.jpg 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p class="wp-block-paragraph">Ask anyone outside the industry why people go into software engineering and they&#8217;ll say: good money, remote work. Talk to the developers themselves and you get a different story.</p>



<p class="wp-block-paragraph">For most of the <a href="https://www.youtube.com/watch?v=mRWXIFC12hs" target="_blank" rel="noreferrer noopener">20 of our Infobip colleagues we interviewed</a>, it started with <strong>genuine curiosity</strong> &#8211; a need to understand how things work, then build their own. Some caught the bug in childhood, others through gaming. But the thread running through nearly every story is the same: they fell in love with the craft long before they ever thought about the salary.</p>



<p class="wp-block-paragraph"><strong>Josip Antoliš,</strong> Senior Principal Engineer, captures this sentiment:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">It felt like playing with Lego, just for older kids. It was really about building and experimenting.</p>
</blockquote>



<h2 class="wp-block-heading" id="if-money-is-the-only-reason-you-want-to-become-a-developer-you-won%e2%80%99t-make-it">If money is the only reason you want to become a developer, you won’t make it</h2>



<p class="wp-block-paragraph">Money is part of the equation, and some developers are honest about it &#8211; job security and solid pay were what first pointed them toward the field. There&#8217;s nothing wrong with that. But most will tell you it only gets you so far. </p>



<p class="wp-block-paragraph">Engineering is demanding, constantly evolving, and unforgiving to those who are just going through the motions. The developers we spoke to largely agreed: <strong>without a genuine curiosity for the craft, the motivation eventually runs dry</strong>, no matter what&#8217;s in your bank account.</p>



<p class="wp-block-paragraph"><strong>Olga Koroleva</strong>, Staff Software Engineer, explains:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"> For me, it was not money driven. I just naturally like learning new things.</p>
</blockquote>



<p class="wp-block-paragraph">Not everyone had a master plan. For some of the developers we spoke to, the path into software was <strong>less a calling and more a series of small, accidental steps</strong> like following friends into a computer science program, or stumbling onto coding in their twenties and realizing they had a knack for logical thinking and breaking problems apart.</p>



<p class="wp-block-paragraph">What matters less, it turns out, is how you got in. What keeps people thriving is the <strong>willingness to keep learning and adapting</strong> in a field that never really stands still.</p>



<p class="wp-block-paragraph">Among younger developers in particular, gaming played a surprisingly direct role &#8211; less a hobby, more an early window into how software actually works.</p>



<p class="wp-block-paragraph"><strong>Edvin Teskeredžić</strong>, Senior AI Software Engineer, remembers his Counter-Strike days:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">We used to play a lot of Counter-Strike, and to play together we had to set up servers. Later we started modifying the game, and only later realized we were actually programming.</p>
</blockquote>



<p class="wp-block-paragraph">In the end, whatever brought them to the field, most engineers find a way to grow into it. As <strong>Denis Kranjčec</strong>, Staff Engineer, puts it:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I started programming 40 years ago, and money was fine, but it was not the only thing.</p>
</blockquote>



<h2 class="wp-block-heading" id="the-best-things-about-being-a-developer">The best things about being a developer</h2>



<p class="wp-block-paragraph">When asked what they love most about the job, the answers kept circling back to the same themes.</p>



<ul class="wp-block-list">
<li>Cracking a hard problem in a clean, elegant way</li>



<li>Shipping something that actually makes life easier for people &#8211; knowing your code is quietly doing its job out in the world</li>



<li>Those rarer moments when a tangle of complex systems finally clicks into place, and what was chaos becomes something that just works</li>
</ul>



<p class="wp-block-paragraph"><strong>Creativity and problem-solving</strong> remain central themes. As Teskeredžić puts it:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I like solving practical problems and applying creative solutions.</p>
</blockquote>



<p class="wp-block-paragraph">Beyond the work itself, the setup matters too &#8211; remote work, autonomy, and long uninterrupted stretches to actually think. But as Olga Koroleva puts it, what really keeps people around is simpler than any perk:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">The best part is staying curious.</p>
</blockquote>



<h2 class="wp-block-heading" id="the-not-so-good-part-of-a-developer%e2%80%99s-career">The not-so-good part of a developer’s career</h2>



<p class="wp-block-paragraph">Ask about the downsides and the answers get a lot shorter. One word came up more than any other: <strong>meetings</strong>. Pointless ones, mostly. The kind that could&#8217;ve been an email.</p>



<p class="wp-block-paragraph">Beyond that, developers highlighted several systemic frustrations that disrupt deep focus:</p>



<ul class="wp-block-list">
<li>Constant context-switching takes a significant mental toll.<br></li>



<li>Bureaucracy and tedious reporting often fracture the time dedicated to core engineering tasks.<br></li>



<li>Navigating undocumented legacy code and parsing ambiguous logs slows development velocity.</li>
</ul>



<p class="wp-block-paragraph">There&#8217;s also the relentless pace of change. <strong>Kristina Valjak</strong>, Engineering Lead, puts it plainly:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">The speed of change means you constantly have to learn. You have to sacrifice things. It is not a job you leave at the door.</p>
</blockquote>



<p class="wp-block-paragraph">And then there&#8217;s the physical reality: long hours at a screen, tight deadlines, pressure that doesn&#8217;t let up. Even in teams doing interesting work, that combination can wear you down.</p>



<h2 class="wp-block-heading" id="would-they-choose-this-career-again-absolutely">Would they choose this career again? Absolutely.</h2>



<p class="wp-block-paragraph">When asked if they&#8217;d do it all over again, there was barely a pause. Absolutely. 100 percent. </p>



<p class="wp-block-paragraph">More pros than cons. Almost without exception, these developers would make the same choice and most believe tech still offers something few other industries can match: <strong>genuine stability and room to keep growing</strong>.</p>



<p class="wp-block-paragraph"><strong>Ivona Škorjanc</strong>, Software Engineer, remains highly optimistic:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I would still choose it. It is exciting and I see myself growing in it.</p>
</blockquote>



<p class="wp-block-paragraph">A few said they&#8217;d have <strong>invested more in the fundamentals early on</strong> &#8211; the theory, the computer science basics that tend to get skipped in the rush to learn frameworks and ship code. But that&#8217;s a minor footnote to a bigger conclusion: this field is hard, and most of them wouldn&#8217;t trade it for anything.</p>



<p class="wp-block-paragraph">Teskeredžić offers a final, inspiring perspective on the profession:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">To me, engineers are like real-world wizards. Advanced technology is like magic, and if you can be a wizard for a career, why not.</p>
</blockquote>



<p class="wp-block-paragraph">Even the ones who occasionally miss working with their hands come back to the same answer: they&#8217;d choose this path again.</p>



<p class="wp-block-paragraph"><em>Special thanks to our fellow colleagues at Infobip, the publisher of ShiftMag!</em></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="20 Developers Get Honest About Their Work" width="500" height="281" src="https://www.youtube.com/embed/mRWXIFC12hs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
<p>The post <a href="https://shiftmag.dev/we-asked-20-developers-why-they-really-got-into-tech-it-wasnt-the-money-10101/">We Asked 20 Developers Why They Really Got Into Tech. It Wasn&#8217;t the Money.</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Infobip Shift 2026 Returns to Zadar, Bringing Apple and Nvidia to the Stage</title>
		<link>https://shiftmag.dev/infobip-shift-2026-returns-to-zadar-bringing-apple-and-nvidia-to-the-stage-9585/</link>
		
		<dc:creator><![CDATA[ShiftMag]]></dc:creator>
		<pubDate>Fri, 08 May 2026 11:24:24 +0000</pubDate>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[Infobip Shift 2026]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=9585</guid>

					<description><![CDATA[<p>Infobip Shift 2026, Europe’s leading developer and AI conference, will be held in Zadar from September 13 to 15, bringing together developers and engineers from around the world once again. </p>
<p>The post <a href="https://shiftmag.dev/infobip-shift-2026-returns-to-zadar-bringing-apple-and-nvidia-to-the-stage-9585/">Infobip Shift 2026 Returns to Zadar, Bringing Apple and Nvidia to the Stage</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Last year, Infobip Shift 2026 gathered <strong>5.500 attendees from 40 countries</strong>, and this September, it returns to Zadar with an even stronger focus on world-class tech, developer careers, and responsible AI. The lineup includes leading global tech companies, including NVIDIA and Apple.</p>



<p class="wp-block-paragraph">Top experts from global tech leaders will share <strong>how they build and scale some of the world’s most complex systems</strong>, with real-world lessons from production environments. </p>



<p class="wp-block-paragraph">Across multiple stages, the program features panels, workshops, and talks focused on deep technical insight and practical experience. Speakers include <a href="https://www.linkedin.com/in/katie-gamanji/" target="_blank" rel="noreferrer noopener">Katie Gamanji </a>(Apple), <a href="https://www.linkedin.com/in/igor-dmochowski/" target="_blank" rel="noreferrer noopener">Igor Dmochowski</a><strong> </strong>(NVIDIA), <a href="https://www.linkedin.com/in/svenpeters73/" target="_blank" rel="noreferrer noopener">Sven Peters</a>, <a href="https://github.com/Betta-Lyon-Delsordo" target="_blank" rel="noreferrer noopener">Bette Lyon Delsordo</a>, and many others.</p>



<h2 class="wp-block-heading" id="you-don%e2%80%99t-need-silicon-valley-for-world-class-tech">You don’t need silicon valley for world-class tech</h2>



<p class="wp-block-paragraph">Igor Dmochowski, Head of Developer Relations for Central and Eastern Europe at NVIDIA, said that Infobip Shift is already internationally recognized, and added that he is especially excited to <strong>meet local developers</strong> whose potential is increasingly visible on the global stage:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Croatia has exceptional technological talent and a strong AI community, and I’m glad to be part of an event that puts this into a global context. True tech innovation comes from connecting people and ideas, and Shift has that energy.</p>
</blockquote>



<p class="wp-block-paragraph">On the other hand, <a href="https://www.linkedin.com/in/ivanbrezakbrkan/" id="https://www.linkedin.com/in/ivanbrezakbrkan/">Ivan Brezak Brkan</a>, the Director of Developer Experience at Infobip, said that Infobip Shift is rightfully <strong>the largest tech conference in this part of Europe</strong> and one of the largest in the world. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">You don’t have to, especially in today’s conditions, travel to the other side of the world to exchange experiences with people whose technological solutions power the world. If you want to advance your career not only through knowledge but also through connections, you need to be at Shift.</p>
</blockquote>



<h2 class="wp-block-heading" id="no-professional-speakers-and-marketing-presentations">No professional speakers and marketing presentations</h2>



<p class="wp-block-paragraph">&#8220;Infobip Shift is built on two foundations: <strong>high-quality content</strong> and a <strong>relaxed atmosphere</strong> that encourages networking. We ensure strong content by carefully selecting speakers who share real-world experience from people actively working in the industry,&#8221; said <strong>Stipe Cigic</strong>, Director of the Infobip Shift, adding:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">We avoid professional speakers, marketing-driven presentations, and topics overloaded with buzzwords and hype. That has become especially challenging today, when roughly every second submitted topic is somehow related to AI. Our speakers are real developers &#8211; people whose knowledge our audience truly values.</p>
</blockquote>



<p class="wp-block-paragraph">He also said the second foundation of Shift is its relaxed, laid-back atmosphere &#8211; a vibe the team aims to create each year. It can’t be forced, but they work to make the event feel light, summery, and welcoming. That kind of atmosphere makes networking more natural and fun.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Meeting new people is the biggest opportunity for attendees. I know at least 2 projects that started from casual chats at last year’s Shift. High-quality content plus a summer vibe, that’s what makes it memorable.</p>
</blockquote>



<h2 class="wp-block-heading" id="knowledge-gets-you-started-networking-takes-you-further">Knowledge gets you started, networking takes you further</h2>



<p class="wp-block-paragraph">With increasing reports of layoffs and disruption in the global IT industry, networking is becoming even more important. Stipe says the goal is for developers to leave Shift not only with new knowledge, but also with <strong>greater confidence and reassurance in their skills, value</strong>, and future in the industry.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I believe that, when it comes to networking and professional connections, Shift has no real competition in this part of Europe within the developer industry. A junior developer can casually grab a coffee with a senior engineer from companies like Netflix. The exchange of knowledge and experience in conversations like that is something our community rarely finds at nearby conferences.</p>
</blockquote>



<p class="wp-block-paragraph">Stipe concluded that Shift is a long-term platform developers can rely on, not just to meet peers, but also <strong>potential employers, clients, and partners</strong>. It offers many opportunities, whether for networking or simply enjoying great talks, food, and drinks under the Mediterranean sun.</p>



<h3 class="wp-block-heading" id="interested-in-infobip-shift-explore-what-we-have-planned">Interested in Infobip Shift? <a href="https://shift.infobip.com/" target="_blank" rel="noreferrer noopener">Explore what we have planned</a>!</h3>


<figure class="wp-block-post-featured-image"><img loading="lazy" decoding="async" width="1200" height="630" src="https://shiftmag.dev/wp-content/uploads/2026/05/shift_1.png?x32039" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/05/shift_1.png 1200w, https://shiftmag.dev/wp-content/uploads/2026/05/shift_1-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/05/shift_1-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/05/shift_1-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure><p>The post <a href="https://shiftmag.dev/infobip-shift-2026-returns-to-zadar-bringing-apple-and-nvidia-to-the-stage-9585/">Infobip Shift 2026 Returns to Zadar, Bringing Apple and Nvidia to the Stage</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<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" 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?</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 loading="lazy" decoding="async" width="1024" height="256" src="https://shiftmag.dev/wp-content/uploads/2026/04/denis-1024x256.png?x32039" 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="auto, (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 loading="lazy" decoding="async" width="1024" height="256" src="https://shiftmag.dev/wp-content/uploads/2026/04/mario-1024x256.png?x32039" 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="auto, (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" 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?</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 loading="lazy" decoding="async" width="1024" height="256" src="https://shiftmag.dev/wp-content/uploads/2026/04/marina_final-1024x256.png?x32039" 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="auto, (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" id="how-do-you-see-ai-toolsimpactinglong-term-developer-careers">How do you see AI tools&nbsp;impacting&nbsp;long-term developer careers?</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?x32039" 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" id="section"><strong>&nbsp;</strong></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?x32039" 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>42% of Code Is Now AI-Assisted!</title>
		<link>https://shiftmag.dev/state-of-code-2025-7978/</link>
		
		<dc:creator><![CDATA[Anastasija Uspenski]]></dc:creator>
		<pubDate>Thu, 12 Feb 2026 13:13:57 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[Developer Survey]]></category>
		<category><![CDATA[State of code 2025]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=7978</guid>

					<description><![CDATA[<p>That number is expected to rise to 65% within two years. Yet 96% of developers, according to this Sonar research, say they don’t fully trust AI-generated code.</p>
<p>The post <a href="https://shiftmag.dev/state-of-code-2025-7978/">42% of Code Is Now AI-Assisted!</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em><strong>AI adoption is surging, but so are concerns. See the trust data: <a href="https://shiftmag.dev/stack-overflow-survey-2025-ai-5653/">84% of developers use AI, yet 46% don&#8217;t trust the output</a>.</strong></em></p>



<p class="wp-block-paragraph">In 2025, Sonar surveyed over&nbsp;<strong>1.100 developers worldwide</strong>&nbsp;to see how software engineering is evolving. The findings show AI is now central to development – but it hasn’t made the job easier, only reshaped it.</p>



<p class="wp-block-paragraph">Developers now write code faster than ever. At the same time, they spend more time questioning, reviewing, and validating what gets shipped. Productivity has increased. Confidence has not kept pace. This tension defines the current <a href="https://www.sonarsource.com/state-of-code-developer-survey-report.pdf" target="_blank" rel="noreferrer noopener">&#8220;State of Code&#8221; research</a>.</p>



<h2 class="wp-block-heading" id="ai-is-no-longer-experimental-it%e2%80%99s-operational">AI is no longer experimental, it’s operational!</h2>



<ul class="wp-block-list">
<li>72% of developers who use AI coding tools rely on them daily</li>



<li>Developers estimate that 42% of the code they commit is AI-assisted</li>



<li>They expect that number to rise to 65% by 2027</li>
</ul>



<p class="wp-block-paragraph">AI-assisted coding has shifted from novelty to routine. Among developers who have tried AI tools, most now use them daily. <strong>Many estimate that more than 40% of the code they commit includes AI assistance</strong>. They expect that percentage to grow significantly in the next two years.</p>



<p class="wp-block-paragraph">Developers use AI across the full spectrum of work: prototypes, internal tools, customer-facing products, and even business-critical systems. AI no longer supports side experiments. It participates directly in production workflows.</p>



<p class="wp-block-paragraph"><em><strong>Instead of fighting the tool, rethink how you use it. <a href="https://shiftmag.dev/how-uber-engineers-use-ai-agents-8617/">How Uber engineers shifted from writing code with AI to assigning it work</a>: a different approach to the productivity problem.</strong></em></p>



<p class="wp-block-paragraph">This level of integration signals a structural shift in software engineering. <strong>Teams no longer ask whether to use AI. They focus on how to use it responsibly</strong>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="476" src="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-20.53.04-1024x476.png?x32039" alt="" class="wp-image-7984" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-20.53.04-1024x476.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-20.53.04-300x140.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-20.53.04-768x357.png 768w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-20.53.04.png 1376w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="do-developers-trust-ai">Do developers trust AI?</h2>



<ul class="wp-block-list">
<li>58% use it in business-critical services</li>



<li>88% use AI for prototypes and proof-of-concept work</li>



<li>83% use it for internal production systems</li>



<li>73% integrate it into customer-facing applications</li>
</ul>



<p class="wp-block-paragraph">Developers consistently report that AI makes them faster. Most say AI helps them solve problems more efficiently and reduces time spent on repetitive tasks. Many even report increased job satisfaction because they can offload boilerplate and mechanical work.</p>



<p class="wp-block-paragraph">However, speed does not equal certainty. <strong>Nearly all developers (96%) express doubts about the reliability of AI-generated code</strong>. They acknowledge that AI often produces output that looks correct at first glance but contains subtle errors or hidden flaws. This creates a trust deficit.</p>



<p class="wp-block-paragraph">Despite this skepticism, not all developers consistently verify AI output before committing it. The pressure to ship features quickly often outweighs the discipline of thorough review. As a result, teams face a new bottleneck: verification.</p>



<p class="wp-block-paragraph"><strong>Reviewing AI-generated code frequently demands more effort than reviewing human-written code</strong>. Developers must reconstruct intent, validate assumptions, and check edge cases without knowing how the model arrived at its solution. AI compresses the time spent writing code but expands the time required to evaluate it.</p>



<p class="wp-block-paragraph">In this environment, confidence &#8211; not velocity &#8211; becomes the true measure of engineering maturity.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="472" src="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-20.59.37-1024x472.png?x32039" alt="" class="wp-image-7987" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-20.59.37-1024x472.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-20.59.37-300x138.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-20.59.37-768x354.png 768w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-20.59.37.png 1372w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="ai-doesn%e2%80%99t-remove-toil-it-changes-it">AI doesn’t remove toil, it changes it!</h2>



<p class="wp-block-paragraph">75% believe AI reduces toil. However, time allocation data reveals a more complex picture:</p>



<ul class="wp-block-list">
<li>Developers still spend roughly 23–25% of their work week on low-value or repetitive tasks</li>



<li>This percentage remains consistent regardless of AI usage frequency</li>
</ul>



<p class="wp-block-paragraph"><strong>One of the promises of AI tools involved reducing developer toil</strong>: repetitive, frustrating tasks such as writing documentation, generating tests, or navigating poorly structured codebases. Many developers believe AI reduces certain kinds of toil. They report improvements in documentation quality, test coverage, and refactoring efficiency.</p>



<p class="wp-block-paragraph">However, the overall proportion of time developers spend on low-value work has not meaningfully decreased. Instead, AI shifts the nature of toil. Developers now spend less time writing boilerplate and more time validating AI suggestions. <strong>They spend less time drafting documentation and more time correcting generated code</strong>. Traditional frustrations have not disappeared; they have transformed.</p>



<p class="wp-block-paragraph">This dynamic challenges simplistic narratives about AI productivity gains. AI does not eliminate friction. It redistributes it.</p>



<p class="wp-block-paragraph">Teams that recognize this reality can adapt workflows accordingly. Teams that assume AI automatically saves time risk underestimating the verification cost.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="564" src="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.01.51-1024x564.png?x32039" alt="" class="wp-image-7989" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.01.51-1024x564.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.01.51-300x165.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.01.51-768x423.png 768w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.01.51.png 1370w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="technical-debt-reduction-and-acceleration-at-once">Technical debt: reduction and acceleration at once</h2>



<p class="wp-block-paragraph">Positive impact:</p>



<ul class="wp-block-list">
<li>93% report at least one improvement related to technical debt</li>



<li>57% see better documentation</li>



<li>53% report improved testing or debugging</li>



<li>Nearly half report easier refactoring</li>
</ul>



<p class="wp-block-paragraph">Negative impact:</p>



<ul class="wp-block-list">
<li>88% report at least one negative consequence</li>



<li>53% say AI generates code that appears correct but is unreliable</li>



<li>40% say it produces unnecessary or duplicative code</li>
</ul>



<p class="wp-block-paragraph">AI influences technical debt in both directions. On the positive side, <strong>developers use AI to modernize legacy code, generate missing tests, improve documentation, and refactor inefficient structures.</strong> These activities reduce long-standing debt and improve maintainability.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="715" src="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.06.29-1024x715.png?x32039" alt="" class="wp-image-7990" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.06.29-1024x715.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.06.29-300x209.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.06.29-768x536.png 768w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.06.29.png 1364w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">On the negative side, AI sometimes generates redundant, overly verbose, or structurally weak code. Developers frequently encounter code that appears correct but introduces subtle reliability problems. When teams integrate such code without rigorous review, they create new debt.</p>



<p class="wp-block-paragraph"><strong>AI therefore acts as both a debt reducer and a debt accelerator</strong>. Managing this tension requires deliberate governance. Teams must treat AI contributions as first-class code changes subject to the same standards as human-written code. Automated testing, static analysis, and clear architectural principles become even more critical in this environment.</p>



<p class="wp-block-paragraph">Technical debt already ranks among developers’ top frustrations. Uncontrolled AI usage can amplify that burden rather than alleviate it.</p>



<h2 class="wp-block-heading" id="what-is-shadow-ai">What is shadow AI?</h2>



<p class="wp-block-paragraph">Most used tools:</p>



<ul class="wp-block-list">
<li>GitHub Copilot (75%)</li>



<li>ChatGPT (74%)</li>



<li>Claude (48%)</li>



<li>Google Codey/Duet (37%)</li>



<li>Cursor (31%)</li>
</ul>



<p class="wp-block-paragraph"><strong>GitHub Copilot and ChatGPT dominate AI-assisted coding usage</strong>, but developers rely on a growing ecosystem of tools. Many teams use multiple AI platforms simultaneously, selecting each for specific strengths. This fragmentation creates flexibility but introduces complexity.</p>



<p class="wp-block-paragraph">A critical risk signal:</p>



<ul class="wp-block-list">
<li>35% of developers use AI tools through personal accounts</li>



<li>52% of ChatGPT users access it outside company-managed environments</li>



<li>57% worry about exposing sensitive data</li>
</ul>



<p class="wp-block-paragraph">Developers often access AI tools through personal accounts rather than company-approved environments. This behavior reflects demand for productivity but introduces governance risks. When developers paste proprietary code into unmanaged AI systems, organizations lose visibility and control.</p>



<p class="wp-block-paragraph">Security concerns rank among the most significant worries associated with AI adoption. <strong>Developers themselves recognize the risk of exposing sensitive data</strong>.</p>



<p class="wp-block-paragraph">Organizations must respond pragmatically. Banning AI rarely works. Developers adopt tools that help them work faster. Instead, companies should provide secure, sanctioned AI environments and define clear usage guidelines. Enablement, not prohibition, produces safer outcomes.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="459" src="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.14.42-1024x459.png?x32039" alt="" class="wp-image-7991" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.14.42-1024x459.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.14.42-300x134.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.14.42-768x344.png 768w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-11-at-21.14.42.png 1366w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="the-experience-divide">The experience divide</h2>



<p class="wp-block-paragraph"><strong>Less experienced developers</strong>:</p>



<ul class="wp-block-list">
<li>Use AI for understanding codebases</li>



<li>Rely more heavily on AI for implementation</li>



<li>Estimate a higher percentage of AI-assisted code</li>
</ul>



<p class="wp-block-paragraph"><strong>Senior developers</strong>:</p>



<ul class="wp-block-list">
<li>Use AI more selectively</li>



<li>Focus on review, optimization, and refactoring</li>



<li>Express higher skepticism</li>
</ul>



<p class="wp-block-paragraph">AI does not affect all developers equally. Less-experienced developers tend to adopt new AI tools more aggressively. They use AI to understand unfamiliar codebases, generate implementations, and explore new frameworks. For them, AI functions as both assistant and tutor.</p>



<p class="wp-block-paragraph"><strong>More experienced developers integrate AI differently</strong>. They rely on it to review code, optimize performance, and assist with maintenance tasks. Their experience enables them to identify flaws more quickly and apply AI selectively.</p>



<p class="wp-block-paragraph">Junior developers often trust AI more readily. Senior developers approach it more cautiously. This difference does not reflect competence; it reflects perspective.</p>



<p class="wp-block-paragraph">High-performing teams combine both approaches. Junior engineers introduce experimentation and speed. Senior engineers provide oversight and architectural discipline. Together, they mitigate risk while capturing gains.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="496" src="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-12-at-10.51.24-1024x496.png?x32039" alt="" class="wp-image-7998" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-12-at-10.51.24-1024x496.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-12-at-10.51.24-300x145.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-12-at-10.51.24-768x372.png 768w, https://shiftmag.dev/wp-content/uploads/2026/02/Screenshot-2026-02-12-at-10.51.24.png 1368w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="what-this-means-for-engineering-teams">What this means for engineering teams?</h2>



<p class="wp-block-paragraph"><a href="https://www.sonarsource.com/state-of-code-developer-survey-report.pdf" target="_blank" rel="noreferrer noopener">The State of Code 2025</a> reveals a profession in transition. AI increases output but raises the bar for validation. It reduces certain manual burdens while introducing new forms of cognitive load. It offers opportunities to address legacy debt while risking new complexity.</p>



<p class="wp-block-paragraph"><strong>The central lesson does not concern speed. It concerns confidence</strong>. Developers must treat AI as a powerful collaborator that requires supervision. Engineering leaders must invest in testing infrastructure, review practices, and secure tooling environments. Organizations must acknowledge that productivity improvements depend on disciplined integration, not blind adoption.</p>



<p class="wp-block-paragraph">Developers no longer compete on how quickly they can type code. They compete on how effectively they can evaluate, refine, and ship trustworthy systems.</p>



<p class="wp-block-paragraph">The tools have changed. The responsibility has not. Teams that focus on clarity, code quality, and secure AI integration will thrive in this new environment. <strong>Teams that chase velocity without verification will accumulate invisible risk</strong>.</p>



<p class="wp-block-paragraph"></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/02/SM.Naslovna.png?x32039" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/02/SM.Naslovna.png 1200w, https://shiftmag.dev/wp-content/uploads/2026/02/SM.Naslovna-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/02/SM.Naslovna-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/02/SM.Naslovna-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure><p>The post <a href="https://shiftmag.dev/state-of-code-2025-7978/">42% of Code Is Now AI-Assisted!</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Developers, your EGO is the real bug in the system</title>
		<link>https://shiftmag.dev/developers-your-ego-is-the-real-bug-in-the-system-7657/</link>
		
		<dc:creator><![CDATA[Ivan Kranjec]]></dc:creator>
		<pubDate>Wed, 21 Jan 2026 11:23:44 +0000</pubDate>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=7657</guid>

					<description><![CDATA[<p>Software teams don’t implode because of bad code - they implode because someone really needed to win the argument about it.</p>
<p>The post <a href="https://shiftmag.dev/developers-your-ego-is-the-real-bug-in-the-system-7657/">Developers, your EGO is the real bug in the system</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/01/ivan-kranjec-2.png?x32039" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/01/ivan-kranjec-2.png 1200w, https://shiftmag.dev/wp-content/uploads/2026/01/ivan-kranjec-2-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/01/ivan-kranjec-2-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/01/ivan-kranjec-2-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>


<p class="wp-block-paragraph">Picture a team arguing over whether to keep a global Redux store or roll out a context-only solution for a new React component. Minutes later, someone pushes a change that breaks the whole test suite. </p>



<p class="wp-block-paragraph">A week later, <strong>another debate erupts</strong> about whether the REST API should be versioned or use a graph-based approach. And there&#8217;s always that one Git rebase that turns a quiet sprint into a full-blown firefight.</p>



<p class="wp-block-paragraph">The line between brilliant innovation and productivity meltdown is thinner than you think &#8211; and <strong>ego is often the culprit lurking behind every heated Slack thread</strong> and passive-aggressive code comment.</p>



<h2 class="wp-block-heading" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-WhatisEgolessDevelopment?">What is egoless development?</h2>



<p class="wp-block-paragraph">Egoless development is <strong>not about surrendering conviction or becoming passive</strong>. It&#8217;s about letting the problem drive the solution, not the other way around. Gerald Weinberg, in his seminal work&nbsp;<em><a href="https://www.goodreads.com/book/show/1660754.The_Psychology_of_Computer_Programming" target="_blank" rel="noreferrer noopener">The Psychology of Computer Programming</a></em>, wrote: &#8220;The most powerful learning occurs when someone produces a better solution than you had imagined.&#8221; If your ego can&#8217;t digest a &#8220;better&#8221; or &#8220;different&#8221; answer, you have no business leading a software team.</p>



<p class="wp-block-paragraph">In practice, egoless engineering means:</p>



<ul class="wp-block-list">
<li><strong>Staying open to new ideas</strong>&nbsp;&#8211; even if they come from a junior teammate or an external library.</li>



<li><strong>Focusing on the product&#8217;s value</strong>&nbsp;&#8211; not on proving your own architectural choices.</li>



<li><strong>Accepting feedback without defensiveness</strong>&nbsp;&#8211; because every line of code is a hypothesis, not a manifesto.</li>



<li><strong>Separating self-worth from code quality</strong>&nbsp;&#8211; your value isn&#8217;t measured by how rarely your code needs revision.</li>
</ul>



<h2 class="wp-block-heading" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-HowEgoShowsUpandUnderminesEverything">How ego shows up and undermines everything</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-left" data-align="left"><strong>Defensive responses to feedback</strong></td><td class="has-text-align-left" data-align="left">&#8220;That was how we did it before.&#8221;</td><td class="has-text-align-left" data-align="left">Stifles incremental improvement and discourages team members from speaking up</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>Not-Invented-Here (NIH) syndrome</strong></td><td class="has-text-align-left" data-align="left">&#8220;We can&#8217;t use that library; it&#8217;s not ours.&#8221;</td><td class="has-text-align-left" data-align="left">Drives tech debt, missed bugs, and stagnation while reinventing solved problems</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>Micro-management</strong></td><td class="has-text-align-left" data-align="left">&#8220;I will rewrite this myself.&#8221;</td><td class="has-text-align-left" data-align="left">Silences creativity, hurts velocity, and signals distrust</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>Selective listening</strong></td><td class="has-text-align-left" data-align="left">&#8220;We only care about the UI.&#8221;</td><td class="has-text-align-left" data-align="left">Neglects backend or infrastructure needs, creating systemic weaknesses</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>Knowledge hoarding</strong></td><td class="has-text-align-left" data-align="left">&#8220;I&#8217;m the only one who understands this module.&#8221;</td><td class="has-text-align-left" data-align="left">Creates single points of failure and prevents team growth</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>Status-driven architecture</strong></td><td class="has-text-align-left" data-align="left">&#8220;Let&#8217;s use [trendy tech] because it looks good on my resume.&#8221;</td><td class="has-text-align-left" data-align="left">Prioritizes personal branding over product needs</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-Egoerodestrust,inflatestheperceptionofindividualcontribution,andturnscollaborationintoazero-sumgame.Theconsequencesrippleoutward:misseddeadlines,higherbugcounts,knowledgesilos,andultimately,alossoft">Ego erodes trust, inflates the perception of individual contribution, and turns collaboration into a zero-sum game. The consequences ripple outward: missed deadlines, higher bug counts, knowledge silos, and ultimately, a loss of team morale that drives your best people toward the exit.</p>
</blockquote>



<h2 class="wp-block-heading" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-ThePsychologyBehindCodeOwnership">The psychology behind code ownership</h2>



<p class="wp-block-paragraph">When we write code, our brains treat it as an extension of ourselves. Neuroscience research shows that <strong>criticism of our work activates the same neural pathways as physical threats</strong>. This is why a simple &#8220;This could be refactored&#8221; comment can feel like a personal attack.</p>



<p class="wp-block-paragraph">Understanding this psychological reality helps us build better defenses:</p>



<ul class="wp-block-list">
<li><strong>Recognize the feeling</strong>&nbsp;&#8211; When defensiveness arises, pause and acknowledge it</li>



<li><strong>Reframe criticism as collaboration</strong>&nbsp;&#8211; Someone improving your code is helping you, not attacking you</li>



<li><strong>Build emotional distance</strong>&nbsp;&#8211; Use phrases like &#8220;the code&#8221; instead of &#8220;my code&#8221;</li>



<li><strong>Practice receiving feedback</strong>&nbsp;&#8211; Like any skill, gracefully accepting criticism improves with practice</li>
</ul>



<h2 class="wp-block-heading" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-Real-LifeExamples:WhenEgoDoesDamage">Real examples of ego at work</h2>



<p class="wp-block-paragraph" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-LinusTorvaldsandtheLinuxKernelCommunity">Linus Torvalds, creator of Linux, became known for a <a href="https://www.youtube.com/watch?v=JZ017D_JOPY" target="_blank" rel="noreferrer noopener">harsh communication style</a> on the <a href="https://lkml.org/">Linux Kernel Mailing List</a>, often going beyond technical feedback.</p>



<p class="wp-block-paragraph">In 2015, during the <a href="https://lkml.iu.edu/hypermail/linux/kernel/1510.3/02866.html" target="_blank" rel="noreferrer noopener">&#8220;Brain Damage&#8221; incident</a>, he dismissed a developer’s security proposal as &#8220;mindless security theater&#8221; and called it &#8220;brain damaged.&#8221; The developer stopped contributing, and the security concern became a real exploit two years later.</p>



<p class="wp-block-paragraph">The fallout? <strong>Talented contributors left</strong>, community diversity dropped, and valid concerns were ignored based on who raised them.</p>



<p class="wp-block-paragraph">After years of this, Torvalds took a break and issued a <a href="https://lkml.org/lkml/2018/9/16/167" target="_blank" rel="noreferrer noopener">public apology in 2018</a>, acknowledging that his ego had harmed the project and committing to a Code of Conduct.</p>



<p class="wp-block-paragraph" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-LinusTorvaldsandtheLinuxKernelCommunity">Even brilliant technical leaders can cause <strong>real damage when ego outweighs empathy</strong> &#8211; but egoless engineering is a conscious choice.</p>



<h2 class="wp-block-heading" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-Real-LifeExamples:EgolessCommunicationinAction">Now let&#8217;s see egoless communication in action</h2>



<p class="wp-block-paragraph">This is my own example. It was 2:37 PM when my code hit production. By 3:00 PM, our monitoring&nbsp; tool sent alerts all over and <strong>showed 50 errors</strong>. New users couldn&#8217;t sign up. Existing users couldn&#8217;t complete their profiles.</p>



<p class="wp-block-paragraph"><strong>This is where most teams spiral.</strong> Blame gets assigned. Confidence gets crushed. Someone becomes the cautionary tale.</p>



<p class="wp-block-paragraph">Not this team.</p>



<p class="wp-block-paragraph"><strong>The team lead&#8217;s first message:</strong>&nbsp;&#8220;Okay, let&#8217;s work the problem. Ivan, walk us through what happened &#8211; no judgment, just facts. Everyone else, what do we need to stabilize right now?&#8221;</p>



<p class="wp-block-paragraph"><strong>My response:</strong>&nbsp;&#8220;I skipped the integration test because I thought it was just an isolated signup flow change. Clearly, I was wrong. I can roll back immediately, then we need to figure out why our CI didn&#8217;t catch this.&#8221;</p>



<p class="wp-block-paragraph">Ten minutes later, <strong>production was stable</strong>. The retrospective didn&#8217;t focus on my mistake &#8211; it focused on <strong>the process gap</strong>. Why weren&#8217;t integration tests enforced for all changes? How could CI catch this automatically?</p>



<p class="wp-block-paragraph">System got fixed and the whole team started advocating for comprehensive testing.</p>



<h2 class="wp-block-heading" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-FromPridetoPurpose">Lead with purpose, not ego</h2>



<p class="wp-block-paragraph">The antidote to ego-driven culture is a <strong>purpose-driven mindset</strong>. Put the team first: &#8220;Ship better products. Learn together. Celebrate collective wins.&#8221;</p>



<p class="wp-block-paragraph">Adopt core values such as:</p>



<ul class="wp-block-list">
<li><strong>Open collaboration</strong>&nbsp;&#8211; Everyone&#8217;s input matters, regardless of tenure or title.</li>



<li><strong>Continuous improvement</strong>&nbsp;&#8211; No single person owns the ship; we all keep it afloat.</li>



<li><strong>Shared ownership</strong>&nbsp;&#8211; Success is a team metric, not a résumé headline.</li>



<li><strong>Blameless culture</strong>&nbsp;&#8211; Focus on systems and processes, not individual fault.</li>



<li><strong>Intellectual humility</strong>&nbsp;&#8211; &#8220;I don&#8217;t know&#8221; is a strength, not a weakness.</li>
</ul>



<p class="wp-block-paragraph">These values create a safety net that lets people experiment, fail fast, and iterate without fear of ego-related retribution.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://shiftmag.dev/wp-content/uploads/2026/01/ivan-kranjec-1024x538.png?x32039" alt="" class="wp-image-7704" srcset="https://shiftmag.dev/wp-content/uploads/2026/01/ivan-kranjec-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/01/ivan-kranjec-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/01/ivan-kranjec-768x403.png 768w, https://shiftmag.dev/wp-content/uploads/2026/01/ivan-kranjec.png 1500w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Build egoless teams by swapping blame for curiosity, coffee chats for status updates, code reviews for conversations, and hero worship for shared learning, rotating ownership, and loud celebration of <em>we</em> wins.</figcaption></figure>



<h2 class="wp-block-heading" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-StrategiesforCultivatingEgolessTeams">How to cultivate egoless teams?</h2>



<p class="wp-block-paragraph" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-1.MorningCoffeeFeedbackSessions"><strong>1. Morning coffee feedback sessions</strong></p>



<p class="wp-block-paragraph">Schedule a quick, informal chat with each teammate once a month.</p>



<p class="wp-block-paragraph"><strong>Purpose:</strong>&nbsp;Surface concerns early, show genuine interest, reinforce the &#8220;we&#8221; narrative.</p>



<p class="wp-block-paragraph"><strong>Pro tip:</strong>&nbsp;Keep it casual &#8211; grab actual coffee, go for a walk, or just sit outside the usual meeting room environment.</p>



<p class="wp-block-paragraph" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-2.CodeReviewasConversation"><strong>2. Code review as conversation</strong></p>



<p class="wp-block-paragraph">Treat every PR as a dialogue, not a verdict.</p>



<p class="wp-block-paragraph"><strong>Instead of:</strong>&nbsp;&#8220;Why did you do that?&#8221;<br><strong>Try:</strong>&nbsp;&#8220;I&#8217;m curious about your approach to X &#8211; what tradeoffs did you consider?&#8221;</p>



<p class="wp-block-paragraph"><strong>Key practices:</strong></p>



<ul class="wp-block-list">
<li>Assume good intent always</li>



<li>Ask questions before making statements</li>



<li>Provide context for your suggestions</li>



<li>Praise the good before noting improvements</li>
</ul>



<p class="wp-block-paragraph" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-3.Process-FocusedRetrospectives"><strong>3. Process-focused retrospectives</strong></p>



<p class="wp-block-paragraph">Avoid blame, focus on improving the workflow.</p>



<p class="wp-block-paragraph"><strong>Outcome:</strong>&nbsp;The team learns to iterate on their own practices, identifying systemic issues rather than scapegoating individuals.</p>



<p class="wp-block-paragraph"><strong>Framework to try:</strong>&nbsp;Use &#8220;What went well? What could be better? What will we try next?&#8221; instead of &#8220;Who caused the production incident?&#8221;</p>



<p class="wp-block-paragraph" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-4.CelebrateTeamWins"><strong>4. Celebrate team wins</strong></p>



<p class="wp-block-paragraph">Highlight milestones that benefited the whole product, not individual heroics.</p>



<p class="wp-block-paragraph"><strong>Effect:</strong>&nbsp;Reinforces that value comes from collaboration. Consider a &#8220;Team Win Thursday&#8221; where you spotlight collaborative achievements in your all-hands.</p>



<p class="wp-block-paragraph" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-5.RotateResponsibilities"><strong>5. Rotate responsibilities</strong></p>



<p class="wp-block-paragraph">Give everyone a chance to lead a sprint, own a component, or make architectural decisions.</p>



<p class="wp-block-paragraph"><strong>Result:</strong>&nbsp;Empowers diverse viewpoints and reduces power-centered thinking. It also prevents knowledge silos and builds empathy for different roles.</p>



<p class="wp-block-paragraph" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-7.Createa&quot;LearningDebt&quot;Board"><strong>6. Create a &#8220;learning debt&#8221; board</strong></p>



<p class="wp-block-paragraph">Just like technical debt, track what the team needs to learn.</p>



<p class="wp-block-paragraph"><strong>How it works:</strong>&nbsp;Anyone can add skills or knowledge gaps. The team prioritizes learning together through lunch-and-learns, workshops, or dedicated study time. This normalizes not knowing everything.</p>



<h2 class="wp-block-heading" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-WhyPurpose-DrivenTeamsExcel">Purpose-driven teams really excel</h2>



<p class="wp-block-paragraph">The data backs up the philosophy:</p>



<ul class="wp-block-list">
<li><strong>Faster problem solving</strong>&nbsp;&#8211; Collective knowledge surfaces solutions faster.</li>



<li><strong>Higher-quality products</strong>&nbsp;&#8211; Diverse eyes catch more bugs; studies show pair programming can reduce bugs by 15-50%.</li>



<li><strong>Happier teams</strong>&nbsp;&#8211; People feel valued beyond ego metrics.</li>



<li><strong>Lower turnover</strong>&nbsp;&#8211; People stay when they feel part of something bigger; psychological safety is the #1 predictor of team success (Google&#8217;s Project Aristotle).</li>



<li><strong>Innovation acceleration</strong>&nbsp;&#8211; When failure isn&#8217;t punished, experimentation flourishes.</li>
</ul>



<p class="wp-block-paragraph">In our own team, we&#8217;ve seen the difference. The <strong>&#8220;Misfit Days&#8221; workshops</strong> we introduced &#8211; short, daily stand-ups where anyone can bring a friction point- have slashed bug-backlog time by 35% and doubled the rate of new feature delivery. More importantly, our employee satisfaction scores jumped 28 points in six months.</p>



<h2 class="wp-block-heading" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-WarningSignsYourTeamHasanEgoProblem">Warning signs your team has an ego problem</h2>



<p class="wp-block-paragraph">Watch for these red flags:</p>



<ol class="wp-block-list">
<li><strong>Pull requests sit for days</strong>&nbsp;because no one wants to critique the senior dev.</li>



<li><strong>&#8220;I told you so&#8221; moments</strong>&nbsp;are celebrated instead of collective problem-solving.</li>



<li><strong>Knowledge hoarding</strong>&nbsp;where individuals protect &#8220;their&#8221; domains.</li>



<li><strong>Defensive Slack threads</strong>&nbsp;that spiral into 47-message arguments over syntax.</li>



<li><strong>Silent meetings</strong>&nbsp;where juniors don&#8217;t speak up for fear of looking stupid.</li>



<li><strong>Resume-driven development</strong>&nbsp;where tech choices prioritize personal branding.</li>



<li><strong>Hero culture</strong>&nbsp;where all-nighters and firefighting are glorified over prevention.</li>
</ol>



<p class="wp-block-paragraph">If you recognize three or more of these in your team, <strong>it&#8217;s time to intervene</strong>.</p>



<h2 class="wp-block-heading" id="DRAFT:PuttingPurposeOverPride:EgolessDevelopmentforTeams-Conclusion">What should I do?</h2>



<p class="wp-block-paragraph">Ego is a silent saboteur that thrives in the quiet corners of code reviews and pull-request comments. It whispers that your solution is the only solution, that criticism is an attack, that admitting uncertainty is weakness. But the best engineering teams know differently.</p>



<p class="wp-block-paragraph">By embracing egoless engineering &#8211; focusing on shared purpose, valuing every voice, and making collaboration the default &#8211; we <strong>turn potential productivity meltdowns into engines of innovation</strong>. The code improves, the products ship faster, and most importantly, people actually enjoy coming to work.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Remember: The best code you&#8217;ll ever write is the code you wrote with others. The best solution you&#8217;ll ever implement is the one that made someone else&#8217;s idea better. And the best career move you&#8217;ll ever make is building a reputation as someone who makes everyone around them better.</p>
</blockquote>



<p class="wp-block-paragraph">Starting tomorrow:</p>



<ul class="wp-block-list">
<li><strong>Implement a monthly open-feedback routine</strong>&nbsp;&#8211; Put it on the calendar now.</li>



<li><strong>Audit your code review comments</strong>&nbsp;&#8211; Are you asking questions or issuing verdicts?</li>



<li><strong>Celebrate a team win</strong>&nbsp;&#8211; Find one this week and make noise about it.</li>



<li><strong>Try one new strategy</strong>&nbsp;&#8211; Pick from the list above and experiment for a sprint.</li>
</ul>



<p class="wp-block-paragraph">Every idea is respected. Constructive feedback is not just welcome; it&#8217;s required. Success is measured by shared achievements, not individual credit.</p>



<p class="wp-block-paragraph"><a href="https://confluence.infobip.com/spaces/~ikranjec/pages/803508256/DRAFT+Putting+Purpose+Over+Pride+Egoless+Development+for+Teams"></a></p>
<p>The post <a href="https://shiftmag.dev/developers-your-ego-is-the-real-bug-in-the-system-7657/">Developers, your EGO is the real bug in the system</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How I Built a Full-Stack App in 6 Days with the Help of AI</title>
		<link>https://shiftmag.dev/how-i-built-a-full-stack-app-in-6-days-with-the-help-of-ai-7564/</link>
		
		<dc:creator><![CDATA[Nemanja Petrovic]]></dc:creator>
		<pubDate>Fri, 16 Jan 2026 11:47:46 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[full stack]]></category>
		<guid isPermaLink="false">https://shiftmag.dev/?p=7564</guid>

					<description><![CDATA[<p>Building an app with AI feels easy - until real users arrive. </p>
<p>The post <a href="https://shiftmag.dev/how-i-built-a-full-stack-app-in-6-days-with-the-help-of-ai-7564/">How I Built a Full-Stack App in 6 Days with the Help of AI</a> appeared first on <a href="https://shiftmag.dev">ShiftMag</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I shipped an MVP in 6 days using Claude Code, but &#8220;clean&#8221; AI code hid major performance pitfalls. From N+1 queries to broken responsive design, this is why a decade of engineering experience remains the ultimate superpower when building with AI.</p>



<p class="wp-block-paragraph">By the end of 2025, I had read a lot about people building entire apps with AI, going from an idea to a product in just weeks or even days. That made me ask myself: how are they doing this?</p>



<p class="wp-block-paragraph">I have <strong>more than ten years of experience in enterprise backend development</strong>. Seeing these fast, AI-built apps sparked my curiosity. I use AI in my day-to-day work, but only for small tasks, nothing close to building a full product.</p>



<p class="wp-block-paragraph">So I thought, why not try it myself and see if it’s really possible?</p>



<p class="wp-block-paragraph">I started thinking about what I actually wanted to build, and it quickly became clear that it had to be something I’d use myself. I’m a runner and I work in enterprise, so the idea came pretty naturally: a running app, but with a twist &#8211; <strong>tracking fitness while mapping it onto a corporate-style career journey</strong>.</p>



<p class="wp-block-paragraph">That’s how RunCorp came to life.</p>



<h2 class="wp-block-heading" id="ai-as-a-fast-mvp-builder-and-ui-scaffold">AI as a fast MVP builder and UI scaffold</h2>



<p class="wp-block-paragraph">My main stack is Java and Python, but I deliberately avoided what I know best. I wanted something familiar, yet still a bit uncomfortable. For the backend, I chose<strong> Laravel</strong>, since I’ve done some freelance work with it. For mobile, I picked <strong>Flutter</strong>, even though I had never built a mobile app before.</p>



<p class="wp-block-paragraph">I bought a <strong>Claude Code subscription</strong> and started building. I quickly learned that you can’t just tell it to do something and expect a good result. That realization led me to throw away the very first thing it generated.</p>



<p class="wp-block-paragraph">What really works is<strong> using plan mode</strong>. You let the AI analyze the problem, ask you questions, and create a plan. Only after you feel happy with the plan do you let it generate code. It feels more like collaborating with a teammate than typing commands at a tool.</p>



<p class="wp-block-paragraph">The downside is that this approach<strong> burns through tokens</strong>. If you don’t want to pay for extra usage, you have to wait a few hours for the limit to reset. Even so, I managed to build a basic MVP in six days.</p>



<p class="wp-block-paragraph">I started with just the <strong>UI and mocked data</strong>. By the end of the first day, I had an app with all the MVP screens in place. You could actually &#8220;use&#8221; the app &#8211; move from screen to screen and see something -even though real functionality didn’t exist yet. Everything ran on mocked data. For this kind of work, AI proved very effective at generating basic Flutter layouts like this:</p>



<pre class="wp-block-code"><code><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">class HomeScreen</mark><mark style="background-color:rgba(0, 0, 0, 0);color:#1515ed" class="has-inline-color"> </mark>extends <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">StatelessWidget</mark></strong> { 
@override
<strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">Widget</mark></strong> build(<strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">BuildContext context</mark></strong>) {
return <mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color"><strong>Scaffold</strong></mark>(
 appBar: <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">AppBar</mark></strong>(title: <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">Text</mark></strong>(<strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">'RunCorp</mark></strong>')),
  body: <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">ListView</mark></strong>(
   padding: <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">EdgeInsets</mark></strong>.all(16), 
    children: &#91;
   <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">  Text</mark></strong>(
      '<strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">Welcome</mark></strong> back',
     style: <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">Theme.</mark></strong>of(context).textTheme.headlineSmall,
    ),
   <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color"> SizedBox</mark></strong>(height: 16),
    <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">Card</mark></strong>(
     child: <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">ListTile</mark></strong>(
      title: <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">Text</mark></strong>('<strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">Current Level</mark></strong>'), 
      subtitle: <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">Text</mark></strong>(<strong>'<mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">Senior Runner</mark>'</strong>),
      ),
     ),
    ],
   ),
  );
 }
}
</code></pre>



<p class="wp-block-paragraph">Nothing complex, but very fast.<strong> This is where AI clearly shines</strong>: it scaffolds the UI, wires screens together, and handles repetitive setup.</p>



<h2 class="wp-block-heading" id="outdated-libraries-and-testing-challenges">Outdated libraries and testing challenges</h2>



<p class="wp-block-paragraph">After that, I worked screen by screen, <strong>building front-end and back-end functionality together</strong>. I followed the same workflow every time: create a plan, answer AI questions, refine the plan, answer again, and generate code only after I felt satisfied with the plan.</p>



<p class="wp-block-paragraph">Here’s the first big problem for someone without much experience: when you use plan mode, <strong>the AI asks questions you might not know how to answer</strong>. It asks things like: do you want to use OAuth? How do you want to encrypt passwords? Do you want a separate table for user profiles, or do you want everything in one table? You have to make these decisions early. Otherwise, the AI generates something that either doesn’t work or becomes hard to change later.</p>



<p class="wp-block-paragraph">One concrete backend issue came up during the <strong>Strava integration</strong>. When I asked the AI for help with Strava authentication, it suggested an existing Laravel package.</p>



<p class="wp-block-paragraph">At first glance, the suggestion looked reasonable. But after I checked it more closely, I realized the <strong>package hadn’t received updates for several years</strong> and didn’t support the current Laravel version. It relied on outdated dependencies and failed in a modern Laravel setup.</p>



<p class="wp-block-paragraph">This example shows where AI falls short. It suggests known libraries, but it doesn’t judge whether teams still maintain them or whether they fit today’s ecosystem.</p>



<p class="wp-block-paragraph">Instead of forcing the package into the project,<strong> I implemented the Strava OAuth flow directly using Laravel’s HTTP client</strong>. The core token exchange looked like this:</p>



<pre class="wp-block-code"><code>$response = Http::asForm()-&gt;post(<mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color"><strong>'https://www.strava.com/oauth/token'</strong></mark>, &#91;.                                <mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color">  </mark>
    <mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color"><strong>'client_id'</strong></mark>	=&gt; config(<mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color"><strong>'services.strava.client_id'</strong></mark>), 
    <mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color"><strong>'client_secret'</strong></mark> =&gt; config(<mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color"><strong>'services.strava.client_secret'</strong></mark>),
    <mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color"><strong>'code'</strong></mark>	=&gt; $request-&gt;get(<mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color"><strong>'code'</strong></mark>),
    <mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color"><strong>'grant_type'</strong></mark>	=&gt; <mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color"><strong>'authorization_code'</strong></mark>,
]);

$data = $response-&gt;json();
</code></pre>



<p class="wp-block-paragraph"><strong>A similar issue appeared on the frontend</strong>. The AI generated Flutter UI that looked great on a large simulator. Once I tested it on smaller phones, problems started to show up. Text became barely readable, layouts overflowed, and some screens turned difficult to use. A typical example looked like this:</p>



<pre class="wp-block-code"><code><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color"><strong>Text</strong></mark>(
<strong><mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color">'Weekly Distance'</mark></strong>,
<mark style="background-color:rgba(0, 0, 0, 0);color:#002afe" class="has-inline-color"><strong>style</strong></mark><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-black-color"><strong>:</strong> </mark>TextStyle(<strong><mark style="background-color:rgba(0, 0, 0, 0);color:#002afe" class="has-inline-color">fontSize</mark></strong>: <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#002afe" class="has-inline-color">24</mark></strong>),
);
</code></pre>



<p class="wp-block-paragraph"><strong>Hardcoded font sizes worked fine on larger screens but failed badly on smaller ones</strong>. Fixing this required a shift toward responsive design. I improved the layout by switching to theme-based typography:</p>



<pre class="wp-block-code"><code>Text(
'Weekly Distance',
style: Theme.of(<mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color"><strong>context</strong></mark>).textTheme.titleMedium,
);
 
LayoutBuilder(
<strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color"> builder</mark></strong>: (context, constraints) { 
  return Text(
   'Weekly Distance', 
  style: TextStyle(
   <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#0e087a" class="has-inline-color">fontSize</mark></strong>: constraints.maxWidth &lt; 360 ? 16 : 20,
   ),
  );
 },
);</code></pre>



<p class="wp-block-paragraph">The UI technically worked before &#8211; it just didn’t work well everywhere. <strong>Issues like this only show up when you test on real devices</strong>.</p>



<h2 class="wp-block-heading" id="when-ai-generated-code-meets-real-users">When AI-generated code meets real users</h2>



<p class="wp-block-paragraph">After six days, I had an app with enough functionality to be tested by someone. I asked people from my running club if they wanted to try it, and they said yes. I sent them a beta build, and 25 of them started using it. <strong>That’s when the real problems began to appear</strong>.</p>



<p class="wp-block-paragraph">After just two days, people reported that the home screen took a long time to load and that the stats screen kept crashing. That was the moment I realized this was the end of just talking with AI. I had to do what I’ve been doing for years: <strong>actually debug and review all the code</strong>.</p>



<p class="wp-block-paragraph">The AI-generated backend code looked clean. It passed basic tests and worked perfectly with small datasets, so I shipped it. <strong>But once real users arrived, reality hit hard</strong>. Requests were timing out, the stats and home pages barely loaded on mobile, database CPU spiked, and every request ran over 20 queries. Classic red flags.</p>



<p class="wp-block-paragraph">These were problems that wouldn’t have made it to production if I had written the code myself from the start. <strong>Experience teaches you where bottlenecks usually hide</strong>. AI didn’t optimize anything; it just made things work.</p>



<p class="wp-block-paragraph">Here’s what the <strong>AI-generated backend code got wrong</strong> all at once:</p>



<ul class="wp-block-list">
<li>No eager loading, causing N+1 queries</li>



<li>Queries running inside loops</li>



<li>Loading entire models into memory just to calculate aggregates</li>



<li>No caching at all</li>



<li>Missing database indexes</li>



<li>Recalculating values that were already stored</li>



<li>Doing heavy computation in PHP instead of letting the database handle it</li>
</ul>



<p class="wp-block-paragraph"><strong>None of these were bugs &#8211; they were experience problems</strong>.</p>



<p class="wp-block-paragraph">At that point, I had to step in and do what I’ve been doing for years: rewrite the entire statistics pipeline. Some of the key fixes were:</p>



<h3 class="wp-block-heading" id="eager-loading-instead-of-n1">Eager Loading Instead of N+1</h3>



<pre class="wp-block-code"><code><mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color">$user = $request-&gt;user()-&gt;load('profile');</mark></code></pre>



<h3 class="wp-block-heading" id="aggressive-response-caching">Aggressive Response Caching</h3>



<pre class="wp-block-code"><code><mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color">return Cache::remember("user_stats:{$user-&gt;id}", now()-&gt;endOfDay(), </mark>
<mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color">function () {
    // heavy calculations

});</mark></code></pre>



<h3 class="wp-block-heading" id="query-consolidation-7-queries-%e2%86%92-1">Query Consolidation (7 Queries → 1)</h3>



<pre class="wp-block-code"><code><mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color">$stats = DB::table('activities')

    -&gt;where('user_id', $userId)

    -&gt;selectRaw("

         SUM(distance_meters) as total_distance, </mark>
         <mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color">COUNT(DISTINCT DATE(start_at)) as active_days,
 
         SUM(CASE WHEN start_at &gt;= ? THEN distance_meters ELSE 0 END) as weekly_distance
", &#91;$weekStart])

-&gt;first();</mark></code></pre>



<h3 class="wp-block-heading" id="group-by-instead-of-query-loops">GROUP BY Instead of Query Loops</h3>



<pre class="wp-block-code"><code><mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color">-&gt;groupBy('week_num')</mark></code></pre>



<h3 class="wp-block-heading" id="using-stored-values-instead-of-recomputing">Using Stored Values Instead of Recomputing</h3>



<pre class="wp-block-code"><code><mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color">$longestStreak = $user-&gt;profile-&gt;highest_streak ?? 0;</mark></code></pre>



<h3 class="wp-block-heading" id="strategic-indexes">Strategic Indexes</h3>



<pre class="wp-block-code"><code><mark style="background-color:rgba(0, 0, 0, 0);color:#00a266" class="has-inline-color">$table-&gt;index(&#91;'user_id', 'start_at', 'distance_meters']);</mark></code></pre>



<h2 class="wp-block-heading" id="the-results-were-immediate">The results were immediate</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Metric</strong><strong></strong></td><td><strong>Before</strong><strong></strong></td><td><strong>After</strong><strong></strong></td></tr><tr><td>Queries per request</td><td>20+</td><td>7–9</td></tr><tr><td>Response time</td><td>&gt;30s (timeout)</td><td>300–500ms</td></tr><tr><td>Cached response</td><td>N/A</td><td>10–50ms</td></tr><tr><td>Memory usage</td><td>200MB+</td><td>40–60MB</td></tr><tr><td>Timeouts</td><td>Constant</td><td>Zero</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">After these changes,<strong> the app finally felt usable in real conditions</strong>. The home screen loaded instantly, the stats screen didn’t crash, and the database handled multiple users at the same time. Experience made the difference.</p>



<p class="wp-block-paragraph">I shipped a working app quickly, but I still had to do a lot of work myself. Coding the basics &#8211; the tasks any junior developer can handle &#8211; is easy, and that’s exactly where AI excels. It can speed up development, but you need to know when to step in, what to change, what to ask, and how to plan everything properly.</p>



<p class="wp-block-paragraph"><strong>Coding isn’t even the hardest part, at least for mobile apps</strong>. You can build the app fast, but you must deploy the backend, set up servers, configure domains, and prepare everything for the app stores.</p>



<p class="wp-block-paragraph">Then comes the part no one talks about: Google Play beta testing, Apple App Store review, waiting for developer accounts and licenses to get approved, fixing small issues reviewers reject, and updating screenshots, descriptions, and privacy policies. None of this is hard, but<strong> all of it takes time</strong>.</p>



<p class="wp-block-paragraph">From the moment I started building to the moment the app went public, <strong>the process took just over a month, still very fast.</strong></p>



<p class="wp-block-paragraph">I realized that today <strong>AI becomes incredibly powerful in the hands of someone who knows what they’re doing</strong>. For experienced engineers, it can provide a huge speed boost, almost like a superpower. AI acts like a team of juniors handling repetitive work while you focus on high-level decisions.</p>



<p class="wp-block-paragraph">Someone with solid experience can now build projects that used to require a small team. Can a non-technical person build an app with AI? Yes, to some extent. They can create something that looks decent and runs, but most of the time it will start falling apart quickly.</p>



<p class="wp-block-paragraph">The main takeaway: <strong>the basics still matter</strong>. Understanding how things work under the hood makes all the difference. AI doesn’t replace experience, but it amplifies it, and that’s where it delivers real value.</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/nemanja.png?x32039" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" style="object-fit:cover;" srcset="https://shiftmag.dev/wp-content/uploads/2026/01/nemanja.png 1200w, https://shiftmag.dev/wp-content/uploads/2026/01/nemanja-300x158.png 300w, https://shiftmag.dev/wp-content/uploads/2026/01/nemanja-1024x538.png 1024w, https://shiftmag.dev/wp-content/uploads/2026/01/nemanja-768x403.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure><p>The post <a href="https://shiftmag.dev/how-i-built-a-full-stack-app-in-6-days-with-the-help-of-ai-7564/">How I Built a Full-Stack App in 6 Days with the Help of AI</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-10-28 12:41:21 by W3 Total Cache
-->