<?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: CodeWithIshwar</title>
    <description>The latest articles on Forem by CodeWithIshwar (@codewithishwar).</description>
    <link>https://forem.com/codewithishwar</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%2F3690229%2Ffa0ea320-b80d-4411-b8a0-d6a018840c2c.png</url>
      <title>Forem: CodeWithIshwar</title>
      <link>https://forem.com/codewithishwar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/codewithishwar"/>
    <language>en</language>
    <item>
      <title>#The Most Expensive Line of Code Is the One You Didn't Delete</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Mon, 25 May 2026 16:06:43 +0000</pubDate>
      <link>https://forem.com/codewithishwar/the-most-expensive-line-of-code-is-the-one-you-didnt-delete-1gf9</link>
      <guid>https://forem.com/codewithishwar/the-most-expensive-line-of-code-is-the-one-you-didnt-delete-1gf9</guid>
      <description>&lt;p&gt;As developers, we're often praised for writing more code.&lt;/p&gt;

&lt;p&gt;But some of the best engineering work I've seen involved writing less.&lt;/p&gt;

&lt;p&gt;A few examples:&lt;/p&gt;

&lt;p&gt;✅ Replacing 500 lines with 50 simpler lines&lt;br&gt;&lt;br&gt;
✅ Removing a feature nobody used&lt;br&gt;&lt;br&gt;
✅ Deleting duplicate business logic&lt;br&gt;&lt;br&gt;
✅ Eliminating an unnecessary database query&lt;br&gt;&lt;br&gt;
✅ Reusing an existing service instead of creating a new one&lt;/p&gt;

&lt;h2&gt;
  
  
  Every Line of Code Has a Cost
&lt;/h2&gt;

&lt;p&gt;Every line you write adds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maintenance&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;li&gt;Debugging&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Future complexity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The larger a codebase becomes, the more expensive unnecessary code gets.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Productivity Trap
&lt;/h2&gt;

&lt;p&gt;Many developers unconsciously measure productivity by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Number of commits&lt;/li&gt;
&lt;li&gt;Number of files changed&lt;/li&gt;
&lt;li&gt;Lines of code written&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But software engineering isn't a writing competition.&lt;/p&gt;

&lt;p&gt;The goal is not:&lt;/p&gt;

&lt;p&gt;❌ Write more code&lt;/p&gt;

&lt;p&gt;The goal is:&lt;/p&gt;

&lt;p&gt;✅ Solve problems with the simplest maintainable solution&lt;/p&gt;

&lt;p&gt;Users don't care whether a feature required 50 lines or 5,000.&lt;/p&gt;

&lt;p&gt;They care that it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Engineering Is Simplification
&lt;/h2&gt;

&lt;p&gt;Some of the highest-impact improvements I've seen came from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removing dead code&lt;/li&gt;
&lt;li&gt;Eliminating duplicate logic&lt;/li&gt;
&lt;li&gt;Deleting unused features&lt;/li&gt;
&lt;li&gt;Simplifying complex implementations&lt;/li&gt;
&lt;li&gt;Reducing unnecessary dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Less code often means:&lt;/p&gt;

&lt;p&gt;✔️ Fewer bugs&lt;br&gt;&lt;br&gt;
✔️ Easier maintenance&lt;br&gt;&lt;br&gt;
✔️ Faster onboarding&lt;br&gt;&lt;br&gt;
✔️ Better readability&lt;br&gt;&lt;br&gt;
✔️ Lower technical debt&lt;/p&gt;

&lt;h2&gt;
  
  
  My Favorite Commit Message
&lt;/h2&gt;

&lt;p&gt;Sometimes the most valuable commit you'll ever make is:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
text
Removed 2,000 lines of code.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>design</category>
    </item>
    <item>
      <title>The Most Expensive Line of Code Is the One You Didn't Delete</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Mon, 25 May 2026 16:05:06 +0000</pubDate>
      <link>https://forem.com/codewithishwar/the-most-expensive-line-of-code-is-the-one-you-didnt-delete-oie</link>
      <guid>https://forem.com/codewithishwar/the-most-expensive-line-of-code-is-the-one-you-didnt-delete-oie</guid>
      <description>&lt;p&gt;Software engineers spend countless hours learning how to write better code.&lt;/p&gt;

&lt;p&gt;But one of the most valuable engineering skills isn't writing code.&lt;/p&gt;

&lt;p&gt;It's knowing when to remove it.&lt;/p&gt;

&lt;p&gt;Over the years, I've seen teams spend weeks discussing architecture, design patterns, and optimization strategies while ignoring the simplest improvement available:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deleting unnecessary code.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Every Line of Code Is a Liability
&lt;/h2&gt;

&lt;p&gt;Every line you add becomes your responsibility.&lt;/p&gt;

&lt;p&gt;Today it looks harmless.&lt;/p&gt;

&lt;p&gt;A year later, it becomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Technical debt&lt;/li&gt;
&lt;li&gt;Maintenance overhead&lt;/li&gt;
&lt;li&gt;Additional test cases&lt;/li&gt;
&lt;li&gt;Documentation burden&lt;/li&gt;
&lt;li&gt;Debugging complexity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The code that solves a problem today may become the code that slows down development tomorrow.&lt;/p&gt;

&lt;p&gt;That's why experienced engineers often view code differently:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Code is not an asset.&lt;/p&gt;

&lt;p&gt;Code is a liability that happens to deliver value.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The less liability required to solve a problem, the better.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example #1: Replacing 500 Lines with 50
&lt;/h2&gt;

&lt;p&gt;Imagine a feature implemented through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple helper classes&lt;/li&gt;
&lt;li&gt;Several abstraction layers&lt;/li&gt;
&lt;li&gt;Complex conditional logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After revisiting the requirements, the same behavior can be achieved with a much simpler implementation.&lt;/p&gt;

&lt;p&gt;Before:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Hundreds of lines spread across multiple classes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;$items&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;array&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;array_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$items&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;isValid&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;The functionality remains identical.&lt;/p&gt;

&lt;p&gt;The maintenance burden drops dramatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example #2: Removing Unused Features
&lt;/h2&gt;

&lt;p&gt;Many systems contain features nobody uses anymore.&lt;/p&gt;

&lt;p&gt;Yet teams continue:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixing bugs&lt;/li&gt;
&lt;li&gt;Supporting edge cases&lt;/li&gt;
&lt;li&gt;Updating dependencies&lt;/li&gt;
&lt;li&gt;Writing regression tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a feature provides no business value, removing it creates immediate benefits:&lt;/p&gt;

