<?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: restu ananda saputra</title>
    <description>The latest articles on DEV Community by restu ananda saputra (@restuananda).</description>
    <link>https://dev.to/restuananda</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%2F3968723%2Fc3d0e2a4-3ffb-4162-a1fb-b79a61dd7aab.jpeg</url>
      <title>DEV Community: restu ananda saputra</title>
      <link>https://dev.to/restuananda</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/restuananda"/>
    <language>en</language>
    <item>
      <title>API Gateways Are More Than Just a Reverse Proxy</title>
      <dc:creator>restu ananda saputra</dc:creator>
      <pubDate>Fri, 31 Jul 2026 16:38:18 +0000</pubDate>
      <link>https://dev.to/restuananda/api-gateways-are-more-than-just-a-reverse-proxy-1j4m</link>
      <guid>https://dev.to/restuananda/api-gateways-are-more-than-just-a-reverse-proxy-1j4m</guid>
      <description>&lt;p&gt;When developers first learn about microservices, the architecture often looks straightforward. Each service exposes its own API, and clients communicate directly with whichever service they need. It works well at a small scale, but as the number of services grows, that simplicity quickly disappears.&lt;/p&gt;

&lt;p&gt;This is where an API Gateway becomes one of the most valuable pieces of the architecture. Instead of exposing dozens of backend services to the outside world, an API Gateway provides a single entry point that receives every request and forwards it to the appropriate service. To the client, there's only one API. Behind the scenes, the gateway handles the complexity.&lt;/p&gt;

&lt;p&gt;What makes an API Gateway powerful isn't just request routing. It centralizes many cross-cutting concerns that every distributed system eventually needs. Authentication and authorization can be enforced consistently. Rate limiting helps prevent abuse and protects backend services from traffic spikes. Caching reduces unnecessary requests and improves response times. Logging, monitoring, and request transformation can all be managed in one place instead of being duplicated across every microservice.&lt;/p&gt;

&lt;p&gt;This separation allows development teams to focus each service on solving business problems rather than repeatedly implementing the same infrastructure concerns. It also makes the overall system easier to maintain because changes to security policies or traffic management can often be made at the gateway without modifying every application.&lt;/p&gt;

&lt;p&gt;There isn't a single solution that fits every project. Self-hosted options like &lt;strong&gt;YARP&lt;/strong&gt;, &lt;strong&gt;Ocelot&lt;/strong&gt;, &lt;strong&gt;Traefik&lt;/strong&gt;, and &lt;strong&gt;Envoy&lt;/strong&gt; are popular choices depending on your technology stack and operational requirements. If you're already building in the cloud, managed services such as &lt;strong&gt;Azure API Management&lt;/strong&gt; or &lt;strong&gt;Amazon API Gateway&lt;/strong&gt; can significantly reduce the operational overhead of running gateway infrastructure yourself.&lt;/p&gt;

&lt;p&gt;I've found that many teams initially think of an API Gateway as simply another reverse proxy. In reality, it's often the front door of the entire platform. The decisions made there—around security, observability, performance, and traffic management—can have a much bigger impact on the reliability of a distributed system than the routing itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're building microservices today, would you choose a self-hosted API Gateway like Envoy or Traefik, or would you rather rely on a managed cloud solution?&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;🚀 Need help building scalable web applications, APIs, or distributed systems?&lt;/p&gt;

&lt;p&gt;Contra:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://contra.com/restu_ananda_siedrfwx?referralExperimentNid=DEFAULT_REFERRAL_PROGRAM&amp;amp;amp%3BreferrerUsername=restu_ananda_siedrfwx" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcontra.com%2Fapi%2F%40internal%2Fopen-graph-card%2Fuser%2Frestu_ananda_siedrfwx" height="630" class="m-0" width="1200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://contra.com/restu_ananda_siedrfwx?referralExperimentNid=DEFAULT_REFERRAL_PROGRAM&amp;amp;amp%3BreferrerUsername=restu_ananda_siedrfwx" rel="noopener noreferrer" class="c-link"&gt;
            Restu ananda saputra - AI Agent Engineer | Contra
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Web Developer creating complex task. View Restu ananda saputra's Profile on Contra. The Independent-first, commission-free freelance marketplace shaping the future of work.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAX%2BSURBVHgBtVpPaJxFFJ%2F5UpBS3OwhxRyy63oUhf6hhWIKpiiiuRhUMF5UCiYnbYRNPZS2MXjRrLiJFxOxihdTLZqLiQakLbZRUEqE4nnJVgzoYTekFoXkOW%2B%2Bf%2FN982a%2B%2BXbbH3zZ2ffNvD%2Fz3rx5M1nOUujrrwxx2H2WMT4kvhZBPMx%2FrODiAdNLCDrkf4lvGqJHgzNY7%2BHe7OZmo5F676NSqRS37%2ByeF6QJlgcm%2BQE9NsyuqCuEIfV9e723G41GC797%2BAeVv30HLudW3ueoYenrRVYqD8g2ql0qDQjaReYMsL3iE9tCV9QZv3sof%2Fuf3fNizEF2F1AWyg4%2BdkyjI61QKGSMDjTPdtTB2zJahAH9%2FZUK4zjzYGdqbceYrE4YlRgfO0mO4UQrC%2BiJvv6Hhrz%2FgE3YB3OHto%2FE7EP0J%2BqKBvQSXrBEjBUcdkY8sQgOhMK6XWKjL74g410R4fMMNETlx147yXLBbt3jQn%2Bo%2BFI4NWnOwNmnQiQddOPjtBeM4ImPNIqYhSrUANpw83RURezrixQ01qj85GT%2BZAckjRe9fPHHSc4YOvi4YlyEEZWpDBJ0gTGkB7pCWeT701XTjJrV%2BXC2RoQS5FzQwDz1SyeYq9fkws23ZkCOmZurqSSWEb8BkpnQy87B5v0BZ35w8JhVDre8HH76KXrfyDEbDmuA5na6%2BmYsPISaxlwcCkxOQrXquKgJnk5rIG0CCp2khHK9N9iUCLq%2BZeJH8k9iD8uJd6bPGUsCO%2BzVaJgIZmr1iGYt0QOeRg%2FwRDd%2Fo8Iq06Q8EC2SoyW%2B0QjMTuVSXMkaXRgseqMB6rhnxGK7%2FMOyMXf7rO4OcD%2FBiYpkaXYnCdY1gDPx%2BWcL8ik4b%2F%2Fdm1IKvG3yRizBEEJyuxfuxFnH2bcCMgk5kBwrvfHNYrzLE9tEwoBQ8Ru%2F%2FijjsXC%2FobYhMgmkCUzvkw29Y2lgQHhiht345Zo0pJyqdlnfAw8CPteur0HX2I2bh44OCr5l2C94Y5vqY2VgIX2x%2BBX4epeBY0NamrCsezSbt6J2b2%2BBPfrIw8zqCi3LgjyhmEZcX%2FtZfkYGdILsPN0h7FuG0gfUWqgzOVRm6BouZVmw60c7sS2EXCYkDTWEELY9pBOBYQix%2FdEi%2FgmcV%2BmufZEhDh0ZhDBBYJvk4yIrhVa7Dd%2BufB%2FxjtLoyHOj7PDR42zx4iW2kZq9GEQ5wKnpo4dZCJmRt7W1Jeukw0eOs1deHYsG7YnimPtuf%2F1UVYbTSyLnTrqWuQmf51VOuYNMwCe0heILCxfYR%2BJBI9KyPKVvBDTkPbQ28Eg2XFaI6ZxgHjsvlMYZR1185fX%2B1iNlc8P3CD5hWGVXnSZkV6MhUBaG9Nlz04riKQTiPU2A%2BjYgoRdGnh9lN2%2F%2BrleF3YC4qVz5bpWdeGJYZhmXo7FnfasAvXHiyWFWUw4c2VplIJUMMFReFgtUn3XzuTz3tcq7QsjMTN1RK3djUPmZ2gcOPJN0gwFgaAfC3q8njn5muGUkX%2Fk6y3UzEqRP5xBKD0ahmN7S9Eyot72gKp85iCDx%2FCGk8jsjskS0pSt0oitJXfzykqZ83tTguQozAVNs25TqLNgI9po08qXpVAhZb6QN%2FDA7vSGMMIuggWPCgo%2BTHdWjntkYLKdbzApOfSReL6%2BssmWRv3XQgnFfWVNDj2RsouvXKi2nccnhGs6cnSZCSeeyccsPHau3tdFE9eiXTw28G20lBtsjxog%2FRDhoWYmQj32azSaj1c64lkwBuDSAX6UGG%2BQbOSNp%2FuML9IIO%2BuPCnZdG5pBlAQf4zROLYMnOCJwKSCS121j6fsJMQAN1mOc5y5ge3lP3%2FtpsXBFemE2PAmc2Sn9AJT81DltZWXXjE7SI6yflO8jfTcg0uvMvmxIf66xjxNUrekFmmNTEYpZqkic97rT%2FpIxZ37fXm4r%2FNSz%2BFnsrxZ772JSw7BQz6cjNp%2B17dsWiyYFZVD78sQdPC8afHuyI%2F96LFX5AdK4AsEr8VjUgaYzKh24TxpvnI0RLKNgC4C3R7ao4wS%2F9%2FWfjitrhf79tf6kZrZXXAAAAAElFTkSuQmCC" width="48" height="48"&gt;
          contra.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Fastwork: &lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://fastwork.id/user/restuanand?byob=7pFhYwWqZd&amp;amp;source=byob" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffw-fileupload-id.s3.ap-southeast-1.amazonaws.com%2Fusers%2F451396b9-a72d-4774-a911-22242956831d%2Fprofile%2F417a2374-1bc9-445e-90c4-e4230542855c.png" height="250" class="m-0" width="250"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://fastwork.id/user/restuanand?byob=7pFhYwWqZd&amp;amp;source=byob" rel="noopener noreferrer" class="c-link"&gt;
            Restu ananda saputra (@restuanand) | Fastwork Indonesia
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Restu ananda saputra | Rating pengguna 0,0 bintang, dipekerjakan 0 kali. Layanan berkualitas dari Restu ananda saputra, freelancer profesional di Fastwork Indonesia — pekerjakan dengan penawaran terbaik!
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffastwork.id%2Fstatic-v4%2Ffavicons%2Ffavicon.ico" width="64" height="64"&gt;
          fastwork.id
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Upwork: &lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://www.upwork.com/services/product/development-it-custom-business-website-development-206793209056894850" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;upwork.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h1&gt;
  
  
  API #Microservices #SoftwareArchitecture #SystemDesign #BackendDevelopment #CloudComputing #DevOps #YARP #Envoy #Traefik
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>The Biggest Payment Mistake Isn't Choosing the Wrong Gateway. It's Designing Your System Around One.</title>
      <dc:creator>restu ananda saputra</dc:creator>
      <pubDate>Sun, 26 Jul 2026 11:28:24 +0000</pubDate>
      <link>https://dev.to/restuananda/the-biggest-payment-mistake-isnt-choosing-the-wrong-gateway-its-designing-your-system-around-one-6fg</link>
      <guid>https://dev.to/restuananda/the-biggest-payment-mistake-isnt-choosing-the-wrong-gateway-its-designing-your-system-around-one-6fg</guid>
      <description>&lt;p&gt;When a team starts building a product that needs online payments, one discussion almost always comes up before any architecture diagrams are drawn or code is written.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which payment gateway should we use?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Depending on where you're building, the shortlist usually looks familiar. Stripe, Xendit, Midtrans, DOKU, Adyen, PayPal, Braintree, or perhaps a regional provider that dominates the local market. The comparison spreadsheet quickly fills with transaction fees, supported payment methods, settlement times, dashboard features, API documentation, and reliability metrics.&lt;/p&gt;

