<?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>10 AI Terms Every Developer Should Know to Build Better Systems</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 06 Nov 2026 16:27:19 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/10-ai-terms-every-developer-should-know-to-build-better-systems-2lpa</link>
      <guid>https://dev.to/jaideepparashar/10-ai-terms-every-developer-should-know-to-build-better-systems-2lpa</guid>
      <description>&lt;p&gt;In my last speech, I wanted the audience to leave with something they could use beyond a particular AI tool.&lt;/p&gt;

&lt;p&gt;So I focused on how to think with AI.&lt;/p&gt;

&lt;p&gt;While building ReThynk AI, one lesson has become central to my thinking: start with the problem. Understand what needs to happen, who needs it, and how you will know whether your solution works.&lt;/p&gt;

&lt;p&gt;Technical knowledge becomes valuable when it helps us answer those questions.&lt;/p&gt;

&lt;p&gt;That is why I want developers to understand these ten terms. Each gives you a way to examine your application, identify a weakness, and make a better decision.&lt;/p&gt;

&lt;p&gt;Let us connect them through one example: building an AI customer-support assistant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Context window&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The context window is the amount of information a model can work with during a response, measured in tokens. Its capacity must accommodate the relevant input and generated output, subject to the model’s limits. It is different from permanent memory.&lt;/p&gt;

&lt;p&gt;Imagine your support assistant needs the customer’s question, conversation history, and refund policy. Those compete for space alongside instructions and tool results.&lt;/p&gt;

&lt;p&gt;A larger window gives you more room. You still need to decide what deserves that room.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Context engineering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Context engineering means selecting, organizing, and maintaining the information available to the model as it works. This includes instructions, documents, conversation history, and tool results.&lt;/p&gt;

&lt;p&gt;For our assistant, loading every policy document could introduce outdated or irrelevant information. Selecting the current policy for the customer’s region gives it a more useful starting point.&lt;/p&gt;

&lt;p&gt;My question here is simple: Have I given the system what it needs to make this particular decision?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Embeddings&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Embeddings represent information as numerical vectors. Suitable embedding models allow us to compare text by semantic similarity, which is useful for search, clustering, and retrieval.&lt;/p&gt;

&lt;p&gt;A customer writes, “My parcel never arrived.” Your documentation calls this a “missing delivery.” Embedding-based search can help connect the two despite their different wording.&lt;/p&gt;

&lt;p&gt;However, a similar document can still be the wrong document. You must also consider details such as product, region, and policy date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Retrieval-augmented generation, or RAG&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RAG retrieves relevant information and supplies it to a model to help generate an answer. It connects generation with external sources such as documents or databases.&lt;/p&gt;

&lt;p&gt;Our assistant could retrieve a delivery policy before explaining the available options.&lt;/p&gt;

&lt;p&gt;That sounds straightforward, but there are two questions to investigate: did retrieval find the right information, and did the model use it correctly?&lt;/p&gt;

&lt;p&gt;Connecting a document store is the beginning of that work.&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%2Fa8cjoiibd7hcm7irnri4.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%2Fa8cjoiibd7hcm7irnri4.png" alt="10 AI Terms Every Developers Should Know" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Tool calling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tool calling allows a model to request an external function using structured arguments. For custom functions, your application executes the function and returns its result to the model.&lt;/p&gt;

&lt;p&gt;For example, the assistant might request:&lt;/p&gt;

&lt;p&gt;get_order_status(order_id="12345")&lt;/p&gt;

&lt;p&gt;Your application must check whether the customer can access that order before executing the request.&lt;/p&gt;

&lt;p&gt;The model can propose an action. Your software remains responsible for enforcing permissions and validating inputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Workflows and agents&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Anthropic’s architectural distinction, workflows follow predefined code paths, while agents dynamically direct their processes and tool use. Different products may use these labels differently, so the underlying behavior matters.&lt;/p&gt;

&lt;p&gt;A support workflow might always check the order, retrieve the policy, and draft a response.&lt;/p&gt;

&lt;p&gt;An agent might decide which investigation to perform next based on what it discovers.&lt;/p&gt;

&lt;p&gt;When building, I would ask how much flexibility the problem requires. A predictable process can be easier to inspect, test, and maintain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Model Context Protocol, or MCP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MCP standardizes how AI applications connect with capabilities exposed by servers, including tools, resources, and prompts. Its architecture separates the host application, clients, and servers.&lt;/p&gt;

&lt;p&gt;For our support assistant, an MCP server could expose order-search tools or policy resources.&lt;/p&gt;

&lt;p&gt;This helps define the connection. You still need to design access controls, tool behavior, and error handling.&lt;/p&gt;

&lt;p&gt;Understanding the protocol should help you build clearer interfaces between your AI application and the systems it uses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Evaluations, or evals&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Evaluations are structured checks of how a system performs on representative tasks. For a RAG application, useful dimensions include correctness, relevance, completeness, and whether the response is supported by its supplied context.&lt;/p&gt;

&lt;p&gt;Our assistant needs test cases for missing deliveries, conflicting policies, unavailable order data, and questions it cannot answer.&lt;/p&gt;

&lt;p&gt;My Six Sigma background makes this especially meaningful to me. Before improving a process, we need a clear definition of acceptable performance.&lt;/p&gt;

&lt;p&gt;A convincing demonstration gives us something to investigate. Evaluation gives us evidence across cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Observability&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Observability helps us understand a system’s behavior through telemetry such as traces, metrics, and logs. A trace can follow a request through multiple operations.&lt;/p&gt;

&lt;p&gt;Suppose our assistant gives a poor answer after taking fifteen seconds. We need to discover where the time went, which documents were retrieved, and whether a tool failed.&lt;/p&gt;

&lt;p&gt;For AI applications, I would track the relevant retrieval, model, and tool steps while protecting sensitive customer information.&lt;/p&gt;

