<?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: Onur Eren</title>
    <description>The latest articles on DEV Community by Onur Eren (@onureren).</description>
    <link>https://dev.to/onureren</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%2F1104486%2F4bc8a0b7-b8eb-4445-a514-2ed9592b7e38.jpg</url>
      <title>DEV Community: Onur Eren</title>
      <link>https://dev.to/onureren</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/onureren"/>
    <language>en</language>
    <item>
      <title>VSCode React Snippets Extension</title>
      <dc:creator>Onur Eren</dc:creator>
      <pubDate>Mon, 17 Jul 2023 14:49:49 +0000</pubDate>
      <link>https://dev.to/onureren/vscode-react-snippets-extension-39l2</link>
      <guid>https://dev.to/onureren/vscode-react-snippets-extension-39l2</guid>
      <description>&lt;p&gt;You can use VSCode React snippets extension to quickly initialize your React components: &lt;a href="https://t.ly/aAucz"&gt;https://t.ly/aAucz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RXt7i4WP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1pun5g4r8wr5f60cj6l7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RXt7i4WP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1pun5g4r8wr5f60cj6l7.gif" alt="vscode-react-snippets-extension-gif" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>vscode</category>
      <category>javascript</category>
    </item>
    <item>
      <title>3 Mistakes I Made When I Was First Learning To Code</title>
      <dc:creator>Onur Eren</dc:creator>
      <pubDate>Mon, 17 Jul 2023 11:52:24 +0000</pubDate>
      <link>https://dev.to/onureren/3-mistakes-i-made-when-i-was-first-learning-to-code-94b</link>
      <guid>https://dev.to/onureren/3-mistakes-i-made-when-i-was-first-learning-to-code-94b</guid>
      <description>&lt;p&gt;When I first started learning to code, I made a ton of mistakes in how I approached it.&lt;/p&gt;

&lt;p&gt;I tried some approaches that felt productive and gave me the illusion that I was making progress, but the topics I was learning would not stick.&lt;/p&gt;

&lt;p&gt;As a result, I wasted a lot of time and it took me a lot longer than necessary to learn the skills I needed to get my first job.&lt;/p&gt;

&lt;p&gt;I wanted to write about the three major mistakes I made, so you do not make the same mistakes and waste your precious time, like I did.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistake #1: Learning language syntax instead of building projects
&lt;/h2&gt;

&lt;p&gt;When I first started learning to code, I started with HTML, CSS and JavaScript like most beginner web developers do.&lt;/p&gt;

&lt;p&gt;The problem with the way I was learning these technologies was that I was not building any projects. &lt;/p&gt;

&lt;p&gt;Instead, I was reading books and watching tutorials. &lt;/p&gt;

&lt;p&gt;After consuming video after video and tutorial after tutorial, I realized nothing was sticking. I was mostly learning syntax, but I wasn't using anything I learned in practice.&lt;/p&gt;

&lt;p&gt;When I finally decided to build my first project with HTML, CSS, and JavaScript, I realized how much time I had wasted by passively consuming content and only learning syntax. I could barely recall anything I previously learned from books and tutorials.&lt;/p&gt;

&lt;p&gt;The more projects I built, the more things started to click. I would try to build a feature, get stuck and then I would Google and find the right solution. This constant feedback loop ended up accelerating my learning significantly.&lt;/p&gt;

&lt;p&gt;The same thing happens when you are learning a human language as well.&lt;/p&gt;

&lt;p&gt;You can study grammar for hours. Memorize hundreds of words. But if you are not practicing speaking or writing in that language, you are barely getting any better. &lt;/p&gt;

&lt;p&gt;You are just memorizing words and grammar rules. And once you try writing a message or speaking to someone in that language, the real level of your proficiency becomes obvious.&lt;/p&gt;

&lt;p&gt;So here is my simple advice...&lt;/p&gt;

&lt;p&gt;Start building projects from day one.&lt;/p&gt;

&lt;p&gt;No one learns to ride a bike from a manual.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistake #2: Not Asking For Feedback Or Help
&lt;/h2&gt;

&lt;p&gt;Another big mistake I made at the begging of my journey was to write code and build projects in my own bubble.&lt;/p&gt;