&lt;p&gt;At first glance, it feels like one of the most important architectural decisions you'll make.&lt;/p&gt;

&lt;p&gt;But after working on systems that process payments, I've come to think the question itself is slightly wrong.&lt;/p&gt;

&lt;p&gt;The real challenge isn't choosing the best payment gateway.&lt;/p&gt;

&lt;p&gt;It's making sure your application doesn't become dependent on whichever provider you happen to choose first.&lt;/p&gt;




&lt;h2&gt;
  
  
  There Is No Perfect Payment Gateway
&lt;/h2&gt;

&lt;p&gt;Every payment provider has strengths, and every provider has limitations.&lt;/p&gt;

&lt;p&gt;Some offer excellent support for international credit cards but have limited local payment methods. Others dominate domestic bank transfers yet provide weaker cross-border capabilities. One platform might have outstanding API documentation, while another offers lower transaction fees or faster settlement periods.&lt;/p&gt;

&lt;p&gt;Even the largest providers in the industry experience occasional outages, scheduled maintenance, degraded performance, or temporary service interruptions.&lt;/p&gt;

&lt;p&gt;That's simply the reality of distributed systems.&lt;/p&gt;

&lt;p&gt;No matter how much research you do before launch, there will eventually be a situation where another gateway becomes a better fit for part of your business.&lt;/p&gt;

&lt;p&gt;The problem begins when your software isn't prepared for that change.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Hidden Cost of Tight Coupling
&lt;/h2&gt;

&lt;p&gt;Imagine your application is integrated directly with a single payment gateway.&lt;/p&gt;

&lt;p&gt;Your checkout flow calls the provider's SDK.&lt;/p&gt;

&lt;p&gt;Your order service stores the provider's transaction IDs.&lt;/p&gt;

&lt;p&gt;Your webhook handler understands only one event format.&lt;/p&gt;

&lt;p&gt;Your refund logic depends entirely on one API.&lt;/p&gt;

&lt;p&gt;At first, everything feels simple.&lt;/p&gt;

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

&lt;p&gt;Perhaps your biggest marketing campaign begins, and the provider experiences an unexpected outage. Customers can't complete purchases, shopping carts are abandoned, and revenue stops flowing.&lt;/p&gt;

&lt;p&gt;Or maybe your company expands into another country where your existing gateway doesn't support the payment methods customers actually use.&lt;/p&gt;

&lt;p&gt;Now what seemed like a straightforward integration suddenly becomes a major engineering project.&lt;/p&gt;

&lt;p&gt;Instead of adding another payment provider, you're forced to untangle payment logic that's spread across controllers, services, databases, webhook handlers, notification systems, and reporting pipelines.&lt;/p&gt;

&lt;p&gt;Changing providers becomes less like swapping a component and more like performing open-heart surgery on a production system.&lt;/p&gt;




&lt;h2&gt;
  
  
  Thinking in Terms of Architecture, Not Vendors
&lt;/h2&gt;

&lt;p&gt;One lesson I've learned is that mature systems rarely allow business logic to communicate directly with external providers.&lt;/p&gt;

&lt;p&gt;Instead, they introduce an abstraction layer.&lt;/p&gt;

&lt;p&gt;Rather than asking Stripe to create a payment, or calling Midtrans directly from the checkout service, the application communicates with its own internal payment interface.&lt;/p&gt;

&lt;p&gt;Conceptually, the interaction becomes much simpler.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
      │
      ▼
Payment Service
      │
      ▼
Payment Abstraction Layer
      │
 ┌────┴─────────────┐
 ▼                  ▼
Stripe         Xendit
 ▼                  ▼
Midtrans        Adyen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;From the application's perspective, the request never changes.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create Payment

Amount: $250
Currency: USD
Payment Method: Credit Card
Customer: #12458
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;How that payment is ultimately processed becomes an implementation detail hidden behind the abstraction.&lt;/p&gt;


&lt;h2&gt;
  
  
  Routing Payments Intelligently
&lt;/h2&gt;

&lt;p&gt;Once an abstraction layer exists, routing logic becomes incredibly flexible.&lt;/p&gt;

&lt;p&gt;Instead of hardcoding one provider, the system can decide dynamically.&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 plaintext"&gt;&lt;code&gt;IF payment_method == Credit Card
    → Stripe

ELSE IF payment_method == Virtual Account
    → Xendit

ELSE IF country == Indonesia
    → Midtrans

ELSE
    → Adyen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That routing logic can become even more sophisticated.&lt;/p&gt;

&lt;p&gt;You might choose providers based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer location&lt;/li&gt;
&lt;li&gt;Currency&lt;/li&gt;
&lt;li&gt;Transaction value&lt;/li&gt;
&lt;li&gt;Provider availability&lt;/li&gt;
&lt;li&gt;Processing fees&lt;/li&gt;
&lt;li&gt;Historical success rates&lt;/li&gt;
&lt;li&gt;Preferred payment method&lt;/li&gt;
&lt;li&gt;Regulatory requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The business logic never needs to know which provider ultimately handles the payment.&lt;/p&gt;

&lt;p&gt;It simply asks for a successful transaction.&lt;/p&gt;


&lt;h2&gt;
  
  
  High Availability Through Failover
&lt;/h2&gt;

&lt;p&gt;One of the biggest advantages of this architecture is resilience.&lt;/p&gt;

&lt;p&gt;Suppose your primary provider becomes unavailable.&lt;/p&gt;

&lt;p&gt;Without an abstraction layer:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Checkout
      │
      ▼
Stripe ❌
      │
      ▼
Payment Failed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;With intelligent routing:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Checkout
      │
      ▼
Stripe ❌
      │
Retry
      ▼
Adyen ✅
      │
Payment Success
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;To the customer, the transaction succeeds.&lt;/p&gt;

&lt;p&gt;Many users never realize a failover occurred.&lt;/p&gt;

&lt;p&gt;That's exactly how resilient systems should behave.&lt;/p&gt;


&lt;h2&gt;
  
  
  Designing a Payment Interface
&lt;/h2&gt;

&lt;p&gt;A clean abstraction often begins with a simple contract.&lt;/p&gt;

&lt;p&gt;Instead of exposing provider-specific APIs throughout the application, define a common interface.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;PaymentGateway&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;createPayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;capturePayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;refundPayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;cancelPayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;getPaymentStatus&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Each provider then implements the same behavior.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;StripeGateway

implements PaymentGateway
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MidtransGateway

implements PaymentGateway
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;XenditGateway

implements PaymentGateway
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The rest of the application interacts only with the interface.&lt;/p&gt;

&lt;p&gt;Changing providers no longer requires changing business logic.&lt;/p&gt;


&lt;h2&gt;
  
  
  Supporting Future Growth
&lt;/h2&gt;

&lt;p&gt;Another benefit often overlooked is expansion.&lt;/p&gt;

&lt;p&gt;Imagine your company launches in Indonesia.&lt;/p&gt;

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

&lt;p&gt;A year later, you expand into Singapore.&lt;/p&gt;

&lt;p&gt;Then Australia.&lt;/p&gt;

&lt;p&gt;Then Europe.&lt;/p&gt;

&lt;p&gt;Each region has different customer expectations.&lt;/p&gt;

&lt;p&gt;Some prefer credit cards.&lt;/p&gt;

&lt;p&gt;Others use bank transfers.&lt;/p&gt;

&lt;p&gt;Some rely on digital wallets.&lt;/p&gt;

&lt;p&gt;Others expect Buy Now, Pay Later (BNPL) services.&lt;/p&gt;

&lt;p&gt;If your architecture assumes a single payment provider forever, international expansion becomes increasingly difficult.&lt;/p&gt;

&lt;p&gt;If your payment layer was designed for multiple providers from the beginning, adding support for another market becomes significantly easier.&lt;/p&gt;

&lt;p&gt;You're extending the platform rather than rebuilding it.&lt;/p&gt;


&lt;h2&gt;
  
  
  Vendor Lock-In Is an Architectural Problem
&lt;/h2&gt;

&lt;p&gt;Vendor lock-in isn't unique to payment gateways.&lt;/p&gt;

&lt;p&gt;It happens with cloud providers.&lt;/p&gt;

&lt;p&gt;Databases.&lt;/p&gt;

&lt;p&gt;Authentication systems.&lt;/p&gt;

&lt;p&gt;Message queues.&lt;/p&gt;

&lt;p&gt;Search engines.&lt;/p&gt;

&lt;p&gt;Storage platforms.&lt;/p&gt;

