<?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: Jaideep Parashar</title>
    <description>The latest articles on DEV Community by Jaideep Parashar (@jaideepparashar).</description>
    <link>https://dev.to/jaideepparashar</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%2F3391551%2F0fdf1ad6-7dd4-4c4a-adda-2016ca89359c.png</url>
      <title>DEV Community: Jaideep Parashar</title>
      <link>https://dev.to/jaideepparashar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jaideepparashar"/>
    <language>en</language>
    <item>
      <title>Your Dashboard Is Green. Your Users Are Still Unhappy.</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 16 Oct 2026 13:42:51 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/your-dashboard-is-green-your-users-are-still-unhappy-cdl</link>
      <guid>https://dev.to/jaideepparashar/your-dashboard-is-green-your-users-are-still-unhappy-cdl</guid>
      <description>&lt;p&gt;Imagine getting a message from a customer:&lt;/p&gt;

&lt;p&gt;"Your application isn't working."&lt;/p&gt;

&lt;p&gt;You open your monitoring dashboard.&lt;/p&gt;

&lt;p&gt;Server uptime: 99.99%.&lt;/p&gt;

&lt;p&gt;API response time: 120 milliseconds.&lt;/p&gt;

&lt;p&gt;Error rate: 0.1%.&lt;/p&gt;

&lt;p&gt;CPU usage: normal.&lt;/p&gt;

&lt;p&gt;Database connections: healthy.&lt;/p&gt;

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

&lt;p&gt;So you respond:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Our systems are working normally."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But the customer is still unable to complete their task.&lt;/p&gt;

&lt;p&gt;And now you have an interesting problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your monitoring system says everything is fine. Your user says nothing is fine.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Who is right?&lt;/p&gt;

&lt;p&gt;I think this reveals something we don't discuss enough in software engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A system can be technically healthy and still be completely unsuccessful.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  We Measure What Is Easy to Measure
&lt;/h2&gt;

&lt;p&gt;Software engineering has become remarkably good at collecting metrics.&lt;/p&gt;

&lt;p&gt;We measure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;uptime&lt;/li&gt;
&lt;li&gt;latency&lt;/li&gt;
&lt;li&gt;throughput&lt;/li&gt;
&lt;li&gt;error rates&lt;/li&gt;
&lt;li&gt;memory consumption&lt;/li&gt;
&lt;li&gt;CPU utilization&lt;/li&gt;
&lt;li&gt;database performance&lt;/li&gt;
&lt;li&gt;deployment frequency&lt;/li&gt;
&lt;li&gt;test coverage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are important measurements.&lt;/p&gt;

&lt;p&gt;They help engineers understand how software behaves.&lt;/p&gt;

&lt;p&gt;But they don't necessarily tell us whether the software is achieving its purpose.&lt;/p&gt;

&lt;p&gt;Consider an online shopping application.&lt;/p&gt;

&lt;p&gt;The homepage loads.&lt;/p&gt;

&lt;p&gt;The search API responds.&lt;/p&gt;

&lt;p&gt;The product database works.&lt;/p&gt;

&lt;p&gt;The checkout service is available.&lt;/p&gt;

&lt;p&gt;But customers cannot complete their purchases because a confusing validation message prevents them from entering their delivery address.&lt;/p&gt;

&lt;p&gt;From the infrastructure perspective, almost everything might look healthy.&lt;/p&gt;

&lt;p&gt;From the customer perspective, the application is broken.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The system is available. The outcome is unavailable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's a very different failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With Green Dashboards
&lt;/h2&gt;

&lt;p&gt;A green dashboard creates confidence.&lt;/p&gt;

&lt;p&gt;Sometimes deserved confidence.&lt;/p&gt;

&lt;p&gt;Sometimes false confidence.&lt;/p&gt;

&lt;p&gt;Imagine a monitoring panel showing:&lt;/p&gt;

&lt;h2&gt;
  
  
  Service Health
&lt;/h2&gt;

&lt;p&gt;API Uptime       99.99%&lt;br&gt;
Avg. Latency     120ms&lt;br&gt;
Error Rate       0.10%&lt;br&gt;
CPU Usage        42%&lt;br&gt;
Database         Healthy&lt;/p&gt;

&lt;p&gt;Overall Status:  GREEN&lt;/p&gt;

&lt;p&gt;Now imagine another dashboard:&lt;/p&gt;
&lt;h2&gt;
  
  
  User Outcomes
&lt;/h2&gt;

&lt;p&gt;Checkout Completion   61%&lt;br&gt;
Payment Retries       High&lt;br&gt;
Search Abandonment    Rising&lt;br&gt;
Failed User Journeys  Rising&lt;/p&gt;

&lt;p&gt;Overall Status:  WARNING&lt;/p&gt;

&lt;p&gt;Both dashboards can describe the same application.&lt;/p&gt;

&lt;p&gt;Neither is necessarily wrong.&lt;/p&gt;

&lt;p&gt;They're answering different questions.&lt;/p&gt;

&lt;p&gt;The first asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is the infrastructure operating?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The second asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can users accomplish what they came here to do?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We need both.&lt;/p&gt;

&lt;p&gt;The mistake is treating the first as proof of the second.&lt;/p&gt;
&lt;h2&gt;
  
  
  A Successful API Call Can Still Be a Failed Experience
&lt;/h2&gt;

&lt;p&gt;This is one of the most interesting distinctions in modern software.&lt;/p&gt;