&lt;p&gt;I was afraid of showing the code I wrote and getting feedback. So I never showed a single person the projects I built. &lt;/p&gt;

&lt;p&gt;The issue was that I was terrified of people's judgment. &lt;/p&gt;

&lt;p&gt;I thought everyone would tell me the code I wrote was too basic and the projects I was working on were useless. &lt;/p&gt;

&lt;p&gt;I thought people would tell me I was being delusional and I would never be a &lt;em&gt;real programmer&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;And I thought all these (imaginary) people were right...&lt;/p&gt;

&lt;p&gt;Did I really think I could learn to code on my own? Who did I think I was? People went to university for 4 years to study Computer Science. Others went to Coding Bootcamps.&lt;/p&gt;

&lt;p&gt;I was just a guy, sitting on the kitchen table and watching videos on Udemy and building Todo apps and Tic-Tac-Toe...&lt;/p&gt;

&lt;p&gt;What I later realized was that no one really cared and I was mostly in my own head. &lt;/p&gt;

&lt;p&gt;At some point, I started telling people that I was learning to code, and most people were actually quite supportive. Not a single person discouraged me or questioned what I was doing. Friends connected me with people in their network who could help me get an entry-level job.&lt;/p&gt;

&lt;p&gt;If I had started asking for feedback from developers in my network, or people online, I would be able to get some feedback on some of the projects I had built. Perhaps even some code review...&lt;/p&gt;

&lt;p&gt;Once I started working at my first job, I realized how crucial code reviews were to improve my coding skills. It was then I realized that I would have improved so much faster if I had only started asking for feedback early on.&lt;/p&gt;

&lt;p&gt;It is the same with any skill really...&lt;/p&gt;

&lt;p&gt;The most efficient way to get better at anything is to create short feedback loops.&lt;/p&gt;

&lt;p&gt;You work on something, and you ask someone who is a few steps ahead of you to tell you what could be improved.&lt;/p&gt;

&lt;p&gt;And you keep doing this day after day. &lt;/p&gt;

&lt;p&gt;There is almost no limit to how much better you can get by doing this at any given skill.&lt;/p&gt;

&lt;p&gt;You just need to kill your pride and ask for feedback. As early as possible.&lt;/p&gt;

&lt;p&gt;Most of your fears are self-induced. And most people are quite friendly, especially when you ask them for help.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistake #3: Learning Alone
&lt;/h2&gt;

&lt;p&gt;Another mistake I made that made my journey harder than it was supposed to be was learning on my own.&lt;/p&gt;

&lt;p&gt;I was so afraid of putting myself out there and connecting with people to avoid criticism and discouragement that I decided to be a lone wolf.&lt;/p&gt;

&lt;p&gt;I did not post anything on Twitter related to my coding journey.&lt;/p&gt;

&lt;p&gt;I did not join any programming communities or connect with other beginners.&lt;/p&gt;

&lt;p&gt;It was only me and my computer on the kitchen table. Trying to learn programming with pretty much no social support or network.&lt;/p&gt;

&lt;p&gt;Now I know that most people have good intentions and people enjoy connecting and supporting others that are on a similar journey.&lt;/p&gt;

&lt;p&gt;If I had shared my programming journey on Twitter or joined an online community, I would have connected with a ton of like-minded people.&lt;/p&gt;

&lt;p&gt;And most importantly, I would have a lot of accountability.&lt;/p&gt;

&lt;p&gt;The days I was discouraged and demotivated would be less painful. I would have made friends and meaningful connections early on.&lt;/p&gt;

&lt;p&gt;I ended up making the journey more difficult than it was supposed to be because of my fear of judgment.&lt;/p&gt;

&lt;p&gt;Now I know that accountability is one of the most powerful ways to stay consistent when learning a new skill or building a new habit.&lt;/p&gt;

&lt;p&gt;And social media and online communities are some of the best ways to find like-minded people and build accountability.&lt;/p&gt;

&lt;h2&gt;
  
  
  In Summary
&lt;/h2&gt;

&lt;p&gt;Learning to code is not easy, but it doesn't have to be more difficult than necessary.&lt;/p&gt;

