<?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: divya bathoju</title>
    <description>The latest articles on DEV Community by divya bathoju (@divya_bathoju).</description>
    <link>https://dev.to/divya_bathoju</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%2F3157995%2Fc22fafde-f56e-4bfc-9129-533984d18c59.jpg</url>
      <title>DEV Community: divya bathoju</title>
      <link>https://dev.to/divya_bathoju</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/divya_bathoju"/>
    <language>en</language>
    <item>
      <title>Beyond the AI Hype: Navigating Migration, Compression, and the Future of Engineering</title>
      <dc:creator>divya bathoju</dc:creator>
      <pubDate>Mon, 19 Oct 2026 23:26:23 +0000</pubDate>
      <link>https://dev.to/divya_bathoju/beyond-the-ai-hype-navigating-migration-compression-and-the-future-of-engineering-497b</link>
      <guid>https://dev.to/divya_bathoju/beyond-the-ai-hype-navigating-migration-compression-and-the-future-of-engineering-497b</guid>
      <description>&lt;p&gt;Over the past year, my daily workflow as a developer has fundamentally shifted. I transitioned from writing code manually to prompting AI, developing &lt;a href="https://github.com/divyabattoju/intent-driven-development-kit" rel="noopener noreferrer"&gt;dedicated toolkit&lt;/a&gt; to refine prompt quality, and integrating AI into every stage of the software development lifecycle. &lt;/p&gt;

&lt;p&gt;Working like this every day has given me a much more grounded perspective on where software engineering is actually heading. I don't buy the narrative that AI is going to kill coding or make software engineers obsolete overnight. What I am seeing instead is a clear structural shift: an intensive &lt;strong&gt;Migration Era&lt;/strong&gt; followed by a gradual &lt;strong&gt;Compression of the Core Engineering Team&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is what that looks like from the ground level. I'd love to hear how this aligns with what you're seeing in your own teams.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 1: The Migration Era is a Dual-Track Reality
&lt;/h3&gt;

&lt;p&gt;Before engineering teams can get smaller or move faster, most companies have to undergo a massive wave of technical cleanup and restructuring. This migration isn't headline-grabbing work, but it's happening along two parallel tracks right now:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Track 1: System Modernization (Cleaning Up Technical Debt):&lt;/strong&gt; We are using automated scripts and AI tools to untangle legacy monolithic code, build reliable test suites, and migrate outdated dependencies to managed infrastructure. The goal here is simple: reduce the maintenance tax required just to keep existing systems running.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Track 2: Data Restructuring (Preparing for AI Capabilities):&lt;/strong&gt; You can't deploy reliable AI features or autonomous agents without structured, accessible data. Most organizations are realizing that to build anything meaningful, they have to overhaul their internal data pipelines, consolidate APIs, and clean up domain models first.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The major risk during this phase is rushing in without a strategy. If teams just use LLMs to spit out syntax faster without fixing their underlying architecture, they end up creating a messy hybrid state.&lt;br&gt;
This creates immense &lt;strong&gt;cognitive debt&lt;/strong&gt;, resulting in sprawling, unmaintainable codebases that no single developer fully understands, paired with fragile data schemas and endless code review bottlenecks. The teams making real progress are the ones taking time to build clean interfaces and unified data foundations that AI assistants can safely work with.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 2: Outsourced Infrastructure and Team Compression
&lt;/h3&gt;

&lt;p&gt;Critics will rightly point out that it takes a village to run software. Maintaining server stability, monitoring uptime, patching endless security vulnerabilities, and handling strict enterprise compliance (like GDPR or data sovereignty) is a relentless, full-time job. &lt;/p&gt;

&lt;p&gt;That’s true, but modern engineering teams rarely build or maintain that heavy machinery in-house anymore. They offload it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Infrastructure overhead is pushed to fully managed platforms like AWS, Cloudflare, or Vercel.&lt;/li&gt;
&lt;li&gt;Complex business domains are delegated to specialized APIs like Stripe for payments or Auth0/Clerk for identity management.&lt;/li&gt;
&lt;li&gt;Automated pipelines and monitoring bots flag, test, and patch security dependencies before engineers even open a ticket.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because so much underlying operational weight is handled by third-party platforms and automation, internal engineering team structures are naturally changing.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Realistic Future: Compression, Not Disappearance
&lt;/h3&gt;

