<?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: Himanshu_Sharma</title>
    <description>The latest articles on DEV Community by Himanshu_Sharma (@himanshu_007).</description>
    <link>https://dev.to/himanshu_007</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%2F912236%2F7851cf21-e016-429d-834e-449a8700231d.jpeg</url>
      <title>DEV Community: Himanshu_Sharma</title>
      <link>https://dev.to/himanshu_007</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/himanshu_007"/>
    <language>en</language>
    <item>
      <title>AI, Companies, and the Shrinking Role of People.</title>
      <dc:creator>Himanshu_Sharma</dc:creator>
      <pubDate>Sun, 15 Feb 2026 17:51:10 +0000</pubDate>
      <link>https://dev.to/himanshu_007/ai-companies-and-the-shrinking-role-of-people-2lmf</link>
      <guid>https://dev.to/himanshu_007/ai-companies-and-the-shrinking-role-of-people-2lmf</guid>
      <description>&lt;h1&gt;
  
  
  The End of Institutional Memory: When Knowledge Becomes Infrastructure
&lt;/h1&gt;

&lt;p&gt;For decades, companies survived on memory stored inside people.&lt;/p&gt;

&lt;p&gt;The senior employee who knew why a product was built a certain way. The manager who remembered the failed launch nobody talks about anymore. The engineer who understood the fragile system everyone else was afraid to touch.&lt;/p&gt;

&lt;p&gt;When those people left, something real left with them.&lt;/p&gt;

&lt;p&gt;Knowledge transfer was fragile. Experience was power. Loyalty mattered because memory mattered.&lt;/p&gt;

&lt;p&gt;That era is ending.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Memory Becomes Infrastructure
&lt;/h2&gt;

&lt;p&gt;Artificial intelligence can now track a company’s entire growth timeline.&lt;/p&gt;

&lt;p&gt;It can retain product history, operational decisions, internal documentation, performance data, customer behavior patterns, and strategic shifts.&lt;/p&gt;

&lt;p&gt;It does not forget. It does not resign. It does not burn out.&lt;/p&gt;

&lt;p&gt;Institutional memory no longer needs to live inside a person. It can live inside infrastructure.&lt;/p&gt;

&lt;p&gt;When knowledge becomes embedded in systems instead of individuals, companies stop being vulnerable to employee exits. The risk of losing experience shrinks. The hierarchy built around “who knows what” starts to flatten.&lt;/p&gt;

&lt;p&gt;From a purely operational perspective, this is efficient.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No leaves.&lt;/li&gt;
&lt;li&gt;No internal drama.&lt;/li&gt;
&lt;li&gt;No emotional instability disrupting output.&lt;/li&gt;
&lt;li&gt;No dependency on one person holding critical context.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Work continues. Problems get solved. Systems operate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results Over People
&lt;/h2&gt;

&lt;p&gt;At the end of the day, companies do not reward effort. They reward results.&lt;/p&gt;

&lt;p&gt;Most customers do not care who solved the issue. They care that it works.&lt;/p&gt;

&lt;p&gt;Nobody asks how their phone processes data. They expect it to function. If it breaks, they want it fixed. The mechanism is irrelevant.&lt;/p&gt;

&lt;p&gt;Organizations operate the same way.&lt;/p&gt;

&lt;p&gt;If AI can execute bulk work, retain knowledge, coordinate processes, and optimize decisions, then hiring becomes a choice rather than a necessity.&lt;/p&gt;

&lt;p&gt;Entire layers of operational roles begin to look optional.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Compression of Control
&lt;/h2&gt;

&lt;p&gt;With enough automation, a single individual at the top, supported by AI systems and a small coordinating team, could oversee a company worth billions.&lt;/p&gt;

&lt;p&gt;Execution moves into machines. Oversight compresses upward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One human. Massive leverage.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The bottleneck stops being labor. It becomes decision-making.&lt;/p&gt;

&lt;p&gt;This is not just about job replacement. It is about control.&lt;/p&gt;

&lt;p&gt;When knowledge belongs to infrastructure instead of people, bargaining power changes. When systems hold context, humans become operators of tools rather than carriers of memory.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The future of work isn’t arriving with noise, it’s arriving with fewer seats at the table.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Rise of the Black Box
&lt;/h2&gt;

&lt;p&gt;At the same time, society grows comfortable with black boxes.&lt;/p&gt;

&lt;p&gt;People rarely question how complex systems work as long as they deliver results. Output becomes the only visible metric. Process disappears. Trust shifts from human experience to algorithmic performance.&lt;/p&gt;

&lt;p&gt;The more AI integrates into corporate systems, the less visible human thought becomes.&lt;/p&gt;