&lt;p&gt;It is the same as learning any skill. &lt;/p&gt;

&lt;p&gt;You do not have to be a genius to learn to code, and you do not need a 4-year university degree.&lt;/p&gt;

&lt;p&gt;You need to start building projects by writing actual code. Get feedback, improve based on that feedback, and keep doing this on a consistent basis.&lt;/p&gt;

&lt;p&gt;Action, feedback, and consistency are the 3 pillars of learning any skill.&lt;/p&gt;

&lt;p&gt;You can follow me on &lt;a href="https://twitter.com/itsonureren"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>How To Check Against Custom Types In TypeScript</title>
      <dc:creator>Onur Eren</dc:creator>
      <pubDate>Thu, 22 Jun 2023 15:27:10 +0000</pubDate>
      <link>https://dev.to/onureren/how-to-check-against-custom-types-in-typescript-hh2</link>
      <guid>https://dev.to/onureren/how-to-check-against-custom-types-in-typescript-hh2</guid>
      <description>&lt;p&gt;In JavaScript, you can use &lt;code&gt;typeof&lt;/code&gt; keyword to check the type of values:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Output: 'string'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Output: 'number'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isOpen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;isOpen&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Output: 'boolean'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Thomas Anderson&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Output: 'object'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So if you want check a value is a certain type, you can use the &lt;code&gt;typeof&lt;/code&gt; keyword:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is a string`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is a number`&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;But, if you want to check a value is a certain type in TypeScript, the &lt;code&gt;typeof&lt;/code&gt; keyword doesn't work the same way it works in the JavaScript examples above.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;Fruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;orange&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;banana&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myFruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// This will NOT work ❌&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;myFruit&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Fruit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;myFruit&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is a fruit`&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;You cannot use the &lt;code&gt;typeof&lt;/code&gt; keyword at run-time to check for TypeScript types, because TypeScript removes type annotations, interfaces, type aliases, and other type system constructs during compilation.&lt;/p&gt;

&lt;p&gt;So, how can you check if &lt;code&gt;myFruit&lt;/code&gt; is the type of &lt;code&gt;Fruit&lt;/code&gt;?&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 — Type Inference
&lt;/h3&gt;

&lt;p&gt;Define a &lt;code&gt;Fruit&lt;/code&gt; type as an array of literal values and TypeScript will infer types from the values:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;orange&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;banana&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;Fruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2 — Type Guard
&lt;/h3&gt;

&lt;p&gt;Use a &lt;a href="https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates"&gt;user-defined type guard&lt;/a&gt; to check against your custom type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;orange&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;banana&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;Fruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isFruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;any&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;Fruit&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;isFruit()&lt;/code&gt; function will check if its argument is in the &lt;code&gt;fruit&lt;/code&gt; array, and if so, it will narrow its argument to &lt;code&gt;Fruit&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;orange&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;banana&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;Fruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isFruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;any&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;Fruit&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myFruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// This will work ✅&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isFruit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myFruit&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;myFruit&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is a type of Fruit`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;myFruit&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is NOT a type of Fruit`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// Output: "apple is a typeof Fruit"&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Now we can also see our type checking working, when we have a value that is not a part of our fruit array:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;orange&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;banana&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;Fruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isFruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;any&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;Fruit&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myFruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mango&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// This will work ✅&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isFruit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myFruit&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;myFruit&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is a type of Fruit`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;myFruit&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is NOT a type of Fruit`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// Output: "mango is NOT a typeof Fruit"&lt;/span&gt;
&lt;span class="c1"&gt;// (In reality mango is a fruit, but since it is not&lt;/span&gt;
&lt;span class="c1"&gt;// a part of our fruit array, it is NOT a type Fruit)&lt;/span&gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  In Summary
&lt;/h3&gt;

&lt;p&gt;TypeScript only exists is the compile-time and it is completely discarded in the run-time.&lt;/p&gt;

&lt;p&gt;This means you CANNOT use &lt;code&gt;typeof&lt;/code&gt; keyword to check for custom types.&lt;/p&gt;

