<?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: Gentt</title>
    <description>The latest articles on DEV Community by Gentt (@g3nt).</description>
    <link>https://dev.to/g3nt</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%2F1190769%2F89f90806-81fd-447c-bc34-4225b345e34e.png</url>
      <title>DEV Community: Gentt</title>
      <link>https://dev.to/g3nt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/g3nt"/>
    <language>en</language>
    <item>
      <title>✨ Junior Dev Life: 10 Things I Wish Someone Told Me</title>
      <dc:creator>Gentt</dc:creator>
      <pubDate>Fri, 10 Jan 2025 17:33:58 +0000</pubDate>
      <link>https://dev.to/g3nt/junior-dev-life-10-things-i-wish-someone-told-me-1no8</link>
      <guid>https://dev.to/g3nt/junior-dev-life-10-things-i-wish-someone-told-me-1no8</guid>
      <description>&lt;p&gt;Starting a career in tech can be both exciting and overwhelming. As a junior developer, you're not just learning to write code; you're learning how to navigate a collaborative, fast-paced environment. Here are 10 friendly reminders to help you grow and shine in your journey:&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;1. Balance Your Ego: Embrace the Sponge Approach&lt;/strong&gt;&lt;br&gt;
It’s easy to feel like you need to prove yourself, but remember that your coworkers are your allies, not competitors. Be a sponge—absorb their knowledge, learn from their experiences, and acknowledge that collaboration beats competition every time.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2. Respect Others’ Time&lt;/strong&gt;&lt;br&gt;
When someone takes the time to explain something to you, ask thoughtful questions, show gratitude, and aim to fully understand the concept. Avoid repeatedly bringing up the same issue—this shows you respect their time and are committed to learning.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;3. Don’t Take Pull Requests Personally&lt;/strong&gt;&lt;br&gt;
Code reviews are about improving the product and your skills, not about criticism. A well-done PR review is a gift—it's a chance to level up. Leave your ego aside and embrace the feedback.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4. Try Before You Ask&lt;/strong&gt;&lt;br&gt;
It’s okay to ask for help, but make an effort to solve problems yourself first. When you consistently try, you show initiative and a willingness to learn. Avoid becoming the person who asks questions without attempting a solution—it can be frustrating for others.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;5. Speak Up in Meetings&lt;/strong&gt;&lt;br&gt;
Even as a junior developer, your opinions and insights matter. Don’t hesitate to share your thoughts—you might offer a fresh perspective. Communication is a two-way street, and your input can benefit the whole team.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;6. Patience with the Product and Codebase&lt;/strong&gt;&lt;br&gt;
Understanding a product or codebase doesn’t happen overnight. It’s a gradual process, and that’s perfectly okay. Rushing this understanding can lead to more problems, so allow yourself the time to learn both deeply.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;7. Master Communication&lt;/strong&gt;&lt;br&gt;
The way you communicate and act around your team will shape your reputation. Clear, respectful, and proactive communication can open doors, while the opposite may close them. Take the time to build strong, positive relationships.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;8. Take Notes&lt;/strong&gt;&lt;br&gt;
In the early stages, jot down key points from meetings, discussions, and plans. These notes will become a handy reference until you're fully comfortable with the product and workflows.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;9. Don’t Burn Out Trying to Prove Yourself&lt;/strong&gt;&lt;br&gt;
You were hired because the company sees potential in you. There’s no need to overwork to “show yourself.” Focus on learning, growing, and contributing at a sustainable pace.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;10. Bugs Are Normal&lt;/strong&gt;&lt;br&gt;
Mistakes happen, even to senior developers. If you introduce a bug, don’t let it get you down. Debugging is a critical skill, and every bug is an opportunity to learn.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>learning</category>
      <category>programming</category>
    </item>
    <item>
      <title>Just posted on my top 5 VSCode shortcuts :)) Hoping it helps people who might just get into it :))</title>
      <dc:creator>Gentt</dc:creator>
      <pubDate>Sat, 04 Jan 2025 17:44:57 +0000</pubDate>
      <link>https://dev.to/g3nt/just-posted-on-my-top-5-vscode-shortcuts-hoping-it-helps-people-who-might-just-get-into-it--1op6</link>
      <guid>https://dev.to/g3nt/just-posted-on-my-top-5-vscode-shortcuts-hoping-it-helps-people-who-might-just-get-into-it--1op6</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/g3nt" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F1190769%2F89f90806-81fd-447c-bc34-4225b345e34e.png" alt="g3nt"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/g3nt/top-5-vscode-shortcuts-that-save-me-tons-of-time-16i9" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Top 5 VSCode Shortcuts That Save Me Tons of Time! 🚀&lt;/h2&gt;
      &lt;h3&gt;Gentt ・ Jan 4&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#vscode&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>vscode</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Top 5 VSCode Shortcuts That Save Me Tons of Time! 🚀</title>
      <dc:creator>Gentt</dc:creator>
      <pubDate>Sat, 04 Jan 2025 17:40:36 +0000</pubDate>
      <link>https://dev.to/g3nt/top-5-vscode-shortcuts-that-save-me-tons-of-time-16i9</link>
      <guid>https://dev.to/g3nt/top-5-vscode-shortcuts-that-save-me-tons-of-time-16i9</guid>
      <description>&lt;p&gt;Hey Devs! 👋&lt;/p&gt;