&lt;p&gt;✅ Smaller codebase&lt;/p&gt;

&lt;p&gt;✅ Fewer bugs&lt;/p&gt;

&lt;p&gt;✅ Faster development&lt;/p&gt;

&lt;p&gt;✅ Easier onboarding&lt;/p&gt;

&lt;p&gt;Sometimes deleting a feature delivers more value than building a new one.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example #3: Eliminating Duplicate Logic
&lt;/h2&gt;

&lt;p&gt;Consider this scenario:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;calculateDiscount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nv"&gt;$price&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$price&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.10&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;Months later:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;getDiscount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nv"&gt;$price&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$price&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.15&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;Both functions solve the same problem.&lt;/p&gt;

&lt;p&gt;Now the system behaves inconsistently.&lt;/p&gt;

&lt;p&gt;Removing duplication isn't just about cleaner code.&lt;/p&gt;

&lt;p&gt;It's about preventing future bugs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example #4: The Fastest Query Is the One You Never Execute
&lt;/h2&gt;

&lt;p&gt;Performance discussions often focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Caching&lt;/li&gt;
&lt;li&gt;Indexing&lt;/li&gt;
&lt;li&gt;Database tuning&lt;/li&gt;
&lt;li&gt;Distributed systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But sometimes the best optimization is simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DELETE&lt;/span&gt; &lt;span class="n"&gt;unnecessary_query&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Removing redundant work usually beats optimizing redundant work.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Productivity Trap
&lt;/h2&gt;

&lt;p&gt;One mistake many developers make is measuring productivity by output.&lt;/p&gt;

&lt;p&gt;More commits.&lt;/p&gt;

&lt;p&gt;More files.&lt;/p&gt;

&lt;p&gt;More lines of code.&lt;/p&gt;

&lt;p&gt;But software engineering isn't a writing contest.&lt;/p&gt;

&lt;p&gt;The goal is not:&lt;/p&gt;

&lt;p&gt;❌ Write more code.&lt;/p&gt;

&lt;p&gt;The goal is:&lt;/p&gt;

&lt;p&gt;✅ Solve problems effectively.&lt;/p&gt;

&lt;p&gt;The best solution is often the simplest solution that meets the requirements.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Favorite Commit Message
&lt;/h2&gt;

&lt;p&gt;I've seen many impressive commit messages over the years.&lt;/p&gt;

&lt;p&gt;But one remains my favorite:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Removed 2,000 lines of code.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No new framework.&lt;/p&gt;

&lt;p&gt;No revolutionary architecture.&lt;/p&gt;

&lt;p&gt;Just less complexity.&lt;/p&gt;

&lt;p&gt;And often, that's exactly what a system needs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Every line of code has a maintenance cost.&lt;/li&gt;
&lt;li&gt;Simpler solutions are usually easier to evolve.&lt;/li&gt;
&lt;li&gt;Unused features should be removed aggressively.&lt;/li&gt;
&lt;li&gt;Duplicate logic creates future bugs.&lt;/li&gt;
&lt;li&gt;The fastest code is often the code that doesn't run.&lt;/li&gt;
&lt;li&gt;Great engineers simplify systems rather than constantly adding complexity.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The next time you're about to add another abstraction, helper class, or service layer, pause for a moment and ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can I solve this by removing something instead?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sometimes the most valuable code you'll write is the code you'll never have to maintain.&lt;/p&gt;




&lt;p&gt;💬 &lt;strong&gt;What's the most useful piece of code you've ever deleted?&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;programming&lt;/code&gt; &lt;code&gt;softwareengineering&lt;/code&gt; &lt;code&gt;cleancode&lt;/code&gt; &lt;code&gt;webdev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#CodeWithIshwar&lt;/strong&gt; 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>We Don't Learn Software Engineering by Writing Code</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Fri, 22 May 2026 16:10:27 +0000</pubDate>
      <link>https://forem.com/codewithishwar/we-dont-learn-software-engineering-by-writing-code-2fhn</link>
      <guid>https://forem.com/codewithishwar/we-dont-learn-software-engineering-by-writing-code-2fhn</guid>
      <description>&lt;p&gt;Most of us start our journey believing that software engineering is about writing code.&lt;/p&gt;

&lt;p&gt;Learn a programming language.&lt;br&gt;
Learn a framework.&lt;br&gt;
Build a project.&lt;/p&gt;

&lt;p&gt;Repeat.&lt;/p&gt;

&lt;p&gt;But after spending enough time working on real systems, I realized something surprising:&lt;/p&gt;

&lt;p&gt;Writing code is only a small part of software engineering.&lt;/p&gt;

&lt;p&gt;The real work begins after the code is written.&lt;/p&gt;

&lt;p&gt;The Tutorial World vs The Real World&lt;/p&gt;

&lt;p&gt;In tutorials:&lt;/p&gt;

&lt;p&gt;Requirements are clear&lt;br&gt;
Data is clean&lt;br&gt;
APIs always work&lt;br&gt;
Users behave as expected&lt;/p&gt;

&lt;p&gt;In production:&lt;/p&gt;

&lt;p&gt;Requirements change halfway through implementation&lt;br&gt;
Data arrives in formats nobody anticipated&lt;br&gt;
External services fail at the worst possible time&lt;br&gt;
Users discover edge cases within minutes&lt;/p&gt;

&lt;p&gt;The gap between these two worlds is where engineering happens.&lt;/p&gt;

&lt;p&gt;The Lessons Nobody Teaches Explicitly&lt;/p&gt;

&lt;p&gt;The most valuable lessons in my career didn't come from courses or documentation.&lt;/p&gt;

&lt;p&gt;They came from situations like:&lt;/p&gt;

&lt;p&gt;Debugging an issue that couldn't be reproduced locally&lt;br&gt;
Tracing a performance bottleneck across multiple services&lt;br&gt;
Reading code written years ago and trying to understand the original intent&lt;br&gt;
Realizing a perfectly working solution couldn't scale&lt;br&gt;
Discovering that the root cause wasn't the code, but an incorrect assumption&lt;/p&gt;

&lt;p&gt;These experiences changed how I think about software development.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;p&gt;"How do I build this?"&lt;/p&gt;

&lt;p&gt;I started asking:&lt;/p&gt;

&lt;p&gt;How will this fail?&lt;br&gt;
How will this scale?&lt;br&gt;
How easy will this be to maintain?&lt;br&gt;
What assumptions am I making?&lt;br&gt;
What trade-offs am I accepting?&lt;/p&gt;

&lt;p&gt;Experience Is Pattern Recognition&lt;/p&gt;

