<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dhruvi</title>
    <description>The latest articles on DEV Community by Dhruvi (@dhruvi_21).</description>
    <link>https://dev.to/dhruvi_21</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3894569%2Fe31cc617-f38a-4448-a25e-dfb161e3364d.png</url>
      <title>DEV Community: Dhruvi</title>
      <link>https://dev.to/dhruvi_21</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dhruvi_21"/>
    <language>en</language>
    <item>
      <title>Why Most AI Demos Fall Apart in Production</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Mon, 06 Jul 2026 15:20:06 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/why-most-ai-demos-fall-apart-in-production-3bhf</link>
      <guid>https://dev.to/dhruvi_21/why-most-ai-demos-fall-apart-in-production-3bhf</guid>
      <description>&lt;p&gt;AI demos are impressive.&lt;/p&gt;

&lt;p&gt;Ask a question.&lt;/p&gt;

&lt;p&gt;Get a smart answer.&lt;/p&gt;

&lt;p&gt;Trigger an action.&lt;/p&gt;

&lt;p&gt;Everything works perfectly.&lt;/p&gt;

&lt;p&gt;Production is a different story.&lt;/p&gt;

&lt;p&gt;The biggest difference isn't the model.&lt;/p&gt;

&lt;p&gt;It's the environment.&lt;/p&gt;

&lt;p&gt;In a demo:&lt;/p&gt;

&lt;p&gt;the data is clean&lt;br&gt;
the APIs respond&lt;br&gt;
the workflow is predictable&lt;br&gt;
every dependency is available&lt;/p&gt;

&lt;p&gt;In production, none of those things are guaranteed.&lt;/p&gt;

&lt;p&gt;The AI isn't operating in isolation.&lt;/p&gt;

&lt;p&gt;It's connected to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ERPs&lt;/li&gt;
&lt;li&gt;CRMs&lt;/li&gt;
&lt;li&gt;internal tools&lt;/li&gt;
&lt;li&gt;third party services&lt;/li&gt;
&lt;li&gt;business workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If one of those systems behaves unexpectedly, the AI has to deal with it.&lt;/p&gt;

&lt;p&gt;And that's where things become complicated.&lt;/p&gt;

&lt;p&gt;I've learned that AI is usually not the first thing to fail.&lt;/p&gt;

&lt;p&gt;The infrastructure around it is.&lt;/p&gt;

&lt;p&gt;Maybe an API is slow.&lt;/p&gt;

&lt;p&gt;Maybe the data is outdated.&lt;/p&gt;

&lt;p&gt;Maybe two systems disagree on the same customer.&lt;/p&gt;

&lt;p&gt;The model gives an answer based on what it receives.&lt;/p&gt;

&lt;p&gt;If the inputs are unreliable, the outputs won't be reliable either.&lt;/p&gt;

&lt;p&gt;Another thing demos don't show is recovery.&lt;/p&gt;

&lt;p&gt;What happens if an action fails halfway?&lt;/p&gt;

&lt;p&gt;What happens if the same request arrives twice?&lt;/p&gt;

&lt;p&gt;What happens if a workflow pauses for an hour and then continues?&lt;/p&gt;

&lt;p&gt;Those situations happen every day in production.&lt;/p&gt;

&lt;p&gt;The more I work on AI systems, the more I realize this:&lt;/p&gt;

&lt;p&gt;Building the AI is only part of the job.&lt;/p&gt;

&lt;p&gt;Making it reliable enough for people to trust is where most of the engineering happens.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;handling failures&lt;/li&gt;
&lt;li&gt;validating data&lt;/li&gt;
&lt;li&gt;monitoring workflows&lt;/li&gt;
&lt;li&gt;recovering safely when things go wrong&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of those make for an exciting demo.&lt;/p&gt;

&lt;p&gt;But they're what make an AI system usable.&lt;/p&gt;

&lt;p&gt;A successful demo proves an idea.&lt;/p&gt;

&lt;p&gt;A successful production system proves that the idea can survive real-world conditions.&lt;/p&gt;

&lt;p&gt;Those are two very different goals.&lt;/p&gt;

&lt;p&gt;This is something we see every day at BrainPack while deploying AI into existing enterprise environments. The model is only one layer. The real challenge is making the systems around it predictable enough that AI can operate reliably over time.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>infrastructure</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The Hidden Complexity Behind "Just Connect It to the API"</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Mon, 29 Jun 2026 12:43:57 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/the-hidden-complexity-behind-just-connect-it-to-the-api-15ea</link>
      <guid>https://dev.to/dhruvi_21/the-hidden-complexity-behind-just-connect-it-to-the-api-15ea</guid>
      <description>&lt;p&gt;'ve heard this sentence more times than I can count:&lt;/p&gt;

&lt;p&gt;"Can't we just connect it to the API?"&lt;/p&gt;

&lt;p&gt;It sounds simple.&lt;/p&gt;

&lt;p&gt;Sometimes it is.&lt;/p&gt;

&lt;p&gt;Most of the time, it isn't.&lt;/p&gt;

&lt;p&gt;The API is usually the easiest part.&lt;/p&gt;

&lt;p&gt;The real work starts after the connection is made.&lt;/p&gt;

&lt;p&gt;You quickly run into questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which system owns this data?&lt;/li&gt;
&lt;li&gt;What happens if both systems update the same record?&lt;/li&gt;
&lt;li&gt;What if the API is temporarily unavailable?&lt;/li&gt;
&lt;li&gt;What should happen when data is missing?&lt;/li&gt;
&lt;li&gt;How do we recover if only half the workflow succeeds?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these problems are solved by the API itself.&lt;/p&gt;

&lt;p&gt;Another thing people underestimate is that every system has its own way of thinking.&lt;/p&gt;

&lt;p&gt;One system might allow duplicate records.&lt;/p&gt;