&lt;p&gt;Instead, you can use &lt;code&gt;type inference&lt;/code&gt; together with a &lt;code&gt;type guard&lt;/code&gt; to check against a custom type.&lt;/p&gt;

&lt;p&gt;Thank you for reading! ✌️&lt;/p&gt;

&lt;p&gt;You can follow me on &lt;a href="https://twitter.com/itsonureren"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>typescript</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>How To Add Custom Fonts In Tailwind</title>
      <dc:creator>Onur Eren</dc:creator>
      <pubDate>Tue, 20 Jun 2023 19:12:14 +0000</pubDate>
      <link>https://dev.to/onureren/how-to-add-custom-fonts-in-tailwind-2m0m</link>
      <guid>https://dev.to/onureren/how-to-add-custom-fonts-in-tailwind-2m0m</guid>
      <description>&lt;p&gt;If you have an app that is configured to use Tailwind, you will have an &lt;code&gt;index.css&lt;/code&gt; file that contains these 3 lines:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;components&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;utilities&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;Here are the steps you can follow to set up a custom font in your project:&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1
&lt;/h4&gt;

&lt;p&gt;Go to &lt;a href="https://fonts.google.com/" rel="noopener noreferrer"&gt;https://fonts.google.com/&lt;/a&gt; and search for the font you want to use.&lt;/p&gt;

&lt;p&gt;Select the font styles you want to use and copy the &lt;code&gt;@import&lt;/code&gt; line.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Ft0osii8he67mnbbvsehh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Ft0osii8he67mnbbvsehh.png" alt="google-fonts-guide"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2
&lt;/h4&gt;

&lt;p&gt;Add the &lt;code&gt;@import&lt;/code&gt; line you copied to your &lt;code&gt;index.css&lt;/code&gt; file where you configure Tailwind.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;components&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;utilities&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="sx"&gt;url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;300;400;500;600;700;800&amp;amp;display=swap')&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


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

&lt;/div&gt;
&lt;h4&gt;
  
  
  Step 3
&lt;/h4&gt;

&lt;p&gt;After that, initalize the font family.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="k"&gt;@layer&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Montserrat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;system-ui&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&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;Your final CSS will look like this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;components&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;utilities&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="sx"&gt;url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;300;400;500;600;700;800&amp;amp;display=swap')&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;@layer&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Montserrat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;system-ui&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&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;Now your default font is set up as Montserrat, or whatever font you have selected.&lt;/p&gt;

&lt;p&gt;Thank you for reading! 🙏&lt;/p&gt;

&lt;p&gt;You can follow me on &lt;a href="https://twitter.com/itsonureren" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>tailwindcss</category>
      <category>frontend</category>
    </item>
    <item>
      <title>5 Tips to Become a Self-taught Software Developer</title>
      <dc:creator>Onur Eren</dc:creator>
      <pubDate>Mon, 19 Jun 2023 16:04:14 +0000</pubDate>
      <link>https://dev.to/onureren/5-tips-to-become-a-self-taught-software-developer-54i6</link>
      <guid>https://dev.to/onureren/5-tips-to-become-a-self-taught-software-developer-54i6</guid>
      <description>&lt;p&gt;Today, in 2023, you don’t have to get a computer science degree to learn how to code and get a job as a software developer.&lt;/p&gt;

&lt;p&gt;You can learn any programming language or tech skill through books, blog posts, YouTube videos, or online courses. You can also use amazing platforms like &lt;a href="https://www.freecodecamp.org/"&gt;Free Code Camp&lt;/a&gt;, &lt;a href="https://www.theodinproject.com/"&gt;The Odin Project&lt;/a&gt;, &lt;a href="https://www.khanacademy.org/"&gt;Khan Academy&lt;/a&gt;, and many others.&lt;/p&gt;

&lt;p&gt;Technology companies care less and less about a computer science degree when they are hiring. They care if you can actually code, collaborate in a team environment and build software.&lt;/p&gt;

&lt;p&gt;To become a self-taught software developer, you only need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A computer and an internet connection&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Discipline &amp;amp; commitment to studying and practicing daily&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1. Choose a niche
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;“The man who chases two rabbits catches neither.” — Confucius&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The first tip, especially if you are at the beginning of your journey, is to choose a niche and get specific about what you want to learn first.&lt;/p&gt;