&lt;p&gt;One thing I've noticed about experienced engineers:&lt;/p&gt;

&lt;p&gt;They don't necessarily know every technology.&lt;/p&gt;

&lt;p&gt;They've simply seen enough systems succeed and fail to recognize patterns.&lt;/p&gt;

&lt;p&gt;A production outage today often resembles one they investigated years ago.&lt;/p&gt;

&lt;p&gt;A performance issue reminds them of a previous bottleneck.&lt;/p&gt;

&lt;p&gt;A design discussion echoes trade-offs they've already experienced.&lt;/p&gt;

&lt;p&gt;Experience is not memorizing solutions.&lt;/p&gt;

&lt;p&gt;It's recognizing patterns.&lt;/p&gt;

&lt;p&gt;My Friday Learning&lt;/p&gt;

&lt;p&gt;This week reinforced a lesson I keep relearning:&lt;/p&gt;

&lt;p&gt;Software engineering isn't the art of writing code.&lt;/p&gt;

&lt;p&gt;It's the art of understanding systems, assumptions, and trade-offs.&lt;/p&gt;

&lt;p&gt;The code is visible.&lt;/p&gt;

&lt;p&gt;The thinking behind it is where the real value lies.&lt;/p&gt;

&lt;p&gt;What's one lesson that real-world projects taught you that tutorials never did?&lt;/p&gt;

&lt;h1&gt;
  
  
  programming #softwareengineering #backend #java #systemdesign #career #learning #webdev #opensource #codewithishwar
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>coding</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>The Biggest Difference Between Junior and Senior Developers Isn't Coding</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Fri, 22 May 2026 16:08:50 +0000</pubDate>
      <link>https://forem.com/codewithishwar/the-biggest-difference-between-junior-and-senior-developers-isnt-coding-4m1p</link>
      <guid>https://forem.com/codewithishwar/the-biggest-difference-between-junior-and-senior-developers-isnt-coding-4m1p</guid>
      <description>&lt;p&gt;When I started programming, I thought becoming a better developer meant writing more code.&lt;/p&gt;

&lt;p&gt;Learn Java.&lt;br&gt;
Learn Spring Boot.&lt;br&gt;
Learn Design Patterns.&lt;br&gt;
Learn System Design.&lt;/p&gt;

&lt;p&gt;Keep learning, and eventually you'll become a senior engineer.&lt;/p&gt;

&lt;p&gt;At least, that's what I believed.&lt;/p&gt;

&lt;p&gt;Over time, I realized something interesting:&lt;/p&gt;

&lt;p&gt;The biggest difference between junior and senior developers isn't the amount of code they can write.&lt;/p&gt;

&lt;p&gt;It's the questions they ask before writing it.&lt;/p&gt;

&lt;p&gt;A junior developer might ask:&lt;/p&gt;

&lt;p&gt;"How do I implement this feature?"&lt;/p&gt;

&lt;p&gt;A senior developer is more likely to ask:&lt;/p&gt;

&lt;p&gt;What happens if this service fails?&lt;br&gt;
What are the edge cases?&lt;br&gt;
How will this behave under load?&lt;br&gt;
How difficult will this be to maintain?&lt;br&gt;
What trade-offs are we making?&lt;/p&gt;

&lt;p&gt;The implementation matters.&lt;/p&gt;

&lt;p&gt;But the thinking behind the implementation matters even more.&lt;br&gt;
A Lesson From Real Projects&lt;/p&gt;

&lt;p&gt;Most tutorials present problems in a controlled environment.&lt;/p&gt;

&lt;p&gt;Requirements are clear.&lt;/p&gt;

&lt;p&gt;Data is clean.&lt;/p&gt;

&lt;p&gt;Dependencies work.&lt;/p&gt;

&lt;p&gt;Users behave exactly as expected.&lt;/p&gt;

&lt;p&gt;Real projects are different.&lt;/p&gt;

&lt;p&gt;Requirements change.&lt;/p&gt;

&lt;p&gt;Data is messy.&lt;/p&gt;

&lt;p&gt;Systems fail.&lt;/p&gt;

&lt;p&gt;Users do things nobody anticipated.&lt;/p&gt;

&lt;p&gt;That's why many developers feel confident after completing a course but overwhelmed when working on a real application.&lt;/p&gt;

&lt;p&gt;The challenge isn't writing code.&lt;/p&gt;

&lt;p&gt;The challenge is dealing with uncertainty.&lt;/p&gt;

&lt;p&gt;What Actually Improved My Engineering Skills&lt;/p&gt;

&lt;p&gt;The biggest improvements in my career didn't come from another tutorial.&lt;/p&gt;

&lt;p&gt;They came from:&lt;/p&gt;

&lt;p&gt;✅ Debugging production issues&lt;/p&gt;

&lt;p&gt;✅ Reading existing codebases&lt;/p&gt;

&lt;p&gt;✅ Refactoring poorly designed code&lt;/p&gt;

&lt;p&gt;✅ Investigating performance bottlenecks&lt;/p&gt;

&lt;p&gt;✅ Learning from mistakes&lt;/p&gt;

&lt;p&gt;Each of these experiences forced me to think beyond syntax and frameworks.&lt;/p&gt;

&lt;p&gt;They taught me how systems behave in the real world.&lt;/p&gt;

&lt;p&gt;This Week's Learning&lt;/p&gt;

&lt;p&gt;The more experience I gain, the more I believe:&lt;/p&gt;

&lt;p&gt;Software engineering is not about knowing the right answers.&lt;/p&gt;

&lt;p&gt;It's about asking the right questions.&lt;/p&gt;

&lt;p&gt;The code is usually the easy part.&lt;/p&gt;

&lt;p&gt;Understanding the problem is where the real work begins.&lt;/p&gt;

&lt;p&gt;What lesson changed the way you think about software engineering?&lt;/p&gt;

&lt;h1&gt;
  
  
  webdev #java #backend #programming #softwareengineering #devops #career #beginners #discuss #codewithishwar
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>SOLID Principles - The Software Design Lesson Most Developers Learn Late</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Wed, 20 May 2026 17:14:02 +0000</pubDate>
      <link>https://forem.com/codewithishwar/solid-principles-the-software-design-lesson-most-developers-learn-late-dme</link>
      <guid>https://forem.com/codewithishwar/solid-principles-the-software-design-lesson-most-developers-learn-late-dme</guid>
      <description>&lt;p&gt;Most developers start by learning frameworks and syntax.&lt;/p&gt;

&lt;p&gt;But as projects grow, one thing becomes clear:&lt;/p&gt;