&lt;p&gt;Consider an API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@app.get("/recommendations")
def get_recommendations():
    return {
        "status": "success",
        "recommendations": []
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;It returns a valid response.&lt;/p&gt;

&lt;p&gt;The HTTP status is 200.&lt;/p&gt;

&lt;p&gt;No exception occurs.&lt;/p&gt;

&lt;p&gt;Your monitoring system may count this as a successful request.&lt;/p&gt;

&lt;p&gt;But if the user was expecting useful recommendations, the response might represent a product failure.&lt;/p&gt;

&lt;p&gt;This doesn't mean an empty list is always wrong. Sometimes there genuinely are no suitable recommendations.&lt;/p&gt;

&lt;p&gt;It means &lt;strong&gt;technical success and useful success are different concepts.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The application needs a way to distinguish them.&lt;/p&gt;

&lt;p&gt;And that distinction cannot always be inferred from the HTTP status code.&lt;/p&gt;

&lt;h2&gt;
  
  
  This Gets More Complicated With AI
&lt;/h2&gt;

&lt;p&gt;Now let's introduce an AI system.&lt;/p&gt;

&lt;p&gt;Imagine a customer-support assistant.&lt;/p&gt;

&lt;p&gt;It responds to every request.&lt;/p&gt;

&lt;p&gt;Its average response time is excellent.&lt;/p&gt;

&lt;p&gt;The model API rarely fails.&lt;/p&gt;

&lt;p&gt;Token usage is within budget.&lt;/p&gt;

&lt;p&gt;All technical indicators look good.&lt;/p&gt;

&lt;p&gt;But customers keep receiving answers that are polite, grammatically correct, and completely unhelpful.&lt;/p&gt;

&lt;p&gt;The system is functioning.&lt;/p&gt;

&lt;p&gt;The model is responding.&lt;/p&gt;

&lt;p&gt;The workflow is completing.&lt;/p&gt;

&lt;p&gt;Yet the customer is frustrated.&lt;/p&gt;

&lt;p&gt;This is why measuring an AI application only through latency, availability, and cost is insufficient.&lt;/p&gt;

&lt;p&gt;We also need to understand things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did the response answer the question?&lt;/li&gt;
&lt;li&gt;Was it factually supported?&lt;/li&gt;
&lt;li&gt;Did the system follow the required process?&lt;/li&gt;
&lt;li&gt;Did the customer achieve their intended outcome?&lt;/li&gt;
&lt;li&gt;Was human intervention required?&lt;/li&gt;
&lt;li&gt;Did the interaction create another problem?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of these require carefully designed evaluation datasets, human review, or validated automated checks.&lt;/p&gt;

&lt;p&gt;You cannot simply install a monitoring library and expect it to understand customer satisfaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observability tells you what happened. Evaluation helps you determine whether it was good enough.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Both matter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs8p7azv3f01e1rawfyvr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs8p7azv3f01e1rawfyvr.png" alt="Your Dashboard Is Green. Your Users Are Still Unhappy." width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sometimes Our Metrics Reward the Wrong Behavior
&lt;/h2&gt;

&lt;p&gt;Here's an uncomfortable thought.&lt;/p&gt;

&lt;p&gt;What if our measurements are not just missing problems?&lt;/p&gt;

&lt;p&gt;What if they're encouraging them?&lt;/p&gt;

&lt;p&gt;Imagine a development team being evaluated mainly on the number of features delivered.&lt;/p&gt;

&lt;p&gt;Naturally, the team becomes very good at shipping features.&lt;/p&gt;

&lt;p&gt;More releases.&lt;/p&gt;

&lt;p&gt;More pull requests.&lt;/p&gt;

&lt;p&gt;More completed tickets.&lt;/p&gt;

&lt;p&gt;But perhaps the application becomes increasingly difficult to use.&lt;/p&gt;

&lt;p&gt;Maybe customers only needed three improvements, while the team delivered thirty features.&lt;/p&gt;

&lt;p&gt;The delivery metrics look impressive.&lt;/p&gt;

&lt;p&gt;The product becomes worse.&lt;/p&gt;

&lt;p&gt;The same thing can happen with AI.&lt;/p&gt;

&lt;p&gt;If we reward a system for answering questions quickly, it may produce fast but incomplete responses.&lt;/p&gt;

&lt;p&gt;If we optimize only for reducing human involvement, we may discourage necessary escalation.&lt;/p&gt;

&lt;p&gt;If we optimize solely for low cost, we may sacrifice quality.&lt;/p&gt;

&lt;p&gt;This is not an argument against metrics.&lt;/p&gt;

&lt;p&gt;It's an argument for understanding what a metric actually represents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When a measurement becomes a target, we need to be careful about what behavior it encourages.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Missing Layer: Outcome Observability
&lt;/h2&gt;

&lt;p&gt;I think software teams need to pay more attention to what we might call outcome observability.&lt;/p&gt;

&lt;p&gt;Traditional observability helps us understand the internal state of a system through signals such as logs, metrics, and traces.&lt;/p&gt;

&lt;p&gt;Outcome observability extends the question.&lt;/p&gt;

&lt;p&gt;Instead of looking only at whether components operated correctly, we also look at whether important user journeys succeeded.&lt;/p&gt;

&lt;p&gt;Consider an application that processes invoices.&lt;/p&gt;

&lt;p&gt;We could measure:&lt;/p&gt;

&lt;p&gt;Technical metrics&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API latency&lt;/li&gt;
&lt;li&gt;processing errors&lt;/li&gt;
&lt;li&gt;queue depth&lt;/li&gt;
&lt;li&gt;database availability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Workflow metrics&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;invoices successfully processed&lt;/li&gt;
&lt;li&gt;invoices requiring manual correction&lt;/li&gt;
&lt;li&gt;duplicate submissions&lt;/li&gt;
&lt;li&gt;processing delays&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Outcome metrics&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;invoices correctly finalized&lt;/li&gt;
&lt;li&gt;time from submission to approval&lt;/li&gt;
&lt;li&gt;correction costs&lt;/li&gt;
&lt;li&gt;percentage of users completing the process without assistance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The three layers answer different questions.&lt;/p&gt;

&lt;p&gt;Infrastructure&lt;br&gt;
      ↓&lt;br&gt;
Is the system operational?&lt;/p&gt;

&lt;p&gt;Workflow&lt;br&gt;
      ↓&lt;br&gt;
Is the process functioning?&lt;/p&gt;

&lt;p&gt;Outcome&lt;br&gt;
      ↓&lt;br&gt;
Is the user achieving the goal?&lt;/p&gt;

&lt;p&gt;The key is to connect these layers instead of monitoring them separately.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Question That Changes Everything
&lt;/h2&gt;

&lt;p&gt;Before designing a dashboard, I think we should ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What does success look like from the user's perspective?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not the developer's perspective.&lt;/p&gt;

&lt;p&gt;Not the infrastructure team's perspective.&lt;/p&gt;

&lt;p&gt;Not the product manager's perspective.&lt;/p&gt;

&lt;p&gt;The user's.&lt;/p&gt;

&lt;p&gt;If you're building a payment system, success isn't simply returning HTTP 200.&lt;/p&gt;

&lt;p&gt;It's helping authorized customers complete payments correctly and safely.&lt;/p&gt;

&lt;p&gt;If you're building an educational platform, success isn't simply counting videos played.&lt;/p&gt;

&lt;p&gt;It's helping people learn.&lt;/p&gt;

&lt;p&gt;If you're building an AI assistant, success isn't merely generating an answer.&lt;/p&gt;

&lt;p&gt;It's helping someone accomplish a task reliably.&lt;/p&gt;

&lt;p&gt;Once that outcome is clear, we can work backward.&lt;/p&gt;

&lt;p&gt;What events would indicate success?&lt;/p&gt;

&lt;p&gt;What events would indicate failure?&lt;/p&gt;

&lt;p&gt;What should we measure?&lt;/p&gt;

&lt;p&gt;Which measurements are merely proxies?&lt;/p&gt;

&lt;p&gt;And what important failures might still remain invisible?&lt;/p&gt;

&lt;p&gt;These questions are just as important as choosing a monitoring tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  But Outcomes Are Harder to Measure
&lt;/h2&gt;

&lt;p&gt;There is a reason engineering teams rely heavily on technical metrics.&lt;/p&gt;

&lt;p&gt;They're relatively straightforward.&lt;/p&gt;

&lt;p&gt;A server is available or it isn't.&lt;/p&gt;

&lt;p&gt;A request takes 100 milliseconds or 500 milliseconds.&lt;/p&gt;

&lt;p&gt;A test passes or fails.&lt;/p&gt;

&lt;p&gt;Human outcomes are messier.&lt;/p&gt;

&lt;p&gt;Did the user abandon checkout because of a bug?&lt;/p&gt;

&lt;p&gt;Because the delivery price was too high?&lt;/p&gt;

&lt;p&gt;Because they changed their mind?&lt;/p&gt;

&lt;p&gt;Because the interface was confusing?&lt;/p&gt;

&lt;p&gt;We cannot assume that every abandoned checkout represents a software failure.&lt;/p&gt;

&lt;p&gt;A decline in conversion could also reflect pricing, seasonality, or changing customer demand.&lt;/p&gt;

&lt;p&gt;That's why outcome metrics need interpretation.&lt;/p&gt;

&lt;p&gt;Sometimes they require user research.&lt;/p&gt;

&lt;p&gt;Sometimes controlled experiments.&lt;/p&gt;

&lt;p&gt;Sometimes investigating individual journeys.&lt;/p&gt;

&lt;p&gt;Sometimes the best question isn't:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What does the dashboard say?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What happened to the people represented by these numbers?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  A Better Way to Investigate Production Problems
&lt;/h2&gt;

&lt;p&gt;Suppose a customer reports a failed transaction.&lt;/p&gt;

&lt;p&gt;Instead of checking only whether the server was healthy, we can trace the journey:&lt;/p&gt;

&lt;p&gt;User starts checkout&lt;br&gt;
        ↓&lt;br&gt;
Address validation&lt;br&gt;
        ↓&lt;br&gt;
Cart confirmation&lt;br&gt;
        ↓&lt;br&gt;
Payment authorization&lt;br&gt;
        ↓&lt;br&gt;
Order creation&lt;br&gt;
        ↓&lt;br&gt;
Confirmation delivered&lt;/p&gt;

&lt;p&gt;Which stage failed?&lt;/p&gt;

&lt;p&gt;Did the user receive a meaningful explanation?&lt;/p&gt;

&lt;p&gt;Was the payment authorized but the order never created?&lt;/p&gt;

&lt;p&gt;Was the order created but the confirmation never delivered?&lt;/p&gt;

&lt;p&gt;Could the user safely retry?&lt;/p&gt;

&lt;p&gt;These are workflow questions.&lt;/p&gt;

&lt;p&gt;And they often reveal problems that infrastructure health metrics cannot.&lt;/p&gt;

&lt;p&gt;This is one reason I believe systems thinking matters so much in software development.&lt;/p&gt;

&lt;p&gt;The value of the application comes from the complete experience, not from individual components operating in isolation.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Makes the Measurement Problem More Urgent
&lt;/h2&gt;

&lt;p&gt;AI-generated functionality introduces another challenge.&lt;/p&gt;

&lt;p&gt;Traditional software often follows explicit logic.&lt;/p&gt;

&lt;p&gt;AI systems can produce plausible outputs that are still incorrect.&lt;/p&gt;

&lt;p&gt;A chatbot can confidently give the wrong answer.&lt;/p&gt;

&lt;p&gt;A coding assistant can generate code that passes a superficial check but violates a requirement.&lt;/p&gt;

&lt;p&gt;A document-processing system can extract the wrong number while returning a perfectly valid JSON object.&lt;/p&gt;

&lt;p&gt;The request succeeds.&lt;/p&gt;

&lt;p&gt;The output format is correct.&lt;/p&gt;

&lt;p&gt;The result is wrong.&lt;/p&gt;

&lt;p&gt;We need evaluation methods that go beyond asking whether the application ran successfully.&lt;/p&gt;

&lt;p&gt;This may include reference-based tests, checking factual support, measuring task completion, and reviewing samples of real-world failures with appropriate privacy protections.&lt;/p&gt;

&lt;p&gt;No single metric can capture the entire quality of a complex AI system.&lt;/p&gt;

&lt;p&gt;The objective is to build enough evidence to make better decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maybe We Should Stop Celebrating Green So Quickly
&lt;/h2&gt;

&lt;p&gt;I like dashboards.&lt;/p&gt;

&lt;p&gt;I like monitoring.&lt;/p&gt;

&lt;p&gt;I like measurable engineering.&lt;/p&gt;

&lt;p&gt;But I'm becoming increasingly cautious about what a green status actually means.&lt;/p&gt;

&lt;p&gt;Green should mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The conditions we're monitoring are within acceptable limits."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It shouldn't automatically mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Everything is fine."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those are different statements.&lt;/p&gt;

&lt;p&gt;A green dashboard is useful evidence.&lt;/p&gt;

&lt;p&gt;It is not a complete description of reality.&lt;/p&gt;

&lt;p&gt;And perhaps that's one of the most important lessons software engineers can learn as our systems become more complex.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We don't just need better software monitoring. We need better definitions of success.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Question Isn't Whether Your System Works
&lt;/h2&gt;

&lt;p&gt;It's whether your system works for the people it was built to serve.&lt;/p&gt;

&lt;p&gt;A fast application that frustrates users isn't necessarily a good application.&lt;/p&gt;

&lt;p&gt;A highly available service that produces unusable results isn't necessarily successful.&lt;/p&gt;

&lt;p&gt;An AI model that responds to every request isn't necessarily helpful.&lt;/p&gt;

&lt;p&gt;And a dashboard full of green indicators doesn't mean every important problem has been solved.&lt;/p&gt;

&lt;p&gt;Sometimes the most dangerous failure is the one we never thought to measure.&lt;/p&gt;

&lt;p&gt;So the next time every indicator is green, I think we should ask one more question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What could still be going wrong that this dashboard would never show us?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question might teach us more than another dozen monitoring widgets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have you ever worked on a system where all the technical metrics looked healthy, but users were still struggling? What did your dashboards miss?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Want More:&lt;/p&gt;

&lt;p&gt;Head over to ReThynk AI to access our latest research, magazine articles, and developer resources. &lt;a href="https://rethynkai.com/" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>discuss</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The Next Interesting AI App Might Not Have a Screen</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 09 Oct 2026 03:03:13 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/the-next-interesting-ai-app-might-not-have-a-screen-5hlc</link>
      <guid>https://dev.to/jaideepparashar/the-next-interesting-ai-app-might-not-have-a-screen-5hlc</guid>
      <description>&lt;p&gt;For years, we've been building technology around screens.&lt;/p&gt;

&lt;p&gt;Websites.&lt;/p&gt;

&lt;p&gt;Mobile apps.&lt;/p&gt;

&lt;p&gt;Dashboards.&lt;/p&gt;

&lt;p&gt;Chatbots.&lt;/p&gt;

&lt;p&gt;AI assistants.&lt;/p&gt;

&lt;p&gt;Almost every new software idea seems to follow the same pattern:&lt;/p&gt;

&lt;p&gt;Build an interface. Wait for a human to interact with it. Return a result.&lt;/p&gt;

&lt;p&gt;But I've been thinking about something different.&lt;/p&gt;

&lt;p&gt;What if some of the most interesting applications of AI don't need us to open an app at all?&lt;/p&gt;

&lt;p&gt;What if software could understand what was happening around it?&lt;/p&gt;

&lt;p&gt;What if it could respond to physical conditions?&lt;/p&gt;

&lt;p&gt;What if it could work without an internet connection?&lt;/p&gt;

&lt;p&gt;And what if the interface wasn't a screen, but the world itself?&lt;/p&gt;

&lt;p&gt;I think that's where software development starts becoming particularly interesting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F06aoa5aapy0gfj0vpqca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F06aoa5aapy0gfj0vpqca.png" alt="The Next Interesting AI App Might Not Have a Screen" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We Have Spent Decades Teaching Humans to Use Computers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think about how we interact with technology today.&lt;/p&gt;

&lt;p&gt;You want to check the temperature.&lt;/p&gt;

&lt;p&gt;You open an app.&lt;/p&gt;

&lt;p&gt;You want to control your lights.&lt;/p&gt;

&lt;p&gt;You open another app.&lt;/p&gt;

&lt;p&gt;You want to monitor your energy consumption.&lt;/p&gt;

&lt;p&gt;You open a dashboard.&lt;/p&gt;

&lt;p&gt;You want to understand why a machine stopped working.&lt;/p&gt;

&lt;p&gt;You check a monitoring system.&lt;/p&gt;

&lt;p&gt;The common assumption is that &lt;strong&gt;humans must continually interact with software to obtain information or initiate actions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But consider a different possibility.&lt;/p&gt;

&lt;p&gt;A system that monitors temperature, humidity, energy consumption, and occupancy.&lt;/p&gt;

&lt;p&gt;Instead of waiting for someone to open a dashboard, it identifies an unusual pattern and takes an appropriate, authorized action.&lt;/p&gt;

&lt;p&gt;No application needs to be opened.&lt;/p&gt;

&lt;p&gt;No prompt needs to be written.&lt;/p&gt;

&lt;p&gt;The software simply performs its intended function.&lt;/p&gt;

&lt;p&gt;Of course, humans may still need an interface for configuration, exceptions, and oversight.&lt;/p&gt;

&lt;p&gt;But the interface is no longer the center of the experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The outcome is.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Physical World Is a Very Different Programming Environment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A traditional web application works with relatively structured inputs.&lt;/p&gt;

&lt;p&gt;A user clicks a button.&lt;/p&gt;

&lt;p&gt;Submits a form.&lt;/p&gt;

&lt;p&gt;Uploads a file.&lt;/p&gt;

&lt;p&gt;Makes an API request.&lt;/p&gt;

&lt;p&gt;Physical systems have a much messier relationship with data.&lt;/p&gt;

&lt;p&gt;A sensor can malfunction.&lt;/p&gt;

&lt;p&gt;A microphone can capture background noise.&lt;/p&gt;

&lt;p&gt;A camera can be obstructed.&lt;/p&gt;

&lt;p&gt;A device can lose connectivity.&lt;/p&gt;

&lt;p&gt;A battery can run low.&lt;/p&gt;

&lt;p&gt;A motor can fail.&lt;/p&gt;

&lt;p&gt;Two identical devices can behave differently under different environmental conditions.&lt;/p&gt;

&lt;p&gt;And unlike a software bug that produces an incorrect message, a physical-system failure may affect something outside the computer.&lt;/p&gt;

&lt;p&gt;That changes how we approach engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The physical world doesn't care whether your demo worked perfectly.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It cares whether the system behaves reliably under real conditions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Is Only One Part of the System&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a small device designed to monitor unusual sounds in an industrial environment.&lt;/p&gt;

&lt;p&gt;Its job is to identify patterns that might indicate a machine needs inspection.&lt;/p&gt;

&lt;p&gt;A simplified architecture might look like this:&lt;/p&gt;

&lt;p&gt;Microphone / Sensor&lt;br&gt;
        ↓&lt;br&gt;
Signal Processing&lt;br&gt;
        ↓&lt;br&gt;
Local ML Model&lt;br&gt;
        ↓&lt;br&gt;
Confidence &amp;amp; Rule Checks&lt;br&gt;
        ↓&lt;br&gt;
Decision Logic&lt;br&gt;
        ↓&lt;br&gt;
Alert / Human Inspection&lt;br&gt;
        ↓&lt;br&gt;
Feedback &amp;amp; Monitoring&lt;/p&gt;

&lt;p&gt;Notice something interesting?&lt;/p&gt;

&lt;p&gt;The AI model is only one component.&lt;/p&gt;

&lt;p&gt;We still need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reliable sensors&lt;/li&gt;
&lt;li&gt;useful signal processing&lt;/li&gt;
&lt;li&gt;appropriate confidence thresholds&lt;/li&gt;
&lt;li&gt;sensible decision rules&lt;/li&gt;
&lt;li&gt;failure handling&lt;/li&gt;
&lt;li&gt;logging&lt;/li&gt;
&lt;li&gt;security&lt;/li&gt;
&lt;li&gt;human oversight&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A model might detect an unusual sound correctly.&lt;/p&gt;

&lt;p&gt;But if the microphone is defective, the system can still fail.&lt;/p&gt;

&lt;p&gt;The intelligence of the model doesn't eliminate the need for engineering.&lt;/p&gt;

&lt;p&gt;This is closely related to an idea I explored in Stop Building AI Agents. Start Building AI Systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The complete system matters more than any individual intelligent component.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Happens When the Internet Disappears?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is one of my favorite questions to ask about connected technology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does the application still work when the internet doesn't?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For many applications, losing connectivity is inconvenient.&lt;/p&gt;

&lt;p&gt;For some physical systems, it can be a fundamental design problem.&lt;/p&gt;

&lt;p&gt;Imagine a smart agricultural device monitoring soil conditions in a remote location. Imagine an AI powered device for eldercare add helps get optimum care in the old age. To build &lt;a href="https://rethynkai.com/shop/ai-magazine/rethynk-ai-magazine-september-2026/" rel="noopener noreferrer"&gt;DIY AI ElderCare Programme&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If every reading must travel to a cloud server before the system can make a basic decision, connectivity becomes part of the critical path.&lt;/p&gt;

&lt;p&gt;But what if the device could process data locally?&lt;/p&gt;

&lt;p&gt;It could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read the sensor.&lt;/li&gt;
&lt;li&gt;Validate the measurement.&lt;/li&gt;
&lt;li&gt;Evaluate a predefined rule or local model.&lt;/li&gt;
&lt;li&gt;Trigger a permitted action.&lt;/li&gt;
&lt;li&gt;Store the result.&lt;/li&gt;
&lt;li&gt;Synchronize with the cloud when connectivity returns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cloud remains useful for fleet management, updates, historical analysis, and heavier computation.&lt;/p&gt;

&lt;p&gt;But the essential function no longer depends entirely on it.&lt;/p&gt;

&lt;p&gt;This is one reason I find edge computing fascinating.&lt;/p&gt;

&lt;p&gt;It changes where decisions can happen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not Everything Needs an AI Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's where I want to challenge the excitement around intelligent devices.&lt;/p&gt;

&lt;p&gt;Suppose we want a system to switch on a fan when a room becomes too hot.&lt;/p&gt;

&lt;p&gt;Do we need an LLM?&lt;/p&gt;

&lt;p&gt;A neural network?&lt;/p&gt;

&lt;p&gt;An autonomous agent?&lt;/p&gt;

&lt;p&gt;Probably not.&lt;/p&gt;

&lt;p&gt;A simple rule might be enough:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;def should_start_fan(temperature, threshold=30):&lt;br&gt;
     return temperature &amp;gt; threshold&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That is understandable, testable, and predictable.&lt;/p&gt;

&lt;p&gt;For a real controller, we'd also want hysteresis, sensor validation, and safe behavior when readings are unavailable.&lt;/p&gt;

&lt;p&gt;Now imagine the system must predict equipment deterioration using several changing signals.&lt;/p&gt;

&lt;p&gt;A machine-learning model may become useful.&lt;/p&gt;

&lt;p&gt;The important distinction is this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use AI when the problem requires capabilities that simpler techniques cannot adequately provide.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Otherwise, we're adding complexity because the technology is available.&lt;/p&gt;

&lt;p&gt;Not because the problem requires it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Next Interface Might Be a Conversation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not every screenless system needs to operate autonomously.&lt;/p&gt;

&lt;p&gt;Some might use voice.&lt;/p&gt;

&lt;p&gt;Some might use gestures.&lt;/p&gt;

&lt;p&gt;Some might respond to environmental signals.&lt;/p&gt;

&lt;p&gt;And some might combine several forms of interaction.&lt;/p&gt;

&lt;p&gt;Imagine a technician working on a machine.&lt;/p&gt;

&lt;p&gt;Instead of stopping to open a manual on a tablet, the technician could ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What does this warning pattern mean?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A suitable system might combine a spoken question with equipment documentation and live diagnostic readings.&lt;/p&gt;

&lt;p&gt;It could provide an explanation without requiring the technician to navigate a traditional application.&lt;/p&gt;

&lt;p&gt;That's a different approach to interface design.&lt;/p&gt;

&lt;p&gt;But it introduces engineering challenges too.&lt;/p&gt;

&lt;p&gt;What happens when speech recognition fails?&lt;/p&gt;

&lt;p&gt;What happens in a noisy environment?&lt;/p&gt;

&lt;p&gt;What if two people speak at once?&lt;/p&gt;

&lt;p&gt;What if the system misunderstands a safety-critical instruction?&lt;/p&gt;

&lt;p&gt;The answer cannot simply be:&lt;/p&gt;

&lt;p&gt;"Use a better model."&lt;/p&gt;

&lt;p&gt;We need reliable interaction design, confirmation mechanisms, access controls, and safe failure behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hardware Makes Software Engineers Think Differently&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is a particular discipline that physical systems force upon us.&lt;/p&gt;

&lt;p&gt;You cannot assume unlimited compute.&lt;/p&gt;

&lt;p&gt;You cannot assume continuous connectivity.&lt;/p&gt;

&lt;p&gt;You cannot assume perfect inputs.&lt;/p&gt;

&lt;p&gt;You cannot assume a user will always be present to correct an error.&lt;/p&gt;

&lt;p&gt;You may have to work within strict limits on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;power consumption&lt;/li&gt;
&lt;li&gt;memory&lt;/li&gt;
&lt;li&gt;processing capacity&lt;/li&gt;
&lt;li&gt;response time&lt;/li&gt;
&lt;li&gt;network availability&lt;/li&gt;
&lt;li&gt;physical size&lt;/li&gt;
&lt;li&gt;maintenance requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These constraints are not necessarily disadvantages.&lt;/p&gt;

&lt;p&gt;They force us to ask better questions.&lt;/p&gt;

&lt;p&gt;Does this computation need to happen locally?&lt;/p&gt;

&lt;p&gt;Can we reduce the model size?&lt;/p&gt;

&lt;p&gt;Can the system operate with intermittent connectivity?&lt;/p&gt;

&lt;p&gt;What happens if a sensor provides incorrect data?&lt;/p&gt;

&lt;p&gt;What is the safest action when the system is uncertain?&lt;/p&gt;

&lt;p&gt;These are the kinds of questions that make technology engineering interesting beyond the software interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Real Opportunity Is in Combining Technologies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't believe the next wave of useful applications will come from AI alone.&lt;/p&gt;

&lt;p&gt;It will come from combinations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI + Sensors&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Systems that interpret environmental and operational data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI + Robotics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Machines that can perceive conditions and perform carefully controlled physical tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI + Edge Computing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Applications that process important information closer to where it is generated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI + IoT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Connected devices that move beyond collecting data to helping interpret and act on it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI + Traditional Software&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reliable workflows where probabilistic models are used only where they add value.&lt;/p&gt;

&lt;p&gt;These combinations are more interesting to me than simply adding another chatbot interface to an existing product.&lt;/p&gt;

&lt;p&gt;But they are also harder.&lt;/p&gt;

&lt;p&gt;Because when technology touches the physical world, reliability, maintenance, usability, and safety become part of the product, not optional features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maybe We've Been Asking the Wrong Question&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For years, software teams have often begun with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What app should we build?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With AI, that sometimes becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What AI feature should we add?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What agent should we create?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think we should start with a different question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What useful outcome should happen, and what is the simplest reliable system that can make it happen?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes the answer will be a website.&lt;/p&gt;

&lt;p&gt;Sometimes it will be a mobile application.&lt;/p&gt;

&lt;p&gt;Sometimes it will be an API.&lt;/p&gt;

&lt;p&gt;Sometimes it will be a basic automation rule.&lt;/p&gt;

&lt;p&gt;And sometimes it will be a small device quietly performing its job in the background.&lt;/p&gt;

&lt;p&gt;This connects to another idea I've explored: &lt;a href="https://dev.to/jaideepparashar/why-i-think-workflows-matter-more-than-agents-3p82"&gt;Why I Think Workflows Matter More Than Agents.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Technology should fit the problem.&lt;/p&gt;

&lt;p&gt;We shouldn't reshape every problem to fit whichever technology is currently popular.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Most Interesting Software Might Be the Software We Barely Notice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When technology works well, something interesting happens.&lt;/p&gt;

&lt;p&gt;We stop thinking about it.&lt;/p&gt;

&lt;p&gt;A good thermostat doesn't require our constant attention.&lt;/p&gt;

&lt;p&gt;A well-designed monitoring system doesn't need someone watching a dashboard every second.&lt;/p&gt;

&lt;p&gt;A reliable automation system doesn't need to demonstrate how intelligent it is.&lt;/p&gt;

&lt;p&gt;It simply works within the limits it was designed for.&lt;/p&gt;

&lt;p&gt;That doesn't mean screens will disappear.&lt;/p&gt;

&lt;p&gt;Or that every device will become intelligent.&lt;/p&gt;

&lt;p&gt;Or that every physical process should be automated.&lt;/p&gt;

&lt;p&gt;But I think it represents an important shift in how we imagine software.&lt;/p&gt;

&lt;p&gt;For a long time, we built systems that waited for humans to tell them what to do.&lt;/p&gt;

&lt;p&gt;Increasingly, we can build systems that observe conditions, process information, and provide useful assistance within carefully defined boundaries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The challenge is no longer just making software intelligent.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's making intelligence useful in the real world.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And perhaps the next genuinely interesting AI application won't be another website, chatbot, or dashboard.&lt;/p&gt;

&lt;p&gt;Perhaps it will be a small device with a sensor, a modest processor, a carefully chosen model, and one very specific job.&lt;/p&gt;

&lt;p&gt;No spectacular interface.&lt;/p&gt;

&lt;p&gt;No unnecessary complexity.&lt;/p&gt;

&lt;p&gt;Just a system solving a real problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you think? Are we entering an era where the most interesting software won't necessarily live on our screens?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Want More:&lt;/p&gt;

&lt;p&gt;Head over to ReThynk AI to access our latest research, magazine articles, and developer resources. &lt;a href="https://rethynkai.com/" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>iot</category>
      <category>discuss</category>
      <category>community</category>
    </item>
    <item>
      <title>I Think We Confuse Clean Code With Good Code</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 02 Oct 2026 13:50:20 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/i-think-we-confuse-clean-code-with-good-code-449n</link>
      <guid>https://dev.to/jaideepparashar/i-think-we-confuse-clean-code-with-good-code-449n</guid>
      <description>&lt;p&gt;I've seen beautifully organized code that was difficult to understand.&lt;/p&gt;

&lt;p&gt;I've also seen ugly-looking code that solved a complicated problem surprisingly well.&lt;/p&gt;

&lt;p&gt;That made me wonder:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are we sometimes confusing clean code with good code?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We talk a lot about clean code.&lt;/p&gt;

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

&lt;p&gt;Meaningful names.&lt;/p&gt;

&lt;p&gt;Design patterns.&lt;/p&gt;

&lt;p&gt;Abstractions.&lt;/p&gt;

&lt;p&gt;DRY principles.&lt;/p&gt;

&lt;p&gt;Consistent formatting.&lt;/p&gt;

&lt;p&gt;Well-organized files.&lt;/p&gt;

&lt;p&gt;All of these things matter.&lt;/p&gt;

&lt;p&gt;But there is a problem.&lt;/p&gt;

&lt;p&gt;You can follow every clean-code principle and still build something that nobody understands.&lt;/p&gt;

&lt;p&gt;Because &lt;strong&gt;clean code and clear code are not necessarily the same thing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clean Code Can Still Hide the Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine opening a project and finding this:&lt;/p&gt;

&lt;p&gt;services/&lt;br&gt;
├── adapters/&lt;br&gt;
├── factories/&lt;br&gt;
├── strategies/&lt;br&gt;
├── repositories/&lt;br&gt;
├── handlers/&lt;br&gt;
├── managers/&lt;br&gt;
├── providers/&lt;br&gt;
└── utilities/&lt;/p&gt;

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

&lt;p&gt;Every class has a name.&lt;/p&gt;

&lt;p&gt;Every responsibility appears to have its own abstraction.&lt;/p&gt;

&lt;p&gt;The code reviewer might even say:&lt;/p&gt;

&lt;p&gt;"This is nicely structured."&lt;/p&gt;

&lt;p&gt;But then you try to answer a simple question:&lt;/p&gt;

&lt;p&gt;"What happens when a user clicks this button?"&lt;/p&gt;

&lt;p&gt;And suddenly you're jumping through eight files.&lt;/p&gt;

&lt;p&gt;The code is clean.&lt;/p&gt;

&lt;p&gt;The architecture is organized.&lt;/p&gt;

&lt;p&gt;But the system is difficult to understand.&lt;/p&gt;

&lt;p&gt;That's the distinction I think we often miss.&lt;/p&gt;

&lt;p&gt;However, in my last post, "&lt;a href="https://dev.to/jaideepparashar/i-think-ai-is-making-coding-easier-and-learning-harder-5hjf"&gt;I Think AI Is Making Coding Easier and Learning Harder&lt;/a&gt;", I emphasised how AI is making coding easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clear Code Answers "Why?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Clean code often focuses on &lt;strong&gt;how the code is written&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Clear code also focuses on &lt;strong&gt;why the code exists&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Consider this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;if user.age &amp;gt;= 18:&lt;br&gt;
    allow_access()&lt;/code&gt;&lt;/p&gt;

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

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

&lt;p&gt;But imagine the actual business rule is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Users can access the feature if they are 18 or older, have completed identity verification, and are not currently suspended.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now we might write:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;if (&lt;br&gt;
    user.age &amp;gt;= 18&lt;br&gt;
    and user.identity_verified&lt;br&gt;
    and not user.suspended&lt;br&gt;
):&lt;br&gt;
    allow_access()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That's still relatively clear.&lt;/p&gt;

&lt;p&gt;But six months later, someone changes the requirement.&lt;/p&gt;

&lt;p&gt;Perhaps suspended users can now access the feature under certain conditions.&lt;/p&gt;

&lt;p&gt;The code may remain syntactically clean.&lt;/p&gt;

&lt;p&gt;What matters now is whether the &lt;strong&gt;reason behind the rule is visible&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's where comments, documentation, tests, naming, and architecture become important.&lt;/p&gt;

&lt;p&gt;Not to explain what the code does.&lt;/p&gt;

&lt;p&gt;To explain &lt;strong&gt;why it does it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comments Were Never the Enemy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is a popular idea in software development:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Good code shouldn't need comments."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I understand where this comes from.&lt;/p&gt;

&lt;p&gt;Bad comments are absolutely a problem.&lt;/p&gt;

&lt;p&gt;This:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# Increment counter by 1&lt;br&gt;
counter += 1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;doesn't help anyone.&lt;/p&gt;

&lt;p&gt;The code already tells us that.&lt;/p&gt;

&lt;p&gt;But consider:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We intentionally use a 5-minute window here.&lt;br&gt;
The payment provider can send duplicate webhook events during retry periods.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's valuable.&lt;/p&gt;

&lt;p&gt;The code cannot fully explain the reason.&lt;/p&gt;

&lt;p&gt;The comment captures the decision.&lt;/p&gt;

&lt;p&gt;And decisions are often more important than syntax.&lt;/p&gt;

&lt;p&gt;This is why I don't think the goal should be:&lt;/p&gt;

&lt;p&gt;"Write code that needs no comments."&lt;/p&gt;

&lt;p&gt;The better goal is:&lt;/p&gt;

&lt;p&gt;"Write code that doesn't need comments to explain what it does, but use comments when the why isn't obvious."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Abstraction Can Make Code Less Clear&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Abstraction is one of the most powerful tools in software engineering.&lt;/p&gt;

&lt;p&gt;It is also one of the easiest to overuse.&lt;/p&gt;

&lt;p&gt;Suppose we have:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;send_email(user)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's easy to understand.&lt;/p&gt;

&lt;p&gt;But imagine the implementation eventually becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;send_email()&lt;br&gt;
   ↓&lt;br&gt;
NotificationManager&lt;br&gt;
   ↓&lt;br&gt;
NotificationFactory&lt;br&gt;
   ↓&lt;br&gt;
EmailProviderResolver&lt;br&gt;
   ↓&lt;br&gt;
EmailStrategy&lt;br&gt;
   ↓&lt;br&gt;
TransportAdapter&lt;br&gt;
   ↓&lt;br&gt;
SMTPService&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every individual component might be perfectly designed.&lt;/p&gt;

&lt;p&gt;But the original operation has disappeared beneath the architecture.&lt;/p&gt;

&lt;p&gt;This is the abstraction paradox:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An abstraction is useful when it hides unnecessary complexity.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But too many abstractions can create a new kind of complexity:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;understanding where the real work happens.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DRY Can Become Wet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the first principles many developers learn is:&lt;/p&gt;

&lt;p&gt;Don't Repeat Yourself.&lt;/p&gt;

&lt;p&gt;It's a good principle.&lt;/p&gt;

&lt;p&gt;But I've also seen developers create complicated abstractions simply because two pieces of code looked similar.&lt;/p&gt;

&lt;p&gt;The problem is that similarity doesn't always mean they have the same reason to exist.&lt;/p&gt;

&lt;p&gt;Two functions can look almost identical today while representing completely different business concepts.&lt;/p&gt;

&lt;p&gt;If we force them into one abstraction, we save a few lines of code but create a dependency between two things that may eventually evolve differently.&lt;/p&gt;

&lt;p&gt;Now changing one behavior requires understanding the other.&lt;/p&gt;

&lt;p&gt;We eliminated duplication.&lt;/p&gt;

&lt;p&gt;And introduced coupling.&lt;/p&gt;

&lt;p&gt;Sometimes a little duplication is cheaper than a lot of abstraction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Makes This Problem More Interesting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This becomes particularly relevant in the age of AI-assisted coding.&lt;/p&gt;

&lt;p&gt;AI is very good at producing code that &lt;strong&gt;looks professional&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It can create:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;classes&lt;/li&gt;
&lt;li&gt;interfaces&lt;/li&gt;
&lt;li&gt;abstractions&lt;/li&gt;
&lt;li&gt;helper functions&lt;/li&gt;
&lt;li&gt;design patterns&lt;/li&gt;
&lt;li&gt;error handling&lt;/li&gt;
&lt;li&gt;documentation&lt;/li&gt;
&lt;li&gt;tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The resulting code can look remarkably polished.&lt;/p&gt;

&lt;p&gt;But polished code isn't automatically good architecture.&lt;/p&gt;

&lt;p&gt;AI doesn't always know which abstraction is worth having.&lt;/p&gt;

&lt;p&gt;It may optimize for patterns it has seen repeatedly.&lt;/p&gt;

&lt;p&gt;And because the generated code often looks sophisticated, developers may be less likely to question it.&lt;/p&gt;

&lt;p&gt;This creates a new review problem.&lt;/p&gt;

&lt;p&gt;We shouldn't only ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is this code clean?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We should also ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Did we make the system harder to understand than it needed to be?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The Simplest Code Isn't Always the Best Code Either&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't want to replace one extreme with another.&lt;/p&gt;

&lt;p&gt;"Keep it simple" can become another dogma.&lt;/p&gt;

&lt;p&gt;Sometimes complexity is necessary.&lt;/p&gt;

&lt;p&gt;Distributed systems are complex.&lt;/p&gt;

&lt;p&gt;Security systems are complex.&lt;/p&gt;

&lt;p&gt;Financial software can be complex.&lt;/p&gt;

&lt;p&gt;Operating systems are complex.&lt;/p&gt;

&lt;p&gt;Large-scale applications are complex.&lt;/p&gt;

&lt;p&gt;The goal isn't to eliminate complexity.&lt;/p&gt;

&lt;p&gt;The goal is to make sure the complexity exists for a reason.&lt;/p&gt;

&lt;p&gt;There is a huge difference between:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Necessary complexity&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Accidental complexity&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first comes from the problem.&lt;/p&gt;

&lt;p&gt;The second comes from how we chose to solve it.&lt;/p&gt;

&lt;p&gt;Good engineering tries to minimize the second without pretending the first doesn't exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I Now Ask a Different Question During Code Review&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I look at code, I don't want to ask only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is this clean?"&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;&lt;strong&gt;Can I understand the main flow?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If I have to jump through ten files to understand a simple operation, something may be wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I understand the important decisions?&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;Why is this timeout five seconds?&lt;/p&gt;

&lt;p&gt;Why are we retrying three times?&lt;/p&gt;

&lt;p&gt;Why are we using this database?&lt;/p&gt;

&lt;p&gt;Can I change something safely?&lt;/p&gt;

&lt;p&gt;If a small requirement change requires understanding the entire application, the architecture may be hiding too much.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can a new developer understand it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is one of my favorite tests.&lt;/p&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can the person eventually figure it out?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can they build the right mental model without needing the original author beside them?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a much higher standard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Is Communication&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We often think of programming as communicating with computers.&lt;/p&gt;

&lt;p&gt;That's only half the job.&lt;/p&gt;

&lt;p&gt;We're also communicating with the next developer.&lt;/p&gt;

&lt;p&gt;And sometimes that developer is us six months later.&lt;/p&gt;

&lt;p&gt;The computer doesn't care whether the architecture is intuitive.&lt;/p&gt;

&lt;p&gt;It executes instructions.&lt;/p&gt;

&lt;p&gt;Humans have to maintain the system.&lt;/p&gt;

&lt;p&gt;That's why readability matters.&lt;/p&gt;

&lt;p&gt;But readability isn't simply about formatting.&lt;/p&gt;

&lt;p&gt;It's about reducing the mental effort required to understand a system.&lt;/p&gt;

&lt;p&gt;A beautifully formatted maze is still a maze.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Best Code Might Be Boring&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I increasingly like boring code.&lt;/p&gt;

&lt;p&gt;A function that does one obvious thing.&lt;/p&gt;

&lt;p&gt;A straightforward database query.&lt;/p&gt;

&lt;p&gt;A small number of dependencies.&lt;/p&gt;

&lt;p&gt;A simple API.&lt;/p&gt;

&lt;p&gt;A clear data flow.&lt;/p&gt;

&lt;p&gt;A comment explaining an unusual decision.&lt;/p&gt;

&lt;p&gt;A test showing an important business rule.&lt;/p&gt;

&lt;p&gt;Nothing clever.&lt;/p&gt;

&lt;p&gt;Nothing impressive.&lt;/p&gt;

&lt;p&gt;Just understandable.&lt;/p&gt;

&lt;p&gt;That kind of code rarely gets celebrated.&lt;/p&gt;

&lt;p&gt;Nobody posts:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Look at this extremely boring function I wrote today."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But boring software can be extraordinarily valuable.&lt;/p&gt;

&lt;p&gt;Because the people maintaining it don't have to fight it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My New Definition of Good Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If I had to simplify it, I'd say:&lt;/p&gt;

&lt;p&gt;**Clean code is code that is well structured.&lt;/p&gt;

&lt;p&gt;Clear code is code that is easy to understand.&lt;/p&gt;

&lt;p&gt;Good code is code that solves the right problem with an appropriate amount of complexity.**&lt;/p&gt;

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

&lt;p&gt;And sometimes they overlap beautifully.&lt;/p&gt;

&lt;p&gt;But not always.&lt;/p&gt;

&lt;p&gt;A codebase can be clean without being clear.&lt;/p&gt;

&lt;p&gt;It can be clear without being particularly elegant.&lt;/p&gt;

&lt;p&gt;And it can be technically imperfect while still being the right solution for the problem.&lt;/p&gt;

&lt;p&gt;That's why I don't think software engineering should be a competition to produce the prettiest code.&lt;/p&gt;

&lt;p&gt;The objective is to build software that people can understand, change, operate, and trust.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maybe We Need Fewer Rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Software engineering has accumulated an enormous number of principles.&lt;/p&gt;

&lt;p&gt;SOLID.&lt;/p&gt;

&lt;p&gt;DRY.&lt;/p&gt;

&lt;p&gt;KISS.&lt;/p&gt;

&lt;p&gt;YAGNI.&lt;/p&gt;

&lt;p&gt;Design patterns.&lt;/p&gt;

&lt;p&gt;Clean architecture.&lt;/p&gt;

&lt;p&gt;Domain-driven design.&lt;/p&gt;

&lt;p&gt;Microservices.&lt;/p&gt;

&lt;p&gt;Event-driven architecture.&lt;/p&gt;

&lt;p&gt;Functional programming.&lt;/p&gt;

&lt;p&gt;Object-oriented programming.&lt;/p&gt;

&lt;p&gt;All of these ideas can be useful.&lt;/p&gt;

&lt;p&gt;But principles are tools.&lt;/p&gt;

&lt;p&gt;They aren't laws of physics.&lt;/p&gt;

&lt;p&gt;The moment a principle starts making the software harder to understand, we should be willing to question whether we're applying it correctly.&lt;/p&gt;

&lt;p&gt;That's probably one of the most important engineering skills:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Knowing when a good rule has become a bad decision.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Question I Want to Leave You With&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The next time you review a piece of code, don't ask only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is this clean?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can I understand why this exists?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And then ask something even more important:&lt;/p&gt;

&lt;p&gt;"Did we make this more complicated than the problem required?"&lt;/p&gt;

&lt;p&gt;Because the best code isn't necessarily the code with the most elegant abstractions.&lt;/p&gt;

&lt;p&gt;It isn't necessarily the code with the fewest lines.&lt;/p&gt;

&lt;p&gt;And it certainly isn't the code that looks the most impressive.&lt;/p&gt;

&lt;p&gt;Sometimes the best code is simply the code that makes the next developer say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Okay. I understand."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And perhaps that's a better definition of clean code than we usually give it.&lt;/p&gt;

&lt;p&gt;Want More:&lt;/p&gt;

&lt;p&gt;Head over to ReThynk AI to access our latest research, magazine articles, and developer resources. &lt;a href="https://rethynkai.com/" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Think AI Is Making Coding Easier and Learning Harder</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 25 Sep 2026 03:57:07 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/i-think-ai-is-making-coding-easier-and-learning-harder-5hjf</link>
      <guid>https://dev.to/jaideepparashar/i-think-ai-is-making-coding-easier-and-learning-harder-5hjf</guid>
      <description>&lt;p&gt;I can write code faster today than I could a few years ago.&lt;/p&gt;

&lt;p&gt;AI can explain an unfamiliar library.&lt;/p&gt;

&lt;p&gt;It can generate a function.&lt;/p&gt;

&lt;p&gt;It can suggest a fix.&lt;/p&gt;

&lt;p&gt;It can write SQL.&lt;/p&gt;

&lt;p&gt;It can help debug an error.&lt;/p&gt;

&lt;p&gt;It can even explain the code it just generated.&lt;/p&gt;

&lt;p&gt;From a productivity perspective, this is incredible.&lt;/p&gt;

&lt;p&gt;But I've started thinking about a different question:&lt;/p&gt;

&lt;p&gt;What happens to the learning process when the difficult part of coding becomes optional?&lt;/p&gt;

&lt;p&gt;I don't think AI is making developers less capable.&lt;/p&gt;

&lt;p&gt;But I do think it has created a new risk:&lt;/p&gt;

&lt;p&gt;We can now become productive before we become good.&lt;/p&gt;

&lt;p&gt;And those are not the same thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Struggle Was Part of the Learning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think about how we traditionally learned programming.&lt;/p&gt;

&lt;p&gt;You wrote something.&lt;/p&gt;

&lt;p&gt;It didn't work.&lt;/p&gt;

&lt;p&gt;You read the error.&lt;/p&gt;

&lt;p&gt;You searched for an explanation.&lt;/p&gt;

&lt;p&gt;You tried something else.&lt;/p&gt;

&lt;p&gt;It failed again.&lt;/p&gt;

&lt;p&gt;You read documentation.&lt;/p&gt;

&lt;p&gt;You changed the code.&lt;/p&gt;

&lt;p&gt;Eventually, it worked.&lt;/p&gt;

&lt;p&gt;That process was frustrating.&lt;/p&gt;

&lt;p&gt;But something important was happening during those frustrating hours.&lt;/p&gt;

&lt;p&gt;You were building a mental model.&lt;/p&gt;

&lt;p&gt;You were learning why the system behaved the way it did.&lt;/p&gt;

&lt;p&gt;You weren't simply learning the answer.&lt;/p&gt;

&lt;p&gt;You were learning how to arrive at the answer.&lt;/p&gt;

&lt;p&gt;AI changes that equation.&lt;/p&gt;

&lt;p&gt;Today, you can paste the error into an AI assistant and get a possible explanation almost immediately.&lt;/p&gt;

&lt;p&gt;That's useful.&lt;/p&gt;

&lt;p&gt;But it also means you can skip several steps of the learning process.&lt;/p&gt;

&lt;p&gt;And sometimes those skipped steps were the most valuable ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Dangerous Part Isn't AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't think the problem is AI itself.&lt;/p&gt;

&lt;p&gt;The problem is how we use it.&lt;/p&gt;

&lt;p&gt;There is a big difference between:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Explain why this error is happening."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Fix this."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first can teach you something.&lt;/p&gt;

&lt;p&gt;The second can simply remove the obstacle.&lt;/p&gt;

&lt;p&gt;Both can get you moving again.&lt;/p&gt;

&lt;p&gt;But they don't necessarily produce the same learning.&lt;/p&gt;

&lt;p&gt;This distinction becomes even more important when you're learning something new.&lt;/p&gt;

&lt;p&gt;If I already understand Python and ask AI to help me optimize a piece of Python code, that's one thing.&lt;/p&gt;

&lt;p&gt;If I'm learning Python and ask AI to write every function I don't understand, that's very different.&lt;/p&gt;

&lt;p&gt;In the second case, I may finish the project without actually learning how I built it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Productivity Can Hide the Learning Gap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where things get interesting.&lt;/p&gt;

&lt;p&gt;Imagine two developers learning the same technology.&lt;/p&gt;

&lt;p&gt;Developer A spends three hours struggling with a problem.&lt;/p&gt;

&lt;p&gt;Developer B asks AI and solves it in ten minutes.&lt;/p&gt;

&lt;p&gt;On the surface, Developer B has been more productive.&lt;/p&gt;

&lt;p&gt;But what happens when the same problem appears next month?&lt;/p&gt;

&lt;p&gt;Developer A may recognize the pattern.&lt;/p&gt;

&lt;p&gt;Developer B may need to ask AI again.&lt;/p&gt;

&lt;p&gt;Neither person necessarily did anything wrong.&lt;/p&gt;

&lt;p&gt;They optimized for different things.&lt;/p&gt;

&lt;p&gt;One optimized for completion.&lt;/p&gt;

&lt;p&gt;The other accidentally optimized for understanding.&lt;/p&gt;

&lt;p&gt;The problem is that modern development increasingly rewards completion.&lt;/p&gt;

&lt;p&gt;And AI is exceptionally good at helping us complete things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I Don't Want to Go Back to Coding Without AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is important.&lt;/p&gt;

&lt;p&gt;I'm not arguing that developers should stop using AI.&lt;/p&gt;

&lt;p&gt;That would be like saying developers should stop using debuggers because debugging used to be harder.&lt;/p&gt;

&lt;p&gt;Tools are supposed to make us more capable.&lt;/p&gt;

&lt;p&gt;I use AI because it genuinely makes many parts of development faster.&lt;/p&gt;

&lt;p&gt;The goal isn't to preserve unnecessary struggle.&lt;/p&gt;

&lt;p&gt;The goal is to preserve useful struggle.&lt;/p&gt;

&lt;p&gt;That's a very different idea.&lt;/p&gt;

&lt;p&gt;If I'm spending thirty minutes trying to remember a syntax detail that I could verify in ten seconds, I don't think that struggle is valuable.&lt;/p&gt;

&lt;p&gt;But if I'm trying to understand why an architecture behaves the way it does, immediately asking AI for the answer may deprive me of an important learning opportunity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "Try First" Rule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've started thinking about a simple rule:&lt;/p&gt;

&lt;p&gt;Try first. Ask AI second.&lt;/p&gt;

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

&lt;p&gt;But often.&lt;/p&gt;

&lt;p&gt;If I encounter a problem I believe I can solve, I give myself some time to reason about it before asking AI.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;read the error&lt;/li&gt;
&lt;li&gt;inspect the code&lt;/li&gt;
&lt;li&gt;form a hypothesis&lt;/li&gt;
&lt;li&gt;test the hypothesis&lt;/li&gt;
&lt;li&gt;search the documentation&lt;/li&gt;
&lt;li&gt;try a solution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I ask AI.&lt;/p&gt;

&lt;p&gt;And something interesting happens.&lt;/p&gt;

&lt;p&gt;The AI's answer becomes much more useful because I have a mental model of the problem.&lt;/p&gt;

&lt;p&gt;I'm no longer asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What should I do?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'm asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Here's what I think is happening. Am I missing something?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a much more powerful interaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Should Challenge Your Thinking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is also changing how I think about prompts.&lt;/p&gt;

&lt;p&gt;Instead of always asking AI to produce something, we can ask it to challenge us.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;"Here is my approach. Find the weaknesses."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Don't solve this yet. Give me three questions I should investigate."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I think this is the cause of the bug. Try to disprove my hypothesis."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Review my solution, but don't rewrite it. Tell me what I misunderstood."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These interactions keep the developer inside the reasoning loop.&lt;/p&gt;

&lt;p&gt;AI becomes less like an answer machine and more like a thinking partner.&lt;/p&gt;

&lt;p&gt;That's a much healthier relationship.&lt;/p&gt;

&lt;p&gt;There Is a Difference Between Knowing and Accessing&lt;/p&gt;

&lt;p&gt;This may become one of the biggest distinctions in AI-assisted development.&lt;/p&gt;

&lt;p&gt;I don't need to memorize every Python method.&lt;/p&gt;

&lt;p&gt;I don't need to remember every SQL syntax variation.&lt;/p&gt;

&lt;p&gt;I don't need to know every framework API by heart.&lt;/p&gt;

&lt;p&gt;AI and documentation can handle a lot of retrieval.&lt;/p&gt;

&lt;p&gt;But I still need to understand:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What am I trying to do?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why does this approach make sense?&lt;/p&gt;

&lt;p&gt;What assumptions am I making?&lt;/p&gt;

&lt;p&gt;What could go wrong?&lt;/p&gt;

&lt;p&gt;How would I know if the result is wrong?**&lt;/p&gt;

&lt;p&gt;Those are not simply information-retrieval problems.&lt;/p&gt;

&lt;p&gt;They are reasoning problems.&lt;/p&gt;

&lt;p&gt;And I don't think AI makes those skills less important.&lt;/p&gt;

&lt;p&gt;I think it makes them more important.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The New Developer Skill Might Be Knowing When Not to Ask&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is an interesting irony here.&lt;/p&gt;

&lt;p&gt;As AI becomes better at answering questions, the skill of asking good questions becomes more valuable.&lt;/p&gt;

&lt;p&gt;But perhaps there is another skill:&lt;/p&gt;

&lt;p&gt;Knowing when to answer the question yourself first.&lt;/p&gt;

&lt;p&gt;If I ask AI everything immediately, I may become extremely efficient at retrieving answers.&lt;/p&gt;

&lt;p&gt;But I may become less practiced at generating them.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;A calculator didn't make mathematicians less intelligent.&lt;/p&gt;

&lt;p&gt;But someone who never learns basic arithmetic because a calculator exists has a different problem.&lt;/p&gt;

&lt;p&gt;The tool isn't the issue.&lt;/p&gt;

&lt;p&gt;Dependency is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Can Make You a Better Developer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The same technology that creates this risk can also solve it.&lt;/p&gt;

&lt;p&gt;AI can explain unfamiliar code.&lt;/p&gt;

&lt;p&gt;It can give you alternative approaches.&lt;/p&gt;

&lt;p&gt;It can challenge your assumptions.&lt;/p&gt;

&lt;p&gt;It can create exercises.&lt;/p&gt;

&lt;p&gt;It can act as a tutor.&lt;/p&gt;

&lt;p&gt;It can review your implementation.&lt;/p&gt;

&lt;p&gt;It can ask you questions instead of giving you answers.&lt;/p&gt;

&lt;p&gt;It can help you understand why something works.&lt;/p&gt;

&lt;p&gt;Used this way, AI doesn't replace the learning process.&lt;/p&gt;

&lt;p&gt;It can actually accelerate it.&lt;/p&gt;

&lt;p&gt;The difference is whether we're using AI to avoid thinking or to improve our thinking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maybe We Need a New Development Loop&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The old loop looked something like:&lt;/p&gt;

&lt;p&gt;Problem&lt;br&gt;
   ↓&lt;br&gt;
Think&lt;br&gt;
   ↓&lt;br&gt;
Code&lt;br&gt;
   ↓&lt;br&gt;
Test&lt;br&gt;
   ↓&lt;br&gt;
Debug&lt;br&gt;
   ↓&lt;br&gt;
Learn&lt;/p&gt;

&lt;p&gt;AI can turn it into:&lt;/p&gt;

&lt;p&gt;Problem&lt;br&gt;
   ↓&lt;br&gt;
Think&lt;br&gt;
   ↓&lt;br&gt;
AI assists&lt;br&gt;
   ↓&lt;br&gt;
Code&lt;br&gt;
   ↓&lt;br&gt;
Test&lt;br&gt;
   ↓&lt;br&gt;
AI challenges&lt;br&gt;
   ↓&lt;br&gt;
Human evaluates&lt;br&gt;
   ↓&lt;br&gt;
Learn&lt;/p&gt;

&lt;p&gt;I prefer the second model.&lt;/p&gt;

&lt;p&gt;Not because AI does more.&lt;/p&gt;

&lt;p&gt;Because the human still does the important thinking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Real Risk Isn't Becoming Lazy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;People often ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Has AI made developers lazy?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'm not sure that's the most useful question.&lt;/p&gt;

&lt;p&gt;Developers have always looked for ways to avoid unnecessary work.&lt;/p&gt;

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

&lt;p&gt;The better question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Are we automating away work that was actually teaching us something?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's much harder.&lt;/p&gt;

&lt;p&gt;Because some effort is waste.&lt;/p&gt;

&lt;p&gt;And some effort is education.&lt;/p&gt;

&lt;p&gt;The challenge is learning the difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I Don't Want to Become Faster at Being Wrong&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is probably the simplest way I can describe my concern.&lt;/p&gt;

&lt;p&gt;AI can dramatically increase development speed.&lt;/p&gt;

&lt;p&gt;But speed is not the same as progress.&lt;/p&gt;

&lt;p&gt;If I misunderstand the problem and AI helps me implement the wrong solution in ten minutes instead of ten hours, I haven't necessarily become a better developer.&lt;/p&gt;

&lt;p&gt;I've simply become faster at being wrong.&lt;/p&gt;

&lt;p&gt;That's why I still want to understand the fundamentals.&lt;/p&gt;

&lt;p&gt;I still want to read documentation.&lt;/p&gt;

&lt;p&gt;I still want to debug.&lt;/p&gt;

&lt;p&gt;I still want to write code without assistance sometimes.&lt;/p&gt;

&lt;p&gt;Not because I dislike AI.&lt;/p&gt;

&lt;p&gt;Because I want to remain capable without it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Goal Isn't to Code Without AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't think the future belongs to developers who refuse to use AI.&lt;/p&gt;

&lt;p&gt;And I don't think it belongs to developers who let AI do everything.&lt;/p&gt;

&lt;p&gt;The interesting middle ground is this:&lt;/p&gt;

&lt;p&gt;Use AI for leverage, but keep ownership of your understanding.&lt;/p&gt;

&lt;p&gt;Let AI handle repetitive work.&lt;/p&gt;

&lt;p&gt;Let it explain unfamiliar concepts.&lt;/p&gt;

&lt;p&gt;Let it review your code.&lt;/p&gt;

&lt;p&gt;Let it challenge your assumptions.&lt;/p&gt;

&lt;p&gt;Let it help you move faster.&lt;/p&gt;

&lt;p&gt;But occasionally close the AI window and ask yourself:&lt;/p&gt;

&lt;p&gt;"Do I actually understand what I just built?"&lt;/p&gt;

&lt;p&gt;If the answer is yes, you're probably using the tool well.&lt;/p&gt;

&lt;p&gt;If the answer is no, perhaps the tool moved faster than your understanding.&lt;/p&gt;

&lt;p&gt;And that's something worth paying attention to.&lt;/p&gt;

&lt;p&gt;Because in the AI era, I don't think our biggest challenge will be learning how to make machines do more.&lt;/p&gt;

&lt;p&gt;It may be learning how to make sure we continue to think while they do it.&lt;/p&gt;

&lt;p&gt;Want More:&lt;/p&gt;

&lt;p&gt;Head over to ReThynk AI to access our latest research, magazine articles, and developer resources. &lt;a href="https://rethynkai.com/" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>devops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I Asked AI to Review My Code. It Found Bugs I Didn't See.</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 18 Sep 2026 10:36:28 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/i-asked-ai-to-review-my-code-it-found-bugs-i-didnt-see-28aa</link>
      <guid>https://dev.to/jaideepparashar/i-asked-ai-to-review-my-code-it-found-bugs-i-didnt-see-28aa</guid>
      <description>&lt;p&gt;For a long time, I used AI in software development for one primary purpose:&lt;/p&gt;

&lt;p&gt;Write the code.&lt;/p&gt;

&lt;p&gt;Give it a requirement.&lt;/p&gt;

&lt;p&gt;Get some Python.&lt;/p&gt;

&lt;p&gt;Ask for a function.&lt;/p&gt;

&lt;p&gt;Get a function.&lt;/p&gt;

&lt;p&gt;Describe an API.&lt;/p&gt;

&lt;p&gt;Get an API.&lt;/p&gt;

&lt;p&gt;It was fast. Sometimes impressively fast.&lt;/p&gt;

&lt;p&gt;But recently, I've been using AI differently.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;p&gt;"Can you write this for me?"&lt;/p&gt;

&lt;p&gt;I've started asking:&lt;/p&gt;

&lt;p&gt;"Can you review what I wrote?"&lt;/p&gt;

&lt;p&gt;And the difference surprised me.&lt;/p&gt;

&lt;p&gt;AI wasn't just helping me write code faster.&lt;/p&gt;

&lt;p&gt;It was helping me look at my own code differently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem With Asking AI to Write Everything&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is an obvious benefit to AI-generated code.&lt;/p&gt;

&lt;p&gt;You can move from an idea to a working prototype extremely quickly.&lt;/p&gt;

&lt;p&gt;But there's a downside.&lt;/p&gt;

&lt;p&gt;When AI writes the code, I can become focused on whether the code works rather than whether the code is actually good.&lt;/p&gt;

&lt;p&gt;It is very easy to accept:&lt;/p&gt;

&lt;p&gt;It runs → Ship it.&lt;/p&gt;

&lt;p&gt;But software engineering doesn't end when the program runs.&lt;/p&gt;

&lt;p&gt;What happens with unexpected input?&lt;/p&gt;

&lt;p&gt;What happens when the API fails?&lt;/p&gt;

&lt;p&gt;What happens when the database is unavailable?&lt;/p&gt;

&lt;p&gt;What happens when the data is empty?&lt;/p&gt;

&lt;p&gt;What happens when another developer has to maintain it six months from now?&lt;/p&gt;

&lt;p&gt;Those questions are much harder to answer by simply generating more code.&lt;/p&gt;

&lt;p&gt;That's where code review becomes interesting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So I Tried a Different Workflow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of starting with AI, I started with myself.&lt;/p&gt;

&lt;p&gt;I wrote the code.&lt;/p&gt;

&lt;p&gt;Then I asked AI to review it.&lt;/p&gt;

&lt;p&gt;My prompt was intentionally simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Review this code as a senior software engineer. Don't rewrite it immediately. First identify potential bugs, edge cases, security concerns, maintainability problems, and unnecessary complexity. Explain why each issue matters.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That last sentence matters.&lt;/p&gt;

&lt;p&gt;I didn't want AI to immediately produce another 100 lines of code.&lt;/p&gt;

&lt;p&gt;I wanted it to &lt;strong&gt;think about the code first&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It Found Things I Hadn't Considered&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Some findings were obvious once pointed out.&lt;/p&gt;

&lt;p&gt;Others were not.&lt;/p&gt;

&lt;p&gt;For example, a function might work perfectly for normal input but behave incorrectly when it receives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an empty list&lt;/li&gt;
&lt;li&gt;a missing value&lt;/li&gt;
&lt;li&gt;unexpected data&lt;/li&gt;
&lt;li&gt;a duplicate record&lt;/li&gt;
&lt;li&gt;a failed API response&lt;/li&gt;
&lt;li&gt;a very large input&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these necessarily appear during a quick manual test.&lt;/p&gt;

&lt;p&gt;And that's the interesting part.&lt;/p&gt;

&lt;p&gt;A second reviewer doesn't need to discover something magical.&lt;/p&gt;

&lt;p&gt;Sometimes it simply needs to ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What happens if this assumption isn't true?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question alone can expose a surprising number of problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But AI Didn't Always Get It Right&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where things get interesting.&lt;/p&gt;

&lt;p&gt;I don't treat AI's review as truth.&lt;/p&gt;

&lt;p&gt;Sometimes it identifies a genuine issue.&lt;/p&gt;

&lt;p&gt;Sometimes it identifies something that isn't actually a problem.&lt;/p&gt;

&lt;p&gt;And sometimes it suggests a change that would make the code more complicated without providing meaningful value.&lt;/p&gt;

&lt;p&gt;This is exactly why I don't think AI replaces code review.&lt;/p&gt;

&lt;p&gt;It changes the review process.&lt;/p&gt;

&lt;p&gt;The developer still has to decide:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is this actually a problem?&lt;br&gt;
How serious is it?&lt;br&gt;
Is the suggested solution appropriate?&lt;br&gt;
What trade-off does it introduce?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI can point at something.&lt;/p&gt;

&lt;p&gt;It cannot automatically decide whether changing it is worth the cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Most Useful AI Review Isn't "Fix My Code"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've noticed a subtle difference between two prompts.&lt;/p&gt;

&lt;p&gt;Prompt 1&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fix this code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Prompt 2&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Review this code and tell me what I should worry about.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first asks AI to become the programmer.&lt;/p&gt;

&lt;p&gt;The second asks AI to become the reviewer.&lt;/p&gt;

&lt;p&gt;I find the second approach much more interesting.&lt;/p&gt;

&lt;p&gt;Because it keeps me involved in the reasoning.&lt;/p&gt;

&lt;p&gt;Instead of outsourcing the entire task, I'm using AI to &lt;strong&gt;increase the number of perspectives looking at the problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I Wouldn't Use AI as the Only Reviewer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are still things AI may not understand.&lt;/p&gt;

&lt;p&gt;It might not know why a particular architectural decision was made.&lt;/p&gt;

&lt;p&gt;It might not understand the business requirement.&lt;/p&gt;

&lt;p&gt;It may not know which performance trade-off is acceptable.&lt;/p&gt;

&lt;p&gt;It may flag code that looks unusual but is intentionally designed that way.&lt;/p&gt;

&lt;p&gt;And it can confidently make incorrect claims.&lt;/p&gt;

&lt;p&gt;So I think of AI code review as another layer.&lt;/p&gt;

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

&lt;p&gt;Developer writes code&lt;br&gt;
        ↓&lt;br&gt;
Automated tests&lt;br&gt;
        ↓&lt;br&gt;
AI review&lt;br&gt;
        ↓&lt;br&gt;
Human review&lt;br&gt;
        ↓&lt;br&gt;
Production&lt;br&gt;
        ↓&lt;br&gt;
Monitoring&lt;/p&gt;

&lt;p&gt;Each layer answers a different question.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Does the software behave correctly for the cases we've defined?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI review asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What problems might we have overlooked?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Human review asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Does this implementation make sense in the real system?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Monitoring asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What happens after real users start using it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No single layer is enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There's Another Benefit I Didn't Expect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI reviewing my code has also changed how I write code.&lt;/p&gt;

&lt;p&gt;When I know I'll eventually ask an AI to review something, I become more deliberate about my implementation.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;naming&lt;/li&gt;
&lt;li&gt;assumptions&lt;/li&gt;
&lt;li&gt;edge cases&lt;/li&gt;
&lt;li&gt;error handling&lt;/li&gt;
&lt;li&gt;duplicated logic&lt;/li&gt;
&lt;li&gt;unnecessary complexity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, the reviewer starts influencing the author.&lt;/p&gt;

&lt;p&gt;And that's a useful side effect.&lt;/p&gt;

&lt;p&gt;The goal isn't simply to have AI catch mistakes.&lt;/p&gt;

&lt;p&gt;The goal is to become better at &lt;strong&gt;anticipating mistakes before they happen&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This Applies Beyond AI-Generated Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There's a temptation to think AI code review is useful only when AI generated the original code.&lt;/p&gt;

&lt;p&gt;I don't think that's true.&lt;/p&gt;

&lt;p&gt;Human-written code has bugs.&lt;/p&gt;

&lt;p&gt;Human-written code has assumptions.&lt;/p&gt;

&lt;p&gt;Human-written code becomes difficult to maintain.&lt;/p&gt;

&lt;p&gt;Human-written code gets reviewed by people who are tired, rushed, or unfamiliar with the particular problem.&lt;/p&gt;

&lt;p&gt;A second perspective can be valuable regardless of who wrote the original code.&lt;/p&gt;

&lt;p&gt;AI is simply an unusually fast second perspective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But Don't Confuse Review With Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This distinction is important.&lt;/p&gt;

&lt;p&gt;AI can tell me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This function may fail when the API returns an empty response."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's useful.&lt;/p&gt;

&lt;p&gt;But a test can actually execute the scenario.&lt;/p&gt;

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

&lt;p&gt;&lt;code&gt;def test_empty_api_response():&lt;br&gt;
    response = process_api_response([])&lt;br&gt;
    assert response == expected_result&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The two approaches complement each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI can help identify what to test.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tests can verify what actually happens.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's a much stronger workflow than relying on either one independently.&lt;/p&gt;

&lt;p&gt;I've written before about how developers routinely test traditional software while treating AI behavior differently. I think the same principle applies here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI should become part of an engineering discipline, not a replacement for it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Bigger Lesson&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most interesting change isn't that AI can review code.&lt;/p&gt;

&lt;p&gt;We've known that AI can analyze code.&lt;/p&gt;

&lt;p&gt;The bigger change is that we can now cheaply introduce additional reasoning into our development process.&lt;/p&gt;

&lt;p&gt;A developer working alone can effectively have another pair of eyes available within seconds.&lt;/p&gt;

&lt;p&gt;That doesn't mean the second pair of eyes is always correct.&lt;/p&gt;

&lt;p&gt;It means the cost of asking for another perspective has become extremely low.&lt;/p&gt;

&lt;p&gt;And when something is cheap enough, we can incorporate it into our workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm Changing How I Use AI for Coding&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I still use AI to generate code.&lt;/p&gt;

&lt;p&gt;It would be silly not to take advantage of that capability.&lt;/p&gt;

&lt;p&gt;But I don't want my relationship with AI to become:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Human thinks → AI writes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'd rather have:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Human thinks → AI helps build → AI challenges → Human evaluates → Tests verify.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a much healthier development loop.&lt;/p&gt;

&lt;p&gt;Because the objective isn't to remove the developer from the process.&lt;/p&gt;

&lt;p&gt;It is to make the developer better at the process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maybe AI's Best Coding Feature Isn't Code Generation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We spend an enormous amount of time talking about how quickly AI can write code.&lt;/p&gt;

&lt;p&gt;I'm starting to think another capability deserves more attention:&lt;/p&gt;

&lt;p&gt;AI can challenge the code we already wrote.&lt;/p&gt;

&lt;p&gt;It can ask questions we didn't think to ask.&lt;/p&gt;

&lt;p&gt;It can point toward assumptions we forgot we were making.&lt;/p&gt;

&lt;p&gt;It can identify edge cases hiding behind apparently simple functions.&lt;/p&gt;

&lt;p&gt;It can suggest tests.&lt;/p&gt;

&lt;p&gt;It can act as a tireless second set of eyes.&lt;/p&gt;

&lt;p&gt;But there is an important condition:&lt;/p&gt;

&lt;p&gt;We still have to think.&lt;/p&gt;

&lt;p&gt;If we blindly accept AI-generated code, we haven't improved the engineering process.&lt;/p&gt;

&lt;p&gt;We've simply accelerated it.&lt;/p&gt;

&lt;p&gt;And accelerated bad decisions are still bad decisions.&lt;/p&gt;

&lt;p&gt;So perhaps the better question isn't:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How can AI write more of my code?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maybe it's:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How can AI help me become a better engineer?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the question I'm increasingly interested in.&lt;/p&gt;

&lt;p&gt;How are you using AI in your development workflow today, primarily as a code generator, debugger, reviewer, teacher, or something else?&lt;/p&gt;

&lt;p&gt;Want More:&lt;/p&gt;

&lt;p&gt;Head over to ReThynk AI to access our latest research, magazine articles, and developer resources. &lt;a href="https://rethynkai.com/" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I Think Developers Are Building Too Much Software</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 11 Sep 2026 03:36:19 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/i-think-developers-are-building-too-much-software-1l1i</link>
      <guid>https://dev.to/jaideepparashar/i-think-developers-are-building-too-much-software-1l1i</guid>
      <description>&lt;p&gt;There was a time when the difficult part of building software was writing the software.&lt;/p&gt;

&lt;p&gt;Today, that is increasingly not true.&lt;/p&gt;

&lt;p&gt;We have better frameworks, better libraries, better APIs, better cloud infrastructure, better developer tools, and now AI can generate a significant amount of the code for us.&lt;/p&gt;

&lt;p&gt;Yet I keep seeing the same pattern:&lt;/p&gt;

&lt;p&gt;We are getting better at building things, but not necessarily better at deciding what should be built.&lt;/p&gt;

&lt;p&gt;And I think that is becoming one of the biggest engineering problems of our time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Software Has Become Too Easy to Start&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think about what it takes to build an application today.&lt;/p&gt;

&lt;p&gt;You can generate a frontend in minutes.&lt;/p&gt;

&lt;p&gt;Connect an API.&lt;/p&gt;

&lt;p&gt;Add authentication.&lt;/p&gt;

&lt;p&gt;Add a database.&lt;/p&gt;

&lt;p&gt;Deploy it.&lt;/p&gt;

&lt;p&gt;Add an AI model.&lt;/p&gt;

&lt;p&gt;Give the model access to tools.&lt;/p&gt;

&lt;p&gt;Add an agent.&lt;/p&gt;

&lt;p&gt;Add another service.&lt;/p&gt;

&lt;p&gt;Add monitoring.&lt;/p&gt;

&lt;p&gt;Add a queue.&lt;/p&gt;

&lt;p&gt;Add a vector database.&lt;/p&gt;

&lt;p&gt;Add an orchestration framework.&lt;/p&gt;

&lt;p&gt;Before long, you have a surprisingly sophisticated architecture.&lt;/p&gt;

&lt;p&gt;And sometimes you have solved a problem that didn't actually require any of it.&lt;/p&gt;

&lt;p&gt;This is the paradox of modern software development:&lt;/p&gt;

&lt;p&gt;The cheaper it becomes to build software, the easier it becomes to build unnecessary software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Made This Problem Bigger&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI has changed the equation even further.&lt;/p&gt;

&lt;p&gt;Previously, I might have spent several hours implementing a feature.&lt;/p&gt;

&lt;p&gt;Today, I can describe the feature and have an AI coding assistant generate much of the implementation.&lt;/p&gt;

&lt;p&gt;That is incredibly useful.&lt;/p&gt;

&lt;p&gt;But it also removes an important friction.&lt;/p&gt;

&lt;p&gt;When building something required significant effort, effort itself acted as a filter.&lt;/p&gt;

&lt;p&gt;You naturally asked:&lt;/p&gt;

&lt;p&gt;"Is this worth building?"&lt;/p&gt;

&lt;p&gt;When implementation becomes cheap, that question becomes easier to ignore.&lt;/p&gt;

&lt;p&gt;You can simply build it.&lt;/p&gt;

&lt;p&gt;And then build another version.&lt;/p&gt;

&lt;p&gt;And then add another feature.&lt;/p&gt;

&lt;p&gt;And then add an agent because the agent framework looks interesting.&lt;/p&gt;

&lt;p&gt;The cost of implementation falls.&lt;/p&gt;

&lt;p&gt;But the cost of complexity does not disappear.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every Feature Creates a Future Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A feature rarely costs only what it takes to build it.&lt;/p&gt;

&lt;p&gt;It also creates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;code to maintain&lt;/li&gt;
&lt;li&gt;bugs to investigate&lt;/li&gt;
&lt;li&gt;dependencies to update&lt;/li&gt;
&lt;li&gt;documentation to maintain&lt;/li&gt;
&lt;li&gt;edge cases to handle&lt;/li&gt;
&lt;li&gt;users to support&lt;/li&gt;
&lt;li&gt;security concerns&lt;/li&gt;
&lt;li&gt;performance considerations&lt;/li&gt;
&lt;li&gt;monitoring requirements&lt;/li&gt;
&lt;li&gt;decisions future developers need to understand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why a 30-minute feature can sometimes create a six-month maintenance problem.&lt;/p&gt;

&lt;p&gt;The original implementation was cheap.&lt;/p&gt;

&lt;p&gt;The system became expensive.&lt;/p&gt;

&lt;p&gt;This is particularly dangerous with AI-generated code because the initial implementation can feel almost free.&lt;/p&gt;

&lt;p&gt;You ask for a feature.&lt;/p&gt;

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

&lt;p&gt;It works.&lt;/p&gt;

&lt;p&gt;You move on.&lt;/p&gt;

&lt;p&gt;Six months later, someone has to understand why seventeen components depend on it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Complexity Is a Technical Debt You Can See Too Late&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers are generally good at recognizing obvious technical debt.&lt;/p&gt;

&lt;p&gt;Poor naming.&lt;/p&gt;

&lt;p&gt;Duplicated code.&lt;/p&gt;

&lt;p&gt;Missing tests.&lt;/p&gt;

&lt;p&gt;Outdated dependencies.&lt;/p&gt;

&lt;p&gt;Large functions.&lt;/p&gt;

&lt;p&gt;But there is another type of technical debt that is harder to recognize:&lt;/p&gt;

&lt;p&gt;unnecessary architecture.&lt;/p&gt;

&lt;p&gt;You can have beautifully written code inside an unnecessarily complicated system.&lt;/p&gt;

&lt;p&gt;You can have excellent abstractions that nobody needed.&lt;/p&gt;

&lt;p&gt;You can have perfectly implemented microservices where a single application would have been enough.&lt;/p&gt;

&lt;p&gt;You can have an impressive AI agent where a deterministic workflow would have been safer.&lt;/p&gt;

&lt;p&gt;The individual components can all be technically correct.&lt;/p&gt;

&lt;p&gt;The overall system can still be wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I Am Increasingly Suspicious of "More"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;More services.&lt;/p&gt;

&lt;p&gt;More abstractions.&lt;/p&gt;

&lt;p&gt;More tools.&lt;/p&gt;

&lt;p&gt;More frameworks.&lt;/p&gt;

&lt;p&gt;More automation.&lt;/p&gt;

&lt;p&gt;More agents.&lt;/p&gt;

&lt;p&gt;More integrations.&lt;/p&gt;

&lt;p&gt;More dashboards.&lt;/p&gt;

&lt;p&gt;More features.&lt;/p&gt;

&lt;p&gt;More AI.&lt;/p&gt;

&lt;p&gt;None of these things are inherently bad.&lt;/p&gt;

&lt;p&gt;The problem starts when more becomes the default definition of progress.&lt;/p&gt;

&lt;p&gt;Sometimes the best engineering decision is to remove something.&lt;/p&gt;

&lt;p&gt;Remove a dependency.&lt;/p&gt;

&lt;p&gt;Remove an abstraction.&lt;/p&gt;

&lt;p&gt;Remove a service.&lt;/p&gt;

&lt;p&gt;Remove an AI step.&lt;/p&gt;

&lt;p&gt;Remove a feature.&lt;/p&gt;

&lt;p&gt;Remove an entire workflow.&lt;/p&gt;

&lt;p&gt;That can be harder than adding something.&lt;/p&gt;

&lt;p&gt;Because adding demonstrates activity.&lt;/p&gt;

&lt;p&gt;Removing requires judgment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Best Architecture Might Look Boring&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is something I have increasingly come to appreciate about good systems:&lt;/p&gt;

&lt;p&gt;They can look surprisingly boring.&lt;/p&gt;

&lt;p&gt;Imagine two solutions.&lt;/p&gt;

&lt;p&gt;System A&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;User → API → Database → Response&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;System B&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;User → Gateway → Service A → Queue → Service B → Agent → Tool Router → Vector DB → External API → Validation Service → Event Bus → Service C → Database → Response&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;System B looks more sophisticated.&lt;/p&gt;

&lt;p&gt;But sophistication isn't the same thing as quality.&lt;/p&gt;

&lt;p&gt;If both systems solve the same problem reliably, System A may be dramatically better.&lt;/p&gt;

&lt;p&gt;Not because it uses newer technology.&lt;/p&gt;

&lt;p&gt;Because it has fewer things that can break.&lt;/p&gt;

&lt;p&gt;This is why I increasingly believe that simplicity is not the absence of engineering.&lt;/p&gt;

&lt;p&gt;It is the result of engineering judgment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This Is Where AI Agents Fit Into the Conversation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is also why I have become cautious about the current obsession with AI agents.&lt;/p&gt;

&lt;p&gt;Agents are useful.&lt;/p&gt;

&lt;p&gt;There are problems where dynamic decision-making, tool selection, iteration, and autonomy genuinely create value.&lt;/p&gt;

&lt;p&gt;But if a deterministic workflow can solve the problem, an agent may simply introduce additional uncertainty.&lt;/p&gt;

&lt;p&gt;The question shouldn't be:&lt;/p&gt;

&lt;p&gt;"Can I turn this into an agent?"&lt;/p&gt;

&lt;p&gt;The better question is:&lt;/p&gt;

&lt;p&gt;"Does this problem actually require autonomous decision-making?"&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;I wrote about this in more detail in my article “Stop Building AI Agents. Start Building AI Systems.”&lt;/p&gt;

&lt;p&gt;The broader principle is the same:&lt;/p&gt;

&lt;p&gt;Don't optimize for technological sophistication. Optimize for the outcome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We Need a New Engineering Question&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For a long time, developers were encouraged to ask:&lt;/p&gt;

&lt;p&gt;"How do I build this?"&lt;/p&gt;

&lt;p&gt;Then we learned to ask:&lt;/p&gt;

&lt;p&gt;"How do I build this well?"&lt;/p&gt;

&lt;p&gt;I think there is another question we need to put before both:&lt;/p&gt;

&lt;p&gt;"Should this exist at all?"&lt;/p&gt;

&lt;p&gt;That question applies to much more than software.&lt;/p&gt;

&lt;p&gt;Should this feature exist?&lt;/p&gt;

&lt;p&gt;Should this service exist?&lt;/p&gt;

&lt;p&gt;Should this automation exist?&lt;/p&gt;

&lt;p&gt;Should this database exist?&lt;/p&gt;

&lt;p&gt;Should this AI component exist?&lt;/p&gt;

&lt;p&gt;Should this entire application exist?&lt;/p&gt;

&lt;p&gt;Sometimes the answer will be yes.&lt;/p&gt;

&lt;p&gt;But sometimes the answer will be:&lt;/p&gt;

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

&lt;p&gt;And that's not failure.&lt;/p&gt;

&lt;p&gt;That's engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Makes Judgment More Valuable, Not Less&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is perhaps the most interesting consequence of AI-assisted development.&lt;/p&gt;

&lt;p&gt;If AI continues making implementation faster, then implementation itself becomes less differentiated.&lt;/p&gt;

&lt;p&gt;The valuable skills move upward.&lt;/p&gt;

&lt;p&gt;Understanding the problem.&lt;/p&gt;

&lt;p&gt;Defining the right requirements.&lt;/p&gt;

&lt;p&gt;Choosing the right architecture.&lt;/p&gt;

&lt;p&gt;Recognizing unnecessary complexity.&lt;/p&gt;

&lt;p&gt;Knowing when not to automate.&lt;/p&gt;

&lt;p&gt;Knowing when not to use AI.&lt;/p&gt;

&lt;p&gt;Understanding trade-offs.&lt;/p&gt;

&lt;p&gt;Evaluating whether something actually works.&lt;/p&gt;

&lt;p&gt;And, perhaps most importantly:&lt;/p&gt;

&lt;p&gt;knowing what not to build.&lt;/p&gt;

&lt;p&gt;AI can generate ten possible implementations before you've finished explaining the problem.&lt;/p&gt;

&lt;p&gt;That makes judgment more important, not less.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before You Build the Next Thing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've started thinking about software decisions through a much simpler filter.&lt;/p&gt;

&lt;p&gt;Before building something, ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What problem does this solve?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you cannot explain the problem clearly, stop.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Who actually needs it?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;"Someone might use this" is not a strong enough answer.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What is the simplest solution?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Not the most impressive.&lt;/p&gt;

&lt;p&gt;The simplest.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What complexity will this introduce?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Think beyond today's implementation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does this need automation?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Maybe a manual process is perfectly acceptable.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does this need AI?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Maybe a rule, query, function, or conventional application is better.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What happens if we don't build it?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the question I think we ask far too rarely.&lt;/p&gt;

&lt;p&gt;Sometimes nothing happens.&lt;/p&gt;

&lt;p&gt;And that may be the best outcome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Builder's Paradox&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We are entering an unusual period in software development.&lt;/p&gt;

&lt;p&gt;Building is becoming incredibly easy.&lt;/p&gt;

&lt;p&gt;But deciding what deserves to be built may become increasingly difficult.&lt;/p&gt;

&lt;p&gt;That creates a strange paradox:&lt;/p&gt;

&lt;p&gt;The better our tools become, the more important restraint becomes.&lt;/p&gt;

&lt;p&gt;When writing code was expensive, we naturally avoided unnecessary code.&lt;/p&gt;

&lt;p&gt;When infrastructure was difficult, we naturally avoided unnecessary infrastructure.&lt;/p&gt;

&lt;p&gt;When software development becomes increasingly assisted by AI, we will need a different constraint.&lt;/p&gt;

&lt;p&gt;Judgment.&lt;/p&gt;

&lt;p&gt;Not everything that can be built deserves to exist.&lt;/p&gt;

&lt;p&gt;Not every workflow needs automation.&lt;/p&gt;

&lt;p&gt;Not every application needs AI.&lt;/p&gt;

&lt;p&gt;Not every AI application needs an agent.&lt;/p&gt;

&lt;p&gt;And not every technical problem needs a technical solution.&lt;/p&gt;

&lt;p&gt;Maybe the next great developer skill isn't building faster.&lt;/p&gt;

&lt;p&gt;Maybe it's learning to look at a problem and confidently say:&lt;/p&gt;

&lt;p&gt;"We don't need to build this."&lt;/p&gt;

&lt;p&gt;What do you think?&lt;/p&gt;

&lt;p&gt;Are developers becoming better at building software or simply better at building more of it?&lt;/p&gt;

&lt;p&gt;Note: Looking for deeper insights into the future of artificial intelligence? Head over to ReThynk AI to access our latest research, magazine articles, and developer resources. &lt;a href="https://rethynkai.com/" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>career</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Stop Building AI Agents. Start Building AI Systems.</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 04 Sep 2026 05:27:08 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/stop-building-ai-agents-start-building-ai-systems-5hda</link>
      <guid>https://dev.to/jaideepparashar/stop-building-ai-agents-start-building-ai-systems-5hda</guid>
      <description>&lt;p&gt;There's a phrase I keep seeing everywhere in AI development:&lt;/p&gt;

&lt;p&gt;"We need an AI agent."&lt;/p&gt;

&lt;p&gt;Need to analyze documents?&lt;/p&gt;

&lt;p&gt;Build an agent.&lt;/p&gt;

&lt;p&gt;Need to automate a workflow?&lt;/p&gt;

&lt;p&gt;Build an agent.&lt;/p&gt;

&lt;p&gt;Need to interact with APIs?&lt;/p&gt;

&lt;p&gt;Build an agent.&lt;/p&gt;

&lt;p&gt;Need to write code?&lt;/p&gt;

&lt;p&gt;Build an agent.&lt;/p&gt;

&lt;p&gt;At some point, I started asking a different question:&lt;/p&gt;

&lt;p&gt;Why are we so obsessed with building agents when what users actually need are reliable systems?&lt;/p&gt;

&lt;p&gt;I don't think the agent is the product.&lt;/p&gt;

&lt;p&gt;The system is the product.&lt;/p&gt;

&lt;p&gt;And that distinction matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An Agent Is Only One Component&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's take a simple AI customer-support application.&lt;/p&gt;

&lt;p&gt;The agent might be responsible for deciding which tool to call.&lt;/p&gt;

&lt;p&gt;But the actual application needs much more:&lt;/p&gt;

&lt;p&gt;User&lt;br&gt;
 ↓&lt;br&gt;
Authentication&lt;br&gt;
 ↓&lt;br&gt;
Request Validation&lt;br&gt;
 ↓&lt;br&gt;
Context Retrieval&lt;br&gt;
 ↓&lt;br&gt;
AI Agent&lt;br&gt;
 ↓&lt;br&gt;
Tool Selection&lt;br&gt;
 ↓&lt;br&gt;
API / Database&lt;br&gt;
 ↓&lt;br&gt;
Output Validation&lt;br&gt;
 ↓&lt;br&gt;
Safety Checks&lt;br&gt;
 ↓&lt;br&gt;
Response&lt;br&gt;
 ↓&lt;br&gt;
Logging&lt;br&gt;
 ↓&lt;br&gt;
Evaluation&lt;/p&gt;

&lt;p&gt;Where is the agent?&lt;/p&gt;

&lt;p&gt;Right in the middle.&lt;/p&gt;

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

&lt;p&gt;But it's not the entire system.&lt;/p&gt;

&lt;p&gt;This is why I believe we're spending too much time discussing agent capabilities and not enough time discussing system architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Agent Is Not Your Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've seen AI projects where the architecture diagram looks like this:&lt;/p&gt;

&lt;p&gt;User&lt;br&gt;
 ↓&lt;br&gt;
AI Agent&lt;br&gt;
 ↓&lt;br&gt;
Magic&lt;/p&gt;

&lt;p&gt;It makes for a great presentation.&lt;/p&gt;

&lt;p&gt;It doesn't make for a great production system.&lt;/p&gt;

&lt;p&gt;Real applications need answers to much less glamorous questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where does the data come from?&lt;/li&gt;
&lt;li&gt;How is context retrieved?&lt;/li&gt;
&lt;li&gt;What happens when retrieval fails?&lt;/li&gt;
&lt;li&gt;What happens when the model produces invalid output?&lt;/li&gt;
&lt;li&gt;How are tool calls validated?&lt;/li&gt;
&lt;li&gt;How are errors handled?&lt;/li&gt;
&lt;li&gt;How do we monitor the system?&lt;/li&gt;
&lt;li&gt;How do we evaluate quality?&lt;/li&gt;
&lt;li&gt;Who owns the system after deployment?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions aren't exciting.&lt;/p&gt;

&lt;p&gt;They're engineering.&lt;/p&gt;

&lt;p&gt;And engineering is what turns an AI demo into a product.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiqf98cde0mnisc9r8a4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiqf98cde0mnisc9r8a4m.png" alt="AI System" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start With the Workflow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before I decide whether an application needs an agent, I first map the workflow.&lt;/p&gt;

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

&lt;p&gt;Customer Question&lt;br&gt;
       ↓&lt;br&gt;
Identify Intent&lt;br&gt;
       ↓&lt;br&gt;
Retrieve Relevant Information&lt;br&gt;
       ↓&lt;br&gt;
Generate Response&lt;br&gt;
       ↓&lt;br&gt;
Validate Response&lt;br&gt;
       ↓&lt;br&gt;
Escalate if Necessary&lt;/p&gt;

&lt;p&gt;Maybe that's all we need.&lt;/p&gt;

&lt;p&gt;Why introduce an autonomous agent if the workflow is already predictable?&lt;/p&gt;

&lt;p&gt;This is the central idea behind my article &lt;a href="https://dev.to/jaideepparashar/why-i-think-workflows-matter-more-than-agents-3p82"&gt;Why I Think Workflows Matter More Than Agents&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A workflow gives us control.&lt;/p&gt;

&lt;p&gt;An agent gives us flexibility.&lt;/p&gt;

&lt;p&gt;We should choose flexibility only when the problem actually requires it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agents Make Sense When Decisions Are Dynamic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm not anti-agent.&lt;/p&gt;

&lt;p&gt;Quite the opposite.&lt;/p&gt;

&lt;p&gt;Agents are extremely useful when the path through the system cannot be predetermined.&lt;/p&gt;

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

&lt;p&gt;Research Request&lt;br&gt;
      ↓&lt;br&gt;
Agent&lt;br&gt;
 ┌────┼────┐&lt;br&gt;
 ↓    ↓    ↓&lt;br&gt;
Web  SQL  GitHub&lt;br&gt;
 └────┼────┘&lt;br&gt;
      ↓&lt;br&gt;
Synthesize&lt;br&gt;
      ↓&lt;br&gt;
Validate&lt;/p&gt;

&lt;p&gt;The agent can determine which tools are necessary.&lt;/p&gt;

&lt;p&gt;That's valuable.&lt;/p&gt;

&lt;p&gt;But notice something important.&lt;/p&gt;

&lt;p&gt;The agent still operates inside a larger system.&lt;/p&gt;

&lt;p&gt;That's the distinction I think we need to make.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reliability Is a System Property&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose your agent is incredibly intelligent.&lt;/p&gt;

&lt;p&gt;It can reason.&lt;/p&gt;

&lt;p&gt;It can plan.&lt;/p&gt;

&lt;p&gt;It can use tools.&lt;/p&gt;

&lt;p&gt;It can recover from errors.&lt;/p&gt;

&lt;p&gt;Does that guarantee that your application is reliable?&lt;/p&gt;

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

&lt;p&gt;Reliability also depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data quality&lt;/li&gt;
&lt;li&gt;Retrieval quality&lt;/li&gt;
&lt;li&gt;API reliability&lt;/li&gt;
&lt;li&gt;Validation&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Evaluation&lt;/li&gt;
&lt;li&gt;Infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can have an excellent agent inside a terrible system.&lt;/p&gt;

&lt;p&gt;The user will still experience a terrible product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evaluate the System, Not Just the Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is another area where AI development needs to mature.&lt;/p&gt;

&lt;p&gt;Developers naturally evaluate the model:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which model gives better answers?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But production systems need broader evaluation.&lt;/p&gt;

&lt;p&gt;Consider:&lt;/p&gt;

&lt;p&gt;Model Quality&lt;br&gt;
+&lt;br&gt;
Retrieval Quality&lt;br&gt;
+&lt;br&gt;
Tool Accuracy&lt;br&gt;
+&lt;br&gt;
Workflow Reliability&lt;br&gt;
+&lt;br&gt;
Latency&lt;br&gt;
+&lt;br&gt;
Cost&lt;br&gt;
+&lt;/p&gt;

&lt;h1&gt;
  
  
  Safety
&lt;/h1&gt;

&lt;p&gt;System Quality&lt;/p&gt;

&lt;p&gt;I've written about this in Most Developers Test Their Code. Why Don't They Test Their AI?&lt;/p&gt;

&lt;p&gt;The important shift is from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is the model good?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Does the complete system consistently achieve the desired outcome?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a much more useful question.&lt;/p&gt;

&lt;p&gt;For organizations, this can be formalized through an &lt;a href="https://rethynkai.com/ai-evaluation-framework-7-metrics/" rel="noopener noreferrer"&gt;AI Evaluation Framework: 7 Critical Metrics for AI Success&lt;/a&gt;, which looks beyond model capability toward measurable AI performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context Is Part of the System&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another common mistake is treating the prompt as the entire intelligence layer.&lt;/p&gt;

&lt;p&gt;It isn't.&lt;/p&gt;

&lt;p&gt;Consider a coding assistant.&lt;/p&gt;

&lt;p&gt;The model might receive:&lt;/p&gt;

&lt;p&gt;Prompt:&lt;br&gt;
"Fix this bug."&lt;/p&gt;

&lt;p&gt;But the system may also provide:&lt;/p&gt;

&lt;p&gt;Repository&lt;br&gt;
+&lt;br&gt;
Relevant Files&lt;br&gt;
+&lt;br&gt;
Documentation&lt;br&gt;
+&lt;br&gt;
Dependencies&lt;br&gt;
+&lt;br&gt;
Previous Errors&lt;br&gt;
+&lt;br&gt;
Coding Standards&lt;/p&gt;

&lt;p&gt;That context can completely change the quality of the result.&lt;/p&gt;

&lt;p&gt;This is why I've argued that context engineering is becoming more important than simply optimizing prompts.&lt;/p&gt;

&lt;p&gt;The model doesn't just need instructions.&lt;/p&gt;

&lt;p&gt;It needs the right information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP Makes Systems More Connected&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where MCP becomes particularly interesting.&lt;/p&gt;

&lt;p&gt;Instead of building a separate custom integration for every AI capability, MCP provides a standardized way for AI applications to interact with external tools and data.&lt;/p&gt;

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

&lt;p&gt;AI System&lt;br&gt;
    ↓&lt;br&gt;
MCP&lt;br&gt;
 ┌──┼──────┐&lt;br&gt;
 ↓  ↓      ↓&lt;br&gt;
GitHub DB   Files&lt;/p&gt;

&lt;p&gt;Now the agent or model isn't isolated.&lt;/p&gt;

&lt;p&gt;It becomes part of a connected system.&lt;/p&gt;

&lt;p&gt;I've explored practical examples in &lt;a href="https://dev.to/jaideepparashar/5-mcp-servers-that-changed-how-i-build-ai-workflows-16j6"&gt;5 MCP Servers That Changed How I Build AI Workflows&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't Confuse More Components With More Intelligence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There's another trap.&lt;/p&gt;

&lt;p&gt;Once developers discover agents, they start adding components.&lt;/p&gt;

&lt;p&gt;One agent becomes three.&lt;/p&gt;

&lt;p&gt;Three become ten.&lt;/p&gt;

&lt;p&gt;Then comes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent supervisor&lt;/li&gt;
&lt;li&gt;Planner agent&lt;/li&gt;
&lt;li&gt;Research agent&lt;/li&gt;
&lt;li&gt;Coding agent&lt;/li&gt;
&lt;li&gt;Reviewer agent&lt;/li&gt;
&lt;li&gt;Memory system&lt;/li&gt;
&lt;li&gt;Vector database&lt;/li&gt;
&lt;li&gt;Multiple models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventually:&lt;/p&gt;

&lt;p&gt;Simple Problem&lt;br&gt;
      ↓&lt;br&gt;
Complex Architecture&lt;br&gt;
      ↓&lt;br&gt;
More Failure Points&lt;br&gt;
      ↓&lt;br&gt;
More Debugging&lt;br&gt;
      ↓&lt;br&gt;
More Cost&lt;/p&gt;

&lt;p&gt;This is one reason I wrote &lt;a href="https://dev.to/jaideepparashar/the-hidden-cost-of-using-too-many-ai-tools-poo"&gt;The Hidden Cost of Using Too Many AI Tools&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Complexity isn't evidence of sophistication.&lt;/p&gt;

&lt;p&gt;Sometimes it's evidence that we haven't simplified the problem enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Production Test&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's a test I like to use.&lt;/p&gt;

&lt;p&gt;Before calling an AI application production-ready, ask:&lt;/p&gt;

&lt;p&gt;Can we reproduce failures?&lt;/p&gt;

&lt;p&gt;If not, observability is weak.&lt;/p&gt;

&lt;p&gt;Can we measure quality?&lt;/p&gt;

&lt;p&gt;If not, evaluation is weak.&lt;/p&gt;

&lt;p&gt;Can we control the workflow?&lt;/p&gt;

&lt;p&gt;If not, architecture may be too autonomous.&lt;/p&gt;

&lt;p&gt;Can we replace the model?&lt;/p&gt;

&lt;p&gt;If not, the system may be too tightly coupled.&lt;/p&gt;

&lt;p&gt;Can another developer maintain it?&lt;/p&gt;

&lt;p&gt;If not, complexity may already be too high.&lt;/p&gt;

&lt;p&gt;These questions tell me much more than whether an agent can successfully complete a demo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build the System Around the Outcome&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most important shift is this:&lt;/p&gt;

&lt;p&gt;Don't start with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What agent should we build?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Start with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What outcome are we trying to reliably produce?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then work backward.&lt;/p&gt;

&lt;p&gt;Desired Outcome&lt;br&gt;
      ↓&lt;br&gt;
Process&lt;br&gt;
      ↓&lt;br&gt;
Workflow&lt;br&gt;
      ↓&lt;br&gt;
Context&lt;br&gt;
      ↓&lt;br&gt;
Tools&lt;br&gt;
      ↓&lt;br&gt;
Model&lt;br&gt;
      ↓&lt;br&gt;
Agent — only if necessary&lt;br&gt;
      ↓&lt;br&gt;
Evaluation&lt;br&gt;
      ↓&lt;br&gt;
Production&lt;/p&gt;

&lt;p&gt;The agent becomes a design decision.&lt;/p&gt;

&lt;p&gt;Not the starting assumption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Rule for AI Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I now think about AI systems using a simple hierarchy:&lt;/p&gt;

&lt;p&gt;Outcome&lt;br&gt;
   ↓&lt;br&gt;
Process&lt;br&gt;
   ↓&lt;br&gt;
Workflow&lt;br&gt;
   ↓&lt;br&gt;
Context&lt;br&gt;
   ↓&lt;br&gt;
Tools&lt;br&gt;
   ↓&lt;br&gt;
Model&lt;br&gt;
   ↓&lt;br&gt;
Agent&lt;/p&gt;

&lt;p&gt;Notice where the agent appears.&lt;/p&gt;

&lt;p&gt;Near the bottom.&lt;/p&gt;

&lt;p&gt;That's intentional.&lt;/p&gt;

&lt;p&gt;Because an agent should exist to serve the architecture.&lt;/p&gt;

&lt;p&gt;The architecture shouldn't exist to justify having an agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI industry has become very good at building autonomous demos.&lt;/p&gt;

&lt;p&gt;Now I think we need to become much better at building dependable AI systems.&lt;/p&gt;

&lt;p&gt;Systems that can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be evaluated&lt;/li&gt;
&lt;li&gt;Be monitored&lt;/li&gt;
&lt;li&gt;Be debugged&lt;/li&gt;
&lt;li&gt;Be governed&lt;/li&gt;
&lt;li&gt;Be maintained&lt;/li&gt;
&lt;li&gt;Be scaled&lt;/li&gt;
&lt;li&gt;Be improved&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agents will absolutely be part of that future.&lt;/p&gt;

&lt;p&gt;But they won't be the whole future.&lt;/p&gt;

&lt;p&gt;The winning AI products won't necessarily have the most agents.&lt;/p&gt;

&lt;p&gt;They'll have the best-designed systems around those agents.&lt;/p&gt;

&lt;p&gt;So before you start your next agent project, pause for a moment.&lt;/p&gt;

&lt;p&gt;Draw the workflow.&lt;/p&gt;

&lt;p&gt;Define the outcome.&lt;/p&gt;

&lt;p&gt;Identify the context.&lt;/p&gt;

&lt;p&gt;Determine the tools.&lt;/p&gt;

&lt;p&gt;Design the evaluation.&lt;/p&gt;

&lt;p&gt;And only then ask:&lt;/p&gt;

&lt;p&gt;"Do I actually need an agent?"&lt;/p&gt;

&lt;p&gt;That question alone can save you weeks of unnecessary engineering.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>Your AI Demo Works. So Why Is Your Product Failing?</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 28 Aug 2026 08:31:56 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/your-ai-demo-works-so-why-is-your-product-failing-mo8</link>
      <guid>https://dev.to/jaideepparashar/your-ai-demo-works-so-why-is-your-product-failing-mo8</guid>
      <description>&lt;p&gt;I've seen this pattern repeatedly in AI development.&lt;/p&gt;

&lt;p&gt;Someone builds an impressive prototype.&lt;/p&gt;

&lt;p&gt;The prompt works.&lt;/p&gt;

&lt;p&gt;The demo looks amazing.&lt;/p&gt;

&lt;p&gt;Everyone in the meeting gets excited.&lt;/p&gt;

&lt;p&gt;Then the project enters the real world.&lt;/p&gt;

&lt;p&gt;And suddenly everything becomes difficult.&lt;/p&gt;

&lt;p&gt;The responses aren't consistent.&lt;/p&gt;

&lt;p&gt;Users ask questions nobody anticipated.&lt;/p&gt;

&lt;p&gt;The context is incomplete.&lt;/p&gt;

&lt;p&gt;Costs increase.&lt;/p&gt;

&lt;p&gt;Latency becomes a problem.&lt;/p&gt;

&lt;p&gt;Nobody knows how to evaluate the system.&lt;/p&gt;

&lt;p&gt;Eventually, the "successful AI project" becomes another abandoned prototype.&lt;/p&gt;

&lt;p&gt;This leads to an uncomfortable question:&lt;/p&gt;

&lt;p&gt;If the demo worked, why didn't the product?&lt;/p&gt;

&lt;p&gt;I think the answer is simple.&lt;/p&gt;

&lt;p&gt;A demo proves that something is possible. A product has to prove that it is reliable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Demo Is Not a Product&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Consider an AI document assistant.&lt;/p&gt;

&lt;p&gt;Your prototype might look like this:&lt;/p&gt;

&lt;p&gt;PDF&lt;br&gt;
 ↓&lt;br&gt;
LLM&lt;br&gt;
 ↓&lt;br&gt;
Question&lt;br&gt;
 ↓&lt;br&gt;
Answer&lt;/p&gt;

&lt;p&gt;You upload one excellent document.&lt;/p&gt;

&lt;p&gt;Ask three carefully selected questions.&lt;/p&gt;

&lt;p&gt;The model produces impressive answers.&lt;/p&gt;

&lt;p&gt;Demo complete.&lt;/p&gt;

&lt;p&gt;But production looks more like this:&lt;/p&gt;

&lt;p&gt;User&lt;br&gt;
 ↓&lt;br&gt;
Authentication&lt;br&gt;
 ↓&lt;br&gt;
Document Retrieval&lt;br&gt;
 ↓&lt;br&gt;
Context Selection&lt;br&gt;
 ↓&lt;br&gt;
LLM&lt;br&gt;
 ↓&lt;br&gt;
Validation&lt;br&gt;
 ↓&lt;br&gt;
Logging&lt;br&gt;
 ↓&lt;br&gt;
Evaluation&lt;br&gt;
 ↓&lt;br&gt;
Response&lt;/p&gt;

&lt;p&gt;Now you have an engineering system.&lt;/p&gt;

&lt;p&gt;And every additional component introduces potential failure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwisu9nr2ev6drlfwkles.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwisu9nr2ev6drlfwkles.png" alt="Your AI Demo Works" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Prototype Trap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI makes prototyping incredibly easy.&lt;/p&gt;

&lt;p&gt;That's both a blessing and a problem.&lt;/p&gt;

&lt;p&gt;A developer can create something impressive in an afternoon.&lt;/p&gt;

&lt;p&gt;That creates the illusion that the hard part is finished.&lt;/p&gt;

&lt;p&gt;It isn't.&lt;/p&gt;

&lt;p&gt;The prototype answers:&lt;/p&gt;

&lt;p&gt;"Can we make this work?"&lt;/p&gt;

&lt;p&gt;Production asks:&lt;/p&gt;

&lt;p&gt;"Can we make this work reliably thousands of times?"&lt;/p&gt;

&lt;p&gt;Those are completely different questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The First Problem: Nobody Defined "Good"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is probably the biggest issue I see.&lt;/p&gt;

&lt;p&gt;Teams build an AI application without defining what a good output actually means.&lt;/p&gt;

&lt;p&gt;Imagine an AI coding assistant.&lt;/p&gt;

&lt;p&gt;What does success mean?&lt;/p&gt;

&lt;p&gt;Is the generated code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Syntactically valid?&lt;/li&gt;
&lt;li&gt;Functionally correct?&lt;/li&gt;
&lt;li&gt;Secure?&lt;/li&gt;
&lt;li&gt;Tested?&lt;/li&gt;
&lt;li&gt;Consistent with the existing architecture?&lt;/li&gt;
&lt;li&gt;Maintainable?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you don't define these criteria, you can't properly evaluate the system.&lt;/p&gt;

&lt;p&gt;And if you can't evaluate it, you can't improve it systematically.&lt;/p&gt;

&lt;p&gt;I've written about this problem in Most Developers Test Their Code. Why Don't They Test Their AI?&lt;/p&gt;

&lt;p&gt;The principle is straightforward:&lt;/p&gt;

&lt;p&gt;AI systems need tests too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Second Problem: The Context Is Wrong&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another common mistake is blaming the model when the real problem is context.&lt;/p&gt;

&lt;p&gt;Suppose you're asking an AI assistant to fix a Python bug.&lt;/p&gt;

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

&lt;p&gt;Fix this authentication bug.&lt;/p&gt;

&lt;p&gt;But the system doesn't know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which framework you're using&lt;/li&gt;
&lt;li&gt;Your database schema&lt;/li&gt;
&lt;li&gt;Authentication architecture&lt;/li&gt;
&lt;li&gt;Existing middleware&lt;/li&gt;
&lt;li&gt;Coding conventions&lt;/li&gt;
&lt;li&gt;Related files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even a powerful model is operating with incomplete information.&lt;/p&gt;

&lt;p&gt;That's why I've become increasingly interested in context engineering.&lt;/p&gt;

&lt;p&gt;The quality of an AI system depends not only on the instruction but also on the information supplied around it.&lt;/p&gt;

&lt;p&gt;I explored this in Why Context Engineering Is More Important Than Prompt Engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Third Problem: The Workflow Was Never Designed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another common pattern is:&lt;/p&gt;

&lt;p&gt;User&lt;br&gt;
 ↓&lt;br&gt;
LLM&lt;br&gt;
 ↓&lt;br&gt;
Answer&lt;/p&gt;

&lt;p&gt;That's fine for a chatbot.&lt;/p&gt;

&lt;p&gt;It isn't necessarily enough for a production application.&lt;/p&gt;

&lt;p&gt;A reliable AI system might instead look like:&lt;/p&gt;

&lt;p&gt;Request&lt;br&gt;
 ↓&lt;br&gt;
Classify&lt;br&gt;
 ↓&lt;br&gt;
Retrieve Context&lt;br&gt;
 ↓&lt;br&gt;
Generate&lt;br&gt;
 ↓&lt;br&gt;
Validate&lt;br&gt;
 ↓&lt;br&gt;
Apply Business Rules&lt;br&gt;
 ↓&lt;br&gt;
Return Result&lt;br&gt;
 ↓&lt;br&gt;
Log Outcome&lt;/p&gt;

&lt;p&gt;The model is only one component.&lt;/p&gt;

&lt;p&gt;This is also why I believe workflows matter more than agents.&lt;/p&gt;

&lt;p&gt;Before adding autonomy, memory, planning, or multiple agents, I want to know whether the underlying workflow is actually well designed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fourth Problem: Teams Add AI Before Fixing the Process&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one is particularly important in enterprise AI.&lt;/p&gt;

&lt;p&gt;Imagine a company has a slow approval process.&lt;/p&gt;

&lt;p&gt;Instead of examining the process, they immediately add an AI agent.&lt;/p&gt;

&lt;p&gt;The agent now automates:&lt;/p&gt;

&lt;p&gt;Bad Process&lt;br&gt;
     ↓&lt;br&gt;
AI&lt;br&gt;
     ↓&lt;br&gt;
Faster Bad Process&lt;/p&gt;

&lt;p&gt;That's not transformation.&lt;/p&gt;

&lt;p&gt;That's automation of inefficiency.&lt;/p&gt;

&lt;p&gt;I've explored this extensively in Why You Should Fix Your Process Before Implementing AI.&lt;/p&gt;

&lt;p&gt;The process should determine where AI belongs, not the other way around.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fifth Problem: Nobody Owns the System&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Who owns the AI application after launch?&lt;/p&gt;

&lt;p&gt;The developer?&lt;/p&gt;

&lt;p&gt;The product team?&lt;/p&gt;

&lt;p&gt;The data team?&lt;/p&gt;

&lt;p&gt;The business?&lt;/p&gt;

&lt;p&gt;Nobody?&lt;/p&gt;

&lt;p&gt;This sounds like an organizational question, but it directly affects technical quality.&lt;/p&gt;

&lt;p&gt;Someone needs to own:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Evaluation&lt;/li&gt;
&lt;li&gt;Prompt changes&lt;/li&gt;
&lt;li&gt;Model changes&lt;/li&gt;
&lt;li&gt;Data quality&lt;/li&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Cost&lt;/li&gt;
&lt;li&gt;User feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without ownership, AI systems slowly degrade.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Now Ask Before Calling an AI Project "Ready"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before moving an AI project from prototype to production, I want answers to five questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What problem are we solving?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What does a good output look like?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What context does the system need?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How will we evaluate failures?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Who owns the system after launch?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If we can't answer these questions, we're probably not ready.&lt;/p&gt;

&lt;p&gt;We're still experimenting.&lt;/p&gt;

&lt;p&gt;And that's completely fine.&lt;/p&gt;

&lt;p&gt;Experimentation isn't failure.&lt;/p&gt;

&lt;p&gt;Pretending an experiment is a production system is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build the Smallest Reliable System&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My philosophy has changed considerably as I've built more AI systems.&lt;/p&gt;

&lt;p&gt;I don't want the most sophisticated architecture.&lt;/p&gt;

&lt;p&gt;I want the smallest architecture that reliably solves the problem.&lt;/p&gt;

&lt;p&gt;That might mean:&lt;/p&gt;

&lt;p&gt;Python&lt;br&gt;
+&lt;br&gt;
FastAPI&lt;br&gt;
+&lt;br&gt;
One LLM&lt;br&gt;
+&lt;br&gt;
A database&lt;br&gt;
+&lt;br&gt;
A simple workflow&lt;br&gt;
+&lt;br&gt;
Evaluation&lt;/p&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;p&gt;7 agents&lt;br&gt;
+&lt;br&gt;
4 frameworks&lt;br&gt;
+&lt;br&gt;
3 vector databases&lt;br&gt;
+&lt;br&gt;
12 tools&lt;br&gt;
+&lt;br&gt;
complex orchestration&lt;/p&gt;

&lt;p&gt;More technology doesn't automatically create more intelligence.&lt;/p&gt;

&lt;p&gt;Sometimes it creates more places for things to break.&lt;/p&gt;

&lt;p&gt;I've discussed this broader problem in The Hidden Cost of Using Too Many AI Tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Turn the Prototype Into an Engineering System&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If I had to summarize the transition in one diagram, it would be:&lt;/p&gt;

&lt;p&gt;DEMO&lt;/p&gt;

&lt;p&gt;Prompt&lt;br&gt;
  ↓&lt;br&gt;
LLM&lt;br&gt;
  ↓&lt;br&gt;
Interesting Output&lt;/p&gt;

&lt;p&gt;PRODUCT&lt;/p&gt;

&lt;p&gt;Problem&lt;br&gt;
  ↓&lt;br&gt;
Workflow&lt;br&gt;
  ↓&lt;br&gt;
Context&lt;br&gt;
  ↓&lt;br&gt;
LLM&lt;br&gt;
  ↓&lt;br&gt;
Validation&lt;br&gt;
  ↓&lt;br&gt;
Evaluation&lt;br&gt;
  ↓&lt;br&gt;
Monitoring&lt;br&gt;
  ↓&lt;br&gt;
Continuous Improvement&lt;/p&gt;

&lt;p&gt;That's the difference.&lt;/p&gt;

&lt;p&gt;The model didn't necessarily change.&lt;/p&gt;

&lt;p&gt;The engineering around the model did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI industry has become exceptionally good at creating impressive demos.&lt;/p&gt;

&lt;p&gt;I'm less interested in impressive demos.&lt;/p&gt;

&lt;p&gt;I'm interested in systems that continue working after the demo ends.&lt;/p&gt;

&lt;p&gt;Systems that can be tested.&lt;/p&gt;

&lt;p&gt;Systems that can be monitored.&lt;/p&gt;

&lt;p&gt;Systems that can be improved.&lt;/p&gt;

&lt;p&gt;Systems that developers can actually maintain.&lt;/p&gt;

&lt;p&gt;That's where I think the next level of AI engineering will come from.&lt;/p&gt;

&lt;p&gt;Not from making the demo more impressive.&lt;/p&gt;

&lt;p&gt;From making the system more dependable.&lt;/p&gt;

&lt;p&gt;So the next time your AI prototype works perfectly, don't celebrate too early.&lt;/p&gt;

&lt;p&gt;Ask the harder question:&lt;/p&gt;

&lt;p&gt;"What happens when this meets 10,000 real users?"&lt;/p&gt;

&lt;p&gt;That's when the real engineering begins.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>Most Developers Test Their Code. Why Don't They Test Their AI?</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 21 Aug 2026 05:21:43 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/most-developers-test-their-code-why-dont-they-test-their-ai-1kp3</link>
      <guid>https://dev.to/jaideepparashar/most-developers-test-their-code-why-dont-they-test-their-ai-1kp3</guid>
      <description>&lt;p&gt;Here's something I've been thinking about while building AI systems:&lt;/p&gt;

&lt;p&gt;Developers are obsessed with testing code.&lt;/p&gt;

&lt;p&gt;We write unit tests.&lt;/p&gt;

&lt;p&gt;Integration tests.&lt;/p&gt;

&lt;p&gt;End-to-end tests.&lt;/p&gt;

&lt;p&gt;CI pipelines.&lt;/p&gt;

&lt;p&gt;Code reviews.&lt;/p&gt;

&lt;p&gt;Linting.&lt;/p&gt;

&lt;p&gt;Type checking.&lt;/p&gt;

&lt;p&gt;But then we build an AI feature and suddenly the testing strategy becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I tried it three times and it seems pretty good."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's not testing.&lt;/p&gt;

&lt;p&gt;That's optimism.&lt;/p&gt;

&lt;p&gt;And I think this is becoming one of the biggest weaknesses in AI development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Applications Are Software&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Consider a simple AI coding assistant.&lt;/p&gt;

&lt;p&gt;The workflow might look like this:&lt;/p&gt;

&lt;p&gt;User Request&lt;br&gt;
     ↓&lt;br&gt;
Context Retrieval&lt;br&gt;
     ↓&lt;br&gt;
Prompt&lt;br&gt;
     ↓&lt;br&gt;
LLM&lt;br&gt;
     ↓&lt;br&gt;
Generated Code&lt;br&gt;
     ↓&lt;br&gt;
Validation&lt;/p&gt;

&lt;p&gt;Every component can fail.&lt;/p&gt;

&lt;p&gt;The retrieval can return the wrong files.&lt;/p&gt;

&lt;p&gt;The context can be incomplete.&lt;/p&gt;

&lt;p&gt;The prompt can be ambiguous.&lt;/p&gt;

&lt;p&gt;The model can hallucinate.&lt;/p&gt;

&lt;p&gt;The generated code can contain bugs.&lt;/p&gt;

&lt;p&gt;Yet many AI applications have no automated way of detecting these failures.&lt;/p&gt;

&lt;p&gt;We wouldn't accept that standard from a normal API.&lt;/p&gt;

&lt;p&gt;Why should AI be different?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"It Worked Once" Means Almost Nothing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose you're building a system that converts natural language into SQL.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;"Show me the top 10 customers by revenue."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The model generates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;customer_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;revenue&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;total_revenue&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;sales&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_name&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;total_revenue&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;
&lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looks good.&lt;/p&gt;

&lt;p&gt;You ship it.&lt;/p&gt;

&lt;p&gt;Then a user asks:&lt;/p&gt;

&lt;p&gt;"Show me the top 10 customers by revenue in 2025,&lt;br&gt;
excluding cancelled orders."&lt;/p&gt;

&lt;p&gt;Suddenly your system may produce completely different behavior.&lt;/p&gt;

&lt;p&gt;AI outputs are probabilistic.&lt;/p&gt;

&lt;p&gt;That means testing one input isn't enough.&lt;/p&gt;

&lt;p&gt;Build an Evaluation Dataset&lt;/p&gt;

&lt;p&gt;One of the simplest things an AI builder can do is create a small evaluation dataset.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;test_cases&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Find the top 10 customers by revenue."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"expected_contains"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"GROUP BY"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ORDER BY"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"LIMIT"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Find revenue for 2025 excluding cancelled orders."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"expected_contains"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"2025"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cancelled"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can run your AI system against the same cases whenever you change:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The prompt&lt;/li&gt;
&lt;li&gt;The model&lt;/li&gt;
&lt;li&gt;The retrieval system&lt;/li&gt;
&lt;li&gt;The context&lt;/li&gt;
&lt;li&gt;The workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That changes everything.&lt;/p&gt;

&lt;p&gt;You're no longer asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Does this feel better?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You're asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Did performance improve?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4xqhvtpzx15ojvixoxfw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4xqhvtpzx15ojvixoxfw.png" alt="Most Developers Test Their Code" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompts Need Tests Too&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is one reason I don't think prompt engineering is disappearing.&lt;/p&gt;

&lt;p&gt;A production prompt isn't just something you write once.&lt;/p&gt;

&lt;p&gt;It is part of the system.&lt;/p&gt;

&lt;p&gt;And if you change it, you should know whether the change improved the output.&lt;/p&gt;

&lt;p&gt;I discussed the importance of this broader discipline in &lt;a href="https://dev.to/jaideepparashar/the-real-reason-prompt-engineering-isnt-going-away-2koo"&gt;The Real Reason Prompt Engineering Isn't Going Away&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The next step is to connect prompt engineering with evaluation.&lt;/p&gt;

&lt;p&gt;Think of it like software:&lt;/p&gt;

&lt;p&gt;Prompt v1&lt;br&gt;
   ↓&lt;br&gt;
Evaluation&lt;br&gt;
   ↓&lt;br&gt;
Results&lt;br&gt;
   ↓&lt;br&gt;
Prompt v2&lt;br&gt;
   ↓&lt;br&gt;
Evaluation&lt;br&gt;
   ↓&lt;br&gt;
Compare&lt;/p&gt;

&lt;p&gt;That's much more reliable than changing prompts based on intuition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context Needs Testing Too&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's another problem.&lt;/p&gt;

&lt;p&gt;You can have a perfect prompt and still get a terrible answer because the AI received the wrong context.&lt;/p&gt;

&lt;p&gt;Imagine a coding assistant receives:&lt;/p&gt;

&lt;p&gt;Prompt:&lt;br&gt;
"Fix the authentication bug."&lt;/p&gt;

&lt;p&gt;Context:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;5 unrelated files&lt;br&gt;
+&lt;br&gt;
outdated documentation&lt;br&gt;
+&lt;br&gt;
wrong configuration&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The model may generate perfectly reasonable code based on completely incorrect information.&lt;/p&gt;

&lt;p&gt;This is why I believe context engineering is becoming just as important as prompt engineering.&lt;/p&gt;

&lt;p&gt;I wrote about this in Why Context Engineering Is More Important Than Prompt Engineering.&lt;/p&gt;

&lt;p&gt;The lesson is simple:&lt;/p&gt;

&lt;p&gt;Don't only test what you ask the model. Test what you give the model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workflows Need Evaluation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This becomes even more important when AI is part of a larger workflow.&lt;/p&gt;

&lt;p&gt;Consider:&lt;/p&gt;

&lt;p&gt;User&lt;br&gt;
 ↓&lt;br&gt;
Retriever&lt;br&gt;
 ↓&lt;br&gt;
LLM&lt;br&gt;
 ↓&lt;br&gt;
Tool Call&lt;br&gt;
 ↓&lt;br&gt;
Validation&lt;br&gt;
 ↓&lt;br&gt;
Final Response&lt;/p&gt;

&lt;p&gt;Where did the failure happen?&lt;/p&gt;

&lt;p&gt;You need to know.&lt;/p&gt;

&lt;p&gt;Was the retrieval wrong?&lt;/p&gt;

&lt;p&gt;Did the model select the wrong tool?&lt;/p&gt;

&lt;p&gt;Did the API return bad data?&lt;/p&gt;

&lt;p&gt;Did validation fail?&lt;/p&gt;

&lt;p&gt;This is one reason I've argued that workflows often matter more than agents.&lt;/p&gt;

&lt;p&gt;A well-defined workflow gives you clear places to measure and debug.&lt;/p&gt;

&lt;p&gt;I explored that argument in &lt;a href="https://dev.to/jaideepparashar/why-i-think-workflows-matter-more-than-agents-3p82"&gt;Why I Think Workflows Matter More Than Agents&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start Small&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You don't need an expensive AI evaluation platform to begin.&lt;/p&gt;

&lt;p&gt;Start with 20–50 representative test cases.&lt;/p&gt;

&lt;p&gt;For each case, record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input&lt;/li&gt;
&lt;li&gt;Expected Behavior&lt;/li&gt;
&lt;li&gt;Actual Output&lt;/li&gt;
&lt;li&gt;Pass/Fail&lt;/li&gt;
&lt;li&gt;Notes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then run the dataset whenever you make a significant change.&lt;/p&gt;

&lt;p&gt;Over time, your evaluation dataset becomes one of the most valuable assets in your AI project.&lt;/p&gt;

&lt;p&gt;It captures what "good" actually means.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My AI Evaluation Rule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've started thinking about AI systems in three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can it produce an answer?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basic functionality.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can it produce a correct answer consistently?&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Can we measure whether it is improving?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Engineering maturity.&lt;/p&gt;

&lt;p&gt;The third question is where many AI projects struggle.&lt;/p&gt;

&lt;p&gt;If you cannot measure improvement, you're mostly guessing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evaluation Is the Missing Layer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI industry has spent enormous effort improving:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Models&lt;/li&gt;
&lt;li&gt;Prompts&lt;/li&gt;
&lt;li&gt;Agents&lt;/li&gt;
&lt;li&gt;RAG&lt;/li&gt;
&lt;li&gt;MCP&lt;/li&gt;
&lt;li&gt;Vector databases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But evaluation deserves the same attention.&lt;/p&gt;

&lt;p&gt;Because eventually every AI system needs to answer one uncomfortable question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How do you know it works?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The demo looked impressive."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The model is highly capable."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Users seem to like it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Show me the evaluation.&lt;/p&gt;

&lt;p&gt;That's the engineering mindset I want to see more often in AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build This Into Your GitHub Workflow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm also adding a simple AI evaluation starter to my companion AI Builder resources.&lt;/p&gt;

&lt;p&gt;A useful structure is:&lt;/p&gt;

&lt;p&gt;ai-evaluation/&lt;br&gt;
├── README.md&lt;br&gt;
├── test_cases.json&lt;br&gt;
├── evaluate.py&lt;br&gt;
├── results.csv&lt;br&gt;
└── prompts/&lt;br&gt;
    ├── v1.txt&lt;br&gt;
    └── v2.txt&lt;/p&gt;

&lt;p&gt;The idea is straightforward:&lt;/p&gt;

&lt;p&gt;Prompt changes → Run tests → Record results → Compare versions.&lt;/p&gt;

&lt;p&gt;This turns experimentation into an engineering process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't think AI development should be:&lt;/p&gt;

&lt;p&gt;Prompt&lt;br&gt;
 ↓&lt;br&gt;
Looks good&lt;br&gt;
 ↓&lt;br&gt;
Ship&lt;/p&gt;

&lt;p&gt;It should look more like:&lt;/p&gt;

&lt;p&gt;Build&lt;br&gt;
 ↓&lt;br&gt;
Evaluate&lt;br&gt;
 ↓&lt;br&gt;
Measure&lt;br&gt;
 ↓&lt;br&gt;
Improve&lt;br&gt;
 ↓&lt;br&gt;
Evaluate Again&lt;br&gt;
 ↓&lt;br&gt;
Deploy&lt;/p&gt;

&lt;p&gt;That's how we build reliable software.&lt;/p&gt;

&lt;p&gt;And I believe that's how we need to start building reliable AI.&lt;/p&gt;

&lt;p&gt;The future of AI engineering won't belong only to people who know how to make models produce impressive outputs.&lt;/p&gt;

&lt;p&gt;It will belong to developers who can measure, reproduce, debug, and improve those outputs.&lt;/p&gt;

&lt;p&gt;Because the most important question in AI isn't:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Can the model do it?"&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;"Can I prove that my system does it reliably?"&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>automation</category>
    </item>
    <item>
      <title>The 7 AI Repositories I Starred This Month</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Mon, 17 Aug 2026 06:31:54 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/the-7-ai-repositories-i-starred-this-month-4gd7</link>
      <guid>https://dev.to/jaideepparashar/the-7-ai-repositories-i-starred-this-month-4gd7</guid>
      <description>&lt;p&gt;I don't star GitHub repositories just because they are popular.&lt;/p&gt;

&lt;p&gt;A repository earns a star from me when I can see myself returning to it later.&lt;/p&gt;

&lt;p&gt;Maybe it solves a real engineering problem.&lt;/p&gt;

&lt;p&gt;Maybe it introduces a new architecture.&lt;/p&gt;

&lt;p&gt;Maybe the code teaches me something.&lt;/p&gt;

&lt;p&gt;Or maybe it represents where AI development is heading.&lt;/p&gt;

&lt;p&gt;I've been spending a lot of time exploring AI repositories around agents, workflows, RAG, MCP, browser automation, model training, and API development.&lt;/p&gt;

&lt;p&gt;These are seven repositories that stood out to me recently.&lt;/p&gt;

&lt;p&gt;Not because you need all seven.&lt;/p&gt;

&lt;p&gt;But because each one represents an important direction in AI development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. OpenAI Cookbook&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/openai/openai-cookbook" rel="noopener noreferrer"&gt;https://github.com/openai/openai-cookbook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're building with the OpenAI API, this is one repository I would keep bookmarked.&lt;/p&gt;

&lt;p&gt;The OpenAI Cookbook contains practical examples and guides covering common API development tasks, with many examples written in Python.&lt;/p&gt;

&lt;p&gt;What I particularly like is the implementation-first approach.&lt;/p&gt;

&lt;p&gt;Instead of spending hours reading theoretical explanations, you can study working examples and adapt them to your own application.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;API integration&lt;/li&gt;
&lt;li&gt;Structured outputs&lt;/li&gt;
&lt;li&gt;Embeddings&lt;/li&gt;
&lt;li&gt;Agents&lt;/li&gt;
&lt;li&gt;Evaluations&lt;/li&gt;
&lt;li&gt;Multimodal applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For beginners, it can also serve as a bridge between understanding an AI concept and actually implementing it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. LangChain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/langchain-ai/langchain" rel="noopener noreferrer"&gt;https://github.com/langchain-ai/langchain&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LangChain remains one of the most important repositories in the LLM application ecosystem.&lt;/p&gt;

&lt;p&gt;But I don't recommend it simply because it is popular.&lt;/p&gt;

&lt;p&gt;I recommend understanding it because it exposes you to the building blocks behind modern AI applications.&lt;/p&gt;

&lt;p&gt;Models.&lt;/p&gt;

&lt;p&gt;Tools.&lt;/p&gt;

&lt;p&gt;Retrievers.&lt;/p&gt;

&lt;p&gt;Agents.&lt;/p&gt;

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

&lt;p&gt;Structured outputs.&lt;/p&gt;

&lt;p&gt;If you're serious about AI engineering, studying how these components fit together is valuable even if you eventually choose another framework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. LangGraph&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/langchain-ai/langgraph" rel="noopener noreferrer"&gt;https://github.com/langchain-ai/langgraph&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is probably one of the repositories I would recommend most strongly to developers interested in agentic systems.&lt;/p&gt;

&lt;p&gt;LangGraph focuses on building stateful, controllable agents and long-running workflows.&lt;/p&gt;

&lt;p&gt;What interests me most isn't the word "agent."&lt;/p&gt;

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

&lt;p&gt;AI systems become difficult when you don't know what happened during execution.&lt;/p&gt;

&lt;p&gt;LangGraph provides concepts around state, persistence, human-in-the-loop interaction, and workflow orchestration.&lt;/p&gt;

&lt;p&gt;That aligns closely with an idea I've written about before:&lt;/p&gt;

&lt;p&gt;I believe workflows often matter more than agents.&lt;/p&gt;

&lt;p&gt;I explored that argument in Why I Think Workflows Matter More Than Agents:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/jaideepparashar/why-i-think-workflows-matter-more-than-agents-3p82"&gt;https://dev.to/jaideepparashar/why-i-think-workflows-matter-more-than-agents-3p82&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. LlamaIndex&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/run-llama/llama_index" rel="noopener noreferrer"&gt;https://github.com/run-llama/llama_index&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're interested in RAG, document intelligence, or connecting LLMs to private data, LlamaIndex deserves your attention.&lt;/p&gt;

&lt;p&gt;Its ecosystem provides tools for ingesting and structuring information from sources such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PDFs&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Documents&lt;/li&gt;
&lt;li&gt;SQL databases&lt;/li&gt;
&lt;li&gt;Knowledge bases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important idea here is simple:&lt;/p&gt;

&lt;p&gt;An LLM becomes much more useful when it can work with your data.&lt;/p&gt;

&lt;p&gt;This is also why I've become increasingly interested in context engineering rather than thinking only about prompt engineering.&lt;/p&gt;

&lt;p&gt;The quality of the information supplied to the model can matter just as much as the wording of the instruction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmumkzvhxr2xur18h6v4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmumkzvhxr2xur18h6v4q.png" alt="The 7 AI Repositories I Starred This Month" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Browser Use&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/browser-use/browser-use" rel="noopener noreferrer"&gt;https://github.com/browser-use/browser-use&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is one of the more interesting repositories if you're thinking about AI agents interacting with the actual web.&lt;/p&gt;

&lt;p&gt;Browser Use allows AI agents to control browsers and perform actions such as navigating websites, clicking elements, entering information, and extracting data.&lt;/p&gt;

&lt;p&gt;That opens up a different category of AI applications.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;User → Prompt → LLM → Text&lt;/p&gt;

&lt;p&gt;You can build:&lt;/p&gt;

&lt;p&gt;User&lt;br&gt;
 ↓&lt;br&gt;
AI Agent&lt;br&gt;
 ↓&lt;br&gt;
Browser&lt;br&gt;
 ↓&lt;br&gt;
Website&lt;br&gt;
 ↓&lt;br&gt;
Action&lt;br&gt;
 ↓&lt;br&gt;
Result&lt;/p&gt;

&lt;p&gt;That's a significant shift.&lt;/p&gt;

&lt;p&gt;The AI isn't merely generating an answer.&lt;/p&gt;

&lt;p&gt;It's interacting with software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Model Context Protocol Servers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/modelcontextprotocol/servers" rel="noopener noreferrer"&gt;https://github.com/modelcontextprotocol/servers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MCP has become one of the most interesting developments in the AI tooling ecosystem.&lt;/p&gt;

&lt;p&gt;The official MCP servers repository contains reference implementations that demonstrate how AI applications can interact with external tools and data sources.&lt;/p&gt;

&lt;p&gt;The important concept isn't any individual server.&lt;/p&gt;

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

&lt;p&gt;AI systems can connect to external capabilities through a common protocol rather than requiring a completely different integration approach every time.&lt;/p&gt;

&lt;p&gt;I've explored this topic in detail in 5 MCP Servers That Changed How I Build AI Workflows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/jaideepparashar/5-mcp-servers-that-changed-how-i-build-ai-workflows-16j6"&gt;https://dev.to/jaideepparashar/5-mcp-servers-that-changed-how-i-build-ai-workflows-16j6&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're building AI workflows in 2026, I think MCP is worth understanding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Unsloth&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/unslothai/unsloth" rel="noopener noreferrer"&gt;https://github.com/unslothai/unsloth&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The last repository on my list takes us in a different direction.&lt;/p&gt;

&lt;p&gt;Unsloth focuses on running and training AI models locally, including workflows around fine-tuning and open models.&lt;/p&gt;

&lt;p&gt;This matters because not every AI builder wants to depend entirely on hosted APIs.&lt;/p&gt;

&lt;p&gt;There are legitimate reasons to explore local models:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Privacy&lt;/li&gt;
&lt;li&gt;Cost control&lt;/li&gt;
&lt;li&gt;Experimentation&lt;/li&gt;
&lt;li&gt;Customization&lt;/li&gt;
&lt;li&gt;Offline development&lt;/li&gt;
&lt;li&gt;Model fine-tuning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The open-model ecosystem is becoming increasingly important, and projects like Unsloth make experimentation considerably more accessible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Look For Before Starring a Repository&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't use GitHub stars as a popularity contest.&lt;/p&gt;

&lt;p&gt;When I evaluate an AI repository, I usually ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does it solve a real problem?&lt;/li&gt;
&lt;li&gt;Is the architecture worth studying?&lt;/li&gt;
&lt;li&gt;Is the project actively maintained?&lt;/li&gt;
&lt;li&gt;Can I learn something from the code?&lt;/li&gt;
&lt;li&gt;Could I actually use it in a project?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the answer is yes to several of these questions, the repository gets my attention.&lt;/p&gt;

&lt;p&gt;That's also why I don't believe you need hundreds of AI repositories in your bookmarks.&lt;/p&gt;

&lt;p&gt;You need the right ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't Build Your AI Stack From GitHub Stars&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is a trap here.&lt;/p&gt;

&lt;p&gt;You discover an impressive repository.&lt;/p&gt;

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

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

&lt;p&gt;Before you know it, you're running ten frameworks, six databases, four agent libraries, and three orchestration systems.&lt;/p&gt;

&lt;p&gt;That's not an AI stack.&lt;/p&gt;

&lt;p&gt;That's dependency collection.&lt;/p&gt;

&lt;p&gt;I've written about this problem in The Hidden Cost of Using Too Many AI Tools:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/jaideepparashar/the-hidden-cost-of-using-too-many-ai-tools-poo"&gt;https://dev.to/jaideepparashar/the-hidden-cost-of-using-too-many-ai-tools-poo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The objective isn't to use more technology.&lt;/p&gt;

&lt;p&gt;It's to build better systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What I like about GitHub is that it gives us something AI hype often doesn't:&lt;/p&gt;

&lt;p&gt;the opportunity to inspect the work.&lt;/p&gt;

&lt;p&gt;You can read the code.&lt;/p&gt;

&lt;p&gt;Study the architecture.&lt;/p&gt;

&lt;p&gt;Look at the issues.&lt;/p&gt;

&lt;p&gt;Examine pull requests.&lt;/p&gt;

&lt;p&gt;Run the examples.&lt;/p&gt;

&lt;p&gt;And decide for yourself whether something is actually useful.&lt;/p&gt;

&lt;p&gt;That's how I prefer to learn AI.&lt;/p&gt;

&lt;p&gt;Not just by reading what people say about a technology.&lt;/p&gt;

&lt;p&gt;By opening the repository and seeing what developers are actually building.&lt;/p&gt;

&lt;p&gt;These seven repositories are a good starting point.&lt;/p&gt;

&lt;p&gt;But don't just star them.&lt;/p&gt;

&lt;p&gt;Clone one. Read the code. Build something. Break it. Fix it.&lt;/p&gt;

&lt;p&gt;That's where the real learning begins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Jaideep Parashar is the Founder &amp;amp; Director of ReThynk AI Innovation and Research Pvt. Ltd., Six Sigma Black Belt, Lean Expert, AI Strategist, researcher, author, and keynote speaker. Through Agentic Process Excellence™, he helps organizations combine Artificial Intelligence, Lean Six Sigma, and systems thinking to build reliable, scalable, and continuously improving business operations.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>github</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why Context Engineering Is More Important Than Prompt Engineering</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 07 Aug 2026 05:20:40 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/why-context-engineering-is-more-important-than-prompt-engineering-3d64</link>
      <guid>https://dev.to/jaideepparashar/why-context-engineering-is-more-important-than-prompt-engineering-3d64</guid>
      <description>&lt;p&gt;For the past few years, prompt engineering has been one of the hottest topics in AI.&lt;/p&gt;

&lt;p&gt;Countless tutorials have promised the "perfect prompt."&lt;/p&gt;

&lt;p&gt;Courses have been built around writing better prompts.&lt;/p&gt;

&lt;p&gt;Developers have spent hours refining wording to squeeze better responses from large language models.&lt;/p&gt;

&lt;p&gt;But after building AI systems across multiple projects, I think the conversation is changing.&lt;/p&gt;

&lt;p&gt;Prompt engineering is still important.&lt;/p&gt;

&lt;p&gt;However, I believe context engineering is becoming even more important.&lt;/p&gt;

&lt;p&gt;The difference may sound subtle.&lt;/p&gt;

&lt;p&gt;In practice, it changes how we design AI applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F14l8kyl0rzdyw5itdivc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F14l8kyl0rzdyw5itdivc.png" alt="Context Engineering" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompts Tell AI What to Do&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A prompt is simply an instruction.&lt;/p&gt;

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

&lt;p&gt;Generate a FastAPI CRUD application.&lt;/p&gt;

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

&lt;p&gt;A better version might be:&lt;/p&gt;

&lt;p&gt;Generate a FastAPI CRUD application.&lt;/p&gt;

&lt;p&gt;Requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.12&lt;/li&gt;
&lt;li&gt;SQLAlchemy&lt;/li&gt;
&lt;li&gt;Pydantic v2&lt;/li&gt;
&lt;li&gt;JWT Authentication&lt;/li&gt;
&lt;li&gt;Unit Tests&lt;/li&gt;
&lt;li&gt;Docker Support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The second prompt is more specific.&lt;/p&gt;

&lt;p&gt;It reduces ambiguity.&lt;/p&gt;

&lt;p&gt;That's exactly why prompt engineering became so valuable.&lt;/p&gt;

&lt;p&gt;In fact, I previously wrote &lt;a href="https://dev.to/jaideepparashar/the-real-reason-prompt-engineering-isnt-going-away-2koo"&gt;The Real Reason Prompt Engineering Isn't Going Away&lt;/a&gt;, where I explain why better prompts continue to improve AI systems even as language models become more capable.&lt;/p&gt;

&lt;p&gt;But modern AI applications require much more than better prompts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context Gives AI the Information It Needs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine asking an AI assistant:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Summarize our API documentation.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Without context, the model has no documentation.&lt;/p&gt;

&lt;p&gt;Now imagine the workflow:&lt;/p&gt;

&lt;p&gt;User Request&lt;br&gt;
      ↓&lt;br&gt;
API Documentation&lt;br&gt;
      ↓&lt;br&gt;
GitHub Repository&lt;br&gt;
      ↓&lt;br&gt;
Coding Standards&lt;br&gt;
      ↓&lt;br&gt;
Previous Conversations&lt;br&gt;
      ↓&lt;br&gt;
LLM&lt;br&gt;
      ↓&lt;br&gt;
Response&lt;/p&gt;

&lt;p&gt;Nothing about the prompt changed dramatically.&lt;/p&gt;

&lt;p&gt;What changed was the context.&lt;/p&gt;

&lt;p&gt;And that often has a much greater impact on output quality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modern AI Applications Run on Context&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today's AI systems rarely depend on prompts alone.&lt;/p&gt;

&lt;p&gt;Instead, they combine information from multiple sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retrieved documents&lt;/li&gt;
&lt;li&gt;Vector databases&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Tool outputs&lt;/li&gt;
&lt;li&gt;Conversation history&lt;/li&gt;
&lt;li&gt;User preferences&lt;/li&gt;
&lt;li&gt;System instructions&lt;/li&gt;
&lt;li&gt;Business rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model reasons over all of this information before producing a response.&lt;/p&gt;

&lt;p&gt;That's context engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Think Like a Software Engineer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers rarely write software by placing all their logic inside a single function.&lt;/p&gt;

&lt;p&gt;Instead, they organize:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modules&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;li&gt;Services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI systems benefit from the same thinking.&lt;/p&gt;

&lt;p&gt;Instead of creating one enormous prompt, we should design systems that assemble the right context automatically.&lt;/p&gt;

&lt;p&gt;The prompt becomes only one component of a larger architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Retrieval Is Context Engineering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Retrieval-Augmented Generation (RAG) is a perfect example.&lt;/p&gt;

&lt;p&gt;Without retrieval:&lt;/p&gt;

&lt;p&gt;Question&lt;br&gt;
      ↓&lt;br&gt;
LLM&lt;br&gt;
      ↓&lt;br&gt;
Answer&lt;/p&gt;

&lt;p&gt;With retrieval:&lt;/p&gt;

&lt;p&gt;Question&lt;br&gt;
      ↓&lt;br&gt;
Vector Database&lt;br&gt;
      ↓&lt;br&gt;
Relevant Documents&lt;br&gt;
      ↓&lt;br&gt;
LLM&lt;br&gt;
      ↓&lt;br&gt;
Answer&lt;/p&gt;

&lt;p&gt;The improvement doesn't come from rewriting the prompt.&lt;/p&gt;

&lt;p&gt;It comes from supplying better information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP Is Expanding the Idea Even Further&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Model Context Protocol (MCP) pushes this concept beyond documents.&lt;/p&gt;

&lt;p&gt;Instead of retrieving only stored knowledge, AI systems can access:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub repositories&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;File systems&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Development tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That dramatically expands the available context.&lt;/p&gt;

&lt;p&gt;If you're exploring this direction, I recommend reading &lt;a href="https://dev.to/jaideepparashar/5-mcp-servers-that-changed-how-i-build-ai-workflows-16j6"&gt;5 MCP Servers That Changed How I Build AI Workflows&lt;/a&gt;, where I share the MCP servers that have had the biggest impact on my own projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Organized Context Beats Random Conversations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One mistake I see frequently is treating AI chats as permanent knowledge storage.&lt;/p&gt;

&lt;p&gt;Useful prompts disappear.&lt;/p&gt;

&lt;p&gt;Examples are lost.&lt;/p&gt;

&lt;p&gt;Architecture decisions become impossible to find.&lt;/p&gt;

&lt;p&gt;That's why I maintain structured prompt libraries with documentation, categories, and version history.&lt;/p&gt;

&lt;p&gt;The goal isn't simply to organise prompts.&lt;/p&gt;

&lt;p&gt;It's to organise reusable context.&lt;/p&gt;

&lt;p&gt;I explained my complete workflow in &lt;a href="https://dev.to/jaideepparashar/how-i-organize-10000-prompts-across-projects-2g30"&gt;How I Organize 10,000+ Prompts Across Projects&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context Makes Workflows More Reliable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One reason I emphasize workflows is that they naturally manage context.&lt;/p&gt;

&lt;p&gt;A good workflow knows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What information to retrieve&lt;/li&gt;
&lt;li&gt;Which tools to call&lt;/li&gt;
&lt;li&gt;What data to validate&lt;/li&gt;
&lt;li&gt;What output to generate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI model isn't making random decisions.&lt;/p&gt;

&lt;p&gt;It's operating inside a structured system.&lt;/p&gt;

&lt;p&gt;That's one reason I believe workflows often create more reliable AI applications than jumping directly to autonomous agents.&lt;/p&gt;

&lt;p&gt;I discussed this idea further in &lt;a href="https://dev.to/jaideepparashar/why-i-think-workflows-matter-more-than-agents-3p82"&gt;Why I Think Workflows Matter More Than Agents&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Businesses Need Context Too&lt;/p&gt;

&lt;p&gt;This idea extends beyond software engineering.&lt;/p&gt;

&lt;p&gt;Organizations often invest in AI before understanding their own processes.&lt;/p&gt;

&lt;p&gt;Without operational context, AI has little foundation to build upon.&lt;/p&gt;

&lt;p&gt;Business rules.&lt;/p&gt;

&lt;p&gt;Approval flows.&lt;/p&gt;

&lt;p&gt;Compliance requirements.&lt;/p&gt;

&lt;p&gt;Documentation.&lt;/p&gt;

&lt;p&gt;These are all forms of organizational context.&lt;/p&gt;

&lt;p&gt;Before implementing AI at scale, it's worth assessing whether that context already exists.&lt;/p&gt;

&lt;p&gt;I explored this in &lt;a href="https://rethynkai.com/ai-process-assessment-business-ready-for-ai/" rel="noopener noreferrer"&gt;AI Process Assessment: 9 Signs Your Business Is Ready for AI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Perspective&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't think prompt engineering is disappearing.&lt;/p&gt;

&lt;p&gt;Far from it.&lt;/p&gt;

&lt;p&gt;Prompt engineering remains one of the foundational skills for working with large language models.&lt;/p&gt;

&lt;p&gt;But I think the industry's focus is expanding.&lt;/p&gt;

&lt;p&gt;The question is no longer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How do I write a better prompt?"&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;blockquote&gt;
&lt;p&gt;"How do I provide the right information at the right time?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a much bigger challenge.&lt;/p&gt;

&lt;p&gt;And it's also a much more interesting engineering problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The future of AI won't be determined by who writes the cleverest prompts.&lt;/p&gt;

&lt;p&gt;It will be shaped by those who design systems that deliver the right context consistently.&lt;/p&gt;

&lt;p&gt;Great prompts still matter.&lt;/p&gt;

&lt;p&gt;But great context transforms AI from an impressive chatbot into a dependable software system.&lt;/p&gt;

&lt;p&gt;As builders, our goal shouldn't be to create longer prompts.&lt;/p&gt;

&lt;p&gt;It should be to create smarter systems that know what information an AI model needs, and when it needs it.&lt;/p&gt;

&lt;p&gt;That's why I believe context engineering is becoming one of the most valuable skills in modern AI development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About the Author:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Jaideep Parashar is the Founder &amp;amp; Director of ReThynk AI Innovation and Research Pvt. Ltd., AI Strategist, researcher, author, Six Sigma Black Belt, and Lean Expert. He writes about practical AI implementation, Agentic Process Excellence™, and building reliable AI systems that combine technical innovation with operational excellence.&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://rethynkai.com/" rel="noopener noreferrer"&gt;ReThynk AI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/jaideepparashar/the-real-reason-prompt-engineering-isnt-going-away-2koo"&gt;https://dev.to/jaideepparashar/the-real-reason-prompt-engineering-isnt-going-away-2koo&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/jaideepparashar/5-mcp-servers-that-changed-how-i-build-ai-workflows-16j6"&gt;https://dev.to/jaideepparashar/5-mcp-servers-that-changed-how-i-build-ai-workflows-16j6&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/jaideepparashar/how-i-organize-10000-prompts-across-projects-2g30"&gt;https://dev.to/jaideepparashar/how-i-organize-10000-prompts-across-projects-2g30&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/jaideepparashar/why-i-think-workflows-matter-more-than-agents-3p82"&gt;https://dev.to/jaideepparashar/why-i-think-workflows-matter-more-than-agents-3p82&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rethynkai.com/ai-process-assessment-business-ready-for-ai/" rel="noopener noreferrer"&gt;https://rethynkai.com/ai-process-assessment-business-ready-for-ai/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>beginners</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Why I Think Workflows Matter More Than Agents</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 31 Jul 2026 05:36:16 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/why-i-think-workflows-matter-more-than-agents-3p82</link>
      <guid>https://dev.to/jaideepparashar/why-i-think-workflows-matter-more-than-agents-3p82</guid>
      <description>&lt;p&gt;If you've spent any time in the AI community recently, you've probably noticed one trend.&lt;/p&gt;

&lt;p&gt;Everything is becoming an AI agent.&lt;/p&gt;

&lt;p&gt;Need to summarize documents?&lt;/p&gt;

&lt;p&gt;"Build an agent."&lt;/p&gt;

&lt;p&gt;Need customer support?&lt;/p&gt;

&lt;p&gt;"Use multiple agents."&lt;/p&gt;

&lt;p&gt;Need a coding assistant?&lt;/p&gt;

&lt;p&gt;"Deploy an autonomous agent with memory, tools, planning, and self-reflection."&lt;/p&gt;

&lt;p&gt;Agents are exciting, and they absolutely have their place.&lt;/p&gt;

&lt;p&gt;But after building AI applications and experimenting with different architectures, I've reached a different conclusion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6zlbb5ibiz5u85wclqma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6zlbb5ibiz5u85wclqma.png" alt="Why I Think Workflows Matter More Than Agents" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I think workflows matter more than agents.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That doesn't mean agents are bad.&lt;/p&gt;

&lt;p&gt;It means I believe too many builders start by asking, "How can I build an agent?" instead of asking, "What's the simplest workflow that solves this problem?"&lt;/p&gt;

&lt;p&gt;That single change in thinking has improved the way I design AI systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workflows Solve Problems. Agents Execute Them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine you're building an AI-powered support system.&lt;/p&gt;

&lt;p&gt;A workflow might look like this:&lt;/p&gt;

&lt;p&gt;User Question&lt;br&gt;
      ↓&lt;br&gt;
Retrieve Knowledge&lt;br&gt;
      ↓&lt;br&gt;
Generate Response&lt;br&gt;
      ↓&lt;br&gt;
Validate Output&lt;br&gt;
      ↓&lt;br&gt;
Send Reply&lt;/p&gt;

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

&lt;p&gt;Each step has a clear purpose.&lt;/p&gt;

&lt;p&gt;Now compare that with a system where an autonomous agent decides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which tools to use&lt;/li&gt;
&lt;li&gt;Which documents to search&lt;/li&gt;
&lt;li&gt;Whether to call another agent&lt;/li&gt;
&lt;li&gt;Whether to retry&lt;/li&gt;
&lt;li&gt;Whether to re-plan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes that's exactly what's needed.&lt;/p&gt;

&lt;p&gt;But sometimes you've introduced far more complexity than the problem requires.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Complexity Has a Cost&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every additional layer in an AI system introduces new challenges.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More prompts&lt;/li&gt;
&lt;li&gt;More APIs&lt;/li&gt;
&lt;li&gt;More debugging&lt;/li&gt;
&lt;li&gt;More monitoring&lt;/li&gt;
&lt;li&gt;More failure points&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A workflow with five deterministic steps is often easier to understand than an autonomous system making dozens of decisions behind the scenes.&lt;/p&gt;

&lt;p&gt;That's one reason I previously wrote &lt;a href="https://dev.to/jaideepparashar/why-i-think-most-ai-agents-are-overengineered-249o"&gt;Why I Think Most AI Agents Are Overengineered&lt;/a&gt;, where I discuss how many projects adopt autonomous architectures long before they've demonstrated the need for them.&lt;/p&gt;

&lt;p&gt;For many applications, simplicity isn't a limitation.&lt;/p&gt;

&lt;p&gt;It's an advantage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Predictability Beats Cleverness&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the biggest benefits of workflows is predictability.&lt;/p&gt;

&lt;p&gt;When something goes wrong, you know exactly where to look.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Was retrieval incorrect?&lt;/li&gt;
&lt;li&gt;Did the prompt fail?&lt;/li&gt;
&lt;li&gt;Did the API return an error?&lt;/li&gt;
&lt;li&gt;Did validation reject the response?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each stage can be tested independently.&lt;/p&gt;

&lt;p&gt;With highly autonomous agents, tracing failures often becomes much harder because decision-making is distributed across multiple planning steps.&lt;/p&gt;

&lt;p&gt;As systems grow, observability becomes just as important as intelligence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good Workflows Scale Better&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've learned that scaling isn't only about handling more users.&lt;/p&gt;

&lt;p&gt;It's also about maintaining systems over time.&lt;/p&gt;

&lt;p&gt;A clear workflow makes it easier to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add new features&lt;/li&gt;
&lt;li&gt;Replace models&lt;/li&gt;
&lt;li&gt;Update prompts&lt;/li&gt;
&lt;li&gt;Improve evaluation&lt;/li&gt;
&lt;li&gt;Introduce governance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because each component has a defined responsibility.&lt;/p&gt;

&lt;p&gt;That's much harder when responsibilities are spread across multiple autonomous agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integration Matters More Than Autonomy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One lesson that has consistently shaped my AI stack is this:&lt;/p&gt;

&lt;p&gt;Connected systems create more value than isolated intelligence.&lt;/p&gt;

&lt;p&gt;A workflow that integrates GitHub, APIs, databases, and language models often delivers more business value than a sophisticated agent working in isolation.&lt;/p&gt;

&lt;p&gt;That's one reason I've invested time in Model Context Protocol (MCP). Standardized integrations reduce friction and allow workflows to interact with external systems in a reliable way.&lt;/p&gt;

&lt;p&gt;If you're exploring this approach, &lt;a href="https://dev.to/jaideepparashar/5-mcp-servers-that-changed-how-i-build-ai-workflows-16j6"&gt;5 MCP Servers That Changed How I Build AI Workflows&lt;/a&gt; covers the MCP servers that have had the biggest impact on my own projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Best AI Stack Supports Workflows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I look at my own development environment, I don't think about individual tools.&lt;/p&gt;

&lt;p&gt;I think about how they work together.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ChatGPT.&lt;/li&gt;
&lt;li&gt;Cursor.&lt;/li&gt;
&lt;li&gt;FastAPI.&lt;/li&gt;
&lt;li&gt;GitHub.&lt;/li&gt;
&lt;li&gt;MCP.&lt;/li&gt;
&lt;li&gt;Python.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each tool has one clear responsibility within a larger workflow.&lt;/p&gt;

&lt;p&gt;I described this philosophy in &lt;a href="https://dev.to/jaideepparashar/my-personal-ai-stack-in-2026-2epn"&gt;My Personal AI Stack in 2026&lt;/a&gt;, where I explain why I choose tools based on integration rather than popularity.&lt;/p&gt;

&lt;p&gt;The stack exists to support the workflow—not the other way around.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Businesses Don't Need Agents First&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One mistake I see organizations make is assuming that AI success starts with deploying agents.&lt;/p&gt;

&lt;p&gt;In reality, it usually starts much earlier.&lt;/p&gt;

&lt;p&gt;With understanding the process.&lt;/p&gt;

&lt;p&gt;If the underlying workflow is inefficient, autonomous agents often automate inefficiency instead of eliminating it.&lt;/p&gt;

&lt;p&gt;That's why I believe organizations should evaluate their operational readiness before investing heavily in advanced AI architectures.&lt;/p&gt;

&lt;p&gt;I explored this in &lt;a href="https://rethynkai.com/ai-process-assessment-business-ready-for-ai/" rel="noopener noreferrer"&gt;AI Process Assessment: 9 Signs Your Business Is Ready for AI&lt;/a&gt;, which provides practical indicators for assessing whether a business is prepared for AI adoption.&lt;/p&gt;

&lt;p&gt;Similarly, &lt;a href="https://rethynkai.com/fix-your-process-before-implementing-ai/" rel="noopener noreferrer"&gt;Why You Should Fix Your Process Before Implementing AI&lt;/a&gt; explains why improving the process itself often delivers greater returns than introducing new AI technologies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When Do Agents Make Sense?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This isn't an argument against agents.&lt;/p&gt;

&lt;p&gt;There are many scenarios where they're the right choice.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Multi-step research&lt;/li&gt;
&lt;li&gt;Dynamic task planning&lt;/li&gt;
&lt;li&gt;Software engineering assistants&lt;/li&gt;
&lt;li&gt;Long-running automation&lt;/li&gt;
&lt;li&gt;Complex orchestration across multiple tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But I treat agents as an optimization.&lt;/p&gt;

&lt;p&gt;Not a starting point.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Can a workflow solve this?&lt;/li&gt;
&lt;li&gt;Can it remain deterministic?&lt;/li&gt;
&lt;li&gt;Can it be monitored easily?&lt;/li&gt;
&lt;li&gt;Can another developer maintain it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only when the answer becomes "no" do I consider adding autonomous behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI agents will continue to improve.&lt;/p&gt;

&lt;p&gt;Planning will become better.&lt;/p&gt;

&lt;p&gt;Reasoning will become stronger.&lt;/p&gt;

&lt;p&gt;Frameworks will become easier to use.&lt;/p&gt;

&lt;p&gt;But I don't think the future belongs to the most autonomous systems.&lt;/p&gt;

&lt;p&gt;I think it belongs to the teams that design the best workflows.&lt;/p&gt;

&lt;p&gt;Because workflows create clarity.&lt;/p&gt;

&lt;p&gt;Clarity creates reliability.&lt;/p&gt;

&lt;p&gt;And reliable systems create real business value.&lt;/p&gt;

&lt;p&gt;Before building another agent, it may be worth asking a simpler question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Could a well-designed workflow solve this just as effectively?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About the Author:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Jaideep Parashar is the Founder &amp;amp; Director of ReThynk AI Innovation and Research Pvt. Ltd., AI Strategist, researcher, author, Six Sigma Black Belt, and Lean Expert. He writes about practical AI implementation, Agentic Process Excellence™, and building reliable AI systems that combine technical innovation with operational excellence.&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://rethynkai.com/" rel="noopener noreferrer"&gt;ReThynk AI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/jaideepparashar/why-i-think-most-ai-agents-are-overengineered-249o"&gt;https://dev.to/jaideepparashar/why-i-think-most-ai-agents-are-overengineered-249o&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/jaideepparashar/5-mcp-servers-that-changed-how-i-build-ai-workflows-16j6"&gt;https://dev.to/jaideepparashar/5-mcp-servers-that-changed-how-i-build-ai-workflows-16j6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/jaideepparashar/my-personal-ai-stack-in-2026-2epn"&gt;https://dev.to/jaideepparashar/my-personal-ai-stack-in-2026-2epn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rethynkai.com/ai-process-assessment-business-ready-for-ai/" rel="noopener noreferrer"&gt;https://rethynkai.com/ai-process-assessment-business-ready-for-ai/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rethynkai.com/fix-your-process-before-implementing-ai/" rel="noopener noreferrer"&gt;https://rethynkai.com/fix-your-process-before-implementing-ai/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