&lt;p&gt;The more tightly your business logic depends on a specific implementation, the harder migration becomes later.&lt;/p&gt;

&lt;p&gt;Good architecture isn't about predicting which technology you'll use forever.&lt;/p&gt;

&lt;p&gt;It's about assuming change is inevitable.&lt;/p&gt;

&lt;p&gt;Abstraction is one of the most effective ways to prepare for that reality.&lt;/p&gt;


&lt;h2&gt;
  
  
  But Should Every Startup Build This?
&lt;/h2&gt;

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

&lt;p&gt;One mistake engineers sometimes make is overengineering too early.&lt;/p&gt;

&lt;p&gt;If you're building an MVP with limited traffic, integrating directly with a single payment gateway is often the right decision.&lt;/p&gt;

&lt;p&gt;Shipping a product usually creates more value than designing a perfect architecture that never reaches production.&lt;/p&gt;

&lt;p&gt;The key is recognizing &lt;strong&gt;when&lt;/strong&gt; the investment becomes worthwhile.&lt;/p&gt;

&lt;p&gt;As transaction volume grows...&lt;/p&gt;

&lt;p&gt;As multiple payment methods become necessary...&lt;/p&gt;

&lt;p&gt;As expansion into new markets becomes realistic...&lt;/p&gt;

&lt;p&gt;As uptime becomes business-critical...&lt;/p&gt;

&lt;p&gt;That's when introducing a payment abstraction layer starts paying for itself.&lt;/p&gt;

&lt;p&gt;Architecture should evolve alongside the business.&lt;/p&gt;


&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;When people discuss payment systems, the conversation usually centers on providers.&lt;/p&gt;

&lt;p&gt;Which gateway has the lowest fees?&lt;/p&gt;

&lt;p&gt;Which dashboard looks better?&lt;/p&gt;

&lt;p&gt;Which API is easier to integrate?&lt;/p&gt;

&lt;p&gt;Those questions matter.&lt;/p&gt;

&lt;p&gt;But they're rarely the most important ones.&lt;/p&gt;

&lt;p&gt;The more valuable question is this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If we needed to replace this provider next year, how much of our application would need to change?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the answer is "almost everything," then the architecture—not the payment gateway—is probably the real problem.&lt;/p&gt;

&lt;p&gt;Sometimes the smartest engineering decision isn't choosing the perfect technology.&lt;/p&gt;

&lt;p&gt;It's designing your system so that replacing technology is never a crisis.&lt;/p&gt;

&lt;p&gt;That's the kind of flexibility good architecture gives you.&lt;/p&gt;

&lt;p&gt;And in software engineering, flexibility often turns out to be one of the most valuable features you can build.&lt;/p&gt;


&lt;h2&gt;
  
  
  Thanks for Reading
&lt;/h2&gt;

&lt;p&gt;If you enjoy articles about software architecture, backend engineering, scalable systems, AI engineering, cloud computing, and modern application design, feel free to follow my work. I enjoy sharing practical lessons from real-world software development, architectural decisions, and the engineering trade-offs that rarely make it into official documentation.&lt;/p&gt;

&lt;p&gt;Outside of writing, I work with founders, startups, and businesses to design and build scalable software solutions—from payment systems and backend platforms to AI-powered applications, automation tools, and cloud-native architectures. If you're building something interesting and need a software engineer to help bring it to life, I'd be happy to connect.&lt;/p&gt;



&lt;p&gt;I’ve always enjoyed sharing what I learn, whether it’s from building software, exploring new technologies, participating in research projects, or simply solving problems that took longer than expected. Writing became a natural extension of that process.&lt;/p&gt;

&lt;p&gt;Most of my work revolves around software engineering, cloud technologies, system design, artificial intelligence, and digital product development. Over the years, I’ve worked on a variety of projects, from business applications and websites to more technical topics involving architecture, scalability, and emerging technologies. Many of my articles are inspired by real experiences, lessons learned, mistakes made, and observations from working in technology.&lt;/p&gt;

&lt;p&gt;What I enjoy most about writing is the opportunity to make complex ideas easier to understand. Some people discover new concepts through books, others through videos. For me, writing is how I explore topics more deeply while hopefully helping others learn something useful along the way.&lt;/p&gt;

&lt;p&gt;Joining the Medium Partner Program feels like a natural next step. I plan to continue publishing articles about technology, software engineering, artificial intelligence, personal growth, and the challenges of building products in an increasingly digital world. My goal is not only to share information but also to contribute thoughtful perspectives that readers can apply to their own work, careers, and projects.&lt;/p&gt;

&lt;p&gt;🚀 Need help building AI-powered applications, scalable software, mobile apps, web scraping, or business automation?&lt;/p&gt;

&lt;p&gt;Contra:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://contra.com/restu_ananda_siedrfwx?referralExperimentNid=DEFAULT_REFERRAL_PROGRAM&amp;amp;amp%3BreferrerUsername=restu_ananda_siedrfwx&amp;amp;amp%3Br=restu_ananda_siedrfwx" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcontra.com%2Fapi%2F%40internal%2Fopen-graph-card%2Fuser%2Frestu_ananda_siedrfwx" height="630" class="m-0" width="1200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://contra.com/restu_ananda_siedrfwx?referralExperimentNid=DEFAULT_REFERRAL_PROGRAM&amp;amp;amp%3BreferrerUsername=restu_ananda_siedrfwx&amp;amp;amp%3Br=restu_ananda_siedrfwx" rel="noopener noreferrer" class="c-link"&gt;
            Restu ananda saputra - AI Agent Engineer | Contra
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Web Developer creating complex task. View Restu ananda saputra's Profile on Contra. The Independent-first, commission-free freelance marketplace shaping the future of work.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAX%2BSURBVHgBtVpPaJxFFJ%2F5UpBS3OwhxRyy63oUhf6hhWIKpiiiuRhUMF5UCiYnbYRNPZS2MXjRrLiJFxOxihdTLZqLiQakLbZRUEqE4nnJVgzoYTekFoXkOW%2B%2Bf%2FN982a%2B%2BXbbH3zZ2ffNvD%2Fz3rx5M1nOUujrrwxx2H2WMT4kvhZBPMx%2FrODiAdNLCDrkf4lvGqJHgzNY7%2BHe7OZmo5F676NSqRS37%2ByeF6QJlgcm%2BQE9NsyuqCuEIfV9e723G41GC797%2BAeVv30HLudW3ueoYenrRVYqD8g2ql0qDQjaReYMsL3iE9tCV9QZv3sof%2Fuf3fNizEF2F1AWyg4%2BdkyjI61QKGSMDjTPdtTB2zJahAH9%2FZUK4zjzYGdqbceYrE4YlRgfO0mO4UQrC%2BiJvv6Hhrz%2FgE3YB3OHto%2FE7EP0J%2BqKBvQSXrBEjBUcdkY8sQgOhMK6XWKjL74g410R4fMMNETlx147yXLBbt3jQn%2Bo%2BFI4NWnOwNmnQiQddOPjtBeM4ImPNIqYhSrUANpw83RURezrixQ01qj85GT%2BZAckjRe9fPHHSc4YOvi4YlyEEZWpDBJ0gTGkB7pCWeT701XTjJrV%2BXC2RoQS5FzQwDz1SyeYq9fkws23ZkCOmZurqSSWEb8BkpnQy87B5v0BZ35w8JhVDre8HH76KXrfyDEbDmuA5na6%2BmYsPISaxlwcCkxOQrXquKgJnk5rIG0CCp2khHK9N9iUCLq%2BZeJH8k9iD8uJd6bPGUsCO%2BzVaJgIZmr1iGYt0QOeRg%2FwRDd%2Fo8Iq06Q8EC2SoyW%2B0QjMTuVSXMkaXRgseqMB6rhnxGK7%2FMOyMXf7rO4OcD%2FBiYpkaXYnCdY1gDPx%2BWcL8ik4b%2F%2Fdm1IKvG3yRizBEEJyuxfuxFnH2bcCMgk5kBwrvfHNYrzLE9tEwoBQ8Ru%2F%2FijjsXC%2FobYhMgmkCUzvkw29Y2lgQHhiht345Zo0pJyqdlnfAw8CPteur0HX2I2bh44OCr5l2C94Y5vqY2VgIX2x%2BBX4epeBY0NamrCsezSbt6J2b2%2BBPfrIw8zqCi3LgjyhmEZcX%2FtZfkYGdILsPN0h7FuG0gfUWqgzOVRm6BouZVmw60c7sS2EXCYkDTWEELY9pBOBYQix%2FdEi%2FgmcV%2BmufZEhDh0ZhDBBYJvk4yIrhVa7Dd%2BufB%2FxjtLoyHOj7PDR42zx4iW2kZq9GEQ5wKnpo4dZCJmRt7W1Jeukw0eOs1deHYsG7YnimPtuf%2F1UVYbTSyLnTrqWuQmf51VOuYNMwCe0heILCxfYR%2BJBI9KyPKVvBDTkPbQ28Eg2XFaI6ZxgHjsvlMYZR1185fX%2B1iNlc8P3CD5hWGVXnSZkV6MhUBaG9Nlz04riKQTiPU2A%2BjYgoRdGnh9lN2%2F%2BrleF3YC4qVz5bpWdeGJYZhmXo7FnfasAvXHiyWFWUw4c2VplIJUMMFReFgtUn3XzuTz3tcq7QsjMTN1RK3djUPmZ2gcOPJN0gwFgaAfC3q8njn5muGUkX%2Fk6y3UzEqRP5xBKD0ahmN7S9Eyot72gKp85iCDx%2FCGk8jsjskS0pSt0oitJXfzykqZ83tTguQozAVNs25TqLNgI9po08qXpVAhZb6QN%2FDA7vSGMMIuggWPCgo%2BTHdWjntkYLKdbzApOfSReL6%2BssmWRv3XQgnFfWVNDj2RsouvXKi2nccnhGs6cnSZCSeeyccsPHau3tdFE9eiXTw28G20lBtsjxog%2FRDhoWYmQj32azSaj1c64lkwBuDSAX6UGG%2BQbOSNp%2FuML9IIO%2BuPCnZdG5pBlAQf4zROLYMnOCJwKSCS121j6fsJMQAN1mOc5y5ge3lP3%2FtpsXBFemE2PAmc2Sn9AJT81DltZWXXjE7SI6yflO8jfTcg0uvMvmxIf66xjxNUrekFmmNTEYpZqkic97rT%2FpIxZ37fXm4r%2FNSz%2BFnsrxZ772JSw7BQz6cjNp%2B17dsWiyYFZVD78sQdPC8afHuyI%2F96LFX5AdK4AsEr8VjUgaYzKh24TxpvnI0RLKNgC4C3R7ao4wS%2F9%2FWfjitrhf79tf6kZrZXXAAAAAElFTkSuQmCC" width="48" height="48"&gt;
          contra.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Fastwork:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://fastwork.id/user/restuanand/ai-automation-38997739?source=seller-center_my-service_share-link" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffw-fileupload-id.s3.ap-southeast-1.amazonaws.com%2Fproducts%2Fcc61a214-cd33-4af9-a442-a8226111d832%2Fimages%2Fb240e1a7-aa73-40f3-891b-3c80bb04977e.jpg" height="360" class="m-0" width="540"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://fastwork.id/user/restuanand/ai-automation-38997739?source=seller-center_my-service_share-link" rel="noopener noreferrer" class="c-link"&gt;
            AI Workflow Automation &amp;amp; System Integration —…
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Modern businesses rely on dozens of applications to manage sales, customer support, operations, finance, marketing, and internal communication. As…
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffastwork.id%2Fstatic-v4%2Ffavicons%2Ffavicon.ico" width="64" height="64"&gt;
          fastwork.id
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Upwork:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://www.upwork.com/services/product/development-it-hotel-booking-mobile-app-for-travel-and-reservation-management-2067560077816956835?ref=project_share" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;upwork.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;💬 If you were designing a payment platform today, would you integrate directly with one gateway or build an abstraction layer from day one?&lt;/p&gt;