&lt;p&gt;It gets converted into models. Encoded into workflows. Abstracted into dashboards.&lt;/p&gt;

&lt;p&gt;Convenience increases. Efficiency increases. Human presence decreases.&lt;/p&gt;

&lt;p&gt;Companies may gradually stop asking, “Who did this?” and start asking only, “Did it work?”&lt;/p&gt;

&lt;h2&gt;
  
  
  The Quiet Transition
&lt;/h2&gt;

&lt;p&gt;If infrastructure can handle cognitive labor at scale, hiring slows. Roles compress. Influence concentrates at the top.&lt;/p&gt;

&lt;p&gt;The future may not be a dramatic takeover.&lt;/p&gt;

&lt;p&gt;It may be something quieter.&lt;/p&gt;

&lt;p&gt;A steady transition from people-centered organizations to system-centered ones.&lt;/p&gt;

&lt;p&gt;No mass announcement. No visible collapse.&lt;/p&gt;

&lt;p&gt;Just fewer humans needed to keep the machine running.&lt;/p&gt;

&lt;p&gt;And eventually, fewer humans inside the machine at all.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;In the next piece, we go deeper into what this shift really means for people.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>techtalks</category>
      <category>programming</category>
    </item>
    <item>
      <title>Abstraction in Object Oriented Programming- Explained using Java</title>
      <dc:creator>Himanshu_Sharma</dc:creator>
      <pubDate>Sun, 04 Sep 2022 06:44:45 +0000</pubDate>
      <link>https://dev.to/himanshu_007/abstraction-in-object-oriented-programming-explained-using-java-4eie</link>
      <guid>https://dev.to/himanshu_007/abstraction-in-object-oriented-programming-explained-using-java-4eie</guid>
      <description>&lt;p&gt;Abstraction is one of the 4 pillars of object-oriented programming. The main purpose of abstraction is to hide implementation details and show only the required/essential information. In simple words, it reduces complexity for normal users. It is mainly used to solve the issues at the design level, mostly the conceptual part.&lt;/p&gt;

&lt;p&gt;Abstraction can be achieved via Abstract classes and Interfaces. Through abstract classes, java can’t achieve true abstraction, but by the use of interfaces, it can achieve 100% abstraction. Let’s see how.&lt;/p&gt;

&lt;p&gt;In this Article, I will discuss Interfaces.&lt;/p&gt;

&lt;p&gt;Multiple inheritance is not allowed in java, meaning one class cannot extend multiple classes because if such a case happened then the child class cannot differ which method came from which parent class. In such a scenario we can use Interfaces to enjoy the benefits of multiple inheritance and here is how.&lt;/p&gt;

&lt;p&gt;Interfaces: An Interface is a set of specifications that a class must implement. By default, interfaces are public and abstract, so there is no need of defining them explicitly. Let us take an example.&lt;/p&gt;

&lt;p&gt;In the below code, an interface named Engineer is created which means any class that implements Engineer must have to use its defined methods. If you see inside interface PracticeEngineering, it is neither defined public nor abstract implying that by default methods inside interfaces are public and abstract, there is no harm if you define also.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package Interfaces;

public interface Engineer {

void PracticeEngineering();//by default abstract and public

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

&lt;/div&gt;



&lt;p&gt;We have one more interface called Doctor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package Interfaces;

public interface Doctor{

void performSurgery();
void beomceDoctor(); //by default abstract and public

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

&lt;/div&gt;



&lt;p&gt;Suppose a person class named “Student” want to become an engineer as well as a doctor. Now, there is no hierarchy between Engineer and Doctor, both the professions differ from each other, meaning neither engineer can become sub-class of doctor nor doctor can become sub-class of engineer; both of them are at the same level. Such cases come under multiple inheritance that is solved using interfaces.&lt;/p&gt;

&lt;p&gt;A class can implement multiple interfaces in order to acquire both of their benefits.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package Interfaces;
public class Student implements Engineer, Doctor{