&lt;p&gt;I’ve been using VSCode for a while now, and there are a few shortcuts I just can't live without. These simple key combos have saved me hours of frustration (and kept my fingers from getting too tired 😅). Here are my top 5 favorites:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. CTRL + Left/Right Arrow
&lt;/h2&gt;

&lt;p&gt;This one is a game changer for quickly navigating through words in your code. Instead of holding down the arrow key or awkwardly using the mouse, just press CTRL + Left/Right Arrow to jump word-by-word. It’s so much faster and makes scrolling through your code feel like a breeze. 🌬️&lt;/p&gt;

&lt;h2&gt;
  
  
  2. ALT + Up/Down Arrow
&lt;/h2&gt;

&lt;p&gt;Need to move a block of code up or down without cutting/pasting it everywhere? ALT + Up/Down Arrow lets you shift lines or entire selections of code up or down with just a press of a button. This is super helpful when you’re reordering things or organizing your code. 🔄&lt;/p&gt;

&lt;h2&gt;
  
  
  3. CTRL + X (Cut)
&lt;/h2&gt;

&lt;p&gt;Now, this one is pretty basic, but trust me, it’s one of those shortcuts I constantly use. CTRL + X is my go-to when I need to cut a piece of code and move it around. I don’t just use it for deletions — I cut and paste code around, re-organize my functions, or even move sections of code between files. 💻✂️&lt;/p&gt;

&lt;h2&gt;
  
  
  4. CTRL + P
&lt;/h2&gt;

&lt;p&gt;When I need to quickly search for a file, CTRL + P is my best friend. It brings up the quick file search, letting me type part of the file name and jump straight to it in seconds. If you’re working on a project with lots of files, this shortcut is a massive time-saver. 🏃‍♂️💨&lt;/p&gt;

&lt;h2&gt;
  
  
  5. CTRL + G
&lt;/h2&gt;

&lt;p&gt;Jumping to a specific line number is so simple with CTRL + G. Just hit it, type the line number, and boom — you’re right there. It’s perfect for debugging or when you’re trying to quickly navigate between lines of code you need to reference. 🔍&lt;/p&gt;




&lt;h3&gt;
  
  
  Honorable Mentions ✨
&lt;/h3&gt;

&lt;h3&gt;
  
  
  CTRL + SHIFT + F (Search in Files)
&lt;/h3&gt;

&lt;p&gt;This one is a lifesaver when you need to search for something in your entire project. Whether it’s a function, variable, or even a specific word, CTRL + SHIFT + F will search across all your files. It’s like having Google search inside your codebase. 🧑‍💻🔍&lt;/p&gt;

&lt;h3&gt;
  
  
  CTRL + ` (Toggle Terminal)
&lt;/h3&gt;

&lt;p&gt;If you're like me and constantly switching between code and terminal commands, CTRL + ` (the backtick key) will open and close the terminal without breaking your flow. Super useful when you're running scripts, testing stuff, or just need to see the output without losing focus. 🎮🖥️&lt;/p&gt;




&lt;p&gt;If you’re not using these shortcuts already, give them a try — they’ll seriously save you so much time! ⏳&lt;/p&gt;

&lt;p&gt;What shortcuts do you swear by in VSCode? Let me know in the comments!👇&lt;/p&gt;