&lt;p&gt;Good software is not just about making features work.&lt;br&gt;
It’s about building systems that remain maintainable over time.&lt;/p&gt;

&lt;p&gt;That’s where SOLID Principles become essential 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  S — Single Responsibility Principle
&lt;/h2&gt;

&lt;p&gt;One class should have one responsibility.&lt;/p&gt;

&lt;p&gt;Avoid “God classes” that handle authentication, logging, database access, and business logic together.&lt;/p&gt;

&lt;h2&gt;
  
  
  O — Open/Closed Principle
&lt;/h2&gt;

&lt;p&gt;Software should be open for extension but closed for modification.&lt;/p&gt;

&lt;p&gt;The best systems allow new functionality without constantly changing stable code.&lt;/p&gt;

&lt;h2&gt;
  
  
  L — Liskov Substitution Principle
&lt;/h2&gt;

&lt;p&gt;Child classes should correctly replace parent classes.&lt;/p&gt;

&lt;p&gt;If replacing an object breaks functionality, the abstraction needs improvement.&lt;/p&gt;

&lt;h2&gt;
  
  
  I — Interface Segregation Principle
&lt;/h2&gt;

&lt;p&gt;Keep interfaces focused and minimal.&lt;/p&gt;

&lt;p&gt;Classes should never be forced to implement unnecessary methods.&lt;/p&gt;

&lt;h2&gt;
  
  
  D — Dependency Inversion Principle
&lt;/h2&gt;

&lt;p&gt;Depend on abstractions, not concrete implementations.&lt;/p&gt;

&lt;p&gt;This creates flexible, testable, and scalable architectures.&lt;/p&gt;

&lt;p&gt;The biggest mindset shift SOLID introduces is this:&lt;/p&gt;

&lt;p&gt;You stop writing code just for today.&lt;br&gt;
You start designing systems that survive growth, scale, and future changes.&lt;/p&gt;

&lt;p&gt;What’s your opinion on SOLID Principles — essential engineering practice or sometimes overused?&lt;/p&gt;

&lt;p&gt;— &lt;a class="mentioned-user" href="https://dev.to/codewithishwar"&gt;@codewithishwar&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  codewithishwar #forem #SOLID #CleanCode #SoftwareEngineering #Programming #Java #BackendDevelopment #SystemDesign #Architecture #Developers #Coding #DesignPatterns #WebDevelopment #FullStackDeveloper
&lt;/h1&gt;

</description>
      <category>programming</category>
      <category>coding</category>
      <category>java</category>
      <category>dsa</category>
    </item>
    <item>
      <title>SOLID Principles Explained Simply</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Wed, 20 May 2026 17:12:12 +0000</pubDate>
      <link>https://forem.com/codewithishwar/solid-principles-explained-simply-5ec3</link>
      <guid>https://forem.com/codewithishwar/solid-principles-explained-simply-5ec3</guid>
      <description>&lt;p&gt;Nobody teaches this deeply in college, but every experienced developer eventually understands why it matters.&lt;/p&gt;

&lt;p&gt;Clean architecture is not about writing “fancy” code.&lt;br&gt;
It’s about building software that remains maintainable as complexity grows.&lt;/p&gt;

&lt;p&gt;Here’s SOLID in the simplest way possible:&lt;/p&gt;

&lt;h2&gt;
  
  
  S — Single Responsibility Principle
&lt;/h2&gt;

&lt;p&gt;One class should have one responsibility.&lt;/p&gt;

&lt;p&gt;Avoid creating massive “God classes” that handle everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  O — Open/Closed Principle
&lt;/h2&gt;

&lt;p&gt;Software should be open for extension, closed for modification.&lt;/p&gt;

&lt;p&gt;Add new features without constantly changing stable code.&lt;/p&gt;

&lt;h2&gt;
  
  
  L — Liskov Substitution Principle
&lt;/h2&gt;

&lt;p&gt;Child classes should properly replace parent classes.&lt;/p&gt;

&lt;p&gt;If a subclass breaks expected behavior, the design needs improvement.&lt;/p&gt;

&lt;h2&gt;
  
  
  I — Interface Segregation Principle
&lt;/h2&gt;

&lt;p&gt;Keep interfaces small and focused.&lt;/p&gt;

&lt;p&gt;Classes should not implement methods they never use.&lt;/p&gt;

&lt;h2&gt;
  
  
  D — Dependency Inversion Principle
&lt;/h2&gt;

&lt;p&gt;Depend on abstractions, not concrete implementations.&lt;/p&gt;

&lt;p&gt;This makes systems more scalable, testable, and flexible.&lt;/p&gt;

&lt;p&gt;The real value of SOLID isn’t theory.&lt;br&gt;
It’s reducing chaos when projects become large and teams start scaling.&lt;/p&gt;

&lt;p&gt;What’s your opinion on SOLID Principles?&lt;br&gt;
Essential engineering practice or sometimes overused?&lt;/p&gt;

&lt;p&gt;— &lt;a class="mentioned-user" href="https://dev.to/codewithishwar"&gt;@codewithishwar&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  codewithishwar #SOLID #CleanCode #SoftwareEngineering #Programming #Java #BackendDevelopment #SystemDesign #Architecture #Developers #Coding #DesignPatterns #WebDevelopment #FullStackDeveloper
&lt;/h1&gt;

</description>
      <category>designpatterns</category>
      <category>solidprinciples</category>
      <category>programming</category>
      <category>code</category>
    </item>
    <item>
      <title>Synchronization in Node.js: Why Single-Threaded Does Not Mean Concurrency-Safe</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Mon, 18 May 2026 16:42:44 +0000</pubDate>
      <link>https://forem.com/codewithishwar/synchronization-in-nodejs-why-single-threaded-does-not-mean-concurrency-safe-1c6i</link>
      <guid>https://forem.com/codewithishwar/synchronization-in-nodejs-why-single-threaded-does-not-mean-concurrency-safe-1c6i</guid>
      <description>&lt;p&gt;One of the biggest misconceptions in backend engineering is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Node.js is single-threaded, so synchronization problems don’t exist.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is one of those statements that sounds correct until systems start scaling.&lt;/p&gt;

&lt;p&gt;In reality, synchronization is still a major concern in Node.js applications.&lt;/p&gt;




&lt;h1&gt;
  
  
  Understanding the Node.js Execution Model
&lt;/h1&gt;

&lt;p&gt;Node.js runs JavaScript on a single thread using the event loop.&lt;/p&gt;