&lt;p&gt;Another requires everything to be unique.&lt;/p&gt;

&lt;p&gt;One updates data instantly.&lt;/p&gt;

&lt;p&gt;Another syncs every 15 minutes.&lt;/p&gt;

&lt;p&gt;One treats a deleted record as inactive.&lt;/p&gt;

&lt;p&gt;Another removes it completely.&lt;/p&gt;

&lt;p&gt;Connecting them is less about moving data and more about translating behavior.&lt;/p&gt;

&lt;p&gt;Then there are the things you only discover in production.&lt;/p&gt;

&lt;p&gt;An endpoint that occasionally times out.&lt;/p&gt;

&lt;p&gt;A webhook that arrives twice.&lt;/p&gt;

&lt;p&gt;A field that's documented as optional but is required for one customer.&lt;/p&gt;

&lt;p&gt;The integration works perfectly in testing.&lt;/p&gt;

&lt;p&gt;Then real data shows up.&lt;/p&gt;

&lt;p&gt;One thing I learned is that APIs don't integrate businesses.&lt;/p&gt;

&lt;p&gt;They integrate software.&lt;/p&gt;

&lt;p&gt;Understanding how people actually use those systems is a different challenge.&lt;/p&gt;

&lt;p&gt;And it's usually the bigger one.&lt;/p&gt;

&lt;p&gt;Now when someone says,&lt;/p&gt;

&lt;p&gt;"Let's just connect it to the API,"&lt;/p&gt;

&lt;p&gt;I don't think about authentication or endpoints.&lt;/p&gt;

&lt;p&gt;I think about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;data ownership&lt;/li&gt;
&lt;li&gt;failure handling&lt;/li&gt;
&lt;li&gt;retries&lt;/li&gt;
&lt;li&gt;state changes&lt;/li&gt;
&lt;li&gt;business rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because that's where most integration work actually happens.&lt;/p&gt;

&lt;p&gt;The API opens the door.&lt;/p&gt;

&lt;p&gt;Building something reliable after that is the real engineering work.&lt;/p&gt;

&lt;p&gt;This is something we deal with regularly at BrainPack while connecting enterprise systems and layering AI on top of them. The technical connection is often the fastest part. Making different systems behave predictably together is what takes the time.&lt;/p&gt;

</description>
      <category>api</category>
      <category>architecture</category>
      <category>discuss</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>What Developers Underestimate About Long-Running Workflows</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Wed, 24 Jun 2026 12:52:47 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/what-developers-underestimate-about-long-running-workflows-4009</link>
      <guid>https://dev.to/dhruvi_21/what-developers-underestimate-about-long-running-workflows-4009</guid>
      <description>&lt;p&gt;Long-running workflows look simple when you first build them.&lt;/p&gt;

&lt;p&gt;Something happens.&lt;/p&gt;

&lt;p&gt;A few systems exchange data.&lt;/p&gt;

&lt;p&gt;Everything completes.&lt;/p&gt;

&lt;p&gt;Done.&lt;/p&gt;

&lt;p&gt;At least that's the expectation.&lt;/p&gt;

&lt;p&gt;Reality is very different.&lt;/p&gt;

&lt;p&gt;The biggest thing I underestimated was time.&lt;/p&gt;

&lt;p&gt;Not execution time.&lt;/p&gt;

&lt;p&gt;Elapsed time.&lt;/p&gt;

&lt;p&gt;Because once workflows start running for hours, days, or continuously, strange things start happening.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APIs become temporarily unavailable&lt;/li&gt;
&lt;li&gt;Data changes halfway through the process&lt;/li&gt;
&lt;li&gt;Retries arrive much later than expected&lt;/li&gt;
&lt;li&gt;Someone manually updates a record&lt;/li&gt;
&lt;li&gt;Another system processes things in a different order&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing is broken.&lt;/p&gt;

&lt;p&gt;But everything is slightly different from when the workflow started.&lt;/p&gt;

&lt;p&gt;Early on, I assumed workflows were transactions.&lt;/p&gt;

&lt;p&gt;Start.&lt;/p&gt;

&lt;p&gt;Execute.&lt;/p&gt;

&lt;p&gt;Finish.&lt;/p&gt;

&lt;p&gt;Now I think of them as conversations between systems.&lt;/p&gt;

&lt;p&gt;And conversations can get interrupted.&lt;/p&gt;

&lt;p&gt;Another thing I underestimated:&lt;/p&gt;

&lt;p&gt;State changes.&lt;/p&gt;

&lt;p&gt;You might start processing an order that is "pending".&lt;/p&gt;

&lt;p&gt;Ten minutes later, another system marks it as "cancelled".&lt;/p&gt;

&lt;p&gt;An hour later, a retry comes in from an earlier step.&lt;/p&gt;

&lt;p&gt;If your workflow only thinks about data, weird things happen.&lt;/p&gt;

&lt;p&gt;Because the world has changed while the process was still running.&lt;/p&gt;

&lt;p&gt;Long-running workflows also expose assumptions you didn't know you made.&lt;/p&gt;

&lt;p&gt;Like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;this API will always respond quickly&lt;/li&gt;
&lt;li&gt;data will arrive in order&lt;/li&gt;
&lt;li&gt;users won't modify records manually&lt;/li&gt;
&lt;li&gt;retries will happen immediately&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those assumptions survive in testing.&lt;/p&gt;

&lt;p&gt;Production removes them quickly.&lt;/p&gt;

&lt;p&gt;One thing that changed how I build these systems:&lt;/p&gt;

&lt;p&gt;I stopped asking:&lt;/p&gt;

&lt;p&gt;"Will this workflow finish?"&lt;/p&gt;

&lt;p&gt;And started asking:&lt;/p&gt;

&lt;p&gt;"What state will the world be in when it finishes?"&lt;/p&gt;