&lt;h1&gt;
  
  
  SoftwareEngineering #SystemDesign #SoftwareArchitecture #BackendDevelopment #Payments #FinTech #Programming #Developers #ScalableSystems #Technology
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Designing Software for AI Agents: Why Agent Experience (AX) May Become the Next Competitive Advantage</title>
      <dc:creator>restu ananda saputra</dc:creator>
      <pubDate>Mon, 20 Jul 2026 12:20:39 +0000</pubDate>
      <link>https://dev.to/restuananda/designing-software-for-ai-agents-why-agent-experience-ax-may-become-the-next-competitive-2427</link>
      <guid>https://dev.to/restuananda/designing-software-for-ai-agents-why-agent-experience-ax-may-become-the-next-competitive-2427</guid>
      <description>&lt;p&gt;A few years ago, if someone had asked me who I was building software for, my answer would have been straightforward. I build software for users. If the product exposed an API or SDK, then I also built it for developers. That was the relationship we had with software for decades. Users interacted with interfaces, developers integrated systems, and engineering teams focused on making both experiences as seamless as possible.&lt;/p&gt;

&lt;p&gt;Today, I don't think that answer is complete anymore.&lt;/p&gt;

&lt;p&gt;Over the past year, I've noticed something quietly changing across the software industry. More and more products are no longer being used exclusively by people. Increasingly, they're being consumed by AI. Sometimes it's an AI coding assistant reading your documentation before another engineer opens it. Sometimes it's an autonomous workflow deciding whether your API is reliable enough to integrate. Other times it's a browser agent navigating your application to complete repetitive business tasks without anyone clicking through the interface manually.&lt;/p&gt;

&lt;p&gt;It's an interesting shift because it introduces a new audience that most of us never consciously designed for. We spent years refining User Experience (UX) to help people accomplish tasks more easily, and we invested heavily in Developer Experience (DX) so engineers could build integrations with minimal friction. Now there is a third audience entering the conversation, and unlike the other two, it doesn't care how beautiful your interface looks or how polished your landing page feels. It only cares whether your software is understandable, predictable, and trustworthy.&lt;/p&gt;

&lt;p&gt;That's why I believe we'll hear a lot more about &lt;strong&gt;Agent Experience (AX)&lt;/strong&gt; over the next few years.&lt;/p&gt;




&lt;h2&gt;
  
  
  Software Has Quietly Gained a New User
&lt;/h2&gt;

&lt;p&gt;When we talk about AI, most discussions revolve around models becoming larger, smarter, or faster. We compare benchmark scores, reasoning capabilities, context windows, and coding performance. Those conversations are important, but they often overlook something happening underneath.&lt;/p&gt;

&lt;p&gt;AI is gradually becoming another consumer of software.&lt;/p&gt;

&lt;p&gt;Think about how many development workflows already involve AI today. GitHub Copilot suggests implementations by reading the surrounding codebase. Claude Code explores repositories to understand project architecture before making changes. Cursor indexes documentation and source code so it can answer implementation questions. Autonomous agents built with frameworks like LangGraph or Model Context Protocol (MCP) inspect APIs, execute tools, and make decisions without direct human involvement.&lt;/p&gt;

&lt;p&gt;In each of those situations, your software is no longer communicating only with people.&lt;/p&gt;

&lt;p&gt;It's communicating with another piece of software that happens to reason using language.&lt;/p&gt;

&lt;p&gt;That changes the way we should think about designing modern systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI Doesn't Experience Software the Way Humans Do
&lt;/h2&gt;

&lt;p&gt;One of the easiest mistakes to make is assuming AI evaluates software the same way people do.&lt;/p&gt;

&lt;p&gt;Humans naturally appreciate thoughtful interfaces. We notice typography, spacing, animations, colors, branding, and visual consistency. Developers tend to evaluate products differently. They look for good documentation, clear authentication flows, helpful SDKs, and examples that make integration straightforward.&lt;/p&gt;

&lt;p&gt;AI evaluates software through an entirely different lens.&lt;/p&gt;

&lt;p&gt;It doesn't care whether your homepage has impressive animations. It doesn't care whether your buttons follow the latest design trends. It isn't impressed by gradients or polished illustrations.&lt;/p&gt;

&lt;p&gt;Instead, it asks questions that sound much more like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can I discover every available endpoint?&lt;/li&gt;
&lt;li&gt;Are response objects consistent?&lt;/li&gt;
&lt;li&gt;Is authentication clearly documented?&lt;/li&gt;
&lt;li&gt;Can I understand this error automatically?&lt;/li&gt;
&lt;li&gt;Is this operation deterministic?&lt;/li&gt;
&lt;li&gt;Can I safely retry this request?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those questions aren't about aesthetics.&lt;/p&gt;

&lt;p&gt;They're about certainty.&lt;/p&gt;

&lt;p&gt;The easier your software is to understand programmatically, the more valuable it becomes to AI systems that need to reason about it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Predictability Is Becoming More Valuable Than Cleverness
&lt;/h2&gt;

&lt;p&gt;Over the years I've reviewed many APIs that technically worked but felt unnecessarily difficult to understand. Often the problem wasn't performance or functionality. It was inconsistency.&lt;/p&gt;

&lt;p&gt;Consider two different approaches.&lt;/p&gt;

&lt;p&gt;The first API might expose endpoints like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/getUser&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/allUsers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/createUser&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/deleteUser&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Now compare that with an API following predictable REST conventions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /users&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /users/{id}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /users&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUT /users/{id}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DELETE /users/{id}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both APIs solve the same problem.&lt;/p&gt;

&lt;p&gt;The difference is that the second communicates intent much more clearly.&lt;/p&gt;

&lt;p&gt;Humans appreciate consistency because it reduces cognitive load. AI depends on consistency because patterns are how it generalizes behavior. Once an agent understands one endpoint, it can often infer how the rest of the API behaves without additional explanation.&lt;/p&gt;

&lt;p&gt;Predictability becomes a feature in its own right.&lt;/p&gt;




&lt;h2&gt;
  
  
  Documentation Is No Longer Just for Humans
&lt;/h2&gt;

&lt;p&gt;Documentation has traditionally been something teams finished after shipping the product. Sometimes it was treated almost like a formality.&lt;/p&gt;

&lt;p&gt;I don't think that's true anymore.&lt;/p&gt;

&lt;p&gt;Documentation is increasingly becoming part of the interface itself.&lt;/p&gt;

&lt;p&gt;When an AI assistant generates integration code, it doesn't magically know how your platform works. It reads your documentation, examines schemas, studies examples, and builds an internal understanding of your system before writing a single line of code.&lt;/p&gt;

&lt;p&gt;Every missing example creates uncertainty.&lt;/p&gt;

&lt;p&gt;Every undocumented endpoint increases ambiguity.&lt;/p&gt;

&lt;p&gt;Every inconsistent explanation makes automated reasoning more difficult.&lt;/p&gt;

&lt;p&gt;That's one reason standards like OpenAPI, JSON Schema, AsyncAPI, and MCP are becoming increasingly important. They don't simply document software for people. They describe software in a structured way that machines can understand as well.&lt;/p&gt;

&lt;p&gt;The better those descriptions become, the less time both developers and AI spend making assumptions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Error Messages Are Becoming Part of the Conversation
&lt;/h2&gt;

&lt;p&gt;One area I think many teams still underestimate is error handling.&lt;/p&gt;

&lt;p&gt;For humans, an error message is often just feedback explaining what went wrong.&lt;/p&gt;

&lt;p&gt;For AI, an error message is an opportunity to recover automatically.&lt;/p&gt;

&lt;p&gt;There's a significant difference between returning:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Invalid request."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;and returning structured information explaining which field failed, why it failed, and what correction should be made.&lt;/p&gt;

&lt;p&gt;That additional context transforms an error from a dead end into another decision point.&lt;/p&gt;

&lt;p&gt;Instead of giving up, an AI agent can retry with corrected input, ask for clarification, or choose a different execution path entirely.&lt;/p&gt;

&lt;p&gt;Good error messages no longer improve only the developer experience.&lt;/p&gt;

&lt;p&gt;They improve the agent experience too.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building Software That Machines Can Trust
&lt;/h2&gt;