&lt;p&gt;This architecture provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Non-blocking I/O&lt;/li&gt;
&lt;li&gt;High concurrency&lt;/li&gt;
&lt;li&gt;Efficient request handling&lt;/li&gt;
&lt;li&gt;Excellent scalability for network applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because JavaScript execution itself is single-threaded, many developers assume operations happen one at a time in a completely safe manner.&lt;/p&gt;

&lt;p&gt;But that is not how modern backend systems behave.&lt;/p&gt;




&lt;h1&gt;
  
  
  Where Concurrency Actually Appears
&lt;/h1&gt;

&lt;p&gt;Even though JavaScript execution uses a single thread, asynchronous operations allow multiple workflows to progress concurrently.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database queries&lt;/li&gt;
&lt;li&gt;API calls&lt;/li&gt;
&lt;li&gt;Cache operations&lt;/li&gt;
&lt;li&gt;File system access&lt;/li&gt;
&lt;li&gt;Background jobs&lt;/li&gt;
&lt;li&gt;Message queue consumers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When multiple operations interact with the same shared resource, synchronization problems can occur.&lt;/p&gt;




&lt;h1&gt;
  
  
  Common Concurrency Problems
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Race Conditions
&lt;/h2&gt;

&lt;p&gt;Two operations read and modify the same data simultaneously, producing incorrect results.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
Two payment requests updating the same wallet balance at the same time.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Lost Updates
&lt;/h2&gt;

&lt;p&gt;One request overwrites another request’s changes because updates happen concurrently.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Duplicate Processing
&lt;/h2&gt;

&lt;p&gt;In distributed systems, the same event may accidentally execute multiple times.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Cache Inconsistency
&lt;/h2&gt;

&lt;p&gt;Concurrent updates may leave cache and database values out of sync.&lt;/p&gt;




&lt;h1&gt;
  
  
  Example Scenario
&lt;/h1&gt;

&lt;p&gt;Imagine this workflow:&lt;/p&gt;

&lt;p&gt;Current balance = ₹1000&lt;/p&gt;

&lt;p&gt;Two requests arrive simultaneously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request A deducts ₹300&lt;/li&gt;
&lt;li&gt;Request B deducts ₹500&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If both requests:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read the same balance&lt;/li&gt;
&lt;li&gt;Modify independently&lt;/li&gt;
&lt;li&gt;Save the result&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;…the final value may become incorrect.&lt;/p&gt;

&lt;p&gt;This is a classic race condition.&lt;/p&gt;

&lt;p&gt;The issue is not multiple JavaScript threads.&lt;/p&gt;

&lt;p&gt;The issue is concurrent asynchronous workflows interacting with shared state.&lt;/p&gt;




&lt;h1&gt;
  
  
  How Synchronization Is Achieved in Node.js
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Database Transactions
&lt;/h2&gt;

&lt;p&gt;Transactions ensure operations execute atomically.&lt;/p&gt;

&lt;p&gt;Common in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Payment systems&lt;/li&gt;
&lt;li&gt;Banking applications&lt;/li&gt;
&lt;li&gt;Order processing systems&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Atomic Operations
&lt;/h2&gt;

&lt;p&gt;Modern databases provide atomic update capabilities.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MongoDB &lt;code&gt;$inc&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;PostgreSQL row locking&lt;/li&gt;
&lt;li&gt;Optimistic concurrency control&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These reduce race conditions significantly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Redis Distributed Locks
&lt;/h2&gt;

&lt;p&gt;Distributed systems often run across multiple servers.&lt;/p&gt;

&lt;p&gt;Redis locks help ensure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only one worker processes a task&lt;/li&gt;
&lt;li&gt;Duplicate execution is prevented&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Very common in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Job schedulers&lt;/li&gt;
&lt;li&gt;Queue workers&lt;/li&gt;
&lt;li&gt;Payment processing&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Mutexes
&lt;/h2&gt;

&lt;p&gt;Mutexes protect critical sections of code.&lt;/p&gt;

&lt;p&gt;Only one async operation can access the protected resource at a time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Message Queues
&lt;/h2&gt;

&lt;p&gt;Queues serialize workloads and improve reliability under concurrency.&lt;/p&gt;

&lt;p&gt;Popular solutions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BullMQ&lt;/li&gt;
&lt;li&gt;RabbitMQ&lt;/li&gt;
&lt;li&gt;Kafka&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Important Insight
&lt;/h1&gt;

&lt;p&gt;The biggest backend engineering challenges are rarely about writing APIs.&lt;/p&gt;

&lt;p&gt;They are usually about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Correctness under load&lt;/li&gt;
&lt;li&gt;Data consistency&lt;/li&gt;
&lt;li&gt;Distributed coordination&lt;/li&gt;
&lt;li&gt;Concurrency handling&lt;/li&gt;
&lt;li&gt;Reliability at scale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is where synchronization becomes essential.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Takeaway
&lt;/h1&gt;

&lt;p&gt;Node.js being single-threaded does NOT automatically make applications concurrency-safe.&lt;/p&gt;

&lt;p&gt;As systems grow, synchronization becomes critical for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scalable backend systems&lt;/li&gt;
&lt;li&gt;Real-time applications&lt;/li&gt;
&lt;li&gt;Financial platforms&lt;/li&gt;
&lt;li&gt;Distributed microservices&lt;/li&gt;
&lt;li&gt;High-traffic APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Single-threaded ≠ free from concurrency problems.&lt;/p&gt;

&lt;h1&gt;
  
  
  NodeJS #JavaScript #BackendDevelopment #SystemDesign #Concurrency #DistributedSystems #Microservices #SoftwareEngineering #Programming #WebDevelopment #Tech #codewithishwar
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Synchronization in Node.js: Why Single-Threaded Does Not Mean Safe From Concurrency Problems</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Mon, 18 May 2026 16:41:53 +0000</pubDate>
      <link>https://forem.com/codewithishwar/synchronization-in-nodejs-why-single-threaded-does-not-mean-safe-from-concurrency-problems-52dm</link>
      <guid>https://forem.com/codewithishwar/synchronization-in-nodejs-why-single-threaded-does-not-mean-safe-from-concurrency-problems-52dm</guid>
      <description>&lt;p&gt;One of the most common misconceptions about Node.js is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Node.js is single-threaded, so synchronization problems cannot happen.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is only partially true.&lt;/p&gt;

&lt;p&gt;Yes, JavaScript execution in Node.js runs on a single thread using the event loop. But modern backend applications deal with asynchronous operations, external services, databases, queues, and distributed systems — all of which introduce concurrency challenges.&lt;/p&gt;

&lt;p&gt;Understanding synchronization in Node.js is essential if you want to build scalable and reliable backend systems.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Is Synchronization?
&lt;/h1&gt;