&lt;p&gt;Happy coding! 🎉&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>vscode</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>From Chaos to Clarity: My Developer Workflow to Stay Organized and Focused On Tasks 🎯🧠</title>
      <dc:creator>Gentt</dc:creator>
      <pubDate>Thu, 02 Jan 2025 17:09:34 +0000</pubDate>
      <link>https://dev.to/g3nt/from-chaos-to-clarity-my-developer-workflow-to-stay-organized-and-focused-on-tasks-3cg2</link>
      <guid>https://dev.to/g3nt/from-chaos-to-clarity-my-developer-workflow-to-stay-organized-and-focused-on-tasks-3cg2</guid>
      <description>&lt;p&gt;&lt;strong&gt;Understand the existing flow&lt;/strong&gt; (if its existing).. This is a crucial part as this will technically be the glue between your mental map and existing structure that you have, well in all honestly, might be a glue but it might be an "eraser", as on some cases it will cause you to identify some things that you might need to change, remove, or add even.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia0.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExMHZjemRnNjN4c3UzZHhvb2RwOHd6bmlkaWc0c3l5bWF0Y2xmNW5mdSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2Fl1IY0geomfz09dEB2%2Fgiphy.webp" 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%2Fmedia0.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExMHZjemRnNjN4c3UzZHhvb2RwOHd6bmlkaWc0c3l5bWF0Y2xmNW5mdSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2Fl1IY0geomfz09dEB2%2Fgiphy.webp" alt="Investigating" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Creating a mental map&lt;/strong&gt; of what needs to be done and how everything might be connected. This allows me to have a better understanding of what really needs to be done, and at the end even understanding the flow much better, which leads me to asking the right things, or catching potential issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Asking questions&lt;/strong&gt; that you have while processing the "mental map", this includes potential issues that you think might cause you trouble or need to be fixed, then keeping track of these.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6klx78cn19kii7qpzi7.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%2Fy6klx78cn19kii7qpzi7.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;If it is a hard flow, I'd use something like excalidraw.io&lt;/strong&gt; in which I can &lt;strong&gt;convert that mental map to a visual one&lt;/strong&gt;, creating it with but not over complicating the visuals.  I'd then have the &lt;strong&gt;questions/issues I've identified side by side as points&lt;/strong&gt;, probably ranking them as well in some way, and colorizing the ones that are done/not done as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4k92imarkj5afx9oj1s.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%2Fw4k92imarkj5afx9oj1s.png" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Taking some time to re-evaluate once more&lt;/strong&gt; if you could potentially go another (smarter) way about it. I've heard somewhere of the 5 minutes rule, its something along the lines of giving something 5 mins to first settle in, and not just jumping right at it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwlfspiefkadpum2csvo.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%2Fqwlfspiefkadpum2csvo.png" alt="Pausing" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Not over optimizing them from the start&lt;/strong&gt;, as I yet do not know what might arise and what might not really remain at the end, this doesnt mean that I should write shitty code. This has saved me a lot of time, but equally cost me time as well haha.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswetu02kq2kqiel9gmtt.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%2Fswetu02kq2kqiel9gmtt.png" alt="Overengineering overview" width="800" height="660"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Trying to &lt;strong&gt;see what is already there&lt;/strong&gt;,  what I mean by this is, I've seen myself and other devs re-inventing a "custom wheel" a lot of times, but in this case, we had 3-4 instances of the same custom wheel around our codebase, now keeping this in mind, finding out that you might not need to do it from scratch does save some time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia0.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExODhnOWppczZ6cm4wdHJwcXVvbjJlMG1ramhtNjdmNWF5c2FleGU0NyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2FePMZIXPrR5HiBLDiWj%2F200.webp" 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%2Fmedia0.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExODhnOWppczZ6cm4wdHJwcXVvbjJlMG1ramhtNjdmNWF5c2FleGU0NyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2FePMZIXPrR5HiBLDiWj%2F200.webp" alt="Realisation" width="202" height="200"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Keeping myself honest&lt;/strong&gt;, now this one is interesting, sometimes we tend to get "biased" when it comes to our own reasoning (shocker, right ?)... So every now and then, I do a reality check-ish with myself in terms of, "well, does this really make sense?", this tends to keep me grounded and has helped me to sometimes find out that there's really a better way of doing something.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0nk0tl3qv2mke8wl6oof.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%2F0nk0tl3qv2mke8wl6oof.png" alt="Image description" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>beginners</category>
      <category>development</category>
    </item>
    <item>
      <title>💻🔍 React: Things You Might Want to Know</title>
      <dc:creator>Gentt</dc:creator>
      <pubDate>Wed, 01 Jan 2025 18:54:56 +0000</pubDate>
      <link>https://dev.to/g3nt/react-things-you-might-want-to-know-4789</link>
      <guid>https://dev.to/g3nt/react-things-you-might-want-to-know-4789</guid>
      <description>&lt;h3&gt;
  
  
  Heyyy everyone!