&lt;p&gt;The more I think about Agent Experience, the more I realize it isn't introducing completely new engineering principles.&lt;/p&gt;

&lt;p&gt;Instead, it's reinforcing principles we've known for years.&lt;/p&gt;

&lt;p&gt;Predictable APIs.&lt;/p&gt;

&lt;p&gt;Consistent naming conventions.&lt;/p&gt;

&lt;p&gt;Clear authentication.&lt;/p&gt;

&lt;p&gt;Stable versioning.&lt;/p&gt;

&lt;p&gt;Structured documentation.&lt;/p&gt;

&lt;p&gt;Meaningful error responses.&lt;/p&gt;

&lt;p&gt;Deterministic behavior.&lt;/p&gt;

&lt;p&gt;Explicit business rules.&lt;/p&gt;

&lt;p&gt;These practices have always resulted in better software.&lt;/p&gt;

&lt;p&gt;The difference now is that AI exposes weaknesses much faster than people do. Humans often work around inconsistencies through intuition or experience. Machines can't. They rely on clear contracts, structured information, and repeatable behavior.&lt;/p&gt;

&lt;p&gt;Ironically, designing software that AI understands often results in software that humans appreciate even more.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Think This Matters More Than the Next AI Model
&lt;/h2&gt;

&lt;p&gt;Many organizations are currently focused on choosing the best AI model.&lt;/p&gt;

&lt;p&gt;Should they use GPT?&lt;/p&gt;

&lt;p&gt;Claude?&lt;/p&gt;

&lt;p&gt;Gemini?&lt;/p&gt;

&lt;p&gt;Open-source alternatives?&lt;/p&gt;

&lt;p&gt;Those decisions certainly matter.&lt;/p&gt;

&lt;p&gt;But I suspect they'll become less important over time.&lt;/p&gt;

&lt;p&gt;The larger competitive advantage won't come from having access to a particular model.&lt;/p&gt;

&lt;p&gt;It will come from how well your engineering organization teaches that model to understand your systems.&lt;/p&gt;

&lt;p&gt;Companies with predictable architectures, excellent documentation, structured APIs, and well-defined engineering standards will allow AI to become productive almost immediately.&lt;/p&gt;

&lt;p&gt;Companies with fragmented documentation, inconsistent conventions, and undocumented business logic will continue forcing every AI assistant to rediscover the same information over and over again.&lt;/p&gt;

&lt;p&gt;Eventually the model won't be the bottleneck.&lt;/p&gt;

&lt;p&gt;The quality of the software ecosystem surrounding it will.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;For decades, software engineering has focused on building products that people enjoy using and developers enjoy building on.&lt;/p&gt;

&lt;p&gt;That foundation isn't changing.&lt;/p&gt;

&lt;p&gt;What is changing is the audience.&lt;/p&gt;

&lt;p&gt;Software increasingly communicates with other software that can reason, plan, automate, and make decisions on behalf of people. As that trend continues, products won't simply compete based on features or interface design. They'll also compete on how easily intelligent systems can understand, trust, and integrate them into larger workflows.&lt;/p&gt;

&lt;p&gt;Perhaps that's the most interesting part of this shift.&lt;/p&gt;

&lt;p&gt;Agent Experience isn't replacing User Experience or Developer Experience.&lt;/p&gt;

&lt;p&gt;It's becoming the bridge between them.&lt;/p&gt;

&lt;p&gt;The companies that recognize this early won't just build products that people love using.&lt;/p&gt;

&lt;p&gt;They'll build products that AI understands naturally, integrates confidently, and chooses automatically.&lt;/p&gt;

&lt;p&gt;I have a feeling that will become one of the defining characteristics of great software over the next decade.&lt;/p&gt;




&lt;h2&gt;
  
  
  Thanks for Reading
&lt;/h2&gt;

&lt;p&gt;If you enjoy reading about software engineering, system architecture, AI engineering, backend development, cloud computing, and building scalable digital products, you're in the right place. I regularly share practical lessons, engineering insights, and reflections from projects I've worked on, along with ideas that I believe will shape the future of modern software development.&lt;/p&gt;

&lt;p&gt;Beyond writing, I work with founders, startups, businesses, researchers, and organizations to design and build scalable software solutions. Whether it's developing AI-powered applications, architecting cloud infrastructure, modernizing legacy platforms, building custom business systems, or turning a product idea into production-ready software, I genuinely enjoy solving complex engineering problems.&lt;/p&gt;

&lt;p&gt;I'm also happy to support educational initiatives, open-source communities, research collaborations, and non-profit projects whenever I can. If you're building something meaningful and think I can help, feel free to reach out. I'd always enjoy connecting with people who are passionate about building technology that creates real impact.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Microsoft's 99 AI Skills Are Interesting. The Bigger Story Is What They Represent.</title>
      <dc:creator>restu ananda saputra</dc:creator>
      <pubDate>Thu, 02 Jul 2026 17:36:46 +0000</pubDate>
      <link>https://dev.to/restuananda/microsofts-99-ai-skills-are-interesting-the-bigger-story-is-what-they-represent-pl3</link>
      <guid>https://dev.to/restuananda/microsofts-99-ai-skills-are-interesting-the-bigger-story-is-what-they-represent-pl3</guid>
      <description>&lt;h2&gt;
  
  
  AI coding assistants already understand .NET. The next challenge is teaching them how &lt;em&gt;your&lt;/em&gt; team builds software.
&lt;/h2&gt;

&lt;p&gt;One of the most interesting things happening in software engineering right now isn't the arrival of another language model.&lt;/p&gt;

&lt;p&gt;It's the gradual realization that intelligence alone isn't enough.&lt;/p&gt;

&lt;p&gt;Over the past couple of years, AI coding assistants have become remarkably capable. Whether you're using GitHub Copilot, Claude Code, Cursor, Codex, or another modern coding assistant, it's difficult not to be impressed by how quickly they can generate APIs, write unit tests, explain unfamiliar code, or scaffold entire applications.&lt;/p&gt;

&lt;p&gt;In many cases, they already understand programming languages better than most developers ever will.&lt;/p&gt;

&lt;p&gt;Ask them about C#, ASP.NET Core, Entity Framework, LINQ, Minimal APIs, dependency injection, or asynchronous programming, and the answers are usually accurate, well-structured, and surprisingly practical.&lt;/p&gt;

&lt;p&gt;Yet despite all of that progress, I continue hearing the same complaint from engineering teams.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"The AI still doesn't understand our project."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At first, that sounds like a limitation of the model itself.&lt;/p&gt;

&lt;p&gt;The more I think about it, the more I believe it's actually a limitation of context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding a Language Isn't the Same as Understanding a Codebase
&lt;/h2&gt;

&lt;p&gt;Knowing how .NET works is only one small part of software engineering.&lt;/p&gt;

&lt;p&gt;Every engineering organization develops its own way of building software.&lt;/p&gt;

&lt;p&gt;Some teams organize their applications around Clean Architecture.&lt;/p&gt;

&lt;p&gt;Others prefer Vertical Slice Architecture.&lt;/p&gt;

&lt;p&gt;Some rely heavily on CQRS with MediatR.&lt;/p&gt;

&lt;p&gt;Others use repository patterns, Result, domain events, feature folders, or entirely custom conventions that have evolved over years of development.&lt;/p&gt;

&lt;p&gt;Then there are the business rules.&lt;/p&gt;

&lt;p&gt;The naming conventions.&lt;/p&gt;

&lt;p&gt;The deployment pipeline.&lt;/p&gt;

&lt;p&gt;The testing philosophy.&lt;/p&gt;

&lt;p&gt;The internal libraries.&lt;/p&gt;

&lt;p&gt;The security requirements.&lt;/p&gt;

&lt;p&gt;The architectural decisions that exist nowhere except inside the heads of experienced engineers.&lt;/p&gt;

&lt;p&gt;This is the context that makes one company's codebase fundamentally different from another's.&lt;/p&gt;

&lt;p&gt;Modern language models understand C#.&lt;/p&gt;

&lt;p&gt;What they don't automatically understand is &lt;em&gt;your organization&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Every new conversation begins from almost zero.&lt;/p&gt;

&lt;p&gt;The assistant has to rediscover your architecture, infer your conventions, and guess how your team prefers to solve problems.&lt;/p&gt;

&lt;p&gt;That's an incredibly expensive way to collaborate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Microsoft's Repository Matters
&lt;/h2&gt;

&lt;p&gt;This is why Microsoft's recently open-sourced &lt;strong&gt;dotnet/skills&lt;/strong&gt; repository caught my attention.&lt;/p&gt;

&lt;p&gt;At first glance, the announcement appears relatively straightforward.&lt;/p&gt;

&lt;p&gt;Microsoft published nearly one hundred reusable AI skills covering common .NET development tasks such as ASP.NET Core, Entity Framework, testing, project modernization, upgrades, and AI application development.&lt;/p&gt;

&lt;p&gt;For many developers, the headline became the number.&lt;/p&gt;

&lt;p&gt;Ninety-nine skills.&lt;/p&gt;

&lt;p&gt;An impressive collection.&lt;/p&gt;

&lt;p&gt;But I think the number is the least interesting part.&lt;/p&gt;

&lt;p&gt;The real innovation is the idea behind it.&lt;/p&gt;

&lt;p&gt;Instead of repeatedly explaining the same workflows every time an AI assistant starts a new session, those instructions can be packaged into reusable skills that compatible AI agents automatically load whenever they're relevant.&lt;/p&gt;

&lt;p&gt;The assistant doesn't need to be reminded how to approach a particular .NET task.&lt;/p&gt;

&lt;p&gt;The knowledge already exists.&lt;/p&gt;

&lt;p&gt;The context is reusable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Microsoft Can Teach AI About .NET
&lt;/h2&gt;

&lt;p&gt;Only You Can Teach AI About Your Company&lt;/p&gt;

&lt;p&gt;This is where I think the conversation becomes much more interesting.&lt;/p&gt;

&lt;p&gt;Microsoft can teach AI how to write better .NET applications.&lt;/p&gt;

&lt;p&gt;Only your engineering team can teach AI how to build software &lt;em&gt;your way.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Imagine every architectural principle your team follows becoming reusable knowledge.&lt;/p&gt;