&lt;p&gt;We can improve more effectively when we can locate the failure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. Idempotency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An idempotent operation can be repeated without producing additional effects beyond the intended first operation. This matters when requests are retried after timeouts or interrupted connections.&lt;/p&gt;

&lt;p&gt;Imagine a refund succeeds, but the response never reaches the assistant. It retries.&lt;/p&gt;

&lt;p&gt;The system should recognize the same logical refund request and avoid issuing another payment. Implementing that requires coordination with the service performing the action.&lt;/p&gt;

&lt;p&gt;A retry is a small technical detail until it changes someone’s account balance.&lt;/p&gt;

&lt;p&gt;These concepts belong together.&lt;/p&gt;

&lt;p&gt;Context engineering determines what the model sees. Retrieval supplies information. Tools connect it to actions. Workflows or agents coordinate the work. Evaluations check performance, observability helps explain behavior, and idempotency helps make retries safe.&lt;/p&gt;

&lt;p&gt;When I speak about thinking with AI, this is part of what I mean: understanding enough of the whole system to ask better questions.&lt;/p&gt;

&lt;p&gt;Choose one AI project you are building. Trace a single user request through it.&lt;/p&gt;

&lt;p&gt;Where could it retrieve the wrong information, take an unauthorized action, or repeat an operation?&lt;/p&gt;

&lt;p&gt;Share the term you want me to explore next, and the problem you are trying to solve with it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>devops</category>
    </item>
    <item>
      <title>Why developers need room to experiment, learn, and build without turning every idea into a business</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 30 Oct 2026 06:47:41 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/not-every-side-project-needs-to-become-a-startup-4dfi</link>
      <guid>https://dev.to/jaideepparashar/not-every-side-project-needs-to-become-a-startup-4dfi</guid>
      <description>&lt;p&gt;Imagine spending your weekend building something interesting.&lt;/p&gt;

&lt;p&gt;Maybe a small weather application.&lt;/p&gt;

&lt;p&gt;A tool that organizes your photographs.&lt;/p&gt;

&lt;p&gt;A website that recreates the interface of an old computer.&lt;/p&gt;

&lt;p&gt;Or a simple Python script that solves a problem nobody else seems to care about.&lt;/p&gt;

&lt;p&gt;You spend hours experimenting.&lt;/p&gt;

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

&lt;p&gt;You fix it.&lt;/p&gt;

&lt;p&gt;You learn something new.&lt;/p&gt;

&lt;p&gt;And finally, the project works.&lt;/p&gt;

&lt;p&gt;You're happy.&lt;/p&gt;

&lt;p&gt;Then someone asks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"That's interesting. How are you planning to monetize it?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And suddenly, a perfectly enjoyable weekend project becomes a business discussion.&lt;/p&gt;

&lt;p&gt;What's the target market?&lt;/p&gt;

&lt;p&gt;What's the revenue model?&lt;/p&gt;

&lt;p&gt;How will you acquire users?&lt;/p&gt;

&lt;p&gt;Can you scale it?&lt;/p&gt;

&lt;p&gt;Is there an investor opportunity?&lt;/p&gt;

&lt;p&gt;I understand these questions. I'm a founder myself.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Why does everything we build need to become something we sell?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  We Have Turned Building Into a Business Competition
&lt;/h2&gt;

&lt;p&gt;There was a time when building software was also a way to explore technology.&lt;/p&gt;

&lt;p&gt;You learned HTML because you wanted to create a website.&lt;/p&gt;

&lt;p&gt;You experimented with Python because you were curious about automation.&lt;/p&gt;

&lt;p&gt;You built a game because you enjoyed playing games.&lt;/p&gt;

&lt;p&gt;You created a small tool because something bothered you and you wanted to fix it.&lt;/p&gt;

&lt;p&gt;Not every project needed customers.&lt;/p&gt;

&lt;p&gt;Not every experiment needed a market.&lt;/p&gt;

&lt;p&gt;Not every repository needed thousands of stars.&lt;/p&gt;

&lt;p&gt;Sometimes, the project existed for one reason.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You wanted to see whether you could build it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But the conversation around software development has changed.&lt;/p&gt;

&lt;p&gt;Today, we frequently hear:&lt;/p&gt;

&lt;p&gt;Build in public.&lt;/p&gt;

&lt;p&gt;Launch an MVP.&lt;/p&gt;

&lt;p&gt;Find paying users.&lt;/p&gt;

&lt;p&gt;Create recurring revenue.&lt;/p&gt;

&lt;p&gt;Turn your skills into a business.&lt;/p&gt;

&lt;p&gt;There's nothing wrong with any of these ideas.&lt;/p&gt;

&lt;p&gt;In fact, I believe they're valuable when you're intentionally building a company.&lt;/p&gt;

&lt;p&gt;The problem begins when we start applying the same expectations to every experiment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Side Project Has a Different Job&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A startup exists to create value for customers through a sustainable business.&lt;/p&gt;

&lt;p&gt;A side project doesn't necessarily have that responsibility.&lt;/p&gt;

&lt;p&gt;It might exist to help you learn.&lt;/p&gt;

&lt;p&gt;To explore an unfamiliar technology.&lt;/p&gt;

&lt;p&gt;To understand how something works.&lt;/p&gt;

&lt;p&gt;To test an unusual idea.&lt;/p&gt;

&lt;p&gt;Or simply to enjoy the process of creating something.&lt;/p&gt;

&lt;p&gt;Consider someone building a tiny operating system as a learning exercise.&lt;/p&gt;

&lt;p&gt;It probably won't compete with Linux or Windows.&lt;/p&gt;

&lt;p&gt;Does that mean the project has failed?&lt;/p&gt;

&lt;p&gt;Of course not.&lt;/p&gt;