&lt;/h3&gt;

&lt;p&gt;Wishing you all a Happy New Year! May it bring out the best in all of us!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;With this post, I want to showcase some tips and tricks that you might not know—little things that can simplify your code and make it cleaner. So, let’s get down to business!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Simple useEffects Usages Can Be Super Simplified
&lt;/h2&gt;

&lt;p&gt;We've all seen something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useEffect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&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;MyComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;propValue&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&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;internalValue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setInternalValue&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;setInternalValue&lt;/span&gt;&lt;span class="p"&gt;(...);&lt;/span&gt; &lt;span class="c1"&gt;// Some extra logic modifying the propValue&lt;/span&gt;

  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;propValue&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;internalValue&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;But all of this could be simplified by deriving the value directly from the prop. React’s props and re-rendering mechanism can handle this seamlessly, giving you much simpler and cleaner code.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Simplified Version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&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;MyComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;propValue&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;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;internalValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="c1"&gt;// Some extra logic modifying the propValue&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;internalValue&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why It's Better:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Less Boilerplate&lt;/strong&gt;: No need for useState or useEffect.&lt;br&gt;
&lt;strong&gt;Immediate Updates&lt;/strong&gt;: The value updates automatically when the prop changes.&lt;br&gt;
&lt;strong&gt;Cleaner Code&lt;/strong&gt;: Easier to read and maintain.&lt;/p&gt;


&lt;h2&gt;
  
  
  2. State Might Not Need to Live in the Parent Component
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;A common sort of defaut ish pattern I've seen is allocating state to a parent component without a valid reason. If the state is only used in one child component, it’s better to move it there. This keeps the parent cleaner and improves reusability of the child component.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Non-Optimal Example: State in the Parent Component&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here, the parent holds state (name and age) that is only relevant to one child:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&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;Parent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&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;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&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="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setAge&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Parent Component&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Child&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setName&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;setAge&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setAge&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Sibling&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AnotherSibling&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;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;&lt;strong&gt;Good Example: State in the Child Component&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here, the state is encapsulated within the Child component, ensuring only it re-renders when needed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&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;Parent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Parent Component&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Child&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Sibling&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AnotherSibling&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&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;Child&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&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;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&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="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setAge&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Child Component&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;
        &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Enter name"&lt;/span&gt;
      &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt;
        &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setAge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Enter age"&lt;/span&gt;
      &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;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;&lt;strong&gt;Why It's Better&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Encapsulation&lt;/strong&gt;: State belongs to the component that uses it.&lt;br&gt;
&lt;strong&gt;Improved Performance&lt;/strong&gt;: Other siblings don’t re-render unnecessarily.&lt;br&gt;
&lt;strong&gt;Cleaner Parent Component&lt;/strong&gt;: The parent focuses only on orchestrating its children.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. On most cases, React's optimization methods might not be needed
&lt;/h2&gt;

&lt;p&gt;Now this is a harsh one to touch on, but lets just say React is really really good at handling re-renders and the situations where you really need optimization mechanisms are very rare.&lt;/p&gt;

&lt;p&gt;This isnt to say they are useless, its just that you need to keep in mind that premature optimization is a thing.. I dont really support the "if its not completely broken dont fix it" but lets just say, you need to give it a proper check before you go to those mechanism and not just go to them straight away. &lt;/p&gt;