&lt;p&gt;Because those are two very different questions.&lt;/p&gt;

&lt;p&gt;Most problems in long-running systems aren't caused by one big failure.&lt;/p&gt;

&lt;p&gt;They're caused by lots of small changes happening while the workflow is still alive.&lt;/p&gt;

&lt;p&gt;And if you don't account for that, eventually the workflow finishes successfully and still produces the wrong outcome.&lt;/p&gt;

&lt;p&gt;This is something we think about constantly at BrainPack while operating workflows that span multiple systems and AI layers. Long-running processes are less about moving data and more about managing changing state over time.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>backend</category>
      <category>distributedsystems</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Why Retries Are More Dangerous Than Failures in Production Systems</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Fri, 19 Jun 2026 12:47:54 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/why-retries-are-more-dangerous-than-failures-in-production-systems-44jn</link>
      <guid>https://dev.to/dhruvi_21/why-retries-are-more-dangerous-than-failures-in-production-systems-44jn</guid>
      <description>&lt;p&gt;Failures are obvious.&lt;/p&gt;

&lt;p&gt;Retries are sneaky.&lt;/p&gt;

&lt;p&gt;When something fails, everyone notices.&lt;/p&gt;

&lt;p&gt;An alert goes off.&lt;br&gt;
A request errors out.&lt;br&gt;
Someone starts investigating.&lt;/p&gt;

&lt;p&gt;Retries are different.&lt;/p&gt;

&lt;p&gt;They look harmless.&lt;/p&gt;

&lt;p&gt;Most of the time, they save the system.&lt;/p&gt;

&lt;p&gt;But sometimes, retries create bigger problems than the original failure.&lt;/p&gt;

&lt;p&gt;Imagine an API call times out.&lt;/p&gt;

&lt;p&gt;No problem.&lt;/p&gt;

&lt;p&gt;The system retries.&lt;/p&gt;

&lt;p&gt;But what if the first request actually succeeded and only the response was lost?&lt;/p&gt;

&lt;p&gt;Now the retry creates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;duplicate orders&lt;/li&gt;
&lt;li&gt;repeated emails&lt;/li&gt;
&lt;li&gt;inconsistent records&lt;/li&gt;
&lt;li&gt;workflows running twice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The failure happened once.&lt;/p&gt;

&lt;p&gt;The retry multiplied it.&lt;/p&gt;

&lt;p&gt;Another thing I've seen:&lt;/p&gt;

&lt;p&gt;One slow dependency causes requests to pile up.&lt;/p&gt;

&lt;p&gt;Retries start firing.&lt;/p&gt;

&lt;p&gt;Those retries create even more traffic.&lt;/p&gt;

&lt;p&gt;Which slows things down further.&lt;/p&gt;

&lt;p&gt;Which triggers even more retries.&lt;/p&gt;

&lt;p&gt;Suddenly, the system is spending more effort retrying than doing useful work.&lt;/p&gt;

&lt;p&gt;Retries also hide problems.&lt;/p&gt;

&lt;p&gt;A temporary issue gets retried five times and eventually succeeds.&lt;/p&gt;

&lt;p&gt;Everything looks normal.&lt;/p&gt;

&lt;p&gt;Meanwhile:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;latency increases&lt;/li&gt;
&lt;li&gt;queues grow&lt;/li&gt;
&lt;li&gt;users experience delays
Nothing technically failed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the system is getting less healthy.&lt;/p&gt;

&lt;p&gt;What changed for me is that I stopped treating retries as free.&lt;/p&gt;

&lt;p&gt;Every retry has a cost.&lt;/p&gt;

&lt;p&gt;It consumes resources.&lt;/p&gt;

&lt;p&gt;It increases load.&lt;/p&gt;

&lt;p&gt;And if actions aren't designed carefully, retries can repeat side effects that should only happen once.&lt;/p&gt;

&lt;p&gt;Now when I build something, I don't ask:&lt;/p&gt;

&lt;p&gt;"What happens if this fails?"&lt;/p&gt;

&lt;p&gt;I ask:&lt;/p&gt;

&lt;p&gt;"What happens if this runs again?"&lt;/p&gt;

&lt;p&gt;Because in production, things almost always run again.&lt;/p&gt;

&lt;p&gt;And if the answer is "bad things happen," the retry mechanism isn't helping.&lt;/p&gt;

&lt;p&gt;It's making things worse.&lt;/p&gt;

&lt;p&gt;Failures are part of every system.&lt;/p&gt;

&lt;p&gt;Retries are too.&lt;/p&gt;

&lt;p&gt;The difference is that failures usually happen once.&lt;/p&gt;

&lt;p&gt;Retries can turn one problem into hundreds if you don't design for them.&lt;/p&gt;

&lt;p&gt;This is something we think about constantly at BrainPack when operating long-running workflows across multiple systems. AI and automation layers make retries even more common, which means making actions safe to repeat becomes just as important as handling failures themselves.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>distributedsystems</category>
      <category>sre</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>An Experience From the Deployment Process Worth Sharing</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Mon, 15 Jun 2026 13:23:49 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/an-experience-from-the-deployment-process-worth-sharing-4ab5</link>
      <guid>https://dev.to/dhruvi_21/an-experience-from-the-deployment-process-worth-sharing-4ab5</guid>
      <description>&lt;p&gt;One deployment taught me a lesson I keep coming back to.&lt;/p&gt;

&lt;p&gt;Nothing was technically wrong.&lt;/p&gt;

&lt;p&gt;The code worked.&lt;/p&gt;

&lt;p&gt;Testing passed.&lt;/p&gt;

&lt;p&gt;The deployment completed successfully.&lt;/p&gt;

&lt;p&gt;And yet, a few hours later, things started behaving strangely.&lt;/p&gt;

