<?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>Forem: Ankit Kumar</title>
    <description>The latest articles on Forem by Ankit Kumar (@a9kit_kumar).</description>
    <link>https://forem.com/a9kit_kumar</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%2F3477405%2F68bfbabf-2cab-4e57-9311-bc01a2febd79.jpg</url>
      <title>Forem: Ankit Kumar</title>
      <link>https://forem.com/a9kit_kumar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/a9kit_kumar"/>
    <language>en</language>
    <item>
      <title>ChatGPT vs Claude vs Gemini: Which AI Tool Actually Works Best for Developers?</title>
      <dc:creator>Ankit Kumar</dc:creator>
      <pubDate>Mon, 29 Dec 2025 17:09:54 +0000</pubDate>
      <link>https://forem.com/a9kit_kumar/chatgpt-vs-claude-vs-gemini-which-ai-tool-actually-works-best-for-developers-1pid</link>
      <guid>https://forem.com/a9kit_kumar/chatgpt-vs-claude-vs-gemini-which-ai-tool-actually-works-best-for-developers-1pid</guid>
      <description>&lt;p&gt;AI chatbots are everywhere right now, but most discussions around them stay at a surface level. As developers, we care less about hype and more about practical value. Can the tool help debug code? Can it explain system design clearly? Does it save time or add friction?&lt;/p&gt;

&lt;p&gt;I’ve been using ChatGPT, Claude, and Google Gemini side by side for real development and productivity tasks. This post is not about declaring a universal winner. It’s about understanding where each tool actually fits in a developer’s workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  ChatGPT: The Most Practical All-Rounder
&lt;/h2&gt;

&lt;p&gt;From a developer’s perspective, ChatGPT still feels like the most versatile option. It handles programming logic well, understands context across messages, and explains errors in a way that makes sense even when you’re tired after a long debugging session.&lt;/p&gt;

&lt;p&gt;Where ChatGPT really shines is reasoning. When you ask why a piece of code fails or how to refactor something, it often walks through the logic step by step. That alone makes it useful not just for coding, but also for system design discussions and architectural brainstorming.&lt;/p&gt;

&lt;p&gt;That said, it’s not perfect. Long written explanations can sometimes feel generic unless you guide it carefully. But for day-to-day development tasks, ChatGPT feels like a reliable teammate rather than a demo tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Claude: Surprisingly Good for Reading and Writing Heavy Work
&lt;/h2&gt;

&lt;p&gt;Claude feels very different from ChatGPT. It’s calmer, more structured, and noticeably better at handling long blocks of text. If you work with large documents, API specs, or internal documentation, Claude is impressive.&lt;/p&gt;

&lt;p&gt;From a coding standpoint, Claude can explain concepts clearly, but it’s less aggressive in offering optimizations or alternative approaches. It tends to be cautious, which can be good or bad depending on what you want. For deep debugging, ChatGPT still feels stronger.&lt;/p&gt;

&lt;p&gt;Where Claude stands out for developers is documentation. If you need to turn rough notes into clean internal docs or explain a complex system in plain language, Claude does an excellent job.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini: Useful Inside the Google Ecosystem, Limited Outside
&lt;/h2&gt;

&lt;p&gt;Gemini feels more like a productivity assistant than a developer tool. If your workflow already lives inside Google Docs, Gmail, and Search, Gemini integrates smoothly and saves time on research and quick drafts.&lt;/p&gt;

&lt;p&gt;For coding tasks, Gemini works for basic questions, but it struggles with deeper reasoning and multi-step debugging. It often gives short answers that need follow-up prompts. That’s not necessarily bad, but it means more back and forth.&lt;/p&gt;

&lt;p&gt;Gemini’s strength is context awareness from the web. For research, comparisons, or checking up-to-date information, it’s convenient. For actual development work, it still feels secondary.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I’d Actually Use These Tools Together
&lt;/h2&gt;

&lt;p&gt;Instead of asking which AI is “best,” a more useful question is how they complement each other.&lt;/p&gt;

&lt;p&gt;ChatGPT is my primary tool for coding, debugging, and problem solving.&lt;br&gt;
Claude is what I use when I need clean writing, summaries, or structured documentation.&lt;/p&gt;

&lt;p&gt;Gemini helps with research and Google Workspace tasks, especially when context matters.&lt;/p&gt;

&lt;p&gt;Used together, they cover more ground than any single tool alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which One Should Developers Start With?
&lt;/h2&gt;

&lt;p&gt;If you’re choosing just one tool, ChatGPT is still the safest starting point for developers. It offers the best balance between logic, explanation, and flexibility.&lt;/p&gt;

&lt;p&gt;If writing and documentation are a big part of your role, Claude is worth adding. If your work revolves around Google’s ecosystem, Gemini can be useful, but it shouldn’t be your only AI tool.&lt;/p&gt;

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

&lt;p&gt;AI tools are evolving fast, but the real value comes from understanding their limits as much as their strengths. None of these tools replaces thinking or experience, but used correctly, they can reduce friction and free up mental space for actual problem solving.&lt;/p&gt;