&lt;p&gt;Even though, realistically there are some really good articles that I believe show us that there isnt as much drawback from using them a lot (i guess except bugs they might cause due to lack of people's understanding of how they might work). But my point is, you might not need to go through them at all, and well .. save you some time too &lt;/p&gt;




&lt;h2&gt;
  
  
  4. You don't have to "hookify" everything ...
&lt;/h2&gt;

&lt;p&gt;Hooks are cool, right? They give us the ability to manage state, side effects, and more in a functional way. But just because hooks are available doesn't mean you need to create one for everything. I've seen a lot of developers fall into the trap of turning simple logic into custom hooks just for the sake of it. Instead you should be thinking in the direction of what problem will it help you? will you be reusing it? will it abstract some logic away for you? And so on... &lt;/p&gt;




&lt;p&gt;I think I'll end it here, I really hope this helps and that we can all learn something new :))) Please feel free to reply with any possible scenario I might have missed with these, or improvements. I'd love to hear them and learn as well.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>react</category>
    </item>
    <item>
      <title>Testing out Safari on Windows (older versions too)</title>
      <dc:creator>Gentt</dc:creator>
      <pubDate>Fri, 06 Dec 2024 21:33:27 +0000</pubDate>
      <link>https://dev.to/g3nt/testing-out-safari-on-windows-older-versions-too-3b70</link>
      <guid>https://dev.to/g3nt/testing-out-safari-on-windows-older-versions-too-3b70</guid>
      <description>&lt;h2&gt;
  
  
  Testing Safari on Windows (Without Losing Your Mind)
&lt;/h2&gt;

&lt;p&gt;Hey everyone! It’s been a while... 😊 I recently ran into a tricky situation where I had to debug an issue happening &lt;strong&gt;specifically on Safari&lt;/strong&gt; while working on a &lt;strong&gt;Windows machine&lt;/strong&gt;. Let’s just say—it was a challenge. 😅  &lt;/p&gt;

&lt;p&gt;Thankfully, I stumbled upon an awesome article:&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://joyofcode.xyz/test-your-site-in-every-browser" rel="noopener noreferrer"&gt;Test Your Site in Every Browser&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;This article introduced me to a handy trick using &lt;strong&gt;Playwright&lt;/strong&gt;. With a simple command, you can open a browser that uses the &lt;strong&gt;WebKit engine&lt;/strong&gt; (the same engine Safari is built on) and pause it, giving you full control to:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visit pages
&lt;/li&gt;
&lt;li&gt;Click around
&lt;/li&gt;
&lt;li&gt;Watch videos
&lt;/li&gt;
&lt;li&gt;And more!
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Specific Safari Version Problem
&lt;/h3&gt;

&lt;p&gt;While this approach was a game-changer, it wasn’t a complete solution for my case. I needed to debug a &lt;strong&gt;specific major version of Safari&lt;/strong&gt;, and WebKit alone didn’t quite cut it.  &lt;/p&gt;

&lt;p&gt;Here’s where it got interesting:&lt;br&gt;&lt;br&gt;
I dove into the &lt;strong&gt;Playwright changelog&lt;/strong&gt;, where I discovered that it maps Playwright versions to specific WebKit versions. Using this information, I was able to emulate the Safari version I needed, by installing that version instead! 🎉  &lt;/p&gt;

&lt;h3&gt;
  
  
  Debugging with DevTools
&lt;/h3&gt;

&lt;p&gt;What’s even better? The emulated browser allows you to open &lt;strong&gt;DevTools&lt;/strong&gt;, making it easier to inspect and debug issues. This saved me tons of time and effort—without needing access to a physical macOS device.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Limitations
&lt;/h3&gt;

&lt;p&gt;Of course, there might be some limitations I haven’t encountered yet, like file uploads or other advanced functionality. But for my use case, this was an &lt;strong&gt;effective and FREE solution&lt;/strong&gt; that worked perfectly.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Got Suggestions?
&lt;/h3&gt;

&lt;p&gt;If you have any other suggestions for testing Safari on non-Mac devices, I’d love to hear them! From what I’ve seen, most services offering Safari emulation are either &lt;strong&gt;trials&lt;/strong&gt; or require a &lt;strong&gt;paid subscription&lt;/strong&gt;, so finding a free alternative like this was a gem. 💎  &lt;/p&gt;

&lt;p&gt;Happy coding! 🚀  &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>frontend</category>
      <category>programming</category>
    </item>
    <item>
      <title>Essential Tips for Junior Developers, Steering Clear of Common Pitfalls 💡</title>
      <dc:creator>Gentt</dc:creator>
      <pubDate>Sat, 08 Jun 2024 10:14:49 +0000</pubDate>
      <link>https://dev.to/g3nt/navigating-the-early-days-essential-tips-for-junior-developers-steering-clear-of-common-pitfalls-71n</link>
      <guid>https://dev.to/g3nt/navigating-the-early-days-essential-tips-for-junior-developers-steering-clear-of-common-pitfalls-71n</guid>
      <description>&lt;p&gt;Hey everyone! I'd like to showcase some of the things that have helped me with my learning process as a junior developer &amp;amp; to showcase what traits caused the biggest issues. This is to be taken lightly as even if you've done one of these, it's totally normal and should not be considered a "crime". We're humans at the end of the day :))&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Not Developing a Sincere Connection with Your Colleagues
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1543269865-4430f94492b9%3Fq%3D80%26w%3D2070%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D" 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%2Fimages.unsplash.com%2Fphoto-1543269865-4430f94492b9%3Fq%3D80%26w%3D2070%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D" alt="People laughing and talking" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For me, one of the key points that will get you to enjoy your day-to-day work is having a great connection with your colleagues. Having that connection serves as a reminder that although we're in a work environment, that shouldn't stop us from having open and sincere connections. We don't have to limit ourselves to being the guy who just stares at the screen all day long (although that's a personal choice).&lt;/p&gt;