&lt;p&gt;Some workflows were running slower than expected.&lt;/p&gt;

&lt;p&gt;A few records weren't updating.&lt;/p&gt;

&lt;p&gt;Nothing was completely broken.&lt;/p&gt;

&lt;p&gt;Just enough to make people question whether the system was working correctly.&lt;/p&gt;

&lt;p&gt;Those are often the hardest situations.&lt;/p&gt;

&lt;p&gt;Because there isn't a clear error pointing you in the right direction.&lt;/p&gt;

&lt;p&gt;After digging through the flow, we found the issue.&lt;/p&gt;

&lt;p&gt;The new deployment introduced a change that increased the number of requests between systems.&lt;/p&gt;

&lt;p&gt;Not enough to cause failures.&lt;/p&gt;

&lt;p&gt;But enough to create a small backlog.&lt;/p&gt;

&lt;p&gt;That backlog slowly grew throughout the day.&lt;/p&gt;

&lt;p&gt;The deployment itself was fine.&lt;/p&gt;

&lt;p&gt;The operational impact wasn't.&lt;/p&gt;

&lt;p&gt;What stuck with me was this:&lt;/p&gt;

&lt;p&gt;We had tested functionality.&lt;/p&gt;

&lt;p&gt;We hadn't tested behavior under real operating conditions.&lt;/p&gt;

&lt;p&gt;Those are very different things.&lt;/p&gt;

&lt;p&gt;Since then, I pay much more attention to questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What will this change do to traffic patterns?&lt;/li&gt;
&lt;li&gt;Will it create more retries?&lt;/li&gt;
&lt;li&gt;Will it increase queue sizes?&lt;/li&gt;
&lt;li&gt;How will it behave after running for several hours?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those questions rarely come up during feature development.&lt;/p&gt;

&lt;p&gt;But they matter a lot after deployment.&lt;/p&gt;

&lt;p&gt;One thing I've noticed about production systems:&lt;/p&gt;

&lt;p&gt;Problems often don't appear immediately.&lt;/p&gt;

&lt;p&gt;They accumulate.&lt;/p&gt;

&lt;p&gt;A small delay becomes a backlog.&lt;/p&gt;

&lt;p&gt;A backlog becomes slower processing.&lt;/p&gt;

&lt;p&gt;Slower processing creates more retries.&lt;/p&gt;

&lt;p&gt;And suddenly you're debugging something that started hours earlier.&lt;/p&gt;

&lt;p&gt;The experience changed how I think about deployments.&lt;/p&gt;

&lt;p&gt;A successful deployment is not when the code reaches production.&lt;/p&gt;

&lt;p&gt;A successful deployment is when the system continues behaving predictably after the change.&lt;/p&gt;

&lt;p&gt;This is something we think about constantly at BrainPack while operating systems that run continuously across enterprise environments. The deployment is usually the easy part. Understanding how a change affects the system over the next few hours and days is where the real work begins.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>devops</category>
      <category>performance</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Something I Learned Recently That Changed How I Approach a Problem</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Thu, 11 Jun 2026 12:49:58 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/something-i-learned-recently-that-changed-how-i-approach-a-problem-38dp</link>
      <guid>https://dev.to/dhruvi_21/something-i-learned-recently-that-changed-how-i-approach-a-problem-38dp</guid>
      <description>&lt;p&gt;One thing I learned recently:&lt;/p&gt;

&lt;p&gt;Most production problems are not technical problems.&lt;/p&gt;

&lt;p&gt;They're visibility problems.&lt;/p&gt;

&lt;p&gt;For a long time, my instinct was:&lt;/p&gt;

&lt;p&gt;Something breaks → find the bug → fix the code.&lt;/p&gt;

&lt;p&gt;Seems reasonable.&lt;/p&gt;

&lt;p&gt;But the more time I spend operating systems, the more I notice that many issues happen because we can't clearly see what's happening.&lt;/p&gt;

&lt;p&gt;A workflow gets stuck.&lt;/p&gt;

&lt;p&gt;Data stops syncing.&lt;/p&gt;

&lt;p&gt;An automation behaves unexpectedly.&lt;/p&gt;

&lt;p&gt;The first question isn't:&lt;/p&gt;

&lt;p&gt;"Why did it fail?"&lt;/p&gt;

&lt;p&gt;It's:&lt;/p&gt;

&lt;p&gt;"Can we actually see where it failed?"&lt;/p&gt;

&lt;p&gt;I've worked on issues where the fix took 15 minutes.&lt;/p&gt;

&lt;p&gt;Finding the issue took several hours.&lt;/p&gt;

&lt;p&gt;Not because the bug was complicated.&lt;/p&gt;

&lt;p&gt;Because there wasn't enough visibility into the system.&lt;/p&gt;

&lt;p&gt;That changed how I approach new work.&lt;/p&gt;

&lt;p&gt;Now, before I think about features, I think about observability.&lt;/p&gt;

&lt;p&gt;Questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How will we know this is broken?&lt;/li&gt;
&lt;li&gt;How will we know it's slow?&lt;/li&gt;
&lt;li&gt;How will we know it's stuck?&lt;/li&gt;
&lt;li&gt;How will we investigate it six months from now?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those questions often end up being more important than the implementation itself.&lt;/p&gt;

&lt;p&gt;The interesting thing is that adding visibility rarely feels urgent when you're building.&lt;/p&gt;

&lt;p&gt;Everything is working.&lt;/p&gt;

&lt;p&gt;Everything looks fine.&lt;/p&gt;

&lt;p&gt;Until the day it isn't.&lt;/p&gt;

&lt;p&gt;And that's usually when you realize how valuable those extra logs, status checks, and monitoring points actually are.&lt;/p&gt;

&lt;p&gt;One pattern I've noticed:&lt;/p&gt;