&lt;p&gt;Your preferred folder structure.&lt;/p&gt;

&lt;p&gt;Your API design guidelines.&lt;/p&gt;

&lt;p&gt;Your naming conventions.&lt;/p&gt;

&lt;p&gt;How authentication works.&lt;/p&gt;

&lt;p&gt;How repositories are organized.&lt;/p&gt;

&lt;p&gt;How pull requests should be reviewed.&lt;/p&gt;

&lt;p&gt;How services communicate.&lt;/p&gt;

&lt;p&gt;How logging is implemented.&lt;/p&gt;

&lt;p&gt;How feature flags are introduced.&lt;/p&gt;

&lt;p&gt;How migrations are managed.&lt;/p&gt;

&lt;p&gt;How domain models evolve.&lt;/p&gt;

&lt;p&gt;Instead of explaining these ideas repeatedly, they become part of your organization's shared engineering memory.&lt;/p&gt;

&lt;p&gt;Every AI-assisted development session starts with context rather than assumptions.&lt;/p&gt;

&lt;p&gt;That changes the relationship between engineers and AI completely.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Prompts to Organizational Knowledge
&lt;/h2&gt;

&lt;p&gt;One pattern has become increasingly obvious over the last year.&lt;/p&gt;

&lt;p&gt;Most developers spend far too much time repeating themselves.&lt;/p&gt;

&lt;p&gt;Every prompt includes reminders about coding standards.&lt;/p&gt;

&lt;p&gt;Every conversation explains the same architecture.&lt;/p&gt;

&lt;p&gt;Every new feature starts with another description of how the application is structured.&lt;/p&gt;

&lt;p&gt;Eventually, prompt engineering becomes organizational overhead.&lt;/p&gt;

&lt;p&gt;Reusable skills solve a different problem.&lt;/p&gt;

&lt;p&gt;Instead of writing better prompts, teams begin capturing institutional knowledge.&lt;/p&gt;

&lt;p&gt;Knowledge stops living inside Slack conversations, onboarding documents, or the minds of senior engineers.&lt;/p&gt;

&lt;p&gt;It becomes something AI can actively use while generating software.&lt;/p&gt;

&lt;p&gt;That may sound like a subtle difference.&lt;/p&gt;

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

&lt;p&gt;It's the difference between asking someone to remember instructions every day and giving them a well-designed handbook they can reference automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Competitive Advantage Is Shifting
&lt;/h2&gt;

&lt;p&gt;When AI coding assistants first became popular, much of the conversation focused on choosing the best model.&lt;/p&gt;

&lt;p&gt;Should you use Claude?&lt;/p&gt;

&lt;p&gt;Copilot?&lt;/p&gt;

&lt;p&gt;Cursor?&lt;/p&gt;

&lt;p&gt;Codex?&lt;/p&gt;

&lt;p&gt;The assumption was that better models would naturally create better engineering outcomes.&lt;/p&gt;

&lt;p&gt;I'm no longer convinced that's where the biggest advantage will come from.&lt;/p&gt;

&lt;p&gt;As foundation models continue improving, the performance gap between them will likely become smaller.&lt;/p&gt;

&lt;p&gt;What becomes difficult to copy isn't the model.&lt;/p&gt;

&lt;p&gt;It's the organizational knowledge surrounding it.&lt;/p&gt;

&lt;p&gt;Every engineering team has accumulated years of architectural decisions, operational experience, coding conventions, business rules, deployment strategies, and technical trade-offs.&lt;/p&gt;

&lt;p&gt;That knowledge is incredibly valuable.&lt;/p&gt;

&lt;p&gt;Until recently, most of it existed only inside documentation or experienced engineers.&lt;/p&gt;

&lt;p&gt;Now it can become something AI actively participates in.&lt;/p&gt;

&lt;p&gt;That's a much more durable competitive advantage than simply paying for access to the latest language model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Software Engineering Is Becoming More About Context
&lt;/h2&gt;

&lt;p&gt;The longer I work with AI-assisted development, the more I believe that software engineering is quietly shifting from writing code toward managing context.&lt;/p&gt;

&lt;p&gt;Generating code is becoming cheaper every month.&lt;/p&gt;

&lt;p&gt;Providing the right context is becoming increasingly valuable.&lt;/p&gt;

&lt;p&gt;The organizations that succeed won't necessarily be the ones with the most advanced AI models.&lt;/p&gt;

&lt;p&gt;They'll be the ones that systematically teach those models how they build software, why they make certain architectural decisions, and what quality means inside their engineering culture.&lt;/p&gt;

&lt;p&gt;That's knowledge no foundation model can learn on its own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Microsoft's ninety-nine AI skills are undoubtedly useful.&lt;/p&gt;

&lt;p&gt;They'll help developers work more effectively with .NET, automate common tasks, and reduce repetitive instructions during AI-assisted development.&lt;/p&gt;

&lt;p&gt;But I think the repository points toward something much bigger.&lt;/p&gt;

&lt;p&gt;The future isn't simply AI that understands programming languages.&lt;/p&gt;

&lt;p&gt;It's AI that understands engineering organizations.&lt;/p&gt;

&lt;p&gt;Because once an assistant understands not only how to write C#, but also how &lt;em&gt;your team&lt;/em&gt; designs systems, reviews code, structures projects, and makes architectural decisions, something fundamental changes.&lt;/p&gt;

&lt;p&gt;The assistant stops feeling like a code generator.&lt;/p&gt;

&lt;p&gt;It starts feeling like a new engineer who's already completed onboarding.&lt;/p&gt;

&lt;p&gt;And that may become one of the most valuable productivity improvements software engineering has seen in years.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building AI-Powered Software
&lt;/h2&gt;

&lt;p&gt;I spend much of my time helping founders, startups, and businesses build modern software systems, integrate AI into existing products, and design cloud-native architectures that can scale as businesses grow.&lt;/p&gt;

&lt;p&gt;If you're exploring AI-assisted development, custom business software, intelligent automation, or scalable web applications, I'd be happy to help turn those ideas into production-ready solutions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fastwork:&lt;/strong&gt; &lt;a href="https://fastwork.id/byob/7pFhYwWqZd?openExternalBrowser=1&amp;amp;source=byob" rel="noopener noreferrer"&gt;https://fastwork.id/byob/7pFhYwWqZd?openExternalBrowser=1&amp;amp;source=byob&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upwork:&lt;/strong&gt; &lt;a href="https://www.upwork.com/services/product/development-it-custom-business-website-development-2067932090568948507?ref=project_share" rel="noopener noreferrer"&gt;https://www.upwork.com/services/product/development-it-custom-business-website-development-2067932090568948507?ref=project_share&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;Most days you'll find me building software, experimenting with AI, exploring distributed systems, and writing about the ideas I encounter along the way.&lt;/p&gt;

&lt;p&gt;I'm particularly interested in software engineering, artificial intelligence, cloud computing, system architecture, and how emerging technologies are changing the way we design, build, and maintain software. Through these articles, I share lessons from real projects, technical research, and observations about where our industry is heading.&lt;/p&gt;

&lt;p&gt;I don't write because I think I have all the answers. I write because some of the best ideas emerge when they're shared, challenged, and refined together.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>dotnet</category>
      <category>microsoft</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>I Wish I Had Started Documenting My Tech Journey Earlier</title>
      <dc:creator>restu ananda saputra</dc:creator>
      <pubDate>Sat, 27 Jun 2026 17:49:25 +0000</pubDate>
      <link>https://dev.to/restuananda/i-wish-i-had-started-documenting-my-tech-journey-earlier-4be6</link>
      <guid>https://dev.to/restuananda/i-wish-i-had-started-documenting-my-tech-journey-earlier-4be6</guid>
      <description>&lt;h2&gt;
  
  
  The biggest thing I lost wasn't code—it was the story of how I became an engineer.
&lt;/h2&gt;

&lt;p&gt;If I could go back and give my younger self a single piece of advice, it probably wouldn't be to learn another programming language, contribute to open source earlier, or spend more time studying algorithms.&lt;/p&gt;

&lt;p&gt;Those things certainly matter, and they've all helped shape my career in one way or another.&lt;/p&gt;

&lt;p&gt;But looking back, none of them feel like the advice I needed most.&lt;/p&gt;

&lt;p&gt;Instead, I would tell myself something much simpler.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Document the journey.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I first started programming, I believed the important things would naturally stay with me. I assumed I would always remember the excitement of finishing my first real application, the nights spent chasing bugs that made absolutely no sense, the satisfaction of finally seeing a project come together, and the countless small lessons that slowly transformed me from someone who simply wrote code into someone who started thinking like an engineer.&lt;/p&gt;

&lt;p&gt;I couldn't have been more wrong.&lt;/p&gt;

&lt;p&gt;Time has an interesting way of preserving the highlights while quietly erasing everything in between. Years later, I can still remember the names of projects I built and the companies I worked with, but many of the moments that actually changed me have become blurry. I struggle to remember what I was thinking when I faced certain problems, what made me nervous before launching something for the first time, or why solving a seemingly simple bug once felt like such a huge accomplishment.&lt;/p&gt;

&lt;p&gt;The milestones remained.&lt;/p&gt;

&lt;p&gt;The journey slowly disappeared.&lt;/p&gt;

&lt;h2&gt;
  
  
  Waiting Until I Felt "Qualified"
&lt;/h2&gt;

&lt;p&gt;Looking back, I don't think I avoided writing because I was too busy.&lt;/p&gt;

&lt;p&gt;Like most developers, I could always find a few minutes to write a note, publish a short article, or record what I had learned that week. The real reason was much more subtle.&lt;/p&gt;

&lt;p&gt;I convinced myself that I wasn't experienced enough.&lt;/p&gt;

&lt;p&gt;Every time I considered writing about something I had learned, another voice would immediately appear in my head.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Who would want to read advice from someone who's still learning?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I kept postponing it.&lt;/p&gt;

&lt;p&gt;I told myself I would start documenting once I became a better engineer. Maybe after building larger systems. Maybe after getting more professional experience. Maybe after I had earned the confidence to call myself an expert.&lt;/p&gt;