&lt;p&gt;Don't be afraid to engage and say hello, be curious about them, and have honest conversations. Not everything should be connected to work all the time. Being the "new" guy doesn't make you "less". Be yourself, and express yourself in an honest &amp;amp; positive manner with your colleagues so that you can reap the benefits.&lt;/p&gt;

&lt;p&gt;Having a sincere and great connection with your colleagues will give you the opportunity to learn from them too. It will open a door for them to give you sincere advice on yourself that you might have missed. You could even learn from one another and most importantly, count on each other too.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Avoiding Hard Tasks on Purpose
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1431887915357-68b819fae322%3Fq%3D80%26w%3D2070%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D" 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%2Fimages.unsplash.com%2Fphoto-1431887915357-68b819fae322%3Fq%3D80%26w%3D2070%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D" alt="Person climbing mountain" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Honestly, this one isn't just for junior devs, but let's keep it that way for now. Look, we've all been beginners and we've gone through this process of thought: logically, you'd be thinking "I don't want to screw this up for myself at the very start and God forbid I look 'dumb' and not finish this task." Let me just say, that thought is understandable, but it doesn't make it true and let me show you why.&lt;/p&gt;

&lt;p&gt;First of all, when you're hired as a junior, you're not fully hired for your level of knowledge when compared to your potential. So, that means the company that hired you is aware of your current knowledge and is totally fine with it. They hired you so that you could learn more and they know you have a lot of potential.&lt;/p&gt;

&lt;p&gt;So, by avoiding those hard tasks, you're not only missing out on your learning curve, but even on the timing. Because no matter how long you avoid them, there'll always be one that you will have to do and believe me, it's best to choose to learn them properly at your beginnings than to not know them with lots of experience.&lt;/p&gt;

&lt;p&gt;Again, I'm not saying to go full crazy mode on the hard tasks. Pick the hard ones incrementally too, you'll learn that way. Do not think of it as a way that you could endanger your job, but rather think of it as an opportunity to learn more and grow. Your company is aware of your current level and they value your potential and you should capitalize on that.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Not Asking Questions
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1565689157206-0fddef7589a2%3Fq%3D80%26w%3D2070%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D" 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%2Fimages.unsplash.com%2Fphoto-1565689157206-0fddef7589a2%3Fq%3D80%26w%3D2070%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D" alt="People raising hands to ask questions" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
It's understandable, and you probably are thinking that you'll be annoying to your colleagues/seniors and that you're bothering them. But let me just say that whichever senior is bothered and doesn't want to help isn't really a senior. You should not be afraid to learn alongside your colleagues and ask them questions, whether that is for the project you're working on, or for code-related things.&lt;/p&gt;

&lt;p&gt;Of course, this doesn't mean to "bombard" them with tons of questions and for every problem you have, but when you feel you're better off with a question and that you can't really grasp the problem or the solution, it is totally normal to ask for help and guidance.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Taking PR Reviews Personally
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1456406644174-8ddd4cd52a06%3Fq%3D80%26w%3D2048%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D" 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%2Fimages.unsplash.com%2Fphoto-1456406644174-8ddd4cd52a06%3Fq%3D80%26w%3D2048%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D" alt="Angry person" width="800" height="534"&gt;&lt;/a&gt;&lt;br&gt;
Behind a great dev or even a junior one, there's a personality and a certain amount of ego, that's... understandable. But, realistically - the PR review process is one of the best ways for you to grow and learn from your colleagues.&lt;/p&gt;

&lt;p&gt;You need to take into consideration that they're commenting on your code and how it can be done better, in a way for you to grow and not in a way to make you feel bad. Although we're humans and perspective on something can shape our emotions, your view on them should be that they'll help you grow and learn much more than taking them personally and not even taking them into consideration.&lt;/p&gt;

