<?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: Hidaya Vanessa</title>
    <description>The latest articles on DEV Community by Hidaya Vanessa (@tech_with_nessah).</description>
    <link>https://dev.to/tech_with_nessah</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3347502%2Faf2718c3-9ffb-4c3d-9205-fe85ecd856cc.png</url>
      <title>DEV Community: Hidaya Vanessa</title>
      <link>https://dev.to/tech_with_nessah</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tech_with_nessah"/>
    <language>en</language>
    <item>
      <title>Consuming APIs from a Backend POV: Normalizing Data Across Multiple Endpoints</title>
      <dc:creator>Hidaya Vanessa</dc:creator>
      <pubDate>Mon, 19 Jan 2026 14:06:22 +0000</pubDate>
      <link>https://dev.to/tech_with_nessah/consuming-apis-from-a-backend-pov-normalizing-data-across-multiple-endpoints-2jm3</link>
      <guid>https://dev.to/tech_with_nessah/consuming-apis-from-a-backend-pov-normalizing-data-across-multiple-endpoints-2jm3</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How my bookstore project taught me that APIs don’t always tell the same story&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ve been building an online bookstore called &lt;strong&gt;Hearthside Reads&lt;/strong&gt;.&lt;br&gt;
Nothing fancy just books, authors, and the metadata that makes a bookstore feel complete: ISBNs, descriptions, covers, the usual stuff.&lt;/p&gt;

&lt;p&gt;Like most people, I didn’t want to manually enter all this data, so I did what made sense.&lt;/p&gt;

&lt;p&gt;I turned to external APIs.&lt;/p&gt;


&lt;h3&gt;
  
  
  Where it all started
&lt;/h3&gt;

&lt;p&gt;The first API I used was the &lt;em&gt;Open Library API&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It worked… but not consistently.&lt;/p&gt;

&lt;p&gt;Some books came back without ISBNs. Others had no descriptions. In some cases, the author data felt a bit off or incomplete.&lt;/p&gt;

&lt;p&gt;At first, I thought:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Maybe this is just how it is.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But I wanted richer data, so I added a second source: &lt;em&gt;Google Books API&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;My thinking was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If one API is missing something, the other one probably has it.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And that part was true.&lt;/p&gt;

&lt;p&gt;What I didn’t anticipate was the new set of problems that came with it.&lt;/p&gt;


&lt;h3&gt;
  
  
  Where things started getting messy
&lt;/h3&gt;

&lt;p&gt;Once I started consuming data from both APIs, I noticed a few things almost immediately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The same book showed up more than once&lt;/li&gt;
&lt;li&gt;Author names were formatted differently&lt;/li&gt;
&lt;li&gt;ISBNs existed in one response but not the other&lt;/li&gt;
&lt;li&gt;Descriptions didn’t always match&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Same book.Different versions of the truth.&lt;/p&gt;