&lt;p&gt;The developer might learn more about memory management, process scheduling, and hardware than they would from months of watching tutorials.&lt;/p&gt;

&lt;p&gt;Or consider someone building a small application that visualizes sorting algorithms.&lt;/p&gt;

&lt;p&gt;There are already hundreds of similar tools.&lt;/p&gt;

&lt;p&gt;From a business perspective, the idea might appear unoriginal.&lt;/p&gt;

&lt;p&gt;From a learning perspective, it could be incredibly valuable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A project's value isn't always measured by how many people will pay for it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes its value is what it teaches the person building it.&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%2F38fnj3by2cbcbqg688sy.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%2F38fnj3by2cbcbqg688sy.png" alt="Not Every Side Project Needs to Become a Startup" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Has Made This Pressure Even More Interesting
&lt;/h2&gt;

&lt;p&gt;AI has reduced many of the barriers to creating software.&lt;/p&gt;

&lt;p&gt;You can prototype an idea faster.&lt;/p&gt;

&lt;p&gt;Generate boilerplate.&lt;/p&gt;

&lt;p&gt;Explore unfamiliar frameworks.&lt;/p&gt;

&lt;p&gt;Build interfaces.&lt;/p&gt;

&lt;p&gt;Experiment with APIs.&lt;/p&gt;

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

&lt;p&gt;But there's a strange consequence.&lt;/p&gt;

&lt;p&gt;Because building has become easier, the pressure to produce something commercially useful can become even greater.&lt;/p&gt;

&lt;p&gt;Why build a small experiment when you could launch an application?&lt;/p&gt;

&lt;p&gt;Why learn a framework when you could create a SaaS product?&lt;/p&gt;

&lt;p&gt;Why spend time exploring an idea when you could turn it into a business?&lt;/p&gt;

&lt;p&gt;I think this misses something important.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Just because technology makes an opportunity possible doesn't mean we have to pursue it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We should be able to experiment without having to justify every hour through a potential financial return.&lt;/p&gt;

&lt;p&gt;Otherwise, curiosity slowly turns into another performance target.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sometimes the Most Interesting Projects Are Completely Impractical
&lt;/h2&gt;

&lt;p&gt;Think about the projects developers enjoy sharing.&lt;/p&gt;

&lt;p&gt;Someone creates a programming language for fun.&lt;/p&gt;

&lt;p&gt;Someone builds a robot that performs a ridiculous task.&lt;/p&gt;

&lt;p&gt;Someone turns a terminal into a game.&lt;/p&gt;

&lt;p&gt;Someone recreates an old interface.&lt;/p&gt;

&lt;p&gt;Someone connects a sensor to a Raspberry Pi just to understand how it works.&lt;/p&gt;

&lt;p&gt;These projects may not solve enormous business problems.&lt;/p&gt;

&lt;p&gt;But they can be fascinating.&lt;/p&gt;

&lt;p&gt;They encourage experimentation.&lt;/p&gt;

&lt;p&gt;They teach unexpected lessons.&lt;/p&gt;

&lt;p&gt;And sometimes they inspire other developers to try something new.&lt;/p&gt;

&lt;p&gt;Not everything useful has to begin with a commercial purpose.&lt;/p&gt;

&lt;p&gt;In fact, some of the most interesting ideas emerge when people are free to experiment without knowing exactly where the results will lead.&lt;/p&gt;

&lt;p&gt;That's one reason I don't want us to lose the culture of building things simply because they seem interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  I Believe in Distribution. But Not Everything Needs Distribution.
&lt;/h2&gt;

&lt;p&gt;This is where my perspective as a founder becomes important.&lt;/p&gt;

&lt;p&gt;I've written before about &lt;a href="https://dev.to/jaideepparashar/how-developers-can-build-global-influence-without-working-at-big-tech-3ol3"&gt;how developers can build global influence without working at Big Tech&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I believe in sharing knowledge.&lt;/p&gt;

&lt;p&gt;I believe in building relationships.&lt;/p&gt;

&lt;p&gt;I believe developers should understand how to reach people with their work.&lt;/p&gt;

&lt;p&gt;And when you're building a company, distribution is absolutely essential.&lt;/p&gt;

&lt;p&gt;A product that nobody discovers will struggle, regardless of its technical quality.&lt;/p&gt;

&lt;p&gt;But here's an important distinction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A project you build for learning is not the same as a product you're building for customers.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first doesn't need a marketing strategy.&lt;/p&gt;

&lt;p&gt;The second probably does.&lt;/p&gt;

&lt;p&gt;The first can succeed even if only one person uses it.&lt;/p&gt;

&lt;p&gt;The second needs a sustainable reason to exist in the market.&lt;/p&gt;

&lt;p&gt;Both are legitimate.&lt;/p&gt;

&lt;p&gt;The mistake is pretending they're the same thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hidden Cost of Monetizing Every Idea
&lt;/h2&gt;

&lt;p&gt;Turning an experiment into a business changes your responsibilities.&lt;/p&gt;

&lt;p&gt;Suppose you build a small application over the weekend.&lt;/p&gt;

&lt;p&gt;You enjoy the process.&lt;/p&gt;

&lt;p&gt;You share it with a few friends.&lt;/p&gt;

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

&lt;p&gt;Now imagine deciding to commercialize it.&lt;/p&gt;

&lt;p&gt;Suddenly, you may need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;customer support and documentation&lt;/li&gt;
&lt;li&gt;billing and payment systems&lt;/li&gt;
&lt;li&gt;security and privacy considerations&lt;/li&gt;
&lt;li&gt;reliable hosting and monitoring&lt;/li&gt;
&lt;li&gt;maintenance and updates&lt;/li&gt;
&lt;li&gt;marketing and customer acquisition&lt;/li&gt;
&lt;li&gt;financial and operational planning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these responsibilities are inherently bad.&lt;/p&gt;