&lt;p&gt;The key is not picking a winner, but picking the right tool for the right job.&lt;/p&gt;

&lt;p&gt;I wrote a much deeper, long-form comparison with detailed use cases and verdicts here: &lt;a href="https://mytechmarvel.com/chatgpt-vs-claude-vs-gemini/" rel="noopener noreferrer"&gt;https://mytechmarvel.com/chatgpt-vs-claude-vs-gemini/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>developers</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I’d Become a Backend Developer in 2026 (If I Were Starting Today)</title>
      <dc:creator>Ankit Kumar</dc:creator>
      <pubDate>Sat, 27 Dec 2025 01:40:27 +0000</pubDate>
      <link>https://forem.com/a9kit_kumar/how-id-become-a-backend-developer-in-2026-if-i-were-starting-today-41bc</link>
      <guid>https://forem.com/a9kit_kumar/how-id-become-a-backend-developer-in-2026-if-i-were-starting-today-41bc</guid>
      <description>&lt;p&gt;When I started my development journey, backend development felt confusing. Too many languages, too many frameworks, and every blog claimed something different was “mandatory.” Fast forward to today, after working on real products and interacting with backend-heavy systems, I see things much more clearly.&lt;/p&gt;

&lt;p&gt;If I were starting again in 2026 and aiming to become a backend developer, I would follow a very different and much more focused path. This post is not a checklist copied from the internet. It is based on what actually matters in real-world backend roles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Understand What Backend Development Really Is
&lt;/h2&gt;

&lt;p&gt;Backend development is not just about writing APIs. It is about solving problems related to data, performance, scalability, and reliability.&lt;/p&gt;

&lt;p&gt;A backend developer is responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Designing APIs that are easy to use and hard to break&lt;/li&gt;
&lt;li&gt;Handling authentication and authorization correctly&lt;/li&gt;
&lt;li&gt;Working with databases efficiently&lt;/li&gt;
&lt;li&gt;Making sure systems scale when traffic increases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before choosing any language, I would first understand these responsibilities clearly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Pick One Backend Language and Go Deep
&lt;/h2&gt;

&lt;p&gt;In 2026, the demand is still strong for a few backend ecosystems. Instead of chasing trends, I would choose one language and master it.&lt;/p&gt;

&lt;p&gt;Good options include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript with Node.js&lt;/li&gt;
&lt;li&gt;Java with Spring Boot&lt;/li&gt;
&lt;li&gt;Python with Django or FastAPI&lt;/li&gt;
&lt;li&gt;Go for performance-focused systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The mistake many beginners make is learning a little bit of everything. Depth matters more than breadth early on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Learn Databases Like a Backend Engineer, Not a Student
&lt;/h2&gt;

&lt;p&gt;Databases are where most backend developers struggle in real projects.&lt;/p&gt;

&lt;p&gt;I would focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One relational database like PostgreSQL or MySQL&lt;/li&gt;
&lt;li&gt;Understanding indexing, joins, and transactions&lt;/li&gt;
&lt;li&gt;Writing efficient queries&lt;/li&gt;
&lt;li&gt;Knowing when NOT to over-optimize&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No backend roadmap is complete without solid database fundamentals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: APIs, But With Real-World Thinking
&lt;/h2&gt;

&lt;p&gt;Anyone can build a CRUD API. A backend developer needs to think beyond that.&lt;/p&gt;

&lt;p&gt;Important concepts I would practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;REST API design principles&lt;/li&gt;
&lt;li&gt;Proper HTTP status codes&lt;/li&gt;
&lt;li&gt;Pagination, filtering, and versioning&lt;/li&gt;
&lt;li&gt;Error handling that helps frontend teams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These details are what separate beginners from professionals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Learn Authentication and Security Early
&lt;/h2&gt;

&lt;p&gt;Security is often ignored until something breaks.&lt;/p&gt;

&lt;p&gt;I would make sure to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JWT-based authentication&lt;/li&gt;
&lt;li&gt;Password hashing and storage&lt;/li&gt;
&lt;li&gt;Role-based access control&lt;/li&gt;
&lt;li&gt;Common vulnerabilities like SQL injection and XSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A backend developer is often the last line of defense.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Deployment and Production Basics
&lt;/h2&gt;

&lt;p&gt;A backend app is useless if it only works on localhost.&lt;/p&gt;

&lt;p&gt;I would learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Environment variables and configuration management&lt;/li&gt;
&lt;li&gt;Basic Linux commands&lt;/li&gt;
&lt;li&gt;How CI/CD pipelines work&lt;/li&gt;
&lt;li&gt;Monitoring and logging fundamentals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even basic deployment knowledge gives you a huge advantage in interviews.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Build Projects That Reflect Real Systems
&lt;/h2&gt;

&lt;p&gt;Instead of tutorial projects, I would build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An authentication system&lt;/li&gt;
&lt;li&gt;A role-based dashboard API&lt;/li&gt;
&lt;li&gt;A scalable CRUD system with pagination and caching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These projects tell a story about how you think, not just what you know.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Complete Backend Developer Roadmap
&lt;/h2&gt;