&lt;p&gt;The problem with that mindset is that every new milestone simply creates another reason to wait.&lt;/p&gt;

&lt;p&gt;When I learned a new framework, I felt there was still another one I should master first.&lt;/p&gt;

&lt;p&gt;When I finished one project, I believed the next one would be more impressive.&lt;/p&gt;

&lt;p&gt;When I gained more experience, my standards for sharing became even higher.&lt;/p&gt;

&lt;p&gt;The finish line kept moving.&lt;/p&gt;

&lt;p&gt;And because it kept moving, the "right time" never actually arrived.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Version of Me I'll Never Meet Again
&lt;/h2&gt;

&lt;p&gt;Ironically, the version of myself I most wish I could revisit isn't the engineer I am today.&lt;/p&gt;

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

&lt;p&gt;The person who approached every technology with endless curiosity, celebrated solving problems that now seem trivial, and experienced genuine excitement every time a new concept finally clicked.&lt;/p&gt;

&lt;p&gt;Those early days were filled with questions.&lt;/p&gt;

&lt;p&gt;Every project introduced something I had never seen before.&lt;/p&gt;

&lt;p&gt;Every mistake taught me something valuable.&lt;/p&gt;

&lt;p&gt;Every success felt enormous because everything was new.&lt;/p&gt;

&lt;p&gt;Unfortunately, those memories exist mostly in fragments now.&lt;/p&gt;

&lt;p&gt;I remember that they happened.&lt;/p&gt;

&lt;p&gt;I just don't remember them as clearly as I wish I did.&lt;/p&gt;

&lt;p&gt;Sometimes I wish I could open a notebook written by my younger self and read what I was thinking during those first months of learning.&lt;/p&gt;

&lt;p&gt;What confused me?&lt;/p&gt;

&lt;p&gt;What inspired me?&lt;/p&gt;

&lt;p&gt;What challenges seemed impossible at the time?&lt;/p&gt;

&lt;p&gt;Those questions no longer have complete answers because I never took the time to write them down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Admire Developers Who Learn in Public
&lt;/h2&gt;

&lt;p&gt;One thing I genuinely admire today is seeing students and junior developers openly share what they're learning.&lt;/p&gt;

&lt;p&gt;They publish small projects.&lt;/p&gt;

&lt;p&gt;They write about bugs they solved.&lt;/p&gt;

&lt;p&gt;They explain concepts they only recently understood.&lt;/p&gt;

&lt;p&gt;They celebrate milestones that more experienced engineers might overlook.&lt;/p&gt;

&lt;p&gt;Years ago, I probably would have thought they were sharing too early.&lt;/p&gt;

&lt;p&gt;Today, I think they're doing something incredibly valuable.&lt;/p&gt;

&lt;p&gt;They're preserving a version of themselves that will eventually disappear.&lt;/p&gt;

&lt;p&gt;Five years from now, those posts won't simply be technical content.&lt;/p&gt;

&lt;p&gt;They'll become a timeline of personal growth.&lt;/p&gt;

&lt;p&gt;A record of mistakes.&lt;/p&gt;

&lt;p&gt;A collection of breakthroughs.&lt;/p&gt;

&lt;p&gt;Proof that they kept moving forward even when progress felt painfully slow.&lt;/p&gt;

&lt;p&gt;In many ways, they're writing something for their future selves just as much as they're writing for everyone else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Documentation Is More Than a Personal Brand
&lt;/h2&gt;

&lt;p&gt;One of the biggest misconceptions about documenting your work is that it's only useful if you're trying to build an audience.&lt;/p&gt;

&lt;p&gt;People often associate writing with personal branding, networking, or attracting recruiters.&lt;/p&gt;

&lt;p&gt;Those are certainly worthwhile outcomes.&lt;/p&gt;

&lt;p&gt;I've seen firsthand how sharing knowledge can open unexpected doors.&lt;/p&gt;

&lt;p&gt;But I don't think those are the most meaningful reasons to document your journey.&lt;/p&gt;

&lt;p&gt;The greatest value is much more personal.&lt;/p&gt;

&lt;p&gt;Documentation preserves growth.&lt;/p&gt;

&lt;p&gt;A GitHub repository isn't simply a collection of source code.&lt;/p&gt;

&lt;p&gt;It's evidence that you kept building.&lt;/p&gt;

&lt;p&gt;A technical article isn't just something published on the internet.&lt;/p&gt;

&lt;p&gt;It's a snapshot of what fascinated you at a particular point in your career.&lt;/p&gt;

&lt;p&gt;Even a short LinkedIn post becomes more than an update after enough time has passed.&lt;/p&gt;

&lt;p&gt;It becomes a reminder of where your thinking was, what problems you were solving, and who you were becoming.&lt;/p&gt;

&lt;p&gt;Progress is surprisingly difficult to notice while you're living through it.&lt;/p&gt;

&lt;p&gt;Documentation allows you to see it years later.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Story Is Still Being Written
&lt;/h2&gt;

&lt;p&gt;One realization has become increasingly comforting to me.&lt;/p&gt;

&lt;p&gt;It's never too late to begin.&lt;/p&gt;

&lt;p&gt;None of us can go back and document yesterday.&lt;/p&gt;

&lt;p&gt;The early projects that were never recorded will probably remain memories, and some of those memories will continue fading with time.&lt;/p&gt;

&lt;p&gt;But today is still available.&lt;/p&gt;

&lt;p&gt;So is tomorrow.&lt;/p&gt;

&lt;p&gt;Whether it's a technical blog, a GitHub commit, a notebook filled with ideas, a personal journal, or simply sharing lessons on LinkedIn, every record becomes another chapter in a story that's still unfolding.&lt;/p&gt;

&lt;p&gt;Years from now, those small pieces won't feel ordinary anymore.&lt;/p&gt;

&lt;p&gt;They'll become reminders of how far you've come.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;When people think about documenting their careers, they often focus on visibility.&lt;/p&gt;

&lt;p&gt;Will recruiters see it?&lt;/p&gt;

&lt;p&gt;Will it build a personal brand?&lt;/p&gt;

&lt;p&gt;Will it create new opportunities?&lt;/p&gt;

&lt;p&gt;Those questions matter.&lt;/p&gt;

&lt;p&gt;But over time, I've realized they're not the questions that matter most.&lt;/p&gt;

&lt;p&gt;The most important audience is often your future self.&lt;/p&gt;

&lt;p&gt;One day you'll look back at the engineer you used to be and realize how much has changed. The technologies will be different. Your skills will have evolved. Problems that once seemed impossible will become routine.&lt;/p&gt;

&lt;p&gt;What you'll miss aren't the polished achievements.&lt;/p&gt;

&lt;p&gt;You'll miss the excitement of learning them for the first time.&lt;/p&gt;

&lt;p&gt;That's why I wish I had started documenting earlier.&lt;/p&gt;

&lt;p&gt;Not because I wanted more followers.&lt;/p&gt;

&lt;p&gt;Not because I wanted more opportunities.&lt;/p&gt;

&lt;p&gt;But because I would have loved the chance to meet the younger version of myself again.&lt;/p&gt;

&lt;p&gt;And the only way to make sure my future self can meet the person I am today is to leave behind a trail worth following.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building Software That Solves Real Problems
&lt;/h2&gt;

&lt;p&gt;Writing is one way I share what I'm learning, but building software is where I spend most of my time.&lt;/p&gt;

&lt;p&gt;I work with founders, startups, businesses, and organizations to design and develop scalable web applications, AI-powered solutions, cloud infrastructure, and custom software tailored to real business needs. Whether you're starting with an idea, modernizing an existing platform, or looking to integrate AI into your products, I'd be happy to help turn those ideas into something people can actually use.&lt;/p&gt;

&lt;p&gt;You can learn more about my work or get in touch here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fastwork:&lt;/strong&gt; &lt;a href="https://fastwork.id/byob/7pFhYwWqZd?openExternalBrowser=1&amp;amp;source=byob" rel="noopener noreferrer"&gt;https://fastwork.id/byob/7pFhYwWqZd?openExternalBrowser=1&amp;amp;source=byob&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upwork:&lt;/strong&gt; &lt;a href="https://www.upwork.com/services/product/development-it-custom-business-website-development-2067932090568948507?ref=project_share" rel="noopener noreferrer"&gt;https://www.upwork.com/services/product/development-it-custom-business-website-development-2067932090568948507?ref=project_share&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;Most days you'll find me building software, exploring new technologies, experimenting with ideas, and writing about the lessons I pick up along the way.&lt;/p&gt;

&lt;p&gt;I'm fascinated by software engineering, artificial intelligence, cloud computing, system design, and the process of turning ideas into products that solve real problems. This publication is where I share what I'm learning—not because I have all the answers, but because I believe the journey itself is worth documenting.&lt;/p&gt;

&lt;p&gt;If you're building something interesting, whether it's a startup, a research project, a community initiative, or a business that needs technical expertise, feel free to reach out. I always enjoy connecting with people who are passionate about building meaningful things.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devjournal</category>
      <category>learning</category>
      <category>writing</category>
    </item>
    <item>
      <title>#One of the Biggest Career Mistakes Is Treating Work as Life</title>
      <dc:creator>restu ananda saputra</dc:creator>
      <pubDate>Mon, 22 Jun 2026 12:53:08 +0000</pubDate>
      <link>https://dev.to/restuananda/one-of-the-biggest-career-mistakes-is-treating-work-as-life-484</link>
      <guid>https://dev.to/restuananda/one-of-the-biggest-career-mistakes-is-treating-work-as-life-484</guid>
      <description>&lt;p&gt;One of the more subtle mistakes ambitious people make is not working too hard. It is allowing work to gradually become the center of everything.&lt;/p&gt;

&lt;p&gt;The process rarely happens overnight. In fact, it usually begins with good intentions. Most people start their careers with a simple goal: to create a better life for themselves. Work is the vehicle that provides opportunity, stability, growth, and the ability to pursue things that matter. There is nothing inherently wrong with that. Work can be deeply meaningful. It can challenge us, help us develop valuable skills, and create opportunities that would otherwise be unavailable.&lt;/p&gt;

&lt;p&gt;The problem begins when the relationship quietly reverses.&lt;/p&gt;

