<?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: Muhammad Haris Javed</title>
    <description>The latest articles on DEV Community by Muhammad Haris Javed (@javedharis).</description>
    <link>https://dev.to/javedharis</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%2F901986%2Fb384e708-78f6-45df-af30-240e026f9653.jpeg</url>
      <title>DEV Community: Muhammad Haris Javed</title>
      <link>https://dev.to/javedharis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/javedharis"/>
    <language>en</language>
    <item>
      <title>AI Replaced Me -- Just Not the Way You Think</title>
      <dc:creator>Muhammad Haris Javed</dc:creator>
      <pubDate>Wed, 15 Jul 2026 15:07:25 +0000</pubDate>
      <link>https://dev.to/javedharis/ai-replaced-me-just-not-the-way-you-think-53lm</link>
      <guid>https://dev.to/javedharis/ai-replaced-me-just-not-the-way-you-think-53lm</guid>
      <description>&lt;p&gt;AI replaced me.&lt;/p&gt;

&lt;p&gt;Not the way you think. I'm still a software engineer. But the work I used to do in the office? AI does that now. I got replaced... and became something else.&lt;/p&gt;

&lt;p&gt;Let me explain with a story from the start of my career.&lt;/p&gt;

&lt;h2&gt;
  
  
  The best client in my early career
&lt;/h2&gt;

&lt;p&gt;Early in my career at KNYSYS, I got the opportunity to work with a client building a &lt;strong&gt;Laboratory Information Management System (LIMS)&lt;/strong&gt;. Information systems were trending at the time, and I was excited just to be on the project.&lt;/p&gt;

&lt;p&gt;Then I saw their requirements document.&lt;/p&gt;

&lt;p&gt;It was the best spec I have ever received. It had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Every entity described&lt;/strong&gt; : down to the column names&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Functionality attached to each entity&lt;/strong&gt; : CRUD operations, GET/POST/UPDATE behavior, all spelled out&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI management and user roles&lt;/strong&gt; : defined per screen, per role&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "why" behind every decision&lt;/strong&gt; : not just &lt;em&gt;what&lt;/em&gt; to build, but the reason it mattered&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-level tasks already broken down&lt;/strong&gt; — I could pick one up and just start&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And here's what made it truly great: &lt;strong&gt;no useless information&lt;/strong&gt;. Nothing was missing, and nothing was extra. Every line earned its place.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rhythm
&lt;/h2&gt;

&lt;p&gt;The workflow was simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I pick up a task and build it&lt;/li&gt;
&lt;li&gt;I deliver&lt;/li&gt;
&lt;li&gt;Their team tests it&lt;/li&gt;
&lt;li&gt;They send back bugs, feedback, or changes&lt;/li&gt;
&lt;li&gt;I fix and move to the next task&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It felt like a rhythm. Task by task, sprint by sprint and at the end, a real product existed.&lt;/p&gt;

&lt;p&gt;Back then, I thought the developer was the hero of that story. I was the one turning documents into working software, after all.&lt;/p&gt;

&lt;h2&gt;
  
  
  The realization
&lt;/h2&gt;

&lt;p&gt;Years later, I see it completely differently.&lt;/p&gt;

&lt;p&gt;The genius of that project wasn't my code. It was &lt;strong&gt;whoever wrote that document&lt;/strong&gt;. The person who took a messy, ambiguous business need "we need a system to manage lab information" and turned it into something so precise that a junior developer on the other side of the world could build it without confusion.&lt;/p&gt;

&lt;p&gt;That skill was always the rare one. We just didn't have a name for how valuable it was.&lt;/p&gt;

&lt;h2&gt;
  
  
  The twist
&lt;/h2&gt;

&lt;p&gt;Now look at my job today:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I became that person.&lt;/strong&gt; I write the specs every entity, every behavior, every "why", with nothing missing and nothing extra.&lt;/p&gt;

&lt;p&gt;We just call them &lt;strong&gt;prompts&lt;/strong&gt; now.&lt;/p&gt;