&lt;p&gt;They're part of building a real product.&lt;/p&gt;

&lt;p&gt;But they can fundamentally change your relationship with the project.&lt;/p&gt;

&lt;p&gt;Something that previously gave you creative freedom can become another obligation.&lt;/p&gt;

&lt;p&gt;And sometimes, the financial opportunity isn't large enough to justify everything that comes with it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A side project can be successful precisely because it remains a side project.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  We Shouldn't Confuse Learning With Wasted Time
&lt;/h2&gt;

&lt;p&gt;Imagine a developer spending two weeks creating a small game.&lt;/p&gt;

&lt;p&gt;They don't sell it.&lt;/p&gt;

&lt;p&gt;They don't launch a startup.&lt;/p&gt;

&lt;p&gt;They don't gain a large audience.&lt;/p&gt;

&lt;p&gt;But they learn about state management, event handling, rendering, and application architecture.&lt;/p&gt;

&lt;p&gt;Was that time wasted?&lt;/p&gt;

&lt;p&gt;I don't think so.&lt;/p&gt;

&lt;p&gt;The project might make them a better developer.&lt;/p&gt;

&lt;p&gt;It might introduce them to a new field.&lt;/p&gt;

&lt;p&gt;It might help them discover something they genuinely enjoy.&lt;/p&gt;

&lt;p&gt;And that learning could become valuable years later in a completely different context.&lt;/p&gt;

&lt;p&gt;Not every return on effort is immediate.&lt;/p&gt;

&lt;p&gt;Not every useful skill can be assigned a price.&lt;/p&gt;

&lt;p&gt;Sometimes the most valuable outcome is that you understand something today that you didn't understand yesterday.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There's Nothing Wrong With Wanting to Build a Business&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't want this article to sound anti-startup.&lt;/p&gt;

&lt;p&gt;Quite the opposite.&lt;/p&gt;

&lt;p&gt;Building a business is one of the most challenging and rewarding things someone can attempt.&lt;/p&gt;

&lt;p&gt;I know that entrepreneurship requires discipline, patience, judgment, and an enormous amount of work that happens outside the technical product.&lt;/p&gt;

&lt;p&gt;If your intention is to create a business, you should think about customers, distribution, pricing, competition, and financial sustainability.&lt;/p&gt;

&lt;p&gt;You should validate demand.&lt;/p&gt;

&lt;p&gt;You should understand the market.&lt;/p&gt;

&lt;p&gt;You should ask whether the problem is valuable enough for someone to pay to solve it.&lt;/p&gt;

&lt;p&gt;But you don't need to apply that process to every interesting idea.&lt;/p&gt;

&lt;p&gt;I wrote in &lt;a href="https://dev.to/jaideepparashar/i-think-developers-are-building-too-much-software-1l1i"&gt;I Think Developers Are Building Too Much Software&lt;/a&gt; about the importance of knowing what deserves to be built.&lt;/p&gt;

&lt;p&gt;There's another side to that argument.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sometimes something deserves to be built even when it has no commercial value.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because the purpose might be learning, creativity, or enjoyment.&lt;/p&gt;

&lt;p&gt;And those are perfectly valid reasons.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maybe We Need Two Different Definitions of Success
&lt;/h2&gt;

&lt;p&gt;For commercial products, success might mean:&lt;/p&gt;

&lt;p&gt;Are customers using it?&lt;/p&gt;

&lt;p&gt;Does it solve a valuable problem?&lt;/p&gt;

&lt;p&gt;Will people pay for it?&lt;/p&gt;

&lt;p&gt;Can the business sustain itself?&lt;/p&gt;

&lt;p&gt;For personal projects, the questions can be different.&lt;/p&gt;

&lt;p&gt;Did I learn something?&lt;/p&gt;

&lt;p&gt;Did I solve an interesting challenge?&lt;/p&gt;

&lt;p&gt;Did I enjoy building it?&lt;/p&gt;

&lt;p&gt;Would I like to explore this technology further?&lt;/p&gt;

&lt;p&gt;Did it make me a better thinker or developer?&lt;/p&gt;

&lt;p&gt;We need both kinds of work in the technology community.&lt;/p&gt;

&lt;p&gt;Commercial projects create economic opportunities.&lt;/p&gt;

&lt;p&gt;Personal experiments create space for curiosity and discovery.&lt;/p&gt;

&lt;p&gt;And occasionally, something built purely out of curiosity becomes a useful product.&lt;/p&gt;

&lt;p&gt;That's wonderful when it happens.&lt;/p&gt;

&lt;p&gt;But it doesn't need to be the expectation.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Advice to Developers: Keep Something Just for Yourself
&lt;/h2&gt;

&lt;p&gt;If you're a developer, I would encourage you to have at least one project that doesn't need to prove anything to anyone.&lt;/p&gt;

&lt;p&gt;No business model.&lt;/p&gt;

&lt;p&gt;No growth target.&lt;/p&gt;

&lt;p&gt;No investor pitch.&lt;/p&gt;

&lt;p&gt;No pressure to make it viral.&lt;/p&gt;

&lt;p&gt;Build something because you find it fascinating.&lt;/p&gt;

&lt;p&gt;Experiment with a language you've never used.&lt;/p&gt;

&lt;p&gt;Recreate something from your childhood.&lt;/p&gt;

&lt;p&gt;Build a useless little tool that makes you smile.&lt;/p&gt;

&lt;p&gt;Explore a difficult algorithm.&lt;/p&gt;

&lt;p&gt;Try combining two technologies that don't normally belong together.&lt;/p&gt;

&lt;p&gt;You might discover something useful.&lt;/p&gt;

&lt;p&gt;You might build something terrible.&lt;/p&gt;

&lt;p&gt;You might abandon the project halfway through.&lt;/p&gt;

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

&lt;p&gt;Not every experiment needs to become a success story.&lt;/p&gt;