&lt;p&gt;This post is intentionally a high-level guide. I recently wrote a detailed Backend Developer Roadmap for 2026, covering tools, skills, learning order, and mistakes to avoid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full roadmap here:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://a9kit.com/backend-developer-roadmap/" rel="noopener noreferrer"&gt;https://a9kit.com/backend-developer-roadmap/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re serious about backend development and want a structured path from beginner to professional level, that guide will help you plan your journey properly.&lt;/p&gt;

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

&lt;p&gt;Backend development is not about learning the most tools. It is about learning the right concepts and applying them consistently.&lt;/p&gt;

&lt;p&gt;If you focus on fundamentals, build real projects, and understand how production systems behave, you will stay relevant even as technologies change.&lt;/p&gt;

</description>
      <category>backenddevelopment</category>
      <category>backend</category>
      <category>developer</category>
      <category>development</category>
    </item>
    <item>
      <title>Fix ReferenceError: __dirname is Not Defined in ES Module Scope in Node.js</title>
      <dc:creator>Ankit Kumar</dc:creator>
      <pubDate>Wed, 03 Sep 2025 14:36:07 +0000</pubDate>
      <link>https://forem.com/a9kit_kumar/fix-referenceerror-dirname-is-not-defined-in-es-module-scope-in-nodejs-503p</link>
      <guid>https://forem.com/a9kit_kumar/fix-referenceerror-dirname-is-not-defined-in-es-module-scope-in-nodejs-503p</guid>
      <description>&lt;p&gt;If you’ve been working with Node.js and switched from CommonJS (require) to ES Modules (import/export), you might have run into a frustrating error:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ReferenceError: __dirname is not defined in ES module scope&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This happens because in CommonJS, Node.js automatically provides special variables like __dirname and __filename. These help identify the current file path or directory name. However, when you use ES modules (.mjs files or "type": "module" in package.json), these variables are no longer available by default.&lt;/p&gt;

&lt;p&gt;So, how do you fix this? Let’s walk through one of the most reliable solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Error Occurs
&lt;/h2&gt;

&lt;p&gt;In CommonJS, __dirname is built-in. But with ES Modules, Node.js relies on a different system that doesn’t include these globals. Instead, it uses URL-based module resolution&lt;br&gt;
.&lt;/p&gt;

&lt;p&gt;That means when you try to use __dirname in an ES module, Node.js throws the error because it simply doesn’t exist in that scope.&lt;/p&gt;
&lt;h2&gt;
  
  
  Solution: Use import.meta.url with fileURLToPath
&lt;/h2&gt;

&lt;p&gt;The recommended way to recreate __dirname in ES Modules is by combining import.meta.url with Node’s fileURLToPath utility from the url module.&lt;/p&gt;

&lt;p&gt;Here’s how you can do it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// file: example.mjs
import { fileURLToPath } from 'url';
import { dirname } from 'path';

// Recreate __filename and __dirname in ES module scope
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

console.log(__dirname);
console.log(__filename);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;How this works:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import.meta.url&lt;/code&gt; gives you the URL of the current ES module file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;fileURLToPath(import.meta.url)&lt;/code&gt; converts that URL into a local file path.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dirname(__filename)&lt;/code&gt; extracts the directory path, replicating the behavior of &lt;code&gt;__dirname&lt;/code&gt; in CommonJS.&lt;/p&gt;

&lt;p&gt;This way, your code works almost exactly as it would in a CommonJS module — except now it’s compatible with ES Modules.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use This
&lt;/h2&gt;

&lt;p&gt;You’ll need this approach whenever your code:&lt;/p&gt;

&lt;p&gt;Works with file systems (e.g., &lt;code&gt;fs&lt;/code&gt; module for reading/writing files).&lt;/p&gt;

&lt;p&gt;Needs relative paths for static assets or configurations.&lt;/p&gt;

&lt;p&gt;Runs in ES Module scope (using &lt;code&gt;import/export&lt;/code&gt; instead of &lt;code&gt;require&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;By implementing this fix, you can make sure your Node.js application stays consistent and avoids breaking when moving between CommonJS and ES Modules.&lt;/p&gt;

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

&lt;p&gt;The &lt;code&gt;ReferenceError: __dirname is not defined in ES module scope&lt;/code&gt; can be confusing if you’re transitioning to ES Modules for the first time. Fortunately, using &lt;code&gt;import.meta.url&lt;/code&gt; and &lt;code&gt;fileURLToPath&lt;/code&gt;makes it easy to reintroduce familiar functionality.&lt;/p&gt;

&lt;p&gt;In this article, I’ve shared one reliable fix for the problem. But there are actually a couple of other ways to solve this depending on your setup. For a complete guide with all three solutions and more code examples, check out my full write-up here:&lt;/p&gt;

&lt;p&gt;👉 Fixing &lt;a href="https://a9kit.com/referenceerror-dirname-is-not-defined-in-es-module-scope/" rel="noopener noreferrer"&gt;ReferenceError: __dirname is Not Defined in ES Module Scope&lt;/a&gt; (Full Guide)&lt;/p&gt;

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