  public static void main(String[] args) {
       Person obj = new Person();
       obj.PracticeEngineering();
       obj.performSurgery();
       obj.beomceDoctor();
  }

@Override
public void performSurgery() {
System.out.println("Person is performing surgery");
}

@Override
public void PracticeEngineering() {
System.out.println("Person is pursuing Engineering");
}

@Override
public void beomceDoctor() {
System.out.println("Person is pursuing MBBS");
}

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

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;NOTE&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A child class can extend only one parent class in java ( multiple inheritance is not allowed in java)&lt;/li&gt;
&lt;li&gt;One interface can extend multiple interfaces
Ex: Interface “VideoEditing” can extends two Interfaces EditVideo and UploadVideo.
&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;interface EditVideo {
   void videoEditor();
}

interface UploadVideo {
   void videoUploader()
}

public interface VideoEditing extends  EditVideo, UploadVideo {
   void StudyConcept();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;When a class implements an interface it must include implementation for all its methods.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ex: If a class “Blogger” implements a VideoEditing interface then it should include methods videoEditor() and videoUploader().&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class Blogger implements VideoEditing {

  @Override
  void StudyConcept() {
  System.out.println("Blogger is Studing concept");
  }

  @Override
  void videoEditor() {
  System.out.println("Blogger is editing video");
  }

  @Override
  void videoUploader() {
  System.out.println("Blogger is uploading video");
  }
}

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

&lt;/div&gt;



&lt;p&gt;Thanks for spending your valuable time reading this article, I am sure you learned something today.😄&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>abstraction</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>3 Dev hacks of JS ...spread Operator for Arrays</title>
      <dc:creator>Himanshu_Sharma</dc:creator>
      <pubDate>Sat, 20 Aug 2022 15:08:40 +0000</pubDate>
      <link>https://dev.to/himanshu_007/3-dev-hacks-of-js-spread-operator-for-arrays-2oi3</link>
      <guid>https://dev.to/himanshu_007/3-dev-hacks-of-js-spread-operator-for-arrays-2oi3</guid>
      <description>&lt;p&gt;Being a software Engineer, it's always learning new things, and implementing them on a loop😉. This post is about the JavaScript ES6 ...spread operator, to make your life easier, and code like a pro.😎&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Spread Operator?
&lt;/h2&gt;

&lt;p&gt;How MDN defines it?&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%2F2hwln4xwyd2i4vbuh4zz.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%2F2hwln4xwyd2i4vbuh4zz.png" alt="MDN Defination" width="728" height="139"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;In simple words, it's just 3 dots(...) which can be applied to iterable, such as Arrays, Sets to combine/copy the elements. When applied to objects, it helps in updating/adding key-value pairs. &lt;/p&gt;

&lt;p&gt;Let's understand how it's applied to arrays by a story.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Scene 1&lt;/strong&gt;&lt;/em&gt;: You are working on a feature and you got 2 arrays with different elements to combine, how will you 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;cosnt array1 = ["JS", "REACT", "GIT"]
const array2 = ["Node", "Mongo"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Is this the approach you are following?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const newArray = array1.concat(array2);

console.log(newArray)
// output -&amp;gt; ["JS", "REACT", "GIT", "Node", "Mongo"]

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

&lt;/div&gt;



&lt;p&gt;If yes, then start using the below one, it's recommended, understandable, and more transparent.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const mergedArray = [...array1, ...array2];

console.log(mergedArray)
// output -&amp;gt; ["JS", "REACT", "GIT", "Node", "Mongo"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Just for sake of understanding consider spread as "&lt;em&gt;remove bracket and get all the elements inside them&lt;/em&gt;"😜&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Scene 2&lt;/strong&gt;&lt;/em&gt;: Let's say you have mergedArray, and now you want to clone it and perform some operations.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// we now have mergedArray= ["JS", "REACT", "GIT", "Node", "Mongo"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's clone the array, it's super easy. Just an assignment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const cloneArray = mergedArray;

clonedArray[0] = "Python";

conosle.log(clonedArray) 
// ["Python", "REACT", "GIT", "Node", "Mongo"]😎

console.log(mergedArray) 
// ["Python", "REACT", "GIT", "Node", "Mongo"]😲
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Woo! you did not expect that to happen. Remember, an array is a reference type, when assigned to a variable, it will store the reference, not the actual value. So when you cloned merged array via "=" assignment operator, it stored the address, not the value. So the change made in cloned array, mutated actual array.&lt;/p&gt;

&lt;p&gt;Then how to do it, don't worry spread operator to the rescue.✨&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const clonedArray = [...mergedArray];

clonedArray[0] = "Python";

conosle.log(clonedArray) 
// ["Python", "REACT", "GIT", "Node", "Mongo"]😎

console.log(mergedArray) 
// ["JS", "REACT", "GIT", "Node", "Mongo"]😃
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here spread operator is not referring to the address of mergedArray, instead it's copying the array at a new address, so that changes made on clonedArray does not mutate mergedArray.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Scene 3&lt;/strong&gt;&lt;/em&gt;: Let's say you have an number array, how to get the max and min element from the array. Believe in ...spread😂&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const numberArray = [22, 58, 46, 20, 5]

console.log(Math.max(...numberArray)) // -&amp;gt; 58
console.log(Math.min(...numberArray)) // -&amp;gt; 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thank you for spending valuable time reading this post, I am sure you learned something today.😄&lt;/p&gt;

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