&lt;p&gt;Sometimes the freedom to fail without financial consequences is exactly what makes experimentation worthwhile.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Best Part of Building Might Be the Building Itself
&lt;/h2&gt;

&lt;p&gt;I spend a lot of time thinking about technology, business, and the future of AI.&lt;/p&gt;

&lt;p&gt;I believe technology should solve meaningful problems.&lt;/p&gt;

&lt;p&gt;I believe founders should think seriously about distribution and customer value.&lt;/p&gt;

&lt;p&gt;And I believe developers should recognize the opportunities their skills create.&lt;/p&gt;

&lt;p&gt;But I also believe we need to preserve something simple.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The joy of creating things.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not because someone will pay us.&lt;/p&gt;

&lt;p&gt;Not because it will improve our personal brand.&lt;/p&gt;

&lt;p&gt;Not because an algorithm will reward us.&lt;/p&gt;

&lt;p&gt;But because solving a problem, understanding a system, or making an idea come alive can be satisfying in its own right.&lt;/p&gt;

&lt;p&gt;We don't have to turn every interest into income.&lt;/p&gt;

&lt;p&gt;We don't have to turn every experiment into a product.&lt;/p&gt;

&lt;p&gt;And we certainly don't have to turn every side project into a startup.&lt;/p&gt;

&lt;p&gt;Sometimes you can build something, learn something, smile at what you've created, and move on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That's not a missed business opportunity. That's a perfectly good reason to build.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>career</category>
      <category>discuss</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI Mistakes I Should Have Avoided as a Founder</title>
      <dc:creator>Jaideep Parashar</dc:creator>
      <pubDate>Fri, 23 Oct 2026 04:46:55 +0000</pubDate>
      <link>https://dev.to/jaideepparashar/ai-mistakes-i-should-have-avoided-as-a-founder-4bg9</link>
      <guid>https://dev.to/jaideepparashar/ai-mistakes-i-should-have-avoided-as-a-founder-4bg9</guid>
      <description>&lt;p&gt;When I started exploring AI seriously, I was fascinated by what it could do.&lt;/p&gt;

&lt;p&gt;Write content.&lt;/p&gt;

&lt;p&gt;Analyze information.&lt;/p&gt;

&lt;p&gt;Generate code.&lt;/p&gt;

&lt;p&gt;Build workflows.&lt;/p&gt;

&lt;p&gt;Research markets.&lt;/p&gt;

&lt;p&gt;Automate repetitive tasks.&lt;/p&gt;

&lt;p&gt;Solve problems that previously required hours of human effort.&lt;/p&gt;

&lt;p&gt;As a founder, it was difficult not to get excited.&lt;/p&gt;

&lt;p&gt;After all, who wouldn't want to build more, move faster, and accomplish things with fewer resources?&lt;/p&gt;

&lt;p&gt;But the longer I work with AI, the more I realize something uncomfortable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI makes it incredibly easy to become productive at the wrong things.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can spend an entire day using AI and feel like you've accomplished a week's worth of work.&lt;/p&gt;

&lt;p&gt;Ten ideas generated.&lt;/p&gt;

&lt;p&gt;Five documents prepared.&lt;/p&gt;

&lt;p&gt;Three workflows designed.&lt;/p&gt;

&lt;p&gt;Two prototypes created.&lt;/p&gt;

&lt;p&gt;But when the excitement settles, one question remains:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What actually moved the business forward?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the question I wish I had asked more often.&lt;/p&gt;

&lt;p&gt;Here are seven AI mistakes I believe founders, including me, should learn to avoid.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Confusing AI Productivity With Business Progress
&lt;/h2&gt;

&lt;p&gt;This is probably the biggest trap.&lt;/p&gt;

&lt;p&gt;AI makes creating things feel effortless.&lt;/p&gt;

&lt;p&gt;You can generate a business plan in minutes.&lt;/p&gt;

&lt;p&gt;Prepare a market analysis.&lt;/p&gt;

&lt;p&gt;Write dozens of social media posts.&lt;/p&gt;

&lt;p&gt;Design a product roadmap.&lt;/p&gt;

&lt;p&gt;Create an impressive presentation.&lt;/p&gt;

&lt;p&gt;And at the end of the day, you feel incredibly productive.&lt;/p&gt;

&lt;p&gt;But there's a problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Being busy with AI is not the same as building a successful business.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Consider two founders.&lt;/p&gt;

&lt;p&gt;Founder A spends the day generating twenty marketing ideas, ten articles, and a detailed customer acquisition strategy.&lt;/p&gt;

&lt;p&gt;Founder B spends the day speaking with three potential customers, understanding their problems, and securing one meaningful business conversation.&lt;/p&gt;

&lt;p&gt;Who made more progress?&lt;/p&gt;

&lt;p&gt;It depends on the business, but I would usually place greater value on what Founder B learned.&lt;/p&gt;

&lt;p&gt;Because businesses don't grow simply because we produce more information.&lt;/p&gt;

&lt;p&gt;They grow when we create value that someone actually wants.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My lesson:&lt;/strong&gt; Before using AI, ask what business outcome the work is supposed to improve.&lt;/p&gt;

&lt;p&gt;Not what AI can produce.&lt;/p&gt;

&lt;p&gt;What the business actually needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Starting With the AI Tool Instead of the Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This mistake has become surprisingly common.&lt;/p&gt;

&lt;p&gt;A new AI tool launches.&lt;/p&gt;

&lt;p&gt;Everyone starts talking about it.&lt;/p&gt;

&lt;p&gt;You see impressive demos.&lt;/p&gt;

&lt;p&gt;Someone claims it can replace an entire department.&lt;/p&gt;

&lt;p&gt;And suddenly, you start looking for ways to use it.&lt;/p&gt;

&lt;p&gt;But think about what just happened.&lt;/p&gt;