&lt;p&gt;Instead of work serving life, life begins serving work.&lt;/p&gt;

&lt;p&gt;At first, the shift is difficult to notice because it often looks like ambition. You stay a little later to finish a project. You spend weekends learning new skills. You accept additional responsibilities because they create opportunities for advancement. You tell yourself that the extra effort is temporary and that things will slow down after the next milestone. The logic feels reasonable because every successful career requires periods of focused effort.&lt;/p&gt;

&lt;p&gt;The challenge is that milestones have a habit of multiplying.&lt;/p&gt;

&lt;p&gt;There is always another promotion to pursue, another client to acquire, another product to launch, another certification to earn, or another goal waiting just beyond the current one. What originally felt like a short-term sacrifice gradually becomes a long-term lifestyle. Before long, the future version of life you promised yourself remains permanently just out of reach.&lt;/p&gt;

&lt;p&gt;I suspect many professionals spend years living in this state without fully realizing it. They become highly effective at managing work while becoming increasingly disconnected from everything else. Calendars are optimized. Projects move forward. Objectives are completed. Careers progress. Yet outside of those achievements, there is often a quiet erosion of the things that make success meaningful in the first place.&lt;/p&gt;

&lt;p&gt;Relationships, for example, rarely collapse all at once. More often, they weaken through neglect. A missed conversation here, a postponed gathering there, and eventually the people who matter most begin occupying less space in our lives than the work we perform. The same can be said for health. Most people do not wake up one morning and decide to ignore their well-being. Instead, they repeatedly convince themselves that exercise can wait until next week, proper rest can wait until after the deadline, and stress is simply part of being successful. Years later, the accumulated cost becomes difficult to ignore.&lt;/p&gt;

&lt;p&gt;Curiosity often suffers a similar fate. One of the most rewarding aspects of being human is the ability to explore interests with no practical purpose attached to them. Reading a book outside your profession, learning an instrument, pursuing a hobby, traveling somewhere unfamiliar, or simply allowing yourself time to think without a specific objective all contribute to a richer life. Yet these are often the first things sacrificed when work expands to fill every available space.&lt;/p&gt;

&lt;p&gt;The irony is that many of these activities are not obstacles to success. In many cases, they are what sustain it. Healthy relationships provide support during difficult periods. Good physical health creates energy and resilience. Hobbies and personal interests introduce new perspectives that often improve creative thinking and problem-solving. A balanced life does not compete with professional success; it frequently makes long-term success possible.&lt;/p&gt;

&lt;p&gt;This is not an argument against hard work. Meaningful careers are rarely built without discipline, sacrifice, and periods of intense focus. Every profession has seasons where additional effort is required. Entrepreneurs experience it. Researchers experience it. Software engineers experience it. Anyone pursuing ambitious goals will eventually encounter periods where work demands more attention than usual.&lt;/p&gt;

&lt;p&gt;The distinction lies in whether those periods remain seasons or become permanent conditions.&lt;/p&gt;

&lt;p&gt;A season has a beginning and an end. Permanent overwork becomes an identity. When every month feels like a sprint, when every accomplishment immediately leads to another obligation, and when rest constantly feels undeserved, something important has been lost. At that point, work is no longer helping to build a life. It has quietly become the life itself.&lt;/p&gt;

&lt;p&gt;Perhaps this is why some of the most fulfilled people are not necessarily those who work the least or achieve the most. They are often the people who understand the purpose of their work. They recognize that careers are important, but they also understand that careers exist within a larger framework. Professional success is only one component of a meaningful life, not the entire definition of it.&lt;/p&gt;

&lt;p&gt;Work matters. Achievement matters. Growth matters.&lt;/p&gt;

&lt;p&gt;But the relationships we maintain, the experiences we collect, the health we preserve, and the interests we cultivate matter too. These are not distractions from life. They are life.&lt;/p&gt;

&lt;p&gt;The danger is not working hard. The danger is reaching a point where work becomes so dominant that everything else is treated as an interruption.&lt;/p&gt;

&lt;p&gt;Because at the end of the day, work is meant to support a life worth living.&lt;/p&gt;

&lt;p&gt;It was never supposed to replace it.&lt;/p&gt;




&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;I'm a Software Engineer, Applied Researcher, and Open-Source Enthusiast with interests spanning software engineering, artificial intelligence, cloud computing, system design, and digital product development.&lt;/p&gt;

&lt;p&gt;Beyond writing, I work with founders, startups, businesses, researchers, and organizations to design and build scalable software solutions. Whether it's developing a new platform, modernizing an existing system, architecting cloud infrastructure, or transforming an idea into a working product, I enjoy helping turn ideas into reality.&lt;/p&gt;

&lt;p&gt;I'm also passionate about supporting educational initiatives, student communities, research collaborations, and social-impact projects. If you're building something meaningful and need technical guidance, website development, or software engineering support, feel free to reach out. For selected community-driven and non-commercial initiatives, I'm happy to contribute on a voluntary basis whenever my schedule allows.&lt;/p&gt;

&lt;p&gt;Technology creates opportunities, but meaningful impact comes from how we choose to use them.&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
      <category>mentalhealth</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The Fastest Way to Make an AI Project Expensive</title>
      <dc:creator>restu ananda saputra</dc:creator>
      <pubDate>Sun, 21 Jun 2026 14:02:15 +0000</pubDate>
      <link>https://dev.to/restuananda/the-fastest-way-to-make-an-ai-project-expensive-4e1k</link>
      <guid>https://dev.to/restuananda/the-fastest-way-to-make-an-ai-project-expensive-4e1k</guid>
      <description>&lt;p&gt;Over the past year, I’ve noticed a pattern in many AI discussions.&lt;/p&gt;

&lt;p&gt;Someone describes a business problem. The team starts brainstorming solutions. A few minutes later, somebody says:&lt;/p&gt;

&lt;p&gt;“Let’s build an agent.”&lt;/p&gt;

&lt;p&gt;At that point, the conversation often jumps straight into frameworks, orchestration layers, memory systems, tool calling, and multi-agent architectures.&lt;/p&gt;

&lt;p&gt;What’s interesting is that many projects never needed an agent in the first place.&lt;/p&gt;

&lt;p&gt;The excitement around agentic AI has created a situation where teams sometimes begin with the implementation pattern rather than the actual problem they’re trying to solve. As a result, complexity enters the system long before anyone has clearly defined what the AI needs to know, what information it should access, and what actions it is allowed to take.&lt;/p&gt;

&lt;p&gt;A more practical approach is to work backwards from the job itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start With Understanding&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many AI applications only need to understand information, summarize documents, classify content, extract insights, or generate responses.&lt;/p&gt;

&lt;p&gt;In these cases, an LLM is often enough.&lt;/p&gt;

&lt;p&gt;The challenge isn’t building an agent. The challenge is designing prompts, workflows, and validation processes that consistently produce useful results.&lt;/p&gt;

&lt;p&gt;Adding more moving parts doesn’t automatically create more value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Then Ask Where Knowledge Comes From&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The next question is whether the model needs information beyond what it already knows.&lt;/p&gt;

&lt;p&gt;If answers depend on internal documentation, company policies, product information, or knowledge that changes frequently, retrieval becomes important.&lt;/p&gt;

&lt;p&gt;This is where RAG and vector databases can be extremely useful.&lt;/p&gt;

&lt;p&gt;However, I’ve seen teams use retrieval systems for problems that are actually database problems.&lt;/p&gt;

&lt;p&gt;If a customer asks for an account balance, order status, invoice history, or CRM record, the answer usually shouldn’t come from a vector database.&lt;/p&gt;

&lt;p&gt;A direct system query is often simpler, cheaper, and more reliable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access Is More Important Than Intelligence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once an AI system starts interacting with business tools, the conversation changes.&lt;/p&gt;

&lt;p&gt;Download the Medium app&lt;br&gt;
At that point, the most important questions are no longer about model quality.&lt;/p&gt;

&lt;p&gt;They’re about permissions.&lt;/p&gt;

&lt;p&gt;What can the system access?&lt;/p&gt;

&lt;p&gt;What actions can it perform?&lt;/p&gt;

&lt;p&gt;What should require approval?&lt;/p&gt;

&lt;p&gt;What should remain entirely under human control?&lt;/p&gt;

&lt;p&gt;In many situations, a straightforward API integration is all that’s needed. More advanced approaches become valuable when organizations want a standardized way to connect multiple tools, systems, and data sources across different applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This Is Where Agents Begin To Matter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agent design becomes valuable when the system must make decisions across multiple steps while handling exceptions, uncertainty, and changing conditions.&lt;/p&gt;

&lt;p&gt;A support chatbot that answers questions from documentation may only require an LLM and retrieval.&lt;/p&gt;

&lt;p&gt;A system that checks account information, validates policies, updates tickets, requests approvals, communicates with customers, and adapts to different outcomes is solving a very different problem.&lt;/p&gt;

&lt;p&gt;That is where orchestration starts becoming necessary.&lt;/p&gt;

&lt;p&gt;Not because agents are fashionable.&lt;/p&gt;

&lt;p&gt;Because the workflow genuinely requires them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Real Engineering Challenge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What I’ve learned is that production AI isn’t defined by whether a model can use tools.&lt;/p&gt;

&lt;p&gt;It’s defined by where you allow the model to exercise judgment and where the surrounding system maintains control.&lt;/p&gt;

&lt;p&gt;The most successful AI projects rarely start by asking:&lt;/p&gt;

&lt;p&gt;“How do we build an agent?”&lt;/p&gt;

&lt;p&gt;They start by asking:&lt;/p&gt;

&lt;p&gt;“What job are we trying to accomplish?”&lt;/p&gt;

&lt;p&gt;Everything else usually becomes much easier to design after that.&lt;/p&gt;

&lt;h1&gt;
  
  
  AI #ArtificialIntelligence #AIEngineering #LLM #AgenticAI #SoftwareEngineering #SystemDesign #MachineLearning #RAG #Technology #GenerativeAI #ProductDevelopment #Architecture
&lt;/h1&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>discuss</category>
      <category>management</category>
    </item>
  </channel>
</rss>