&lt;p&gt;And the developer I used to be the one who reads the spec and writes the code? &lt;strong&gt;That's AI.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The feedback loop flipped too. I used to deliver code and wait for the client's team to test it and send changes. Now AI delivers code, and &lt;em&gt;I&lt;/em&gt; test it, find the bugs, and send the changes back.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Then&lt;/th&gt;
&lt;th&gt;Now&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Writes the spec&lt;/td&gt;
&lt;td&gt;Client&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Me&lt;/strong&gt; (it's called a prompt)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Builds the code&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Me&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tests &amp;amp; gives feedback&lt;/td&gt;
&lt;td&gt;Client&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Me&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Same workflow. Same rhythm. I just switched seats.&lt;/p&gt;

&lt;h2&gt;
  
  
  "But nobody gives perfect requirements"
&lt;/h2&gt;

&lt;p&gt;Here's a line I hear from some developers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"If clients gave us perfect requirements, we'd deliver in a few hours. But nobody ever does."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some developers says it like a complaint. I think it's the most important sentence in our industry right now.&lt;/p&gt;

&lt;p&gt;Because think it through: &lt;strong&gt;if someone could write a perfect requirement, why would they need you?&lt;/strong&gt; They'd hand it straight to AI and get their software.&lt;/p&gt;

&lt;p&gt;The reason software engineers still exist is precisely that nobody can do this. Turning a vague human idea into a precise, complete, buildable specification deciding what matters, what's missing, what's ambiguous, what will break that was &lt;em&gt;always&lt;/em&gt; the hard part of software engineering.&lt;/p&gt;

&lt;p&gt;The code was never the product. The understanding was. AI just made that impossible to ignore.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for you
&lt;/h2&gt;

&lt;p&gt;If you're a developer wondering how to adapt, my honest advice from living through this shift:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Practice writing specs, not just reading them.&lt;/strong&gt; That LIMS document is now the skill ceiling. Can you describe a feature so precisely that &lt;em&gt;anything&lt;/em&gt; human or AI could build it correctly?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get good at reviewing code you didn't write.&lt;/strong&gt; Testing AI output, spotting the subtle bug, knowing when the architecture is wrong this is the new code review, and it's most of the job.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Own the "why".&lt;/strong&gt; AI can generate any solution. Only you can decide which problem is worth solving and whether the solution actually solves it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AI didn't replace me. It promoted me from the person who reads the spec to the person who writes it.&lt;/p&gt;

&lt;p&gt;The question is: which seat are you sitting in?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Get good at reviewing code you didn't write.&lt;/strong&gt; Testing AI output, spotting the subtle bug, knowing when the architecture is wrong — this is the new code review, and it's most of the job.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Own the "why".&lt;/strong&gt; AI can generate any solution. Only you can decide which problem is worth solving and whether the solution actually solves it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AI didn't replace me. It promoted me — from the person who reads the spec to the person who writes it.&lt;/p&gt;

&lt;p&gt;The question is: which seat are you sitting in?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Have you noticed the same shift in your work? I'd love to hear how your day-to-day has changed. drop a comment.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>programming</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>good logging practice in backend</title>
      <dc:creator>Muhammad Haris Javed</dc:creator>
      <pubDate>Sat, 12 Apr 2025 10:38:18 +0000</pubDate>
      <link>https://dev.to/javedharis/generate-an-article-about-good-logging-practice-in-backend-2g7i</link>
      <guid>https://dev.to/javedharis/generate-an-article-about-good-logging-practice-in-backend-2g7i</guid>
      <description>&lt;p&gt;Logging is a crucial aspect of backend development.  Effective logging allows you to monitor your application's health, debug issues, and understand user behavior.  Poor logging, on the other hand, can lead to wasted time, difficult debugging, and security vulnerabilities. This article outlines some best practices for implementing effective logging in your backend systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Principles:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Log Levels:&lt;/strong&gt; Utilize different log levels (DEBUG, INFO, WARNING, ERROR, CRITICAL) to categorize log messages based on their severity. This allows you to filter and prioritize information effectively.  DEBUG is for detailed debugging information, INFO for general application flow, WARNING for potential issues, ERROR for actual errors, and CRITICAL for system-critical failures.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Context is King:&lt;/strong&gt; Include relevant context in your log messages.  This might include timestamps, user IDs, request IDs, affected resources, and any other information that helps pinpoint the source of an issue.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Structured Logging:&lt;/strong&gt;  Instead of free-form text, use structured logging formats like JSON. This allows log aggregation tools to easily parse and analyze your logs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Avoid Sensitive Information:&lt;/strong&gt; Never log sensitive data like passwords, API keys, or credit card numbers.  This is a major security risk.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Centralized Logging:&lt;/strong&gt;  Aggregate logs from different services and servers into a central location. This simplifies monitoring and analysis. Tools like Elasticsearch, Logstash, and Kibana (ELK stack) or Graylog are excellent for this purpose.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Log Exceptions Properly:&lt;/strong&gt;  Don't just log the exception message. Include the stack trace and any relevant context that led to the exception.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Considerations:&lt;/strong&gt;  Logging can impact performance. Avoid excessive logging, especially at the DEBUG level in production.  Use asynchronous logging where possible to minimize blocking operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use a Logging Framework:&lt;/strong&gt;  Leverage a logging framework like Python's &lt;code&gt;logging&lt;/code&gt; module or similar frameworks in other languages. These frameworks provide built-in functionalities for log levels, formatting, and handlers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Scenario:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine an e-commerce platform. A user is trying to complete a purchase, but the payment gateway is experiencing intermittent issues.  Without proper logging, debugging this issue would be a nightmare.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Poor Logging Example (Python):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Payment failed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Good Logging Example (Python):&lt;/strong&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
python
import logging

logger = logging.getLogger(__
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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