&lt;p&gt;There’s plenty of hype right now about solo developers building billion-dollar companies or small teams replacing enterprise giants overnight. Practically speaking, that’s an edge case.&lt;br&gt;
Building software at scale still involves navigating human problems, localized laws, user research, customer support, and strategic trade-offs. You can’t comfortably run a scaling enterprise product with two people without burning out.&lt;br&gt;
Real businesses have to solve multiple, complex, deeply human problems at once (from localized legal compliance to nuanced user psychology). You cannot run a sprawling enterprise system with two overworked founders without facing catastrophic burnout.&lt;/p&gt;

&lt;p&gt;Instead, the true shift will be &lt;strong&gt;Team Compression&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;What is actually happening is &lt;strong&gt;Team Compression&lt;/strong&gt;. Engineering pods are becoming leaner and more concentrated. Instead of needing ten developers to build and maintain a core service, a focused team of two or three senior engineers can achieve the same output by orchestrating AI tools and managed services. Organizations that once needed a hundred engineers to handle coordination and maintenance can operate far more efficiently with twenty.&lt;/p&gt;

&lt;h3&gt;
  
  
  The New Developer Skillset
&lt;/h3&gt;

&lt;p&gt;As AI tools handle routine code generation, pure syntax writing is no longer the main bottleneck. Value has shifted heavily toward &lt;strong&gt;system architecture, data design, product intuition, and domain knowledge&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The most impactful engineers will be those who know how to connect systems securely, organize clean data pipelines, and translate real business problems into working software.&lt;/p&gt;

&lt;h3&gt;
  
  
  Over to You: Agree or Disagree?
&lt;/h3&gt;

&lt;p&gt;This reflects what I've experienced firsthand while building alongside AI tooling over the last year.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Do you agree&lt;/strong&gt; that data restructuring and technical debt cleanup are the biggest roadblocks right now, and that solving them will naturally lead to smaller teams?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Or do you think&lt;/strong&gt; the ongoing maintenance and debugging burden of AI-assisted code will force teams to stay large just to manage the complexity?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love to hear your thoughts in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Add AI to your existing web APIs using Semantic Kernel</title>
      <dc:creator>divya bathoju</dc:creator>
      <pubDate>Tue, 13 May 2025 11:52:32 +0000</pubDate>
      <link>https://dev.to/divya_bathoju/add-ai-to-your-existing-web-apis-using-semantic-kernel-1ecm</link>
      <guid>https://dev.to/divya_bathoju/add-ai-to-your-existing-web-apis-using-semantic-kernel-1ecm</guid>
      <description>&lt;p&gt;Are you looking to integrate artificial intelligence into your .NET APIs without a complete overhaul? Consider Semantic Kernel, a tool that allows smooth AI prompt integration with your application logic, adding intelligence and automation easily.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/semantic-kernel/get-started/quick-start-guide?pivots=programming-language-csharp" rel="noopener noreferrer"&gt;Semantic Kernel&lt;/a&gt;  is an open-source AI orchestration library from Microsoft. It is model-agnostic, allowing you to choose your preferred models, whether self-hosted or third-party. It includes features like observability and strong security measures, such as filters to protect against prompt injection attacks, enabling you to build reliable, enterprise-grade applications effortlessly.&lt;br&gt;