&lt;p&gt;It can be quite overwhelming to try and learn full-stack web development from the get-go.&lt;/p&gt;

&lt;p&gt;Instead choose a specification, frontend or backend.&lt;/p&gt;

&lt;p&gt;After that specify even further and choose a tech stack.&lt;/p&gt;

&lt;p&gt;For example, let’s say you decided to learn frontend web development. You can start learning HTML, CSS, JavaScript &amp;amp; React. You can master those technologies and be a frontend &amp;amp; React specialist.&lt;/p&gt;

&lt;p&gt;Specializing and niching down will help you have a clear direction. It will also help you get your first job faster.&lt;/p&gt;

&lt;p&gt;Once you master the frontend technologies and start working as a software developer, you can go and learn backend technologies like Node.js or Python if you like.&lt;/p&gt;

&lt;p&gt;You will have a blueprint on how to learn a new skill. And each time it will take you less time and effort to learn and master a new technology.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Choose a platform to learn
&lt;/h3&gt;

&lt;p&gt;One of the biggest mistakes people make when they start learning how to code is to change the platforms they use all the time.&lt;/p&gt;

&lt;p&gt;They jump from course to course and from tutorial to tutorial.&lt;/p&gt;

&lt;p&gt;There are so many platforms and courses and it can definitely be overwhelming to decide.&lt;/p&gt;

&lt;p&gt;But, if you pick a platform and stick to it until you finish their curriculum, you will make progress much faster.&lt;/p&gt;

&lt;p&gt;Pick a course, study its curriculum, and build the projects. And after that, you move on to the next platform or course and continue practicing your skills. Rinse and repeat.&lt;/p&gt;

&lt;p&gt;Some of my favorite platforms to learn to code are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/"&gt;Free Code Camp&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.theodinproject.com/"&gt;The Odin Project&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.khanacademy.org/"&gt;Khan Academy&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://udemy.com/"&gt;Udemy&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Free Code Camp, as you can tell from the name, is completely free and has an incredible curriculum. You can learn theory and then practice in an interactive environment. I still use it from time to time to brush up on certain topics.&lt;/p&gt;

&lt;p&gt;The Odin Project also has a detailed and structured curriculum. You can read and study theory in detail and get your hands dirty with projects that you can add to your portfolio.&lt;/p&gt;

&lt;p&gt;Udemy is a paid platform, but the courses are still quite affordable. (Remember, the money you invest in your education will be the best investment in your career).&lt;/p&gt;

&lt;p&gt;For example, if you want to learn React, Udemy has some of the best React courses on the internet.&lt;/p&gt;

&lt;p&gt;Some of these incredible React courses are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.udemy.com/course/react-redux/"&gt;Modern React with Redux by Stephen Grider&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.udemy.com/course/react-the-complete-guide-incl-redux/"&gt;React - The Complete Guide by Maximilian Schwarzmüller&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.udemy.com/course/react-tutorial-and-projects-course/"&gt;React 18 Tutorial and Projects Course by John Smilga&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.udemy.com/course/modern-react-bootcamp/"&gt;The Modern React Bootcamp by Colt Steele&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember to pick a course and stick to it until you complete it. Be an active learner and follow along. And build all the projects in the courses as you follow along.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Be consistent
&lt;/h3&gt;

&lt;p&gt;You now know that you should choose a niche, frontend or backend.&lt;/p&gt;

&lt;p&gt;You also know that you should choose one platform at a time to study a curriculum from start to finish.&lt;/p&gt;

&lt;p&gt;The next thing you should be very mindful about is being consistent. What I mean by being consistent is to show up every day to learn and practice the skills you are learning.&lt;/p&gt;

&lt;p&gt;If you show up every day to learn, study and practice, you will make progress and build momentum.&lt;/p&gt;

&lt;p&gt;And progress compounds.&lt;/p&gt;

&lt;p&gt;You don’t have to study 8 hours a day every single day to make progress.&lt;/p&gt;

&lt;p&gt;If you can’t study for 5 hours a day because of your life obligations, study for 2 hours.&lt;/p&gt;