&lt;p&gt;Teams often spend more time locating problems than solving them.&lt;/p&gt;

&lt;p&gt;So improving visibility doesn't just reduce downtime.&lt;/p&gt;

&lt;p&gt;It makes engineering work faster.&lt;/p&gt;

&lt;p&gt;Now when I build something, I try to leave behind enough information that future me doesn't have to guess what happened.&lt;/p&gt;

&lt;p&gt;That's probably one of the highest-return investments I've found in software engineering.&lt;/p&gt;

&lt;p&gt;This lesson comes up constantly at BrainPack while operating systems that run continuously across multiple platforms and workflows. AI systems can only be as reliable as your ability to understand what the underlying infrastructure is doing at any given moment.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What Documentation Looks Like in a Permanently Operated System</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Thu, 04 Jun 2026 12:39:15 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/what-documentation-looks-like-in-a-permanently-operated-system-1gja</link>
      <guid>https://dev.to/dhruvi_21/what-documentation-looks-like-in-a-permanently-operated-system-1gja</guid>
      <description>&lt;p&gt;I used to think documentation was mostly for onboarding.&lt;/p&gt;

&lt;p&gt;A way to help new developers understand the system.&lt;/p&gt;

&lt;p&gt;That's part of it.&lt;/p&gt;

&lt;p&gt;But when you're operating systems continuously, documentation becomes something else entirely.&lt;/p&gt;

&lt;p&gt;It's operational infrastructure.&lt;/p&gt;

&lt;p&gt;The biggest misconception about documentation is that it's about explaining how things were built.&lt;/p&gt;

&lt;p&gt;Most of the time, that's not what people need.&lt;/p&gt;

&lt;p&gt;What they need is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how does this actually work today?&lt;/li&gt;
&lt;li&gt;what happens if it fails?&lt;/li&gt;
&lt;li&gt;who depends on it?&lt;/li&gt;
&lt;li&gt;what should happen next?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One thing I learned pretty quickly:&lt;/p&gt;

&lt;p&gt;Nobody reads long documentation during an incident.&lt;/p&gt;

&lt;p&gt;If something breaks, people need answers fast.&lt;/p&gt;

&lt;p&gt;So the most useful documentation is usually the simplest.&lt;/p&gt;

&lt;p&gt;Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;workflow diagrams&lt;/li&gt;
&lt;li&gt;system dependencies&lt;/li&gt;
&lt;li&gt;retry behavior&lt;/li&gt;
&lt;li&gt;recovery steps&lt;/li&gt;
&lt;li&gt;known failure points&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another thing that changes in long-running systems:&lt;/p&gt;

&lt;p&gt;Documentation can't be static.&lt;/p&gt;

&lt;p&gt;The system evolves.&lt;/p&gt;

&lt;p&gt;Integrations change.&lt;/p&gt;

&lt;p&gt;Business processes change.&lt;/p&gt;

&lt;p&gt;Automations get added.&lt;/p&gt;

&lt;p&gt;If documentation doesn't evolve too, it slowly becomes misleading.&lt;/p&gt;

&lt;p&gt;And outdated documentation is often worse than no documentation at all.&lt;/p&gt;

&lt;p&gt;The documentation I use most is rarely technical.&lt;/p&gt;

&lt;p&gt;It's operational.&lt;/p&gt;

&lt;p&gt;Questions like:&lt;/p&gt;

&lt;p&gt;Why does this process exist?&lt;/p&gt;

&lt;p&gt;What happens if this service is unavailable?&lt;/p&gt;

&lt;p&gt;Which systems depend on this workflow?&lt;/p&gt;

&lt;p&gt;Those answers save more time than implementation details.&lt;/p&gt;

&lt;p&gt;One thing I appreciate now:&lt;/p&gt;

&lt;p&gt;Good documentation reduces dependency on specific people.&lt;/p&gt;

&lt;p&gt;Without it, knowledge gets trapped.&lt;/p&gt;

&lt;p&gt;One person knows how something works.&lt;/p&gt;

&lt;p&gt;One person knows how to recover it.&lt;/p&gt;

&lt;p&gt;One person knows why it was built that way.&lt;/p&gt;

&lt;p&gt;That's a risk.&lt;/p&gt;

&lt;p&gt;In systems that run continuously, documentation is less about explaining code and more about preserving operational knowledge.&lt;/p&gt;

&lt;p&gt;Because eventually, everyone forgets why a decision was made.&lt;/p&gt;

&lt;p&gt;The documentation is what remains.&lt;/p&gt;

&lt;p&gt;At BrainPack, a lot of the systems we operate involve multiple integrations, workflows, and AI layers running together. Good documentation helps turn individual knowledge into infrastructure that the entire team can rely on over time.I used to think documentation was mostly for onboarding.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>softwareengineering</category>
      <category>sre</category>
      <category>writing</category>
    </item>
    <item>
      <title>What Building Software That Runs 24/7 Actually Means Day to Day</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Wed, 03 Jun 2026 13:04:16 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/what-building-software-that-runs-247-actually-means-day-to-day-14fl</link>
      <guid>https://dev.to/dhruvi_21/what-building-software-that-runs-247-actually-means-day-to-day-14fl</guid>
      <description>&lt;p&gt;When people hear that a system runs 24/7, they usually think about uptime.&lt;/p&gt;

&lt;p&gt;Servers running.&lt;/p&gt;

&lt;p&gt;Services responding.&lt;/p&gt;

&lt;p&gt;No outages.&lt;/p&gt;

&lt;p&gt;But day to day, that's not what I spend most of my time thinking about.&lt;/p&gt;

&lt;p&gt;What I actually think about is:&lt;/p&gt;

&lt;p&gt;What happens at 2:13 AM when something unexpected occurs?&lt;/p&gt;

&lt;p&gt;Because eventually, it will.&lt;/p&gt;