&lt;p&gt;Synchronization is the process of controlling access to shared resources when multiple operations happen at the same time.&lt;/p&gt;

&lt;p&gt;The goal is to prevent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Race conditions&lt;/li&gt;
&lt;li&gt;Data inconsistency&lt;/li&gt;
&lt;li&gt;Duplicate processing&lt;/li&gt;
&lt;li&gt;Lost updates&lt;/li&gt;
&lt;li&gt;Unexpected behavior&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Why Synchronization Still Matters in Node.js
&lt;/h1&gt;

&lt;p&gt;Node.js applications commonly handle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple API requests simultaneously&lt;/li&gt;
&lt;li&gt;Concurrent database updates&lt;/li&gt;
&lt;li&gt;Shared cache access&lt;/li&gt;
&lt;li&gt;Async file operations&lt;/li&gt;
&lt;li&gt;Background job processing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even though JavaScript itself runs on one thread, async operations can overlap in execution timing.&lt;/p&gt;

&lt;p&gt;This creates situations where multiple operations interact with the same resource concurrently.&lt;/p&gt;




&lt;h1&gt;
  
  
  Example: Race Condition
&lt;/h1&gt;

&lt;p&gt;Imagine a wallet service:&lt;/p&gt;

&lt;p&gt;Initial balance = ₹1000&lt;/p&gt;

&lt;p&gt;Two requests arrive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request A deducts ₹300&lt;/li&gt;
&lt;li&gt;Request B deducts ₹500&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If both requests:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read the same balance&lt;/li&gt;
&lt;li&gt;Update independently&lt;/li&gt;
&lt;li&gt;Save the result&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;…the final balance may become incorrect.&lt;/p&gt;

&lt;p&gt;This is called a race condition.&lt;/p&gt;




&lt;h1&gt;
  
  
  Common Synchronization Techniques in Node.js
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Database Transactions
&lt;/h2&gt;

&lt;p&gt;Transactions ensure operations execute safely as a single unit.&lt;/p&gt;

&lt;p&gt;Useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Payment systems&lt;/li&gt;
&lt;li&gt;Banking workflows&lt;/li&gt;
&lt;li&gt;Order processing&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Atomic Operations
&lt;/h2&gt;

&lt;p&gt;Databases provide atomic update mechanisms.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MongoDB &lt;code&gt;$inc&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;PostgreSQL row locking&lt;/li&gt;
&lt;li&gt;Optimistic locking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These reduce concurrency conflicts.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Redis Distributed Locks
&lt;/h2&gt;

&lt;p&gt;In distributed systems, Redis locks help ensure only one worker processes a task at a time.&lt;/p&gt;

&lt;p&gt;Commonly used in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Payment handling&lt;/li&gt;
&lt;li&gt;Cron jobs&lt;/li&gt;
&lt;li&gt;Distributed workers&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Mutexes
&lt;/h2&gt;

&lt;p&gt;Mutexes restrict access to critical sections of code.&lt;/p&gt;

&lt;p&gt;Only one async operation can enter at a time.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Message Queues
&lt;/h2&gt;

&lt;p&gt;Queues serialize workloads and reduce concurrency problems.&lt;/p&gt;

&lt;p&gt;Popular tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BullMQ&lt;/li&gt;
&lt;li&gt;RabbitMQ&lt;/li&gt;
&lt;li&gt;Kafka&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Important Takeaway
&lt;/h1&gt;

&lt;p&gt;Single-threaded does NOT mean concurrency-safe.&lt;/p&gt;

&lt;p&gt;As applications scale, synchronization becomes critical for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High-traffic APIs&lt;/li&gt;
&lt;li&gt;Financial systems&lt;/li&gt;
&lt;li&gt;Real-time platforms&lt;/li&gt;
&lt;li&gt;Distributed architectures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The real complexity in backend engineering often comes from handling concurrency correctly.&lt;/p&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Node.js provides excellent performance through asynchronous and non-blocking architecture.&lt;/p&gt;

&lt;p&gt;But scalable backend systems still require proper synchronization strategies to maintain correctness and reliability.&lt;/p&gt;

&lt;p&gt;Understanding concurrency is what transforms developers into backend engineers capable of designing production-grade systems.&lt;/p&gt;

&lt;h1&gt;
  
  
  NodeJS #JavaScript #BackendDevelopment #SystemDesign #Concurrency #SoftwareEngineering #Programming #DistributedSystems #WebDevelopment #Tech #codewithishwar
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Why Mercurial Still Matters in 2026 ?</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Wed, 13 May 2026 17:39:06 +0000</pubDate>
      <link>https://forem.com/codewithishwar/why-mercurial-still-matters-in-2026--3hkb</link>
      <guid>https://forem.com/codewithishwar/why-mercurial-still-matters-in-2026--3hkb</guid>
      <description>&lt;p&gt;Most developers today know Git.&lt;/p&gt;

&lt;p&gt;But before Git became the industry standard, another Distributed Version Control System (DVCS) was competing closely with it:&lt;/p&gt;

&lt;h1&gt;
  
  
  Mercurial (Hg)
&lt;/h1&gt;

&lt;p&gt;Interestingly, companies like Meta and Mozilla trusted Mercurial for large-scale engineering workflows involving massive repositories and thousands of developers.&lt;/p&gt;

&lt;p&gt;That raises an interesting question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If Git became the default standard, why did some elite engineering teams still choose Mercurial?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer reveals important lessons about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;developer experience&lt;/li&gt;
&lt;li&gt;scalability&lt;/li&gt;
&lt;li&gt;engineering workflows&lt;/li&gt;
&lt;li&gt;ecosystem adoption&lt;/li&gt;
&lt;li&gt;distributed systems thinking&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  What is Mercurial?
&lt;/h1&gt;

&lt;p&gt;Mercurial is a Distributed Version Control System created in 2005.&lt;/p&gt;

&lt;p&gt;Like Git, it allows developers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;track code changes&lt;/li&gt;
&lt;li&gt;collaborate across teams&lt;/li&gt;
&lt;li&gt;create branches&lt;/li&gt;
&lt;li&gt;merge changes&lt;/li&gt;
&lt;li&gt;maintain project history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But Mercurial had a different philosophy:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;prioritize simplicity and usability.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Why Developers Loved Mercurial
&lt;/h1&gt;