&lt;p&gt;Here’s a simplified example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Library response&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "title": "The Hobbit",
  "authors": [{ "name": "J.R.R. Tolkien" }],
  "isbn_10": ["0345339681"]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Google Books response&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "volumeInfo": {
    "title": "The Hobbit",
    "authors": ["J. R. R. Tolkien"],
    "industryIdentifiers": [
      { "type": "ISBN_13", "identifier": "9780345339683" }
    ]
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both are correct. Both describe the same book But if you store this data as it comes, you’re asking for trouble.&lt;/p&gt;




&lt;h3&gt;
  
  
  The real problem (that took me a while to see)
&lt;/h3&gt;

&lt;p&gt;The problem wasn’t Open Library and itcertainly wasn’t Google Books. The problem was me assuming external APIs would agree with each other.&lt;/p&gt;

&lt;p&gt;They don’t.&lt;/p&gt;

&lt;p&gt;Each API has its own structure, priorities, and idea of what “complete” data looks like. That’s when I ran into the concept that quietly fixed everything:&lt;strong&gt;Normalization.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  So… what is normalization?
&lt;/h3&gt;

&lt;p&gt;In the simplest terms:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Normalization is deciding what your data should look like, then forcing everything else to conform to it.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For non‑techies:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;It’s cleaning and standardizing information before saving it&lt;/em&gt;&lt;br&gt;
&lt;em&gt;It’s making sure one book doesn’t end up with five slightly different identities&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;It’s mapping external API responses into a single internal schema&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Either way, the idea is the same:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;One system. One structure. One source of truth.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Why normalization actually matters
&lt;/h3&gt;

&lt;p&gt;Before normalization, I had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Duplicate books in my database&lt;/li&gt;
&lt;li&gt;Inconsistent author names&lt;/li&gt;
&lt;li&gt;Unreliable ISBN lookups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After normalization:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One book = one record&lt;/li&gt;
&lt;li&gt;Predictable fields&lt;/li&gt;
&lt;li&gt;Much cleaner logic downstream&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s one of those things that doesn’t feel exciting, but quietly saves you hours of debugging later.&lt;/p&gt;




&lt;h3&gt;
  
  
  Achieving Normailzation
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Step one: Decide what a “book” means to you
&lt;/h4&gt;

&lt;p&gt;Before touching any API logic, I had to answer a simple question:&lt;br&gt;
&lt;em&gt;"What does a book look like inside my system?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here’s the structure I settled on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Book = {
    "title": str,
    "authors": list[str],
    "isbn_10": str | None,
    "isbn_13": str | None,
    "description": str | None
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This became my reference point.&lt;/p&gt;

&lt;p&gt;Anything coming from outside had to be reshaped to fit this.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step two: Normalize each API separately
&lt;/h4&gt;

&lt;p&gt;Instead of mixing logic, I treated each API independently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Library normalization&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def normalize_openlibrary(data):
    return {
        "title": data.get("title"),
        "authors": [a.get("name") for a in data.get("authors", [])],
        "isbn_10": data.get("isbn_10", [None])[0],
        "isbn_13": data.get("isbn_13", [None])[0],
        "description": data.get("description")
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Google Books normalization&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def normalize_googlebooks(data):
    info = data.get("volumeInfo", {})

    isbn_10 = None
    isbn_13 = None

    for identifier in info.get("industryIdentifiers", []):
        if identifier["type"] == "ISBN_10":
            isbn_10 = identifier["identifier"]
        elif identifier["type"] == "ISBN_13":
            isbn_13 = identifier["identifier"]

    return {
        "title": info.get("title"),
        "authors": info.get("authors", []),
        "isbn_10": isbn_10,
        "isbn_13": isbn_13,
        "description": info.get("description")
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this point, both APIs were finally speaking the same language.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step three: merging without duplicating
&lt;/h4&gt;

&lt;p&gt;Normalization gets your data into the same shape.Merging decides which data wins.&lt;/p&gt;

&lt;p&gt;My rules were simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Prefer ISBN‑13 when available&lt;/li&gt;
&lt;li&gt;Use Google Books as a fallback for missing descriptions
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def merge_books(primary, fallback):
    return {
        "title": primary["title"] or fallback["title"],
        "authors": primary["authors"] or fallback["authors"],
        "isbn_10": primary["isbn_10"] or fallback["isbn_10"],
        "isbn_13": primary["isbn_13"] or fallback["isbn_13"],
        "description": primary["description"] or fallback["description"],
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nothing fancy. Just clear rules.&lt;br&gt;
The mental model that helped me was I started thinking of APIs as raw ingredients, normalization as the recipe and the database as the final dish.&lt;/p&gt;

&lt;p&gt;If you skip the recipe, you still get food just not something you’d confidently serve.&lt;/p&gt;




&lt;h3&gt;
  
  
  What I took away from this
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;APIs don’t owe you consistency&lt;/li&gt;
&lt;li&gt;More data sources = more responsibility&lt;/li&gt;
&lt;li&gt;Normalization isn’t optional once you scale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly, I learned that backend work isn’t just about fetching data. It’s about deciding what truth looks like in your system and enforcing it.&lt;/p&gt;

&lt;p&gt;If you’re consuming multiple APIs and things feel slightly off, normalization is probably the missing piece.&lt;/p&gt;

&lt;p&gt;Happy building 🚀&lt;/p&gt;

</description>
      <category>programming</category>
      <category>python</category>
      <category>architecture</category>
      <category>api</category>
    </item>
    <item>
      <title>AI Agents: More Than Chatbots, Less Than Sci-Fi</title>
      <dc:creator>Hidaya Vanessa</dc:creator>
      <pubDate>Sun, 21 Dec 2025 15:35:04 +0000</pubDate>
      <link>https://dev.to/tech_with_nessah/ai-agents-more-than-chatbots-less-than-sci-fi-5a0d</link>
      <guid>https://dev.to/tech_with_nessah/ai-agents-more-than-chatbots-less-than-sci-fi-5a0d</guid>
      <description>&lt;p&gt;When you hear &lt;strong&gt;AI agents&lt;/strong&gt;, what comes to mind?&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExOHQyMjltaDRmNzc1cWFodWQ5MDh3cGRrbzd6Zjl2bm1mNGd0czd2NiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/UUhBuH0kpDRFyoFKg6/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExOHQyMjltaDRmNzc1cWFodWQ5MDh3cGRrbzd6Zjl2bm1mNGd0czd2NiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/UUhBuH0kpDRFyoFKg6/giphy.gif" alt="Cyborg gif" width="480" height="270"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;For many people, it’s sophisticated bots running around on their own, something straight out of a sci-fi movie. And while there is a tiny bit of truth in that, the reality is far less dramatic and far more useful.&lt;/p&gt;

&lt;p&gt;At their core, &lt;strong&gt;AI agents are simply software systems that can think, decide, and act on their own with little to no human intervention.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think of them as &lt;strong&gt;smart assistants&lt;/strong&gt;, not robots.&lt;/p&gt;

&lt;p&gt;Imagine telling your assistant:&lt;br&gt;&lt;br&gt;
&lt;em&gt;"I need a weekly report."&lt;/em&gt;  &lt;/p&gt;

&lt;p&gt;Instead of just giving suggestions, the agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;figures out what should go into the report,&lt;/li&gt;
&lt;li&gt;gathers the relevant information,&lt;/li&gt;
&lt;li&gt;compiles it,&lt;/li&gt;
&lt;li&gt;and even emails it to your team lead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s an AI agent in action.&lt;/p&gt;


&lt;h2&gt;
  
  
  Where Do We Draw the Line Between AI Agents and Chatbots?
&lt;/h2&gt;

&lt;p&gt;This is where most confusion happens.&lt;/p&gt;
&lt;h3&gt;
  
  
  Chatbots
&lt;/h3&gt;

&lt;p&gt;Chatbots are reactive.&lt;br&gt;&lt;br&gt;
They respond to prompts and guide &lt;em&gt;you&lt;/em&gt; through tasks.&lt;/p&gt;

&lt;p&gt;A chatbot can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;help you draft a report,&lt;/li&gt;
&lt;li&gt;suggest improvements,&lt;/li&gt;
&lt;li&gt;help write an email.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But &lt;strong&gt;you still do the execution&lt;/strong&gt; copying, pasting, sending, deciding the next step.&lt;/p&gt;
&lt;h3&gt;
  
  
  AI Agents
&lt;/h3&gt;

&lt;p&gt;AI agents go a step further.&lt;/p&gt;

&lt;p&gt;They don’t just assist,&lt;strong&gt;they execute&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An AI agent can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;plan the steps needed to complete a task,&lt;/li&gt;
&lt;li&gt;take actions on your behalf,&lt;/li&gt;
&lt;li&gt;use tools,&lt;/li&gt;
&lt;li&gt;and decide what to do next based on results.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Chatbots talk. AI agents act.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  What Powers AI Agents? (Their “Superpowers”)
&lt;/h2&gt;

&lt;p&gt;AI agents work because of a few key capabilities working together:&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Memory
&lt;/h3&gt;

&lt;p&gt;AI agents can remember past interactions, data, or outcomes.&lt;br&gt;&lt;br&gt;
This allows them to learn from previous tasks and improve over time.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Reasoning
&lt;/h3&gt;

&lt;p&gt;They can break down complex tasks into smaller, logical steps.&lt;br&gt;&lt;br&gt;
Instead of being told &lt;em&gt;every single action&lt;/em&gt;, they figure out &lt;em&gt;how&lt;/em&gt; to get things done.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Tools &amp;amp; Actions
&lt;/h3&gt;

&lt;p&gt;AI agents can use external tools, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;databases,&lt;/li&gt;
&lt;li&gt;APIs,&lt;/li&gt;
&lt;li&gt;browsers,&lt;/li&gt;
&lt;li&gt;files,&lt;/li&gt;
&lt;li&gt;calendars,&lt;/li&gt;
&lt;li&gt;email systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is what allows them to actually &lt;em&gt;do&lt;/em&gt; things, not just suggest them.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Autonomy
&lt;/h3&gt;

&lt;p&gt;Once given a goal, an AI agent can work independently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no fatigue,&lt;/li&gt;
&lt;li&gt;no boredom,&lt;/li&gt;
&lt;li&gt;no constant prompting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This autonomy is what separates agents from traditional automation.&lt;/p&gt;


&lt;h2&gt;
  
  
  So… What’s the Big Deal About AI Agents?
&lt;/h2&gt;

&lt;p&gt;
  &lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExZWFxeHl1bTYyMDdrNXJ3NHh3M2lueWdoNXowMHVwOWppanR5bGVwdiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/l378uDY03w4rkDGvK/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExZWFxeHl1bTYyMDdrNXJ3NHh3M2lueWdoNXowMHVwOWppanR5bGVwdiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/l378uDY03w4rkDGvK/giphy.gif" alt="Big deal gif" width="480" height="271"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Here’s where it really clicks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Illustration: Chatbot vs AI Agent in Real Life
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario: Scheduling a team meeting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With a chatbot:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You ask for help scheduling.&lt;/li&gt;
&lt;li&gt;It suggests possible times.&lt;/li&gt;
&lt;li&gt;You check calendars.&lt;/li&gt;
&lt;li&gt;You send emails.&lt;/li&gt;
&lt;li&gt;You follow up manually.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;With an AI agent:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You say: &lt;em&gt;"Schedule a team meeting for next week."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The agent:

&lt;ul&gt;
&lt;li&gt;checks everyone’s availability,&lt;/li&gt;
&lt;li&gt;picks an optimal time,&lt;/li&gt;
&lt;li&gt;sends calendar invites,&lt;/li&gt;
&lt;li&gt;sends reminders,&lt;/li&gt;
&lt;li&gt;reschedules if conflicts appear.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You don’t manage the steps &lt;strong&gt;the agent does&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why This Matters
&lt;/h3&gt;

&lt;p&gt;AI agents can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;handle repetitive tasks (scheduling, reminders, follow-ups),&lt;/li&gt;
&lt;li&gt;run automations (customer support, internal workflows),&lt;/li&gt;
&lt;li&gt;monitor systems and trigger actions when something changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This frees humans to focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;creativity,&lt;/li&gt;
&lt;li&gt;decision-making,&lt;/li&gt;
&lt;li&gt;strategy,&lt;/li&gt;
&lt;li&gt;and problem-solving.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Types of AI Agents
&lt;/h2&gt;

&lt;p&gt;AI agents come in different forms depending on what they’re built to do:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Task Agents&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Focus on a single job (e.g., sending reports, answering tickets).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Workflow Agents&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Handle longer chains of steps and decisions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-Agent Systems&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Multiple agents working together, each with a role, like a team.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Embedded Agents&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Built directly into apps or systems to quietly assist in the background.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  How AI Agents Actually Work (High-Level Flow)
&lt;/h2&gt;

&lt;p&gt;You can think of an AI agent’s workflow like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Request
   │
Think
   │
Decide
   │
  Act
   │
Observe
   │
Improve

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;A request is made.&lt;/li&gt;
&lt;li&gt;The agent reasons about the task.&lt;/li&gt;
&lt;li&gt;It selects the right tools.&lt;/li&gt;
&lt;li&gt;It performs actions.&lt;/li&gt;
&lt;li&gt;It observes the results.&lt;/li&gt;
&lt;li&gt;It adjusts if needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No sci-fi. Just structured decision-making.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;AI agents aren’t here to replace humans or take over the world.&lt;/p&gt;

&lt;p&gt;They’re here to &lt;strong&gt;handle the busy work&lt;/strong&gt;: the repetitive, time-consuming tasks that slow teams down.&lt;/p&gt;

&lt;p&gt;Think of them as &lt;strong&gt;reliable digital coworkers&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
quiet, tireless, and surprisingly practical.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>automation</category>
      <category>beginners</category>
      <category>ai</category>
    </item>
    <item>
      <title>I Am Two Years in Tech and I'm Not Afraid to Admit That:</title>
      <dc:creator>Hidaya Vanessa</dc:creator>
      <pubDate>Sat, 20 Dec 2025 22:37:40 +0000</pubDate>
      <link>https://dev.to/tech_with_nessah/i-am-two-years-in-tech-and-im-not-afraid-to-admit-that-457h</link>
      <guid>https://dev.to/tech_with_nessah/i-am-two-years-in-tech-and-im-not-afraid-to-admit-that-457h</guid>
      <description>&lt;h3&gt;
  
  
  1. I don’t have it all figured out
&lt;/h3&gt;

&lt;p&gt;When I first started out, I thought that by now I’d have found my niche in tech. I imagined I’d be confidently calling myself a frontend expert or clearly walking one defined path.&lt;/p&gt;

&lt;p&gt;Well that hasn’t happened yet and I’m learning to be okay with that.&lt;/p&gt;

&lt;p&gt;What I’ve realized instead is that I’m someone who uses technology based on need. If a project requires data analysis, I’ll lean into data. If it needs automation, I’ll build it. If integrating LLMs makes sense, I’ll explore that too. Not because data or AI is my niche, but because the problem demanded certain tools and principles.&lt;/p&gt;

&lt;p&gt;Maybe my path isn’t about narrowing down quickly. Maybe it’s about learning how to adapt, explore, and build what’s needed and letting clarity emerge with time.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. I still Google syntax and concepts
&lt;/h3&gt;

&lt;p&gt;A lot.&lt;/p&gt;

&lt;p&gt;Mention something unfamiliar to me and I’m probably already opening a new tab to understand it better. I used to think that by now, things should just &lt;em&gt;stick&lt;/em&gt;, that knowing how to code meant memorizing syntax and concepts.&lt;/p&gt;

&lt;p&gt;What I’m slowly unlearning is this: good developers aren’t walking encyclopedias. They’re problem solvers.&lt;/p&gt;

&lt;p&gt;Googling isn’t a weakness; it’s part of the workflow. It’s how things get built. Accepting this has helped me stop measuring my competence by how much I can recall, and start measuring it by how well I can figure things out.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. There are moments impostor syndrome gets the best of me
&lt;/h3&gt;

&lt;p&gt;Especially when I’m in rooms with people who sound more confident, move fast, and seem to know exactly what they’re doing.&lt;/p&gt;

&lt;p&gt;Sometimes it shows up quietly in the form of a small voice asking if I really belong here. Other times it’s loud, convincing me I’m behind or just pretending. But I’ve started to notice something: impostor syndrome tends to show up when I care deeply, when I’m stretching myself, and when I’m stepping into spaces that challenge me.&lt;/p&gt;

&lt;p&gt;And maybe that’s not a sign of inadequacy,maybe it’s a sign of growth.&lt;/p&gt;




&lt;h2&gt;
  
  
  How Am I Coping?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. By surrounding myself with developers who’ve been where I am
&lt;/h3&gt;

&lt;p&gt;Not people who pretend the journey was easy, but people who remember what it felt like to be confused, unsure, and still showing up.&lt;/p&gt;

&lt;p&gt;Being in community has reminded me that many of the struggles I experience aren’t personal failures, rather they’re shared experiences. Seeing others a few steps ahead who once stood where I am gives me perspective, reassurance, and hope.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. By putting myself in rooms that stretch me
&lt;/h3&gt;

&lt;p&gt;Not to compare myself or shrink, but to listen, connect, and learn.&lt;/p&gt;

&lt;p&gt;Truth be told, it’s uncomfortable sometimes. I don’t always feel like I have something impressive to say. But I’m learning that growth rarely happens in isolation or comfort. It happens when you stay in the room long enough to listen, ask questions, and allow yourself to be seen.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. By doing things that scare me: like writing this post
&lt;/h3&gt;

&lt;p&gt;This has been on my to-do list since January. Not because I didn’t have time, but because I was afraid of being perceived. Afraid of saying the wrong thing. Afraid of not sounding “ready.”&lt;/p&gt;

&lt;p&gt;Publishing this feels like winning a battle against self&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExcTNjaG04aGllbzBoYjQ5ejVlMGRzMGgyM3VzMWo3a2E0MW40bHBiNCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/uTuLngvL9p0Xe/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExcTNjaG04aGllbzBoYjQ5ejVlMGRzMGgyM3VzMWo3a2E0MW40bHBiNCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/uTuLngvL9p0Xe/giphy.gif" alt="Excited techie" width="200" height="270"&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  A small introduction
&lt;/h2&gt;

&lt;p&gt;Hi there,&lt;br&gt;&lt;br&gt;
I’m Nessah, well it's Vanessa(but feel free to call me Nessah)&lt;br&gt;
I'm just a techie navigating the uncharted waters of this industry.&lt;/p&gt;

&lt;p&gt;Welcome to my tech journal.&lt;br&gt;&lt;br&gt;
It's not a highlight reel, but a record. A place to think out loud, document what I’m learning, and make sense of the work as it unfolds.&lt;/p&gt;

&lt;p&gt;Here you’ll find technical notes, half-formed ideas, lessons that only make sense after you trip over them, and reflections from navigating an industry that moves fast and rarely waits for certainty.&lt;/p&gt;

&lt;p&gt;Please be nice😊&lt;/p&gt;

</description>
      <category>programming</category>
      <category>writing</category>
      <category>developer</category>
    </item>
    <item>
      <title>How social media changes my life:My PLP Story</title>
      <dc:creator>Hidaya Vanessa</dc:creator>
      <pubDate>Sat, 12 Jul 2025 04:49:22 +0000</pubDate>
      <link>https://dev.to/tech_with_nessah/how-social-media-changes-my-lifemy-plp-story-1l8</link>
      <guid>https://dev.to/tech_with_nessah/how-social-media-changes-my-lifemy-plp-story-1l8</guid>
      <description>&lt;p&gt;I didn’t plan this.&lt;/p&gt;

&lt;p&gt;One day, I was just scrolling through social media, doing what we all do, tapping, liking, minding my own business, when I stumbled on a post from Power Learn Project Africa (PLP). And boom, something in me lit up.&lt;/p&gt;

&lt;p&gt;I don’t even remember the exact caption. All I know is that it spoke about tech, youth, community, and opportunity. Then I saw their hashtag: #MillionDevsForAfrica. That stuck.&lt;/p&gt;

&lt;p&gt;I kept reading, and that’s when I discovered that PLP isn’t just about code. It’s about people. Real people. Young Africans. People like me. It’s a Pan-African organization giving youth access to technical skills, helping them build careers in software engineering, and even offering scholarships to make that happen. Tell me that’s not amazing?&lt;/p&gt;

&lt;p&gt;But it wasn’t just the scholarship thing that got me. What really pulled me in was their vibe, their Coffee and Code sessions. Students meeting up to code, connect, and share ideas over a cup of coffee? I was sold. Like, why wasn’t this already happening at my university? Or in my city? Why wasn’t Eldoret part of this story?&lt;/p&gt;

&lt;p&gt;And that’s when it hit me: Maybe I could bring it here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, I Applied&lt;/strong&gt;&lt;br&gt;
No hesitation, no overthinking. I saw they were looking for Campus Ambassadors and I knew this was it. A chance to bring something powerful to my university. A chance to create a space for students to grow together, to learn and code in the most real, chill, community-driven way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fast forward to now…&lt;/strong&gt;&lt;br&gt;
I Got the Role 😭&lt;br&gt;
I’m officially a PLP Campus Ambassador!!&lt;/p&gt;

&lt;p&gt;This isn’t just a title for me. It’s a responsibility. It’s a dream. I’m about to power up UoE and help create a community where devs don’t feel alone, where ideas are shared freely, where coffee and code are a lifestyle (yes, I’m serious 😅).&lt;/p&gt;

&lt;p&gt;I want people to walk into our sessions and feel like they belong. Whether they’re just curious about tech or already knee-deep in code, this community is for all of us.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This Is Bigger Than Me&lt;/strong&gt;&lt;br&gt;
Honestly, this whole thing has reminded me that one small decision,even something as simple as reading a social media post, can change your life's course.&lt;/p&gt;

&lt;p&gt;So if you're reading this and you’ve ever doubted if you can be a part of tech, if you’ve ever felt like opportunities aren’t made for you  I’m here to tell you: they are.PLP believes in that. And now, so do I.&lt;/p&gt;

&lt;p&gt;We’re building something in Eldoret. And it’s going to be beautiful.&lt;/p&gt;

&lt;p&gt;Let’s go. #MillionDevsForAfrica #PLPAfrica #CoffeeAndCode #UoEPoweredUp&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
