<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Balaji's Blog]]></title><description><![CDATA[Balaji's Blog]]></description><link>https://balajiharinath.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 08:05:19 GMT</lastBuildDate><atom:link href="https://balajiharinath.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[UseRef Hook in React]]></title><description><![CDATA[If you are a React developer, you would often be wondering how exactly the useRef Hook works and what are it's use cases. In this article let's explore useRef Hook along with it's use cases.

Introduction
By using useRef Hook we can control when we w...]]></description><link>https://balajiharinath.hashnode.dev/useref-hook-in-react</link><guid isPermaLink="true">https://balajiharinath.hashnode.dev/useref-hook-in-react</guid><category><![CDATA[React]]></category><category><![CDATA[ReactHooks]]></category><dc:creator><![CDATA[Balaji Harinath]]></dc:creator><pubDate>Sat, 14 May 2022 12:48:41 GMT</pubDate><content:encoded><![CDATA[<p>If you are a React developer, you would often be wondering how exactly the <strong>useRef Hook </strong>works and what are it's use cases. In this article let's explore useRef Hook along with it's use cases.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652518561955/zwF1NAGg4.jpg" alt="Not-having-Clear-understanding.jpg" /></p>
<h2 id="heading-introduction">Introduction</h2>
<p>By using useRef Hook we can control when we want to re-render a particular component. For example if we use useState or useReducer Hooks they automatically re-render the component when ever the state changes and we cannot control the re-render but with useRef Hook we can re-render a component whenever we want to.</p>
<h3 id="heading-syntax">Syntax</h3>
<p><code>const refContainer = useRef(initialValue);</code> </p>
<p>useRef returns a mutable ref object whose .current property is initialized to the passed argument (initialValue). The returned object will persist for the full lifetime of the component.</p>
<p>useRef() creates a plain JavaScript object. The only difference between useRef() and creating a {current: ...} object yourself is that useRef will give you the same ref object on every render.</p>
<p> useRef doesn’t notify when its content changes which means that mutating the .current property doesn’t cause a re-render.</p>
<h2 id="heading-use-cases">Use Cases</h2>
<p><strong>1. It can be used to store a mutable value that should not cause a re-render when updated</strong></p>
<p>If we want to count how many times our application renders, using the useState Hook traps us into an infinite loop because the Hook itself causes a re-render. To avoid this we can use useRef.</p>
<pre><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">App</span>(<span class="hljs-params"></span>) </span>{
  const [inputValue, setInputValue] <span class="hljs-operator">=</span> useState(<span class="hljs-string">""</span>);
  const count <span class="hljs-operator">=</span> useRef(<span class="hljs-number">0</span>);

  useEffect(() <span class="hljs-operator">=</span><span class="hljs-operator">&gt;</span> {
    count.current <span class="hljs-operator">=</span> count.current <span class="hljs-operator">+</span> <span class="hljs-number">1</span>;
  });

  <span class="hljs-keyword">return</span> (
    <span class="hljs-operator">&lt;</span><span class="hljs-operator">&gt;</span>
      <span class="hljs-operator">&lt;</span>input
        <span class="hljs-keyword">type</span><span class="hljs-operator">=</span><span class="hljs-string">"text"</span>
        value<span class="hljs-operator">=</span>{inputValue}
        onChange<span class="hljs-operator">=</span>{(e) <span class="hljs-operator">=</span><span class="hljs-operator">&gt;</span> setInputValue(e.target.<span class="hljs-built_in">value</span>)}
      <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
      <span class="hljs-operator">&lt;</span>h1<span class="hljs-operator">&gt;</span>Render Count: {count.current}<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>h1<span class="hljs-operator">&gt;</span>
    <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
  );
}
</code></pre><p>Output:-</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652520743435/u3aoAn-BA.PNG" alt="useRef-output1.PNG" /></p>
<p><strong>2. Accessing DOM elements</strong></p>
<p>We can add a <strong>ref</strong> attribute to an element to access it directly in the DOM.</p>
<pre><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">App</span>(<span class="hljs-params"></span>) </span>{
  const inputElement <span class="hljs-operator">=</span> useRef();

  const focusInput <span class="hljs-operator">=</span> () <span class="hljs-operator">=</span><span class="hljs-operator">&gt;</span> {
    inputElement.current.focus();
  };

  <span class="hljs-keyword">return</span> (
    <span class="hljs-operator">&lt;</span><span class="hljs-operator">&gt;</span>
      <span class="hljs-operator">&lt;</span>input <span class="hljs-keyword">type</span><span class="hljs-operator">=</span><span class="hljs-string">"text"</span> ref<span class="hljs-operator">=</span>{inputElement} <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
      <span class="hljs-operator">&lt;</span>button onClick<span class="hljs-operator">=</span>{focusInput}<span class="hljs-operator">&gt;</span>Focus Input<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>button<span class="hljs-operator">&gt;</span>
    <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
  );
}
</code></pre><p>Output:-</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652520502984/8RfE9Lf81.PNG" alt="useRef-output2.PNG" /></p>
<p><strong>3. Persist values between re-renders</strong></p>
<p>The useRef Hook can be used to keep track of previous state values because we are able to persist values between renders.</p>
<pre><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">App</span>(<span class="hljs-params"></span>) </span>{
  const [inputValue, setInputValue] <span class="hljs-operator">=</span> useState(<span class="hljs-string">""</span>);
  const previousInputValue <span class="hljs-operator">=</span> useRef(<span class="hljs-string">""</span>);

  useEffect(() <span class="hljs-operator">=</span><span class="hljs-operator">&gt;</span> {
    previousInputValue.current <span class="hljs-operator">=</span> inputValue;
  }, [inputValue]);

  <span class="hljs-keyword">return</span> (
    <span class="hljs-operator">&lt;</span><span class="hljs-operator">&gt;</span>
      <span class="hljs-operator">&lt;</span>input
        <span class="hljs-keyword">type</span><span class="hljs-operator">=</span><span class="hljs-string">"text"</span>
        value<span class="hljs-operator">=</span>{inputValue}
        onChange<span class="hljs-operator">=</span>{(e) <span class="hljs-operator">=</span><span class="hljs-operator">&gt;</span> setInputValue(e.target.<span class="hljs-built_in">value</span>)}
      <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
      <span class="hljs-operator">&lt;</span>h2<span class="hljs-operator">&gt;</span>Current Value: {inputValue}<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>h2<span class="hljs-operator">&gt;</span>
      <span class="hljs-operator">&lt;</span>h2<span class="hljs-operator">&gt;</span>Previous Value: {previousInputValue.current}<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>h2<span class="hljs-operator">&gt;</span>
    <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
  );
}
</code></pre><p>In the useEffect, we are updating the useRef current value each time the inputValue is updated by entering text into the input field.</p>
<p>Output:-</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1652520407658/ITPy9Dshb.PNG" alt="useRef-output.PNG" /></p>
<h2 id="heading-summary">Summary</h2>
<ol>
<li><p>The useRef Hook can be used to store a mutable object that does not cause a re-render when updated.</p>
</li>
<li><p>The useRef Hook can be used to access a DOM element directly.</p>
</li>
<li><p>The useRef Hook allows us to persist values between the renders.</p>
</li>
</ol>
<p>That's it for this article. Hope you learnt something new. Cheers!!!</p>
]]></content:encoded></item><item><title><![CDATA[Async and Defer attributes in Javascript]]></title><description><![CDATA[Introduction
async and defer are boolean attributes which are used along with the script tag to load external scripts efficiently into the web page.
When we load a web page there are 2 major things happening in the browser.
One is HTML parsing and th...]]></description><link>https://balajiharinath.hashnode.dev/async-and-defer-attributes-in-javascript</link><guid isPermaLink="true">https://balajiharinath.hashnode.dev/async-and-defer-attributes-in-javascript</guid><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Balaji Harinath]]></dc:creator><pubDate>Wed, 04 May 2022 18:20:17 GMT</pubDate><content:encoded><![CDATA[<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651676526900/TwTwbcLk_.jpg" alt="pankaj-patel-1IW4HQuauSU-unsplash.jpg" /></p>
<h2 id="heading-introduction">Introduction</h2>
<p><strong>async</strong> and <strong>defer</strong> are boolean attributes which are used along with the script tag to load external scripts efficiently into the web page.</p>
<p>When we load a web page there are 2 major things happening in the browser.
One is HTML parsing and the other is loading of scripts.</p>
<p>The loading of scripts contain 2 parts:-</p>
<ol>
<li>Fetching the script from the network.</li>
<li>Executing the script line by line.</li>
</ol>
<p><strong>Let us consider 3 scenarios:-</strong></p>
<h3 id="heading-1-if-there-is-no-async-or-defer-attribute-specified-for-the-script-tag">1. If there is no async or defer attribute specified for the script tag</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651679652246/y_14VrDGZ.PNG" alt="src.PNG" /></p>
<p>Here the parsing of HTML starts and as soon as the script tag is encountered, the parsing of the HTML stops then and there itself. Now the browser starts fetching the contents of the script tag and then executes it. After this the parsing of HTML completes.</p>
<p>The disadvantage of this approach is that the Javascript is blocking the rendering of HTML.</p>
<h3 id="heading-2-when-an-async-attribute-is-used-along-with-the-script-tag">2. When an async attribute is used along with the script tag</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651679720493/Hj2eMeL9F.PNG" alt="async.PNG" /></p>
<p>Here the parsing of HTML starts and when the script tag is encountered, the parsing of the HTML continues while the scripts are fetched in parallel. After the scripts are fetched the parsing of HTML is paused and the script tag is executed. After the execution of script tag the parsing of HTML completes.</p>
<p>The scripts load in the background and run when ready. The DOM and other scripts don’t wait for them, and they don’t wait for anything. A fully independent script that runs when loaded. Hence async attribute needs to be used only when the scripts are independent of each other.</p>
<h3 id="heading-3-when-a-defer-attribute-is-used-along-with-the-script-tag">3. When a defer attribute is used along with the script tag</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651680824717/sjCNiFH_5.PNG" alt="defer2.PNG" /></p>
<p>Here the parsing of HTML starts and when the script tag is encountered, the parsing of the HTML continues while the scripts are fetched in parallel. After the scripts are fetched the execution of the scripts wait till the parsing of HTML is completed. Hence the rendering of HTML is not blocked in this approach.</p>
<h2 id="heading-summary">Summary</h2>
<ul>
<li><p>The <strong>async</strong> attribute is somewhat similar to defer. It also makes the script non-blocking but it starts executing the scripts which ever is fetched first. Hence it does not guarantee the order of execution of the scripts.</p>
</li>
<li><p>Other scripts don’t wait for async scripts, and async scripts don’t wait for them.</p>
</li>
<li><p>The <strong>defer</strong> attribute tells the browser not to wait for the script. Instead, the browser will continue to process the HTML, build DOM. The script loads in the background, and then runs when the DOM is fully built.</p>
</li>
<li><p>Deferred scripts keep their relative order, just like regular scripts.</p>
</li>
<li><p>The defer attribute is only for external scripts.</p>
</li>
<li><p>The defer attribute is ignored if the script tag has no src.</p>
</li>
</ul>
<p>So that's it for this blog. I hope you have learnt something new. Cheers!!!</p>
]]></content:encoded></item><item><title><![CDATA[Generators in Javascript]]></title><description><![CDATA[Do you know what lies under the hood of Async-Await ?

It is the generator function. Yes you heard it right it is the generator function !!!
What are generators in Javascript?
Generators are functions that can be exited and later re-entered. Their co...]]></description><link>https://balajiharinath.hashnode.dev/generators-in-javascript</link><guid isPermaLink="true">https://balajiharinath.hashnode.dev/generators-in-javascript</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[async]]></category><dc:creator><![CDATA[Balaji Harinath]]></dc:creator><pubDate>Wed, 04 May 2022 14:11:03 GMT</pubDate><content:encoded><![CDATA[<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651670104410/kh6cxj60b.jpg" alt="gabriel-heinzer-g5jpH62pwes-unsplash.jpg" /></p>
<h3 id="heading-do-you-know-what-lies-under-the-hood-of-async-await">Do you know what lies under the hood of Async-Await ?</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651670437480/ursdQu3ud.jpg" alt="juan-rumimpunu-nLXOatvTaLo-unsplash.jpg" /></p>
<p>It is the generator function. Yes you heard it right it is the generator function !!!</p>
<h3 id="heading-what-are-generators-in-javascript">What are generators in Javascript?</h3>
<p>Generators are functions that can be exited and later re-entered. Their context(variable bindings) will be saved across re-renders.</p>
<p><strong>Lets understand this in detail...</strong> </p>
<p>Calling a generator function does not execute it's body immediately, an iterator object for the function is returned instead.
When the iterators next() method is called, the generator function's body is executed until the first <strong>yield</strong> expression which specifies the value to be returned from the iterator.</p>
<p>The next() method returns an object with a <strong>value</strong> property containing the yielded value and a <strong>done</strong> property which indicates whether the generator has yielded it's last value.</p>
<pre><code>{ <span class="hljs-keyword">value</span>: <span class="hljs-keyword">yield</span> <span class="hljs-keyword">value</span>, done: <span class="hljs-keyword">if</span> last <span class="hljs-keyword">yield</span> then <span class="hljs-literal">true</span> <span class="hljs-keyword">else</span> <span class="hljs-literal">false</span>}
</code></pre><p>Calling the next() method with an argument will resume the generator function.</p>
<p>Not clear. That's perfectly fine. Let's go through a simple example to understand this better.</p>
<pre><code><span class="hljs-function"><span class="hljs-keyword">function</span> * <span class="hljs-title">generator</span> (<span class="hljs-params">i</span>) </span>{
yield i;
yield i<span class="hljs-operator">+</span><span class="hljs-number">10</span>;
}
const gen <span class="hljs-operator">=</span> generator(<span class="hljs-number">10</span>);