&lt;p&gt;All I can say for this is, don't be chained by your own ego, and open yourself to being wrong (which we all are) and you'll see yourself grow exponentially more.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Copy Pasting Code You Don't Understand
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9ffc9u0txfunp0jqt9i.jpg" 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%2Fg9ffc9u0txfunp0jqt9i.jpg" alt="Confused man" width="600" height="400"&gt;&lt;/a&gt;&lt;br&gt;
We've all been there at some point, where if we're in "trouble" and find some working code (possibly from StackOverflow/ChatGPT) we just get that bad boy into our code repo. While it seems to do the trick, let me just say that it is a temporary solution that is not only blocking your learning process but it might even introduce new bugs to your application due to the lack of understanding.&lt;/p&gt;

&lt;p&gt;What you should do instead is, try to understand code first and then apply it. Not only will that help you grow more, but it will also help you identify possible issues with it going forward.&lt;/p&gt;

&lt;p&gt;You'll need to accept and embrace that part of the junior process is that you'll need to get uncomfortable more. The more you get into a "hard" spot and possibly make mistakes, the more you learn. Don't let that temporary happiness of blindly pasted code fool you and rob you of your learning process.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>🌟 Discover 5 Must-Have VSCode Extensions You Haven't Tried Yet</title>
      <dc:creator>Gentt</dc:creator>
      <pubDate>Sat, 01 Jun 2024 17:38:28 +0000</pubDate>
      <link>https://dev.to/g3nt/discover-5-must-have-vscode-extensions-you-havent-tried-yet-185m</link>
      <guid>https://dev.to/g3nt/discover-5-must-have-vscode-extensions-you-havent-tried-yet-185m</guid>
      <description>&lt;p&gt;&lt;em&gt;Hey there! Yes.. this is one of those posts, but.. I promise you're not going to find the generic stuff like "Prettier" here, don't get me wrong, while its essential, we kinda all know &amp;amp; have it. The purpose of this post is to try and find those hidden gems. I hope this helps :))&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Error Lens
&lt;/h2&gt;

&lt;p&gt;Think of this extension like your "Problems" tab within the VSCode terminal but on.. steroids, its basically going to show and highlight any issues in your code/syntax right at the specific line on the editor.&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%2Fgve9331x5avf58xbfzyg.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%2Fgve9331x5avf58xbfzyg.png" alt="Image of the VScode extension called Error Lens"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Console Ninja
&lt;/h2&gt;

&lt;p&gt;We've all been sick and tired of going back and forth between tabs to only read the logs (console logs).. So the Console Ninja team said enough's enough and decided to instead showcase us the console log outputs and runtime errors directly in our editor.&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%2Fjd0wkjzbj18h9dtdufcl.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%2Fjd0wkjzbj18h9dtdufcl.png" alt="Image of the VScode extension called Console Ninja"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Pretty TypeScript Errors
&lt;/h2&gt;

&lt;p&gt;Look, as much as we love TS (not really?) we can surely admit seeing those long errors where one of the 43 nested types doesnt match isnt as optimal as we'd like, not to mention those error messages that can only be deciphered from Harvard PhD professors (and Matt Pocock). Luckily for us this extension saves the day by simplifying everything for us and making life easier.&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%2Fywtumhi8bdgfyyg0kfrk.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%2Fywtumhi8bdgfyyg0kfrk.png" alt="Image of the VScode extension called Pretty TypeScript Erros"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Hungry Delete
&lt;/h2&gt;

&lt;p&gt;Remember selecting all that empty space and then having to delete it, or even worse having to press backspace 10-15 times to do that? Well, this extension makes sure that you dont have to go trough that again, but instead take care of that emptyspace or tab by simply pressing CTRL+BACKSPACE&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%2Fr2io40qwfe08bfez2igv.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%2Fr2io40qwfe08bfez2igv.png" alt="Image of the VScode extension called Hungry Delete"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Add gitignore
&lt;/h2&gt;

&lt;p&gt;At some point, we'll all have to create a .gitignore file and thats a fact, so, why not speed up the process and have a extension specifically built to help you create it faster with variety of templates to choose from?&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%2Fx8pdsbeup4q5j7mo7y3t.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%2Fx8pdsbeup4q5j7mo7y3t.png" alt="Image of the VScode extension called Add gitignore"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
    <item>
      <title>What not to do when learning React as a beginner?</title>
      <dc:creator>Gentt</dc:creator>
      <pubDate>Sun, 12 May 2024 21:51:09 +0000</pubDate>
      <link>https://dev.to/g3nt/what-not-to-do-when-learning-react-4489</link>
      <guid>https://dev.to/g3nt/what-not-to-do-when-learning-react-4489</guid>
      <description>&lt;p&gt;&lt;em&gt;Please take everything as a friendly advice and as a personal opinion. Most of the things said below could probably be applied for many other things not only React.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Jumping on it right away without the basics