&lt;p&gt;If you can’t study for 2 hours, spend 1 hour.&lt;/p&gt;

&lt;p&gt;If you can’t study for 1 hour, spend 30 minutes.&lt;/p&gt;

&lt;p&gt;Spend 15 minutes.&lt;/p&gt;

&lt;p&gt;Solve 1 programming challenge.&lt;/p&gt;

&lt;p&gt;Write 1 line of code.&lt;/p&gt;

&lt;p&gt;Have the mindset of improving at least 1% a day.&lt;/p&gt;

&lt;p&gt;With this mindset, you will:&lt;/p&gt;

&lt;p&gt;Build rock-solid learning habits.&lt;/p&gt;

&lt;p&gt;Build momentum.&lt;/p&gt;

&lt;p&gt;Build discipline.&lt;/p&gt;

&lt;p&gt;When you look back in one year, you will see how much your progress compounded, thanks to you showing up every day. Even if it was for 10-15 minutes.&lt;/p&gt;

&lt;p&gt;Learning is a life-long journey. Showing up every day to practice is the most important habit you can build to master your craft.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Build projects
&lt;/h3&gt;

&lt;p&gt;Be an active learner. Write actual code. Build real projects.&lt;/p&gt;

&lt;p&gt;During your learning journey, most of the courses will have programming projects. Never skip these projects and build them as you go through the curriculum.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add these projects to your Github account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Share the projects you built on your Twitter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add these projects to your portfolio page on your personal website.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building projects is one of the fastest ways to learn programming and improve your skills.&lt;/p&gt;

&lt;p&gt;When you get stuck, you will be forced to find a solution.&lt;/p&gt;

&lt;p&gt;When you do specific research to solve a problem, you will remember what you learn.&lt;/p&gt;

&lt;p&gt;Building projects will also help you with job opportunities and interviews.&lt;/p&gt;

&lt;p&gt;When you go to job interviews they will ask you if you have built any projects.&lt;/p&gt;

&lt;p&gt;You might think the projects you built are not good or sophisticated enough to present. But they will be the living proof of your progress &amp;amp; skills and they will help you land jobs.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Network and join a community
&lt;/h3&gt;

&lt;p&gt;Networking and connecting with others who are on the same journey as you will be incredibly beneficial.&lt;/p&gt;

&lt;p&gt;When you interact with people who are on the same path, you will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Feel less alone on your journey&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get help when you have challenges&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feel more inspired and motivated&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Find accountability&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find a community and connect with like-minded people by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Going to local programming meet-ups in your city&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Posting on Twitter and connecting with other software developers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Asking questions on blogs and Twitter posts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Joining an online community&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Connecting with others, building relationships, and showing your work will open a lot of doors. You will connect with people in your field and you will run into excellent opportunities.&lt;/p&gt;

&lt;h3&gt;
  
  
  In Summary
&lt;/h3&gt;

&lt;p&gt;Many people, including me, have taught themselves how to code online and started a career in tech.&lt;/p&gt;

&lt;p&gt;With the online resources that are available today, anyone can become a self-taught software developer.&lt;/p&gt;

&lt;p&gt;What you need is direction and consistency.&lt;/p&gt;

&lt;p&gt;Pick a niche, frontend or backend.&lt;/p&gt;

&lt;p&gt;Pick one of the platforms I recommended in this post and stick to it until you complete each curriculum.&lt;/p&gt;

&lt;p&gt;Show up every day to study and learn.&lt;/p&gt;

&lt;p&gt;Build projects as you go along your journey and add them to your online portfolio and Github.&lt;/p&gt;

&lt;p&gt;Join a local or online community and connect with other software developers.&lt;/p&gt;

&lt;p&gt;And be patient.&lt;/p&gt;

&lt;p&gt;Success is all about playing the long game.&lt;/p&gt;

&lt;p&gt;If you put in the work, build projects, keep improving, and share what you are doing with other people, you will start a promising career as a software developer in no time.&lt;/p&gt;

&lt;p&gt;Thank you for reading 🙏&lt;/p&gt;

&lt;p&gt;You can follow me on &lt;a href="https://twitter.com/itsonureren"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

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