&lt;p&gt;You started with a solution.&lt;/p&gt;

&lt;p&gt;Then went searching for a problem.&lt;/p&gt;

&lt;p&gt;As a founder, I think that's the wrong order.&lt;/p&gt;

&lt;p&gt;Imagine an organization struggling with slow customer onboarding.&lt;/p&gt;

&lt;p&gt;One approach is to immediately introduce an AI agent.&lt;/p&gt;

&lt;p&gt;Another is to understand the onboarding process.&lt;/p&gt;

&lt;p&gt;Where are customers getting stuck?&lt;/p&gt;

&lt;p&gt;Which approvals take too long?&lt;/p&gt;

&lt;p&gt;Where is information being entered repeatedly?&lt;/p&gt;

&lt;p&gt;Which steps genuinely require human judgment?&lt;/p&gt;

&lt;p&gt;Perhaps AI can help.&lt;/p&gt;

&lt;p&gt;But perhaps the real problem is an unnecessarily complicated workflow.&lt;/p&gt;

&lt;p&gt;A better process may deliver more value than a sophisticated AI system.&lt;/p&gt;

&lt;p&gt;This is also why I wrote Stop Building AI Agents. Start Building AI Systems.&lt;/p&gt;

&lt;p&gt;The lesson goes beyond agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technology should serve the problem. The problem should not be redesigned to justify the technology.&lt;/strong&gt;&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%2Fs991vb4swrzgux761zqd.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%2Fs991vb4swrzgux761zqd.png" alt="AI mistakes founder should avoid" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Trusting AI's Confidence More Than the Evidence
&lt;/h2&gt;

&lt;p&gt;One thing AI does remarkably well is sound convincing.&lt;/p&gt;

&lt;p&gt;Ask for a market assessment.&lt;/p&gt;

&lt;p&gt;You may receive a detailed analysis.&lt;/p&gt;

&lt;p&gt;Ask for a competitive strategy.&lt;/p&gt;

&lt;p&gt;You'll get structured recommendations.&lt;/p&gt;

&lt;p&gt;Ask whether a business idea is viable.&lt;/p&gt;

&lt;p&gt;You might receive an encouraging explanation of its potential.&lt;/p&gt;

&lt;p&gt;The problem is that an answer can be beautifully written and still be wrong.&lt;/p&gt;

&lt;p&gt;This becomes dangerous when you're making founder-level decisions.&lt;/p&gt;

&lt;p&gt;Should we enter a new market?&lt;/p&gt;

&lt;p&gt;Should we change our pricing?&lt;/p&gt;

&lt;p&gt;Should we invest in a particular technology?&lt;/p&gt;

&lt;p&gt;Should we hire for a new role?&lt;/p&gt;

&lt;p&gt;Should we build this product?&lt;/p&gt;

&lt;p&gt;AI can help us evaluate possibilities.&lt;/p&gt;

&lt;p&gt;But it doesn't automatically know our actual customers, financial limitations, internal capabilities, or market relationships.&lt;/p&gt;

&lt;p&gt;A confident recommendation is not the same as reliable evidence.&lt;/p&gt;

&lt;p&gt;I think founders should treat AI-generated business advice the same way they would treat advice from any consultant.&lt;/p&gt;

&lt;p&gt;Ask questions.&lt;/p&gt;

&lt;p&gt;Challenge assumptions.&lt;/p&gt;

&lt;p&gt;Verify important information.&lt;/p&gt;

&lt;p&gt;Understand the trade-offs.&lt;/p&gt;

&lt;p&gt;And take responsibility for the final decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My lesson:&lt;/strong&gt; Never confuse an articulate answer with a validated business decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Using AI to Create More Work Instead of Eliminating Work
&lt;/h2&gt;

&lt;p&gt;This one is particularly interesting.&lt;/p&gt;

&lt;p&gt;AI promises to reduce work.&lt;/p&gt;

&lt;p&gt;But sometimes it does the opposite.&lt;/p&gt;

&lt;p&gt;Let me explain.&lt;/p&gt;

&lt;p&gt;Suppose you're managing a small company.&lt;/p&gt;

&lt;p&gt;You introduce several AI tools.&lt;/p&gt;

&lt;p&gt;One for research.&lt;/p&gt;

&lt;p&gt;One for content.&lt;/p&gt;

&lt;p&gt;One for project management.&lt;/p&gt;

&lt;p&gt;One for automation.&lt;/p&gt;

&lt;p&gt;One for presentations.&lt;/p&gt;

&lt;p&gt;One for customer communication.&lt;/p&gt;

&lt;p&gt;Initially, everything feels faster.&lt;/p&gt;

&lt;p&gt;But gradually, you begin managing the tools themselves.&lt;/p&gt;

&lt;p&gt;Different subscriptions.&lt;/p&gt;

&lt;p&gt;Different interfaces.&lt;/p&gt;

&lt;p&gt;Different workflows.&lt;/p&gt;

&lt;p&gt;Different files.&lt;/p&gt;

&lt;p&gt;Different outputs that need reviewing.&lt;/p&gt;

&lt;p&gt;You saved time performing individual tasks.&lt;/p&gt;

&lt;p&gt;But you created another layer of work coordinating the tools.&lt;/p&gt;

&lt;p&gt;This is a mistake founders should watch carefully.&lt;/p&gt;

&lt;p&gt;Every additional system introduces some amount of complexity.&lt;/p&gt;

&lt;p&gt;And complexity has a cost.&lt;/p&gt;

&lt;p&gt;Sometimes the best way to improve productivity isn't adding another AI tool.&lt;/p&gt;

&lt;p&gt;It's removing an unnecessary task.&lt;/p&gt;

&lt;p&gt;Before automating a process, I now prefer asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Does this process need to exist at all?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because eliminating unnecessary work is often more valuable than automating it.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Believing Faster Execution Automatically Creates Competitive Advantage
&lt;/h2&gt;