In this post, you'll learn how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up Semantic Kernel in ASP.NET Core Web API&lt;/li&gt;
&lt;li&gt;Configure the model for the application&lt;/li&gt;
&lt;li&gt;Describe existing code to the AI Model&lt;/li&gt;
&lt;li&gt;Add a simple prompt endpoint that accepts user requests&lt;/li&gt;
&lt;li&gt;Leverage filters to implement logging for tracking the end-to-end request trail.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step-by-step instructions&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Step 1: Install Semantic Kernel&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Add nuget package in your existing web API project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet add package Microsoft.SemanticKernel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Step 2: Add Semantic Kernel to your web application builder&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; public static void Main(string[] args)
 {
     var builder = WebApplication.CreateBuilder(args);

     // ... 
     // Add Kernel
     builder.Services.AddKernel();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Step 3: Add model ( below code uses local model running using Ollama, if you are using 3rd party, set modelid and apikey, you don't need endpoint property)&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Add LLM 
builder.Services.AddOpenAIChatCompletion(
   modelId: "llama3.2:latest",
   endpoint: new Uri("http://localhost:11434/v1"),
   apiKey: "");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Step 4: Describe your existing code to AI model using function descriptors. Ensure the description matches the intent of the method and this is key for model to identify the right functions to call.&lt;br&gt;
&lt;code&gt;Because the LLMs are predominantly trained in python, use snake_case format for kernel function names and parameters.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frz0wlb1q0hp96retc2nq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frz0wlb1q0hp96retc2nq.png" alt="kernel descriptions for model" width="777" height="613"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdigls3yzym870zu1v68.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdigls3yzym870zu1v68.png" alt="kernel functions" width="800" height="734"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Step 5: Register the above class as Kernel Plugin. You can register even HttpClient (Let's say your API is calling another API to fulfill request) as plugins.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Add your existing services as Kernel plugins
builder.Services.AddTransient(serviceProvider =&amp;gt;
{
    Kernel k = new(serviceProvider);
    var productRepository = serviceProvider.GetRequiredService&amp;lt;IProductService&amp;gt;();
    k.Plugins.AddFromObject(productRepository);
    return k;
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Step 6: Add a sample Prompt Endpoint and Invoke Kernel with the prompt&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; public class PromptController : Controller
    {
        private readonly Kernel _kernel;
        public PromptController(Kernel kernel)
        {
            _kernel = kernel;
        }
        [HttpGet]
        public async Task&amp;lt;IActionResult&amp;gt; HandlePromptAsync(string prompt)
        {
            OpenAIPromptExecutionSettings settings = new() { ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions};
            var result = await _kernel.InvokePromptAsync&amp;lt;string&amp;gt;(prompt, new(settings));
            return Ok(result);
        }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Step 7: Add FunctionFilter to see the request trail&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class FunctionFilter : IAutoFunctionInvocationFilter
    {
        public async Task OnAutoFunctionInvocationAsync(AutoFunctionInvocationContext context, Func&amp;lt;AutoFunctionInvocationContext, Task&amp;gt; next)
        {
            Console.WriteLine($"{nameof(FunctionFilter)}.FunctionInvoking - {context.Function.PluginName}.{context.Function.Name}");
            await next(context);
            Console.WriteLine($"{nameof(FunctionFilter)}.FunctionInvoked - {context.Function.PluginName}.{context.Function.Name}");
        }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Step 8: Register the FunctionInvocationFilter&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; builder.Services.AddSingleton&amp;lt;IAutoFunctionInvocationFilter, FunctionFilter&amp;gt;();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Step 9: Let's test the endpoint (If you are using local model, make sure its up and running)&lt;br&gt;
Prompt provided (create a product tablecloth worth 100$) and response is 200, product is created with name tablecloth and price is set to 100.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fclshffl3bvga8nqle9ss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fclshffl3bvga8nqle9ss.png" alt="POST product" width="800" height="452"&gt;&lt;/a&gt;&lt;br&gt;
Here is the request audit trail.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3w3vlz0vx4gwhuwar3m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3w3vlz0vx4gwhuwar3m.png" alt="POST product request trail" width="800" height="173"&gt;&lt;/a&gt;&lt;br&gt;
Let's try retrieving the product&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjdviiamix2ecoq0bki7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjdviiamix2ecoq0bki7.png" alt="GET product" width="800" height="587"&gt;&lt;/a&gt;&lt;br&gt;
and request trail&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcifaaligyvny5wiuppoj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcifaaligyvny5wiuppoj.png" alt="GET product request trail" width="800" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Final Thoughts
&lt;/h4&gt;

&lt;p&gt;That’s it! You’ve now extended your API with AI capabilities using Semantic Kernel. While AI can unlock powerful capabilities, it's important to remember that not every product needs AI. Use tools like Semantic Kernel when they genuinely help solve a customer problem or enhance the user experience. Start with the problem, not the technology—and let AI be a solution where it makes sense, not just a trend to follow.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>semantickernel</category>
      <category>aspdotnet</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