&lt;p&gt;A queue gets stuck.&lt;/p&gt;

&lt;p&gt;A third party API slows down.&lt;/p&gt;

&lt;p&gt;A workflow starts behaving differently.&lt;/p&gt;

&lt;p&gt;A retry arrives hours later than expected.&lt;/p&gt;

&lt;p&gt;The interesting part is that most problems aren't dramatic.&lt;/p&gt;

&lt;p&gt;The system doesn't crash.&lt;/p&gt;

&lt;p&gt;It keeps running.&lt;/p&gt;

&lt;p&gt;Just slightly wrong.&lt;/p&gt;

&lt;p&gt;And those are often the hardest issues to catch.&lt;/p&gt;

&lt;p&gt;Building software that runs continuously means caring about things that demos never show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;recovery&lt;/li&gt;
&lt;li&gt;observability&lt;/li&gt;
&lt;li&gt;retries&lt;/li&gt;
&lt;li&gt;data consistency&lt;/li&gt;
&lt;li&gt;failure handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not because they're exciting.&lt;/p&gt;

&lt;p&gt;Because they become important every single day.&lt;/p&gt;

&lt;p&gt;One thing I learned pretty quickly:&lt;/p&gt;

&lt;p&gt;The goal isn't building a system that never fails.&lt;/p&gt;

&lt;p&gt;The goal is building a system that can recover without someone jumping in every time.&lt;/p&gt;

&lt;p&gt;If a process gets stuck, can it restart?&lt;/p&gt;

&lt;p&gt;If an API fails, can it retry safely?&lt;/p&gt;

&lt;p&gt;If data arrives late, can the workflow still complete correctly?&lt;/p&gt;

&lt;p&gt;Those questions matter more than most features.&lt;/p&gt;

&lt;p&gt;Another reality is that software running 24/7 creates a different relationship with technical decisions.&lt;/p&gt;

&lt;p&gt;Small shortcuts last a long time.&lt;/p&gt;

&lt;p&gt;Small bugs eventually surface.&lt;/p&gt;

&lt;p&gt;Small assumptions eventually get tested.&lt;/p&gt;

&lt;p&gt;The system has a lot of time to find weaknesses.&lt;/p&gt;

&lt;p&gt;What surprised me most is how much of the work is actually about predictability.&lt;/p&gt;

&lt;p&gt;Not speed.&lt;/p&gt;

&lt;p&gt;Not new features.&lt;/p&gt;

&lt;p&gt;Predictability.&lt;/p&gt;

&lt;p&gt;Knowing how the system behaves when things go right and when they don't.&lt;/p&gt;

&lt;p&gt;Because people eventually start depending on that behavior.&lt;/p&gt;

&lt;p&gt;Building software that runs continuously has changed how I think about engineering. The feature is only the beginning. The real work starts when the system has to keep doing its job reliably every hour of every day.&lt;/p&gt;

&lt;p&gt;This is the reality of a lot of the systems we operate at BrainPack. Once enterprise workflows and AI automations are running continuously, reliability becomes less about uptime and more about making sure the system behaves predictably under real-world conditions.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>devops</category>
      <category>monitoring</category>
      <category>sre</category>
    </item>
    <item>
      <title>The Hardest Part of Integrating with Legacy ERPs Is Not the API</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Mon, 01 Jun 2026 13:03:15 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/the-hardest-part-of-integrating-with-legacy-erps-is-not-the-api-52fh</link>
      <guid>https://dev.to/dhruvi_21/the-hardest-part-of-integrating-with-legacy-erps-is-not-the-api-52fh</guid>
      <description>&lt;p&gt;When people hear "ERP integration," they usually think the difficult part is the API.&lt;/p&gt;

&lt;p&gt;Sometimes there isn't even an API.&lt;/p&gt;

&lt;p&gt;But honestly, that's rarely the biggest problem.&lt;/p&gt;

&lt;p&gt;The harder problem is understanding how the business actually uses the system.&lt;/p&gt;

&lt;p&gt;Because what the ERP does and what the organization does are often two different things.&lt;/p&gt;

&lt;p&gt;I've seen situations where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a field means one thing in the documentation and something completely different in practice&lt;/li&gt;
&lt;li&gt;a workflow exists because someone created a workaround five years ago&lt;/li&gt;
&lt;li&gt;critical business rules live in spreadsheets instead of the ERP&lt;/li&gt;
&lt;li&gt;important decisions happen outside the system entirely&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Technically, the integration works.&lt;/p&gt;

&lt;p&gt;Operationally, it's wrong.&lt;/p&gt;

&lt;p&gt;This is where many integration projects get stuck.&lt;/p&gt;

&lt;p&gt;The data moves successfully.&lt;/p&gt;

&lt;p&gt;The API calls succeed.&lt;/p&gt;

&lt;p&gt;The sync completes.&lt;/p&gt;

&lt;p&gt;And yet users immediately tell you something is broken.&lt;/p&gt;

&lt;p&gt;Because the integration followed the system.&lt;/p&gt;

&lt;p&gt;Not the business process.&lt;/p&gt;

&lt;p&gt;One thing I learned early on:&lt;/p&gt;

&lt;p&gt;Never assume the ERP is the source of truth for how work gets done.&lt;/p&gt;

&lt;p&gt;It's often just one piece of a much larger process.&lt;/p&gt;

&lt;p&gt;The real workflow usually spans:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ERP systems&lt;/li&gt;
&lt;li&gt;spreadsheets&lt;/li&gt;
&lt;li&gt;emails&lt;/li&gt;
&lt;li&gt;manual approvals&lt;/li&gt;
&lt;li&gt;undocumented habits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The API is a technical challenge.&lt;/p&gt;

&lt;p&gt;Understanding operational behavior is a people challenge.&lt;/p&gt;