&lt;/h2&gt;

&lt;p&gt;You can surely start on it without a good foundation, but the learning curve will be much much harder as you'll have to switch on/off between React &amp;amp; things like JS, HTML figuring out how they work instead of spending your time purely on React mechanisms and having to practice &amp;amp; learn them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe7u5sx2lbuaqkhcfbrxy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe7u5sx2lbuaqkhcfbrxy.png" alt="Image description" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While it is tempting, seeing how much people love it and not to even mention just how much tech influencers try to convince you with "Learning React within a week" (unrealistic content), its important to keep in mind that the realistic way to effectively learn React is to get the basics down first.&lt;/p&gt;

&lt;p&gt;What does that mean? Learning things like HTML, CSS, JavaScript. Making sure you know how things work there first, think of React a "utilizer" of them but in its own way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blindly following courses and writing code you know works
&lt;/h2&gt;

&lt;p&gt;There's nothing wrong with writing code that works &amp;amp; following courses.. However in order to get to the next step, what'll be more effective is to try to implement things in your own way, switching things up &amp;amp; experimenting with them. In order to learn more you have to start failing more, so that you can figure things out on your own way and get to that next level.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzijxw0emxzd6p0q5l1d0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzijxw0emxzd6p0q5l1d0.png" alt="Image description" width="480" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I am always ready to learn although I do not always like being taught." - Winston Churchill&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I specifically picked this quote from Winston Churchill as it points out to the reality of learning things, which is that in the beginning it will be harsh, having to dig in and find out how and why things work the way they do and having to overcome obstacles one after the other. Its frustrating, but good things come after endurance and patience, it also gives you the opportunity to develop discipline, which is doing and sticking to things you might not enjoy over and over again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning without a plan
&lt;/h2&gt;

&lt;p&gt;Look, while we all know that most of our plans don't always work out, it doesn't really justify lacking one. While it might not work out the way you thought, it will give you structure for what you expect from yourself, what you potentially need to go through &amp;amp; what level you might be at a given time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fduvkexj0f49l3bhlv1ph.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fduvkexj0f49l3bhlv1ph.png" alt="Image description" width="300" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll need to have a realistic incremental plan, and that goes hand in hand with having a feel on what level of knowledge you think you have. With that in mind, the best approach is to keep track of your progress, current level and then to combine it with your desired plan, at least this way you have a proper path you can follow.&lt;/p&gt;

&lt;p&gt;I get it, at the start you dont really know whats what and having thoughts as "is this really the right way?". For that dilemma, I'd recommend taking a look at paths at &lt;a href="https://roadmap.sh/"&gt;https://roadmap.sh/&lt;/a&gt; where you have a proper plan for a variety of paths you might want to follow, you can also try seeing how others started it, what I would do is I'd search up for Youtubers showcasing how they started &amp;amp; believe me you'll also be inspired from it too as a bonus!&lt;/p&gt;

&lt;h2&gt;
  
  
  Mastering advanced techniques out of order
&lt;/h2&gt;

&lt;p&gt;Seeing those cool advanced techniques sure does give you a high spike on that desire to learn and look cool in front of your React buddies, but I'd recommend to first analyze yourself whether you're ready to go there yet. What I mean by this is that those techniques like Memo, useCallback and others are hard for a reason, you first need to have a clear picture of how React works things out behind the scenes in order to go out to its harder methods.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1thdfe0ajaitj23ibcov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1thdfe0ajaitj23ibcov.png" alt="Image description" width="400" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a solution to this you need to use the upper point of having a plan and keeping track on yourself so you can better identify what you need to learn next, this way you'll have a better transition from one thing to the other and things would make more sense.&lt;/p&gt;

&lt;p&gt;~THE END&lt;br&gt;
Hope you enjoyed this post and found it helpful :)) There are many other things out there but I wanted to showcase the things I consider to be at the top of the list from my personal experience. I cannot wait to see many other opinions and what other people found helpful in their journey.&lt;/p&gt;

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