&lt;p&gt;AI has made execution dramatically more accessible.&lt;/p&gt;

&lt;p&gt;That's exciting, especially for founders operating with limited resources.&lt;/p&gt;

&lt;p&gt;You no longer need a large team to prototype every idea.&lt;/p&gt;

&lt;p&gt;You can research faster.&lt;/p&gt;

&lt;p&gt;Build faster.&lt;/p&gt;

&lt;p&gt;Write faster.&lt;/p&gt;

&lt;p&gt;Experiment faster.&lt;/p&gt;

&lt;p&gt;But there's another side to this development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If everyone can build faster, speed alone becomes a weaker advantage.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine two startups building similar products.&lt;/p&gt;

&lt;p&gt;Both use AI coding assistants.&lt;/p&gt;

&lt;p&gt;Both can create working prototypes quickly.&lt;/p&gt;

&lt;p&gt;Both have access to similar infrastructure and models.&lt;/p&gt;

&lt;p&gt;Where does the differentiation come from?&lt;/p&gt;

&lt;p&gt;It may come from understanding a customer problem more deeply.&lt;/p&gt;

&lt;p&gt;Having better distribution.&lt;/p&gt;

&lt;p&gt;Building trust.&lt;/p&gt;

&lt;p&gt;Creating a superior experience.&lt;/p&gt;

&lt;p&gt;Developing strong industry relationships.&lt;/p&gt;

&lt;p&gt;Or making better product decisions.&lt;/p&gt;

&lt;p&gt;AI can reduce the cost of execution.&lt;/p&gt;

&lt;p&gt;It cannot automatically create customer trust or a meaningful market position.&lt;/p&gt;

&lt;p&gt;This is why I believe founders need to think beyond productivity.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;"How much faster can we build?"&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Why would someone choose what we're building?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question becomes even more important when competitors have access to the same powerful tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Forgetting That Human Relationships Still Build Businesses
&lt;/h2&gt;

&lt;p&gt;As AI capabilities improve, it becomes tempting to automate every interaction.&lt;/p&gt;

&lt;p&gt;Customer emails.&lt;/p&gt;

&lt;p&gt;Sales outreach.&lt;/p&gt;

&lt;p&gt;Follow-ups.&lt;/p&gt;

&lt;p&gt;Social media conversations.&lt;/p&gt;

&lt;p&gt;Networking messages.&lt;/p&gt;

&lt;p&gt;Even parts of relationship management.&lt;/p&gt;

&lt;p&gt;Some automation is genuinely helpful.&lt;/p&gt;

&lt;p&gt;But there's something I don't want founders to overlook.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Businesses are still built on trust between people.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An AI-generated message can be grammatically perfect.&lt;/p&gt;

&lt;p&gt;It can sound professional.&lt;/p&gt;

&lt;p&gt;It can even be personalized.&lt;/p&gt;

&lt;p&gt;But that doesn't mean it establishes a meaningful relationship.&lt;/p&gt;

&lt;p&gt;Think about receiving a message from someone who clearly understands your work, references an idea you've shared, and asks a thoughtful question.&lt;/p&gt;

&lt;p&gt;Now compare it with a polished message that could have been sent to five hundred people.&lt;/p&gt;

&lt;p&gt;Both might be professionally written.&lt;/p&gt;

&lt;p&gt;Only one makes you feel that someone is genuinely interested.&lt;/p&gt;

&lt;p&gt;As a founder, I believe relationships are one of the few advantages that cannot be replicated simply by subscribing to another AI service.&lt;/p&gt;

&lt;p&gt;AI can help us prepare.&lt;/p&gt;

&lt;p&gt;It can help us research.&lt;/p&gt;

&lt;p&gt;It can help us communicate more clearly.&lt;/p&gt;

&lt;p&gt;But the intention behind the relationship must remain human.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My lesson:&lt;/strong&gt; Use AI to support relationships, not to replace the effort required to build them.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Asking AI for Too Many Answers and Not Spending Enough Time Thinking
&lt;/h2&gt;

&lt;p&gt;This may be the most personal lesson of all.&lt;/p&gt;

&lt;p&gt;AI makes getting answers incredibly easy.&lt;/p&gt;

&lt;p&gt;Have an idea?&lt;/p&gt;

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

&lt;p&gt;Facing a difficult decision?&lt;/p&gt;

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

&lt;p&gt;Need a strategy?&lt;/p&gt;

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

&lt;p&gt;Don't know what to do next?&lt;/p&gt;

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

&lt;p&gt;There's nothing inherently wrong with any of this.&lt;/p&gt;

&lt;p&gt;The danger appears when we stop developing our own point of view.&lt;/p&gt;

&lt;p&gt;As a founder, I don't think our most important job is collecting answers.&lt;/p&gt;

&lt;p&gt;It's making decisions under uncertainty.&lt;/p&gt;

&lt;p&gt;And that requires independent judgment.&lt;/p&gt;

&lt;p&gt;AI can provide five options.&lt;/p&gt;

&lt;p&gt;It can compare advantages and disadvantages.&lt;/p&gt;

&lt;p&gt;It can identify risks.&lt;/p&gt;

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

&lt;p&gt;But eventually, someone has to decide.&lt;/p&gt;

&lt;p&gt;Sometimes there won't be enough information.&lt;/p&gt;

&lt;p&gt;Sometimes the market will behave unpredictably.&lt;/p&gt;

&lt;p&gt;Sometimes an apparently logical decision will fail.&lt;/p&gt;

&lt;p&gt;And sometimes the unconventional decision will turn out to be the right one.&lt;/p&gt;

&lt;p&gt;That's the reality of entrepreneurship.&lt;/p&gt;

&lt;p&gt;I don't want AI to eliminate that responsibility.&lt;/p&gt;