&lt;p&gt;And in my experience, the people challenge takes longer.&lt;/p&gt;

&lt;p&gt;The best integrations I've worked on started with questions like:&lt;/p&gt;

&lt;p&gt;Why does this process exist?&lt;/p&gt;

&lt;p&gt;Who actually uses this field?&lt;/p&gt;

&lt;p&gt;What happens if this step is skipped?&lt;/p&gt;

&lt;p&gt;Those conversations usually uncover more than the technical documentation ever does.&lt;/p&gt;

&lt;p&gt;The interesting part is that older systems are often doing exactly what they were designed to do.&lt;/p&gt;

&lt;p&gt;The complexity comes from everything built around them over the years.&lt;/p&gt;

&lt;p&gt;This is something we see regularly at BrainPack when connecting existing enterprise systems to modern workflows and AI capabilities. The technical connection is usually the easy part. Understanding how the organization actually operates is where most of the real integration work happens.&lt;/p&gt;

</description>
      <category>api</category>
      <category>discuss</category>
      <category>softwareengineering</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Something Honest About Being a Developer on This Kind of Team</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Thu, 28 May 2026 12:38:43 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/something-honest-about-being-a-developer-on-this-kind-of-team-5ehp</link>
      <guid>https://dev.to/dhruvi_21/something-honest-about-being-a-developer-on-this-kind-of-team-5ehp</guid>
      <description>&lt;p&gt;One thing I didn’t expect working on systems like this:&lt;/p&gt;

&lt;p&gt;A lot of the job is uncertainty.&lt;/p&gt;

&lt;p&gt;Not coding itself.&lt;/p&gt;

&lt;p&gt;Uncertainty.&lt;/p&gt;

&lt;p&gt;You’re constantly working across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;systems you didn’t build&lt;/li&gt;
&lt;li&gt;workflows nobody fully documented&lt;/li&gt;
&lt;li&gt;integrations that behave differently under production load&lt;/li&gt;
&lt;li&gt;business logic hidden inside years of habits and manual processes
Sometimes the hardest part is simply figuring out what is actually happening.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another thing people don’t talk about enough:&lt;/p&gt;

&lt;p&gt;You rarely get the satisfaction of “finished.”&lt;/p&gt;

&lt;p&gt;Because the systems keep evolving.&lt;/p&gt;

&lt;p&gt;You fix one workflow.&lt;/p&gt;

&lt;p&gt;Then another dependency appears.&lt;/p&gt;

&lt;p&gt;You stabilize one integration.&lt;/p&gt;

&lt;p&gt;Then business priorities change and the flow changes again.&lt;/p&gt;

&lt;p&gt;The system keeps moving underneath you.&lt;/p&gt;

&lt;p&gt;There’s also a different kind of pressure when systems run continuously.&lt;/p&gt;

&lt;p&gt;You know real operations depend on them.&lt;/p&gt;

&lt;p&gt;If something breaks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;people stop receiving orders&lt;/li&gt;
&lt;li&gt;workflows stop moving&lt;/li&gt;
&lt;li&gt;teams lose visibility&lt;/li&gt;
&lt;li&gt;data becomes unreliable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It changes how carefully you think about small decisions.&lt;/p&gt;

&lt;p&gt;At the same time, this kind of work made me much calmer technically.&lt;/p&gt;

&lt;p&gt;You stop panicking when things fail.&lt;/p&gt;

&lt;p&gt;Because eventually you realize:&lt;br&gt;
production systems always fail somewhere.&lt;/p&gt;

&lt;p&gt;The goal is not perfection.&lt;/p&gt;

&lt;p&gt;The goal is building systems that recover safely and predictably.&lt;/p&gt;

&lt;p&gt;One thing I genuinely like about this work though:&lt;/p&gt;

&lt;p&gt;You get very close to how businesses actually operate.&lt;/p&gt;

&lt;p&gt;Not the clean diagrams.&lt;/p&gt;

&lt;p&gt;The real workflows.&lt;/p&gt;

&lt;p&gt;The weird edge cases.&lt;/p&gt;

&lt;p&gt;The manual processes people invented just to keep things moving.&lt;/p&gt;

&lt;p&gt;You learn quickly that software is usually less about code and more about understanding operational behavior.&lt;/p&gt;

&lt;p&gt;Working at BrainPack exposed me to how complex enterprise environments actually are once multiple systems, teams, and AI workflows start interacting together. Most of the engineering work is not about building isolated features, it’s about making entire operational flows stable enough to trust long term.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A Technical Problem I Worked On This Week</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Fri, 22 May 2026 12:43:15 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/a-technical-problem-i-worked-on-this-week-1fle</link>
      <guid>https://dev.to/dhruvi_21/a-technical-problem-i-worked-on-this-week-1fle</guid>
      <description>&lt;p&gt;This week, I spent more time than expected debugging something that looked simple.&lt;/p&gt;

&lt;p&gt;Data syncing between two systems.&lt;/p&gt;

&lt;p&gt;One side said the record was updated.&lt;/p&gt;

&lt;p&gt;The other side disagreed.&lt;/p&gt;

&lt;p&gt;No errors.&lt;/p&gt;

&lt;p&gt;No failed requests.&lt;/p&gt;

&lt;p&gt;Everything looked normal.&lt;/p&gt;

&lt;p&gt;Which usually means the problem is not obvious.&lt;/p&gt;

&lt;p&gt;The issue ended up being timing.&lt;/p&gt;

&lt;p&gt;One system updated immediately.&lt;/p&gt;

&lt;p&gt;The other processed updates through a delayed workflow.&lt;/p&gt;

&lt;p&gt;Most of the time it worked.&lt;/p&gt;

&lt;p&gt;Sometimes updates arrived in a different order.&lt;/p&gt;