&lt;p&gt;One thing many engineers appreciated about Mercurial was its cleaner workflow.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
hg status
hg commit
hg pull
hg update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Why Mercurial Still Matters in 2026</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Wed, 13 May 2026 17:37:18 +0000</pubDate>
      <link>https://forem.com/codewithishwar/why-mercurial-still-matters-in-2026-plc</link>
      <guid>https://forem.com/codewithishwar/why-mercurial-still-matters-in-2026-plc</guid>
      <description>&lt;h1&gt;
  
  
  Why Mercurial Still Matters in 2026
&lt;/h1&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%2Fzziqcrs1k14nhml2hxu4.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%2Fzziqcrs1k14nhml2hxu4.png" alt=" " width="800" height="658"&gt;&lt;/a&gt;&lt;br&gt;
Most developers today know Git.&lt;/p&gt;

&lt;p&gt;But before Git became the industry standard, another Distributed Version Control System (DVCS) was competing closely with it:&lt;/p&gt;
&lt;h1&gt;
  
  
  Mercurial (Hg)
&lt;/h1&gt;

&lt;p&gt;Interestingly, companies like Meta and Mozilla trusted Mercurial for large-scale engineering workflows involving massive repositories and thousands of developers.&lt;/p&gt;

&lt;p&gt;This made me curious:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If Git became the default standard, why did some elite engineering teams still choose Mercurial?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer reveals important lessons about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;developer experience&lt;/li&gt;
&lt;li&gt;scalability&lt;/li&gt;
&lt;li&gt;engineering workflows&lt;/li&gt;
&lt;li&gt;ecosystem adoption&lt;/li&gt;
&lt;li&gt;distributed systems thinking&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  What is Mercurial?
&lt;/h1&gt;

&lt;p&gt;Mercurial is a Distributed Version Control System created in 2005.&lt;/p&gt;

&lt;p&gt;Like Git, it allows developers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;track code changes&lt;/li&gt;
&lt;li&gt;collaborate across teams&lt;/li&gt;
&lt;li&gt;create branches&lt;/li&gt;
&lt;li&gt;merge changes&lt;/li&gt;
&lt;li&gt;maintain project history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But Mercurial had a different philosophy:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;prioritize simplicity and usability.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h1&gt;
  
  
  Why Developers Loved Mercurial
&lt;/h1&gt;

&lt;p&gt;One thing many engineers appreciated about Mercurial was its cleaner workflow.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hg status
hg commit
hg pull
hg update

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

&lt;/div&gt;



&lt;p&gt;Commands were:&lt;/p&gt;

&lt;p&gt;easier to remember&lt;br&gt;
more predictable&lt;br&gt;
less confusing for beginners&lt;/p&gt;

&lt;p&gt;Mercurial also separated actions clearly.&lt;br&gt;
For example:&lt;/p&gt;

&lt;p&gt;hg pull downloaded changes&lt;br&gt;
hg update applied them locally&lt;/p&gt;

&lt;p&gt;This explicit behavior reduced confusion for many teams.&lt;/p&gt;

&lt;p&gt;Git vs Mercurial&lt;/p&gt;

&lt;p&gt;Both Git and Mercurial are powerful DVCS tools.&lt;/p&gt;

&lt;p&gt;But they focused on different priorities.&lt;/p&gt;

&lt;p&gt;Git focused on:&lt;br&gt;
flexibility&lt;br&gt;
low-level control&lt;br&gt;
performance&lt;br&gt;
advanced workflows&lt;br&gt;
Mercurial focused on:&lt;br&gt;
simplicity&lt;br&gt;
consistency&lt;br&gt;
developer-friendly UX&lt;br&gt;
predictable workflows&lt;/p&gt;

&lt;p&gt;Many developers who used both systems felt Mercurial had a cleaner mental model.&lt;/p&gt;

&lt;p&gt;Why Git Became the Standard&lt;/p&gt;

&lt;p&gt;The biggest reason was ecosystem adoption.&lt;/p&gt;

&lt;p&gt;Platforms like GitHub changed software collaboration forever.&lt;/p&gt;

&lt;p&gt;Git quickly gained:&lt;/p&gt;

&lt;p&gt;massive open-source support&lt;br&gt;
enterprise adoption&lt;br&gt;
CI/CD integrations&lt;br&gt;
educational momentum&lt;br&gt;
developer tooling ecosystem&lt;/p&gt;

&lt;p&gt;Eventually Git became impossible to ignore.&lt;/p&gt;

&lt;p&gt;This is an important engineering lesson:&lt;/p&gt;

&lt;p&gt;sometimes ecosystem wins over elegance.&lt;/p&gt;

&lt;p&gt;Why Meta Used Mercurial&lt;/p&gt;

&lt;p&gt;One of the most interesting examples is Meta.&lt;/p&gt;

&lt;p&gt;Meta scaled Mercurial internally for:&lt;/p&gt;

&lt;p&gt;huge monorepositories&lt;br&gt;
thousands of engineers&lt;br&gt;
massive commit histories&lt;/p&gt;

&lt;p&gt;This proved that Mercurial could scale extremely well in enterprise environments.&lt;/p&gt;

&lt;p&gt;It also showed that engineering decisions at scale are based on:&lt;/p&gt;

&lt;p&gt;workflow efficiency&lt;br&gt;
scalability&lt;br&gt;
operational reliability&lt;br&gt;
developer productivity&lt;/p&gt;

&lt;p&gt;—not simply popularity.&lt;/p&gt;

&lt;p&gt;The Bigger Lesson&lt;/p&gt;

&lt;p&gt;Mercurial teaches something valuable about software engineering.&lt;/p&gt;

&lt;p&gt;The best tools are not always:&lt;/p&gt;

&lt;p&gt;the loudest&lt;br&gt;
the trendiest&lt;br&gt;
the most widely adopted&lt;/p&gt;

&lt;p&gt;Sometimes the best tools are the ones that:&lt;/p&gt;

&lt;p&gt;reduce friction&lt;br&gt;
simplify workflows&lt;br&gt;
quietly scale behind the scenes&lt;/p&gt;

&lt;p&gt;And those lessons still matter in 2026.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;Even if you never use Mercurial professionally, learning about it helps developers better understand:&lt;/p&gt;

&lt;p&gt;distributed systems&lt;br&gt;
version control evolution&lt;br&gt;
engineering tradeoffs&lt;br&gt;
scalable developer workflows&lt;/p&gt;

&lt;p&gt;Git won the ecosystem battle.&lt;/p&gt;

&lt;p&gt;But Mercurial earned long-term respect from many engineers because of its simplicity and clean design.&lt;/p&gt;

&lt;p&gt;What are your thoughts on Mercurial?&lt;/p&gt;

&lt;p&gt;Did you ever use it in production?&lt;br&gt;
Would you still choose it for certain large-scale systems today?&lt;/p&gt;