&lt;p&gt;I want it to help me become better at handling it.&lt;/p&gt;

&lt;p&gt;One useful way to do this is to form an opinion before consulting AI.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

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

&lt;p&gt;Try:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Here is my current reasoning. What assumptions am I missing? What evidence would prove me wrong?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's a small change.&lt;/p&gt;

&lt;p&gt;But it moves AI from being an answer generator to being a tool for examining decisions.&lt;/p&gt;

&lt;p&gt;And I think that's a much healthier relationship.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Would Do Differently
&lt;/h2&gt;

&lt;p&gt;If I were establishing an AI-driven workflow as a founder today, I would begin with a much simpler approach.&lt;/p&gt;

&lt;p&gt;First, identify the three most important problems affecting the business.&lt;/p&gt;

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

&lt;p&gt;Three.&lt;/p&gt;

&lt;p&gt;Then examine which of those problems genuinely benefit from AI.&lt;/p&gt;

&lt;p&gt;For each one, I would define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The outcome:&lt;/strong&gt; What should improve?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The baseline:&lt;/strong&gt; How well are we doing today?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The approach:&lt;/strong&gt; What is the simplest useful solution?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The human role:&lt;/strong&gt; Who remains responsible for the decision?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The measurement:&lt;/strong&gt; How will we know whether it helped?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only then would I begin selecting tools and building workflows.&lt;/p&gt;

&lt;p&gt;For example, if the problem is slow customer research, the objective shouldn't be generating fifty research reports every week.&lt;/p&gt;

&lt;p&gt;It should be improving the quality and speed of decisions made using that research.&lt;/p&gt;

&lt;p&gt;If the problem is customer support, the goal shouldn't be increasing the number of AI-generated responses.&lt;/p&gt;

&lt;p&gt;It should be helping customers resolve issues accurately and efficiently.&lt;/p&gt;

&lt;p&gt;And if the problem is content marketing, the objective shouldn't be publishing as many articles as possible.&lt;/p&gt;

&lt;p&gt;It should be reaching the right audience, earning trust, and generating meaningful conversations.&lt;/p&gt;

&lt;p&gt;These distinctions may sound obvious.&lt;/p&gt;

&lt;p&gt;But AI's ability to produce so much so quickly makes them surprisingly easy to forget.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Founder Still Has to Be the Founder
&lt;/h2&gt;

&lt;p&gt;Here's something I believe strongly.&lt;/p&gt;

&lt;p&gt;AI can be an extraordinary assistant.&lt;/p&gt;

&lt;p&gt;It can help us think.&lt;/p&gt;

&lt;p&gt;Research.&lt;/p&gt;

&lt;p&gt;Create.&lt;/p&gt;

&lt;p&gt;Analyze.&lt;/p&gt;

&lt;p&gt;Build.&lt;/p&gt;

&lt;p&gt;Experiment.&lt;/p&gt;

&lt;p&gt;And sometimes accomplish things that would previously have been beyond our resources.&lt;/p&gt;

&lt;p&gt;But it cannot take ownership of our company.&lt;/p&gt;

&lt;p&gt;It cannot fully understand the weight of every decision.&lt;/p&gt;

&lt;p&gt;It cannot personally build trust with our customers.&lt;/p&gt;

&lt;p&gt;It cannot assume responsibility when a strategic bet fails.&lt;/p&gt;

&lt;p&gt;And it cannot decide what kind of company we ultimately want to create.&lt;/p&gt;

&lt;p&gt;Those responsibilities remain with the founder.&lt;/p&gt;

&lt;p&gt;The more powerful AI becomes, the more important it is to remember that distinction.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Biggest Mistake Would Be Learning Nothing
&lt;/h2&gt;

&lt;p&gt;I don't regret exploring AI.&lt;/p&gt;

&lt;p&gt;I don't regret experimenting with new tools.&lt;/p&gt;

&lt;p&gt;And I certainly don't believe founders should avoid taking risks with emerging technology.&lt;/p&gt;

&lt;p&gt;Experimentation is how we discover opportunities.&lt;/p&gt;

&lt;p&gt;But experimentation should teach us something.&lt;/p&gt;

&lt;p&gt;If a tool doesn't improve the business, we should be willing to stop using it.&lt;/p&gt;

&lt;p&gt;If a workflow creates unnecessary complexity, we should simplify it.&lt;/p&gt;

&lt;p&gt;If an AI-generated recommendation doesn't survive scrutiny, we should reject it.&lt;/p&gt;

&lt;p&gt;And if an entire project begins drifting away from the actual customer problem, we should have the courage to reconsider it.&lt;/p&gt;

&lt;p&gt;That's not being anti-AI.&lt;/p&gt;

&lt;p&gt;That's being responsible for the business.&lt;/p&gt;

&lt;p&gt;The more I think about entrepreneurship in the AI era, the more I come back to one conclusion:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI can help founders do more. But knowing what deserves to be done is still the founder's job.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And perhaps that's the biggest lesson of all.&lt;/p&gt;

&lt;p&gt;The goal isn't to build an AI-powered company simply because AI is available.&lt;/p&gt;

&lt;p&gt;The goal is to build a valuable company and use AI wherever it genuinely helps.&lt;/p&gt;

&lt;p&gt;Because at the end of the day, customers don't care how many AI tools we use.&lt;/p&gt;

&lt;p&gt;They care whether we solve their problems.&lt;/p&gt;

&lt;p&gt;And no amount of automation can replace that responsibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A question for fellow founders and builders:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What's one mistake you've made while using AI to build a product, run a business, or manage your work?&lt;/p&gt;

&lt;p&gt;Was it trusting the output too much, adopting too many tools, building something nobody needed—or something completely different?&lt;/p&gt;

&lt;p&gt;I'd love to learn from your experience.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <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>
  </channel>
</rss>