&lt;p&gt;Which created small inconsistencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;outdated values appearing temporarily&lt;/li&gt;
&lt;li&gt;automation triggering from stale information&lt;/li&gt;
&lt;li&gt;users seeing different states in different systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difficult part was that it only happened occasionally.&lt;/p&gt;

&lt;p&gt;So reproducing it locally was almost impossible.&lt;/p&gt;

&lt;p&gt;The fix itself was not complicated.&lt;/p&gt;

&lt;p&gt;We changed how updates were processed.&lt;/p&gt;

&lt;p&gt;Instead of assuming data arrives in the right order, we added validation around state changes before applying updates.&lt;/p&gt;

&lt;p&gt;Small change.&lt;/p&gt;

&lt;p&gt;Big difference.&lt;/p&gt;

&lt;p&gt;One thing I keep learning working on systems that run continuously:&lt;/p&gt;

&lt;p&gt;A lot of problems are not caused by failures.&lt;/p&gt;

&lt;p&gt;They come from assumptions.&lt;/p&gt;

&lt;p&gt;Assuming systems process things instantly.&lt;/p&gt;

&lt;p&gt;Assuming updates arrive in order.&lt;/p&gt;

&lt;p&gt;Assuming timing stays consistent.&lt;/p&gt;

&lt;p&gt;Production environments break assumptions very quickly.&lt;/p&gt;

&lt;p&gt;The interesting part about enterprise systems is that most technical problems are not isolated.&lt;/p&gt;

&lt;p&gt;One small inconsistency spreads.&lt;/p&gt;

&lt;p&gt;An automation behaves differently.&lt;/p&gt;

&lt;p&gt;A report becomes inaccurate.&lt;/p&gt;

&lt;p&gt;Another system trusts the wrong data.&lt;/p&gt;

&lt;p&gt;Small problems travel.&lt;/p&gt;

&lt;p&gt;This is something we deal with regularly at BrainPack while connecting systems that were never originally designed to operate together. AI workflows become much more reliable once the underlying data movement becomes predictable.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>devjournal</category>
      <category>distributedsystems</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>The Difference Between Building for Demo and Building for Production</title>
      <dc:creator>Dhruvi</dc:creator>
      <pubDate>Wed, 20 May 2026 12:45:36 +0000</pubDate>
      <link>https://dev.to/dhruvi_21/the-difference-between-building-for-demo-and-building-for-production-52e7</link>
      <guid>https://dev.to/dhruvi_21/the-difference-between-building-for-demo-and-building-for-production-52e7</guid>
      <description>&lt;p&gt;A lot of software looks great in demos.&lt;/p&gt;

&lt;p&gt;Clean data.&lt;br&gt;
Fast responses.&lt;br&gt;
Perfect flow.&lt;/p&gt;

&lt;p&gt;Production is where reality shows up.&lt;/p&gt;

&lt;p&gt;A demo assumes everything behaves correctly.&lt;/p&gt;

&lt;p&gt;Production assumes eventually something will break.&lt;/p&gt;

&lt;p&gt;That changes how you build.&lt;/p&gt;

&lt;p&gt;For demos:&lt;/p&gt;

&lt;p&gt;You optimize for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;speed&lt;/li&gt;
&lt;li&gt;presentation&lt;/li&gt;
&lt;li&gt;showing capability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For production:&lt;/p&gt;

&lt;p&gt;You optimize for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;failure recovery&lt;/li&gt;
&lt;li&gt;retries&lt;/li&gt;
&lt;li&gt;monitoring&lt;/li&gt;
&lt;li&gt;stability&lt;/li&gt;
&lt;li&gt;weird edge cases nobody planned for&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A demo works when everything goes right.&lt;/p&gt;

&lt;p&gt;Production works when things go wrong.&lt;/p&gt;

&lt;p&gt;One thing I noticed early on:&lt;/p&gt;

&lt;p&gt;Demo environments are predictable.&lt;/p&gt;

&lt;p&gt;Production environments are messy.&lt;/p&gt;

&lt;p&gt;You get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;duplicate events&lt;/li&gt;
&lt;li&gt;incomplete data&lt;/li&gt;
&lt;li&gt;slow third party systems&lt;/li&gt;
&lt;li&gt;retries arriving late&lt;/li&gt;
&lt;li&gt;users doing things you never expected&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The code that looked perfect in testing suddenly behaves very differently.&lt;/p&gt;

&lt;p&gt;Another difference:&lt;/p&gt;

&lt;p&gt;Demo code usually answers:&lt;/p&gt;

&lt;p&gt;"Can we do this?"&lt;/p&gt;

&lt;p&gt;Production code answers:&lt;/p&gt;

&lt;p&gt;"Can this keep working for months while real people depend on it?"&lt;/p&gt;

&lt;p&gt;Very different problem.&lt;/p&gt;

&lt;p&gt;One thing that changed how I build systems:&lt;/p&gt;

&lt;p&gt;I stopped asking:&lt;/p&gt;

&lt;p&gt;"Does this work?"&lt;/p&gt;

&lt;p&gt;Now I ask:&lt;/p&gt;

&lt;p&gt;"What happens when this fails?"&lt;/p&gt;

&lt;p&gt;Because eventually it will.&lt;/p&gt;

&lt;p&gt;The question is whether the system recovers safely.&lt;/p&gt;

&lt;p&gt;A lot of engineering work happens after the feature already works.&lt;/p&gt;

&lt;p&gt;Observability. Recovery. Reliability.&lt;/p&gt;

&lt;p&gt;The things users never notice.&lt;/p&gt;

&lt;p&gt;Until they stop existing.&lt;/p&gt;

&lt;p&gt;This comes up constantly at BrainPack while operating systems that run continuously across enterprise environments. Layering AI on top becomes much easier once the underlying infrastructure is designed for production conditions instead of demo conditions.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>devops</category>
      <category>monitoring</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