console.log(gen.next().<span class="hljs-built_in">value</span>); <span class="hljs-comment">//output: 10</span>
console.log(gen.next().<span class="hljs-built_in">value</span>); <span class="hljs-comment">//output: 20</span>
</code></pre><p>Now lets see the working of this code:-</p>
<ul>
<li><p>When the generator function is called with 10 as it's argument the entire generator function is not executed.</p>
</li>
<li><p>The execution stops at the line where it finds the first yield expression.</p>
</li>
<li><p>Now to obtain the value of the yield expression we use next() method which returns an object with the <strong>value</strong> property and <strong>done</strong> property which sets to true only for the last yield expression in a generator function. So gen.next().value returns a value 10 and the value of done is false.</p>
</li>
<li><p>Now the generator function is paused at this line. To re-enter and continue the execution of generator function we need to again invoke the next() method.</p>
</li>
<li><p>So when we again execute the gen.next.value(), the yield i+10 expression will be evaluated and the value of 10+10 (i+10) will be assigned to the <strong>value</strong> property of next() method and the <strong>done</strong> property will be set to true now because there are no further yield expressions in the generator function.</p>
</li>
</ul>
<p>You might be wondering how the function remembers the value of i=10 when the function re-entered. Recall what I mentioned in the beginning of the article!!!
<strong>Generator function's context(variable binding) will be saved across re-renders. </strong>
I hope now this statement is clear.</p>
<h3 id="heading-summary">Summary:-</h3>
<p>In simple terms generator function is nothing but a normal function with pause-play feature. The yield keyword can be considered as a pause button and the next() method can be considered as the play button.</p>
<h3 id="heading-application">Application:-</h3>
<p>Generators combined with promises are a very powerful tool for asynchronous programming which in fact is the basis for async-await.</p>
<p>So that's it for this blog. I hope you have learnt something new. Cheers!!!</p>
]]></content:encoded></item><item><title><![CDATA[CSS Flexbox Properties]]></title><description><![CDATA[Hi!! If you are working to improve your CSS skills then this blog is definitely for you. This blog describes about the most widely used CSS Layout mode the "Flexbox".
Lets get started!!!
Introduction:-
Before the CSS Flexbox Layout Module there were ...]]></description><link>https://balajiharinath.hashnode.dev/css-flexbox-properties</link><guid isPermaLink="true">https://balajiharinath.hashnode.dev/css-flexbox-properties</guid><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Balaji Harinath]]></dc:creator><pubDate>Thu, 16 Sep 2021 08:35:44 GMT</pubDate><content:encoded><![CDATA[<p>Hi!! If you are working to improve your CSS skills then this blog is definitely for you. This blog describes about the most widely used CSS Layout mode the "Flexbox".</p>
<p>Lets get started!!!</p>
<h3 id="introduction">Introduction:-</h3>
<p>Before the CSS Flexbox Layout Module there were four layout modes:</p>
<ol>
<li>Block</li>
<li>Inline</li>
<li>Table</li>
<li>Positioned</li>
</ol>
<p>The  CSS flexbox layout allows to easily format HTML. Flexbox makes it simple to align items vertically and horizontally using rows and columns. The items will flex to different sizes to fill the space. It makes responsive design easier.</p>
<h3 id="basics-of-flexbox">Basics of Flexbox:-</h3>
<p>The flex layout is based on "flex-flow directions".
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631777635813/BvV6byrkN.png" alt="flexbox axis.PNG" /></p>
<p>The items will be placed either along the "main axis" or along the "cross axis".</p>
<ul>
<li><p><strong>main axis</strong> – The main axis of a flex container is the primary axis along which flex items are placed. </p>
</li>
<li><p><strong>main-start | main-end</strong> – The flex items are placed within the container starting from main-start and extends till main-end.</p>
</li>
<li><p><strong>main size</strong> – It is the item’s width or height, whichever is in the main dimension.</p>
</li>
<li><p><strong>cross axis</strong> – The axis perpendicular to the main axis is called the cross axis. </p>
</li>
<li><p><strong>cross-start | cross-end</strong> – Flex lines are filled with items and placed into the container starting on the cross-start side of the flex container and going toward the cross-end side.</p>
</li>
<li><p><strong>cross size</strong> – It is the width or height of a flex item, whichever is in the cross dimension.</p>
</li>
</ul>
<h3 id="properties-of-flexbox">Properties of Flexbox:-</h3>
<p><strong>flex-direction </strong>:- The flex-direction is defined by the main axis. The direction of the main axis is the flex direction.</p>
<p><code>.container {
  flex-direction: row | row-reverse | column | column-reverse;
}</code>                                                                                                        </p>
<ul>
<li>row : It is the default flex direction. The direction is from left to right. </li>
<li>row-reverse: The direction is from right to left.</li>
<li>column: The direction is from top to bottom.</li>
<li>column-reverse: The direction is from bottom to top.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631778868782/CSu8rQ_F2.png" alt="flex direction.PNG" /></p>
<p><strong>flex-wrap</strong> :- This property allows the items to be wrapped according to one's requirement.</p>
<p><code>.container {
  flex-wrap: nowrap | wrap | wrap-reverse;
}</code></p>
<ul>
<li>nowrap : This is the default one. This attribute enables all the flex items will be on one line.</li>
<li>wrap: This attribute enables the flex items to wrap onto multiple lines, from top to bottom.
-wrap-reverse: This is the reverse of wrap where in the flex items will wrap onto multiple lines from bottom to top.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631779554705/VZzKT3-fL.png" alt="flex wrap.PNG" /></p>
<p><strong>justify-content</strong> :- This property defines the alignment of the flex items along the main axis.</p>
<p><code>.container {
  justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly | start | end | left | ;</code></p>
<ul>
<li><p>flex-start : This is the default attribute where in the flex items items are packed toward the start of the flex-direction.</p>
</li>
<li><p>flex-end: This attribute enables the flex items to be placed towards the end of the flex-direction.</p>
</li>
<li><p>start: This attribute enables the flex items to be packed toward the start of the writing-mode direction.</p>
</li>
<li><p>end: This attribute enables the flex items to be placed toward the end of the writing-mode direction.</p>
</li>
<li><p>left: This attribute enables the flex items to be packed towards the left edge of the container.</p>
</li>
<li><p>right: This attribute enables the flex items to be packed towards the right edge of the container.</p>
</li>
<li><p>center: This attribute enables the flex items to be to be centered.</p>
</li>
<li><p>space-between: This attribute enables the flex items to be evenly spaced between them.</p>
</li>
<li><p>space-around: This attribute enables the flex items to be evenly spaced around them. The first item will have one unit of space against the container edge, but two units of space between the next item because that next item has its own spacing</p>
</li>
<li><p>space-evenly: This attribute enables the flex items to be placed such that the spacing between any two items including the space to the edges are equal.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631780335206/kK8pZZMVt.png" alt="justify content.PNG" /></p>
<p><strong>align-items</strong> :- This property defines the alignment of the flex items along the main axis.</p>
<p><code>.container {
  align-items: stretch | flex-start | flex-end | center | baseline | first baseline | last baseline | start | end | self-start | self-end ;</code></p>
<ul>
<li><p>stretch: This is the default attribute which stretches the flex elements to fill the container.</p>
</li>
<li><p>flex-start / start / self-start: This attribute enables the flex items to be placed at the start of the cross axis.</p>
</li>
<li><p>flex-end / end / self-end: This attribute enables the flex items to be placed at the end of the cross axis. </p>
</li>
<li><p>center: This attribute enables the flex items to be centered along the cross-axis.</p>
</li>
<li><p>baseline: This attribute enables the flex items to be aligned such as their baselines align.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631780701363/EGxQLuCrC.png" alt="align items.PNG" /></p>
<p>These are some of the basic properties of flexbox. There a lot of other properties as well. I hope the understanding of these properties is very important to start using flexbox layout in you web apps. </p>
<blockquote>
<p>keep learning, keep moving, keep growing!!!</p>
</blockquote>
<p>Cheers!!!</p>
]]></content:encoded></item><item><title><![CDATA[The dilemma of a fresher]]></title><description><![CDATA[Most of the freshers would be in a dilemma whether to start with DSA or to start with cloud computing, ML, AI, web development and many more. I have come across a lot of posts and blogs regarding this. I would like to give my thoughts on this one.
So...]]></description><link>https://balajiharinath.hashnode.dev/the-dilemma-of-a-fresher</link><guid isPermaLink="true">https://balajiharinath.hashnode.dev/the-dilemma-of-a-fresher</guid><category><![CDATA[Web Development]]></category><category><![CDATA[data structures]]></category><dc:creator><![CDATA[Balaji Harinath]]></dc:creator><pubDate>Thu, 16 Sep 2021 06:03:27 GMT</pubDate><content:encoded><![CDATA[<p>Most of the freshers would be in a dilemma whether to start with DSA or to start with cloud computing, ML, AI, web development and many more. I have come across a lot of posts and blogs regarding this. I would like to give my thoughts on this one.</p>
<p>So lets get started.</p>
<h3 id="why-start-with-dsa">Why start with DSA?</h3>
<p>I feel any one who is new to coding or just started to learn coding should begin with DSA because this is the basis of any programming language and by doing more of DSA initially our logic building ability and the thought process to approach a problem improves a lot. </p>
<p>I am not insisting people to go very deep into DSA such as trees and graphs. At least you should be familiar with arrays, linked lists, stacks and queues.</p>
<h3 id="is-dsa-alone-sufficient">Is DSA alone sufficient?</h3>
<p>The answer would be <strong>NO</strong>. This is because doing DSA alone will not help you to have projects on your resume. Having good projects on our resume is the most essential part during technical interviews and especially as a fresher that will only be the proof of our skills and learning rather than the degree certificates.</p>
<h3 id="what-should-we-do-to-have-good-projects-on-our-resume-as-a-fresher">What should we do to have good projects on our resume as a fresher?</h3>
<p>The answer is <strong>Web Development</strong>. There are a lot of opportunities in web development and more over it is one of the most important skills required in the industry currently. The reason as to why I stressed about not going deep into DSA is that we rarely use DSA in our actual work environment or in real life projects.
If we learn web development and land in a job related to that then we need not struggle initially in our jobs as well because we already have that skill.</p>
<p>Since we have started with DSA we would be familiar with how to build a logic for a given scenario and this would be very handy while doing the java script part in our web development projects.</p>
<h3 id="conclusion">Conclusion:-</h3>
<p>I would like to conclude this post by saying that both DSA and web development are important to get a good job but the ideal approach would be to start with DSA(basics) and then master web development.</p>
<p>Two important points to be noted:-</p>
<ol>
<li><p>While choosing the language for DSA do not try with multiple languages. Pick any one language and stick to it. My preference would be C++.</p>
</li>
<li><p>Either DSA or web development anything which we are learning should be done consistently. If we are able to do both of them consistently this would be the ideal scenario. I know doing both of them simultaneously is hard but remember that "Good things never come easily".</p>
</li>
</ol>
<p>Cheers!!!</p>
]]></content:encoded></item></channel></rss>