&lt;h1&gt;
  
  
  Mercurial #Git #SoftwareEngineering #BackendDevelopment #SystemDesign #DeveloperTools #OpenSource #Programming #DevOps #ScalableSystems #CodeWithIshwar
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>JavaScript Is Single-Threaded… So Why Do Race Conditions Exist....?</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Mon, 11 May 2026 18:12:37 +0000</pubDate>
      <link>https://forem.com/codewithishwar/javascript-is-single-threaded-so-why-do-race-conditions-exist-38io</link>
      <guid>https://forem.com/codewithishwar/javascript-is-single-threaded-so-why-do-race-conditions-exist-38io</guid>
      <description>&lt;p&gt;Just published a deep dive on one of the most misunderstood topics in JavaScript:&lt;/p&gt;

&lt;p&gt;“JavaScript Is Single-Threaded… So Why Do Race Conditions Exist?”&lt;/p&gt;

&lt;p&gt;Most developers assume:&lt;br&gt;
single-threaded = no concurrency problems.&lt;/p&gt;

&lt;p&gt;But modern JavaScript systems constantly deal with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;race conditions&lt;/li&gt;
&lt;li&gt;stale state&lt;/li&gt;
&lt;li&gt;async timing bugs&lt;/li&gt;
&lt;li&gt;API overwrites&lt;/li&gt;
&lt;li&gt;websocket ordering issues&lt;/li&gt;
&lt;li&gt;synchronization failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because JavaScript concurrency is really about:&lt;br&gt;
⚡ execution order&lt;br&gt;
⚡ async scheduling&lt;br&gt;
⚡ overlapping operations&lt;/p&gt;

&lt;p&gt;—not multiple JavaScript threads.&lt;/p&gt;

&lt;p&gt;The article explores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event Loop internals&lt;/li&gt;
&lt;li&gt;Microtasks vs Macrotasks&lt;/li&gt;
&lt;li&gt;Promise scheduling&lt;/li&gt;
&lt;li&gt;async/await execution flow&lt;/li&gt;
&lt;li&gt;Node.js Event Loop phases&lt;/li&gt;
&lt;li&gt;libuv &amp;amp; thread pools&lt;/li&gt;
&lt;li&gt;process.nextTick()&lt;/li&gt;
&lt;li&gt;Worker Threads&lt;/li&gt;
&lt;li&gt;real production synchronization bugs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One realization changed how I think about software engineering:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Large-scale systems fail more from coordination problems than syntax problems.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The deeper I study JavaScript internals,&lt;br&gt;
the more I realize senior engineering is mostly about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;timing&lt;/li&gt;
&lt;li&gt;scheduling&lt;/li&gt;
&lt;li&gt;consistency&lt;/li&gt;
&lt;li&gt;synchronization&lt;/li&gt;
&lt;li&gt;execution flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Would genuinely love feedback from other developers here.&lt;/p&gt;

&lt;p&gt;What async JavaScript or Node.js concept took you the longest to truly understand?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>opensource</category>
      <category>technology</category>
    </item>
    <item>
      <title>JavaScript Is Single-Threaded… So Why Do Race Conditions Exist?</title>
      <dc:creator>CodeWithIshwar</dc:creator>
      <pubDate>Mon, 11 May 2026 18:11:23 +0000</pubDate>
      <link>https://forem.com/codewithishwar/javascript-is-single-threaded-so-why-do-race-conditions-exist-5cge</link>
      <guid>https://forem.com/codewithishwar/javascript-is-single-threaded-so-why-do-race-conditions-exist-5cge</guid>
      <description>&lt;p&gt;I just published one of the deepest articles I’ve written on JavaScript internals.&lt;/p&gt;

&lt;p&gt;Topic:&lt;/p&gt;

&lt;p&gt;“JavaScript Is Single-Threaded… So Why Do Race Conditions Exist?”&lt;/p&gt;

&lt;p&gt;Most developers hear:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“JavaScript is single-threaded.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then naturally assume:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no concurrency&lt;/li&gt;
&lt;li&gt;no synchronization issues&lt;/li&gt;
&lt;li&gt;no race conditions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But modern JavaScript systems constantly suffer from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stale React state&lt;/li&gt;
&lt;li&gt;async timing bugs&lt;/li&gt;
&lt;li&gt;API overwrites&lt;/li&gt;
&lt;li&gt;websocket ordering issues&lt;/li&gt;
&lt;li&gt;cache corruption&lt;/li&gt;
&lt;li&gt;inconsistent backend state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because JavaScript concurrency is not really about threads.&lt;/p&gt;

&lt;p&gt;It’s about asynchronous operations overlapping across time.&lt;/p&gt;

&lt;p&gt;And once you begin understanding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event Loop internals&lt;/li&gt;
&lt;li&gt;Promise scheduling&lt;/li&gt;
&lt;li&gt;Microtasks vs Macrotasks&lt;/li&gt;
&lt;li&gt;async/await execution flow&lt;/li&gt;
&lt;li&gt;Node.js Event Loop phases&lt;/li&gt;
&lt;li&gt;libuv architecture&lt;/li&gt;
&lt;li&gt;process.nextTick()&lt;/li&gt;
&lt;li&gt;Worker Threads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JavaScript suddenly stops feeling “magical.”&lt;/p&gt;

&lt;p&gt;It starts feeling predictable.&lt;/p&gt;

&lt;p&gt;One realization changed how I think about engineering:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Senior software engineering is mostly about execution order and coordination.&lt;/p&gt;
&lt;/blockquote&gt;

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

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

&lt;p&gt;Coordination.&lt;/p&gt;

&lt;p&gt;Scheduling.&lt;/p&gt;

&lt;p&gt;Consistency.&lt;/p&gt;

&lt;p&gt;Timing.&lt;/p&gt;

&lt;p&gt;That’s the real challenge behind large-scale systems.&lt;/p&gt;

&lt;p&gt;This article is a deep dive into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;synchronization&lt;/li&gt;
&lt;li&gt;concurrency&lt;/li&gt;
&lt;li&gt;async execution&lt;/li&gt;
&lt;li&gt;Node.js internals&lt;/li&gt;
&lt;li&gt;production race conditions&lt;/li&gt;
&lt;li&gt;backend coordination patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you enjoy low-level JavaScript internals and system behavior,&lt;br&gt;
you’ll probably enjoy this one.&lt;/p&gt;

&lt;p&gt;Would genuinely love feedback from other engineers.&lt;/p&gt;

&lt;p&gt;What async JavaScript or Node.js concept took you the longest to fully understand?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
