<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Tyler.Engineer 🦉]]></title><description><![CDATA[Senior Web & Software Engineer, w/a passion for Front-End coding and design work.
Book Nerd.
Colorado Native.
React & TypeScript Advocate.]]></description><link>https://tylerengineer.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 23:05:00 GMT</lastBuildDate><atom:link href="https://tylerengineer.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[API Data Fetching with React]]></title><description><![CDATA[I decided instead of making a long blog article about data and APIs and the what/how/why of it all (which I’m currently writing in another article coming soon), I’ve decided to write a simple article on how to retrieve data on the Frontend side using...]]></description><link>https://tylerengineer.hashnode.dev/api-data-fetching-with-react</link><guid isPermaLink="true">https://tylerengineer.hashnode.dev/api-data-fetching-with-react</guid><category><![CDATA[data]]></category><category><![CDATA[Frontend Development]]></category><category><![CDATA[APIs]]></category><category><![CDATA[React]]></category><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[BrainDeadMonkey]]></dc:creator><pubDate>Tue, 18 Apr 2023 22:55:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1681858450535/08a9d817-f873-4895-803e-0b09680209fc.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I decided instead of making a long blog article about data and APIs and the what/how/why of it all (which I’m currently writing in another article coming soon), I’ve decided to write a simple article on how to retrieve data on the Frontend side using React.</p>
<p>(Definitely look forward to that big article on API and Data here soon!)</p>
<h2 id="heading-some-prerequisites">Some Prerequisites</h2>
<p>A few good things to have installed and ready to go on your computer to get started:</p>
<ul>
<li><p><strong>A little React knowledge</strong></p>
</li>
<li><p><strong>Some JavaScript knowledge</strong></p>
</li>
<li><p><strong>A Text Editor</strong> (rec. <a target="_blank" href="https://code.visualstudio.com/">Visual Studio Code</a>)</p>
</li>
<li><p><strong>Node.js</strong> (<a target="_blank" href="https://nodejs.org/en">Nodejs.org</a>)</p>
</li>
<li><p><strong>Git (optional)</strong> (<a target="_blank" href="https://git-scm.com/">Git</a>)</p>
</li>
<li><p><strong>A Web Browser</strong> (rec. <a target="_blank" href="https://www.mozilla.org/en-US/firefox/new/">Firefox</a>)</p>
</li>
</ul>
<p>Your OS of choice doesn't really matter. Myself, I use a 2022 MacBook Air, but if you use a Windows environment that's alright as well. No haters here, all coders are different! (:</p>
<h2 id="heading-where-to-begin">Where to begin?</h2>
<p>Let’s start by creating a React app using my preferred method: <strong>[create-react-app]</strong>.</p>
<p>I realize some people prefer using <strong>Vite</strong> to get their FE apps up and running, which is absolutely a good way to use it as well. However, call me old school, but I find the best route to setting up a React application from scratch is by using the React recommended method of <strong>CRA</strong>.</p>
<p>First, we'll crack open the <strong>Terminal</strong> (or <strong>Command Prompt</strong> on Windows), and create a new app somewhere that you won't lose it (I prefer my Desktop, but it's up to you where you navigate on your local). Once you're in the directory you want to put your new app into, we are going to enter the following:</p>
<blockquote>
<p><strong>npx create-react-app &lt;enter-react-app-name-here&gt;</strong></p>
</blockquote>
<p>For my app, I chose the simple name <strong>react-fetching-app</strong>, but you can call it whatever you would like. Hell, you could call it banana-monkey if you'd like. The only rules are no spaces in the name, and no capitalizations (not sure why on the last one, but it is what it is). But, dashes are recommended for more than one-word app names.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681735821364/a2f368c3-96da-44e1-a77d-d0d7a6e79455.png" alt="Terminal window of using create-react-app (CRA)" class="image--center mx-auto" /></p>
<p>Once that has been completed, you should see these 2 next steps populate like so on your terminal:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681735925090/da12510f-c3f8-4679-a932-00844066d789.png" alt class="image--center mx-auto" /></p>
<p>So now we will do exactly what is suggested to do! We will <strong>cd</strong> ('change directory' in terminal lingo) into the newly created <strong>react-fetching-app</strong> application, and we can get it up and running right from the jump. After you cd into the app, if you press <strong>ls</strong> (that's a lowercase 'L' by the way, followed by an 's') - or <strong>dir</strong> if you're on a Windows system - it should display all of the main files/folders that have been created by the CRA package.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681736255314/c884dd68-9bab-43b7-b9bd-bc2af5fb1829.png" alt class="image--center mx-auto" /></p>
<p>Simply enter <strong>npm start</strong> and you should in just a moment see a new browser window open up with something that looks like this:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681736442394/74b5f693-ac85-4323-8071-8064a0e1f78b.png" alt class="image--center mx-auto" /></p>
<p><strong>Now, we can get into the fun stuff of setting up our application. 😎</strong></p>
<h2 id="heading-taking-out-the-trash">Taking out the trash</h2>
<p>To start, let's go ahead and open up our Text Editor of choice (again, my ride or die is <strong>VS Code</strong>), and take a look at how to get to fetching data with React.</p>
<p>Methods for opening the code:</p>
<ul>
<li><p>Drag the folder to the text editor icon</p>
</li>
<li><p>Open the text editor and select Open Folder</p>
</li>
<li><p>In Terminal, enter: <strong>code .</strong> (if you have VS Code setup to your PATH)</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681736835559/76affb01-5717-4b15-a498-cb4029039575.png" alt class="image--center mx-auto" /></p>
<p>Upon opening the editor, you should see the directory structure look something like this:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681736909592/936e913c-3ac0-49f4-b1df-f3823378a03e.png" alt class="image--center mx-auto" /></p>
<p>I am going to make a few cosmetic alterations, which I recommend doing, and this will help make coding a bit simpler for the project.</p>
<p><strong>Before 👆🏼</strong></p>
<p><strong>After👇🏼</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681737319610/30e68e54-12da-4a08-aa6d-9d40ff09bcec.png" alt class="image--center mx-auto" /></p>
<p>This simplifies everything we need for this very straightforward app. No flare, no bs. Just code.</p>
<h2 id="heading-lets-dive-right-in">Let's dive right in</h2>
<p>Starting with <strong>index.js</strong>. This is where the app comes into play through the usage of latching onto an HTML element (a div in most build cases) with an id of <strong>root</strong>. But let's get rid of the fluff in the script file.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681737788928/68698480-3515-4c0c-a44a-1a774f49efe4.png" alt class="image--center mx-auto" /></p>
<p>We can get rid of all the unnecessary lines of code, to make it only have simply what we need to run properly. Again, no filler.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681737872257/0815a15d-ceff-4e80-8f31-08c7ed5b6c53.png" alt class="image--center mx-auto" /></p>
<p>We will add some CSS just to make things look a bit less plain jane so to speak.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681744572214/f30f189b-a273-4c0e-85f5-7dbfb2935570.png" alt class="image--center mx-auto" /></p>
<p>I imported the font <a target="_blank" href="https://fonts.google.com/specimen/Source+Sans+Pro?query=source">'Source Sans Pro' from Google Fonts</a></p>
<p>Let's move on to the entire point of this article in the first place: Setting up the <strong>App.jsx</strong> file, and fetching some data.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681737980027/7ee8ac6b-7824-4719-a7c1-6ccda28fe23d.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-finding-some-data-to-use">Finding some data to use...</h2>
<p>Next, we need to find some data that we can retrieve and then implement into our React application. It took me a bit to decide on a fun and simple <strong>API (Application Programming Interface)</strong>, but I ended up choosing <a target="_blank" href="https://swapi.dev/"><strong>The Star Wars API</strong> - <strong>SWAPI</strong></a>. This one seemed like an easy-to-access API, and the data is cool! I mean come on, it's Star Wars, who doesn't love Star Wars??</p>
<p>And the best part: <strong>The API is free</strong>, and you won't be needing an API Key ('token') to access it!</p>
<p>I've provided the link above, but here it is as well:</p>
<h3 id="heading-swapi-star-wars-api-click-herehttpsswapidev"><a target="_blank" href="https://swapi.dev/">SWAPI: Star Wars API - Click Here</a></h3>
<p>(Should look like this, or similar):</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681744171730/16003be4-7897-4f8a-8f21-c2f81aa9d012.png" alt class="image--center mx-auto" /></p>
<p>Okay! Onto the fun part: Setting up our <strong>App.jsx</strong> file to be able to retrieve data from SWAPI.</p>
<h2 id="heading-conjunction-function">Conjunction Function</h2>
<p>Heading back to our text editor where our code is, let's reopen <strong>App.jsx</strong> and get started writing a function that will <strong>fetch</strong> the SWAPI data by using <strong>async/await</strong>. I will break down what this means to use async/await when mining for data.</p>
<p>The 'Base URL' that is used for SWAPI is:</p>
<pre><code class="lang-plaintext">https://swapi.dev/api/
</code></pre>
<p>We are going to use this in a variable called, <strong>API_URL</strong> like so:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> API_URL = <span class="hljs-string">'https://swapi.dev/api/'</span>;
</code></pre>
<p>Side note: I've made this variable into all uppercase because it is a global-scope variable. What that means, is that the entire application, not just a specific portion or function, can access it. It isn't necessary to use the all-uppercase method for globals, but it is something I've always done, and haven't found a reason against it thus far in my long tech career as an engineer. However, feel free to write it in any syntax-appropriate way you'd like.</p>
<p>Next, we're going to create a function back inside the <strong>App()</strong> function itself, called <strong>fetchData()</strong>. This is going to be the key function to fetching and accessing the API data. To initiate the function, there are 2 ways of doing this, and each method is based solely upon which <strong>style</strong> of Function you like to use.</p>
<p>I prefer the <strong>Arrow Function</strong> method, as it is cleaner, but there is also the <strong>Standard Function</strong> method as well, which works just fine. The differences between these 2 methods when using async/await are as follows:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Arrow Function</span>
<span class="hljs-comment">// This will be created by declaring the function by a variable name</span>
<span class="hljs-keyword">const</span> fetchData = <span class="hljs-keyword">async</span> () =&gt; {
    <span class="hljs-comment">// some cool stuff here</span>
}
<span class="hljs-comment">// Notice the word 'async' is the first item declared as we begin the assignment to the variable named 'fetchData'. This works the same way in a Standard Function definition.</span>


<span class="hljs-comment">// Standard Function</span>
<span class="hljs-keyword">async</span> fetchData() {
    <span class="hljs-comment">// also cool stuff here</span>
}
<span class="hljs-comment">// The same ruling applies to this style of function definition, where the word 'async' must be declared first before the function declaration and naming convention.</span>
</code></pre>
<p>Either method works just fine, and both accomplish the same outcomes when doing most tasks in JavaScript. There are however, some key differences between these 2 types of functions when it comes to coding overall in JavaScript and especially TypeScript, but that is a topic for another article. If you'd like to learn more about Functions, or anything JavaScript for that matter, I highly recommend the gods of Frontend coding: <a target="_blank" href="https://developer.mozilla.org/en-US/">The MDN Docs</a></p>
<p>Let's break down real quick what <strong>async</strong> means, and why it is used here.</p>
<h2 id="heading-async-full-of-variables">Async full of variables</h2>
<p>The keyword <strong>async</strong> is a shortened version of the word 'asynchronous'. What this means is that an item is called <strong>not</strong> at the same time as another item. For example, if you have 2 items that are set to go off when something happens, an 'async Promise' means that the items will not fire off at the same time. Take for a more detailed example, the 2 function calls in the test environment from <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function"><strong>MDN Async Function Page</strong></a></p>
<pre><code class="lang-javascript"><span class="hljs-comment">// This is technically the First function to be called, but it only fires after 'awaiting' for the Second function call.</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">resolveAfter2Seconds</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-built_in">Promise</span>(<span class="hljs-function"><span class="hljs-params">resolve</span> =&gt;</span> {
    <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =&gt;</span> {
      resolve(<span class="hljs-string">'resolved'</span>); <span class="hljs-comment">// Third return</span>
    }, <span class="hljs-number">2000</span>); <span class="hljs-comment">// Second return part 2</span>
  });
}

<span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">asyncCall</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'calling'</span>); <span class="hljs-comment">// First return</span>
  <span class="hljs-keyword">const</span> result = <span class="hljs-keyword">await</span> resolveAfter2Seconds(); <span class="hljs-comment">// Second return part 1</span>
  <span class="hljs-built_in">console</span>.log(result); <span class="hljs-comment">// Fourth/Final return</span>
  <span class="hljs-comment">// Expected output: "resolved"</span>
}

asyncCall();
<span class="hljs-comment">// Output in Terminal:</span>
&gt; <span class="hljs-string">"calling"</span> <span class="hljs-comment">// Happens immediately</span>
<span class="hljs-comment">// A pause of 2000 millisenconds (2 seconds)</span>
&gt; <span class="hljs-string">"resolved"</span> <span class="hljs-comment">// Happens after the pause</span>
</code></pre>
<p>The <strong>async</strong> keyword declares that any items being returned inside of the function will fire off separately from one another when the function is called.</p>
<p>We've seen the <strong>async</strong> keyword in action, but now we're going to see the <strong>await</strong> keyword and what it means to use it in an asynchronous function call.</p>
<h2 id="heading-await-off-of-your-shoulders">Await off of your shoulders</h2>
<p>The <strong>await</strong> keyword compliments the <strong>async</strong> keyword, by telling the rest of the function that it is waiting for the data to come back from the source. It's kind of like you're in a group of friends on a hike, and one of your friends falls back a few paces to tie their shoes, so you pause and <strong>wait</strong> for them to get back to you, while the rest of the group continues onward.</p>
<p>Typically, inside of an async function when using <strong>Promises</strong> (unless you are using .then() promise chaining), you'll find that the await keyword is used twice. Once with the <strong>fetch()</strong> keyword call for the data, and again for what to do next with the data that has been retrieved once it has been 'fetched'.</p>
<p>Getting back to our SWAPI (Star Wars API) data, let's create that new function called <strong>fetchData</strong> and set a single parameter inside of it called <strong>url</strong>, inside of our <strong>App.jsx</strong> file. Then we can call it directly beneath the declaration, using the global <strong>API_URL</strong> variable we created earlier as the argument for the function.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681751435052/7ae47846-f64d-4fac-94c8-a520fae23629.png" alt class="image--center mx-auto" /></p>
<p>For anyone that needs the full code to simply copy and paste, here it is:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">const</span> API_URL = <span class="hljs-string">'https://swapi.dev/api/'</span>;

<span class="hljs-keyword">const</span> App = <span class="hljs-function">() =&gt;</span> {

    <span class="hljs-keyword">const</span> fetchData = <span class="hljs-keyword">async</span> url =&gt; {
        <span class="hljs-keyword">const</span> response = <span class="hljs-keyword">await</span> fetch(url);
        <span class="hljs-keyword">const</span> data = <span class="hljs-keyword">await</span> response.json();
        <span class="hljs-built_in">console</span>.log(data);
    };

    fetchData(API_URL);

    <span class="hljs-keyword">return</span> (
        <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">'app'</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">h2</span> <span class="hljs-attr">className</span>=<span class="hljs-string">'title'</span>&gt;</span>React Fetching App<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    );
};
</code></pre>
<p>Go ahead and save the file, and then pop open your browser window that has the React app open. Once you do, open up the DevTools (Chrome or Firefox are recommended, but Safari and Edge work as well), and click on the tab <strong>Console</strong>.</p>
<p>This window is what you should see, and if not, simply refresh the page <strong>(cmd+r / ctrl+r)</strong>, or go back to your editor and make sure your code looks correct.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681751537696/c8284884-07aa-42bc-94ea-9820ba7b3f95.png" alt class="image--center mx-auto" /></p>
<p>If you see the above screen, success! You have officially fetched some data from an API call, using <strong>fetch</strong> and <strong>async/await</strong>.</p>
<p>Now, you've done the fun part of fetching the data using async/await. But if you stick around, we are going to actually put that data to work and make it functional! That's where the real fun stuff comes into play.</p>
<h2 id="heading-no-not-jasonjson">No, not 'Jason'...JSON</h2>
<p>So far, you've learned about fetching data, async and await keywords, a little bit of function knowledge to get you by, and what it all means to use it in practice. But now we're going to put that data we've just retrieved to good use.</p>
<p>We are going to <strong>map</strong> through the data, and filter it all out by like items/content (or**, key** and <strong>value</strong> pairs).</p>
<p>This data we've just ported over has been configured into what is called <strong>JSON</strong> format. All this means is that the information is broken up by an 'item name' and an 'item value'. In programming, we call this a <strong>key/value pair</strong>. It looks something like this:</p>
<pre><code class="lang-json">[
    {
        <span class="hljs-attr">"id"</span>: <span class="hljs-number">1</span>,
        <span class="hljs-attr">"first_name"</span>: <span class="hljs-string">"Tyler"</span>,
        <span class="hljs-attr">"occupation"</span>: <span class="hljs-string">"Web/Software Engineer"</span>,
        <span class="hljs-attr">"cool_person"</span>: <span class="hljs-literal">false</span>
    }
];
</code></pre>
<p>Let's break this down real quick:</p>
<ul>
<li><p><strong>Key:</strong> The identifier (or title) of a piece of data/content.</p>
</li>
<li><p><strong>Value:</strong> The content matching the specific key.</p>
</li>
<li><p><strong>Example:</strong></p>
<ul>
<li><p><strong>Key:</strong> first_name</p>
</li>
<li><p><strong>Value:</strong> Tyler</p>
</li>
</ul>
</li>
</ul>
<p>So, in essence, when we 'pull' this data from the API, we are then <strong>converting it into JSON</strong>. This data then becomes fragmented by <strong>key</strong> identifiers and corresponding <strong>values</strong>, so that we can read it and filter (or <strong>map</strong>) through it properly on our end of the code.</p>
<p>Okay! Onto the mapping through all of our new Star Wars API data.</p>
<h2 id="heading-dont-forget-the-map-on-your-journey">Don't forget the Map on your journey</h2>
<p>If you have used JavaScript (or really most programming languages) for longer than a couple of hours, then chances are you're already familiar with what is called <strong>mapping</strong>. In JS specifically, there is a predefined method called <strong>.map()</strong> that allows you to (as the name states) map through whatever data it is that you're working with while using .map().</p>
<p>Let's see this in practice.</p>
<p>First, let's change up the <strong>url path</strong> of the API data that we're fetching currently. If you notice inside the object of the returned call in the DevTools, you will see different sections/areas such as people, planets, films, etc. We are going to pick one (in this case, people), and retrieve that specific set of data from the API.</p>
<p>Going back to our fetchData() function, we will alter the fetch call just a bit on the first line of the function.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681760830410/7d83055f-97c3-4a1b-b29e-bbcba6de93b3.png" alt class="image--center mx-auto" /></p>
<p>For the copy-and-pasters of the world:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">const</span> API_URL = <span class="hljs-string">'https://swapi.dev/api/'</span>;

<span class="hljs-keyword">const</span> App = <span class="hljs-function">() =&gt;</span> {
    <span class="hljs-keyword">const</span> fetchData = <span class="hljs-keyword">async</span> url =&gt; {
        <span class="hljs-keyword">const</span> response = <span class="hljs-keyword">await</span> fetch(<span class="hljs-string">`<span class="hljs-subst">${url}</span>/people`</span>);
        <span class="hljs-keyword">const</span> data = <span class="hljs-keyword">await</span> response.json();
        <span class="hljs-built_in">console</span>.log(data);
    };
    fetchData(API_URL);
    <span class="hljs-keyword">return</span> (
        <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">'app'</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">h2</span> <span class="hljs-attr">className</span>=<span class="hljs-string">'title'</span>&gt;</span>React Fetching App<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    );
};
<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> App;
</code></pre>
<p>Now that we've logged that new section of data from the API, we should see something like this in the DevTools: (if it doesn't work, remember to refresh the page)</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681761793784/152518b5-ad2f-4f6c-a695-ce9bb25df6d1.png" alt class="image--center mx-auto" /></p>
<p>From here, you can see all of the cool new data we can pick through and use for our app. So, let's start with setting up a <strong>div</strong> container and inside of it, making a <strong>ul</strong> element (unordered list as compared to a numbered order list) that can list all of the data information.</p>
<p>For future note, you can essentially put this data however you'd like on your future apps like a table for example. But here, I just simply want to get you - the reader - to the comfortable point of fetching data and then learning how to use said data properly.</p>
<p>Go ahead and underneath the <strong>h2</strong> element, create a <strong>div</strong> with the class name (or in React, <strong>className</strong> on HTML elements) of <strong>container</strong>. Then inside that container element, create a <strong>ul</strong> element and an <strong>li</strong> element inside of it, like so:</p>
<pre><code class="lang-javascript">...
return (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">'app'</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">h2</span> <span class="hljs-attr">className</span>=<span class="hljs-string">'title'</span>&gt;</span>React Fetching App<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"container"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">ul</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
         <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
);
<span class="hljs-comment">//We are going to alter the information going inside of that li element</span>
</code></pre>
<p>Now, we can start mapping through the data we've pulled, but first, let's go ahead and use a little neato React Hook called <strong>useState</strong> so we can actually set the data up into a scoped variable, and then implement that variable as a container for the data.</p>
<h2 id="heading-the-usestate-of-the-union">The useState of the Union</h2>
<p>At the very top of our <strong>App.jsx</strong> file, we are going to import the <strong>useState()</strong> Hook from the React library.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React, { useState } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;

<span class="hljs-comment">// ... rest of the App.jsx file ..</span>
</code></pre>
<p>So now we can go ahead and create 2 variables: one to set the data, and one to hold the data. And to make it simple, we'll just call it <strong>person</strong>, since that's the section of the SWAPI data we're going after for our app.</p>
<p>Directly on the first line of the inside of our <strong>App()</strong> function, we will create this <strong>person</strong> variable along with its counterpart <strong>setPerson</strong>, using what is called <strong>'array destructuring'</strong> in JS. It will look like this:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> [person, setPerson] = useState([]);
</code></pre>
<p>Notice that when we initialize these 2 variables with the <strong>useState()</strong> hook, we are using a base value of an empty array <strong>[]</strong>. What this means, is that at the core value for the variable - if nothing is used or returned with it - then simply an empty array will be returned. useState is a very straightforward React Hook, and it can be used in a myriad of ways, like pulling text data, for example, would look something like this:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> [myName, setMyName] = useState(<span class="hljs-string">'tyler'</span>);
</code></pre>
<p>What this tells the app, is that the initial value of the destructured variable is 'tyler'. This can also be left as a blank string like <strong>useState(' ').</strong></p>
<p>The <strong>camelCase</strong> naming convention when it comes to state is seen everywhere, but it's only because it's a trend that was first started when the React team initially designed and pushed out the useState hook convention. I've been known to use <strong>underscores</strong> or <strong>justlowercasestyle</strong> before, so it's dealer's choice really. But again, typically, you will see a lot more of the camelCase styling than anything else.</p>
<p>Back to using the variables we've created, we want to use the secondary variable called, <strong>setPerson</strong> as a 'setter' (topic for another time) for our <strong>person</strong> variable. We are going to set this person variable inside of our <strong>fetchData()</strong> function and use the data that we've retrieved as the filler.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fetchData = <span class="hljs-keyword">async</span> url =&gt; {
    ...
    console.log(data);
    setPerson(data.results);
};
</code></pre>
<p>Remember, <strong>data</strong> is the whole return of the API, and <strong>results</strong> is the selection (<strong>key identifier</strong>) for the SWAPI data. So, to get this section of the data, we need to chain down to it by saying, "Enter through <strong>data</strong>, and then grab everything under the <strong>results</strong> key with all of its values".</p>
<p>Now, so we can get this fetchData() function up and running every time we refresh our page, we're going to use a cleaner method instead of just calling it at the bottom of the App() function. We will use what is called the <strong>useEffect</strong> React Hook.</p>
<h2 id="heading-for-good-useeffect-use-this">For good useEffect, use this...</h2>
<p>The <strong>useEffect</strong> Hook is used to do almost exactly what the name implies, "use an effect". Some examples of good effects are, fetching data (duh), manipulating the DOM, and setting timeouts for specific sections of code to fire off when they need to do so. Here, in our case, we will be using it to fire off when the page (or, in most use cases, the data itself) is changed/refreshed. Typically, you will see this used for Backend data being altered now and again, depending on the app and the API(s) being used. Again though, a topic for another time.</p>
<p>And, if you'd like to learn more about the <strong>useEffect</strong> hook, I highly recommend checking out the React docs themselves on their newly fashioned and updated website <a target="_blank" href="https://react.dev/">React.dev</a>.</p>
<p>Link to the <a target="_blank" href="https://react.dev/reference/react/useEffect">React - useEffect Hook</a></p>
<p>At the top of the App file, inside the curly braces for the import React line, we are going to also import useEffect, like so:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React, { useState, useEffect } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
</code></pre>
<p>Now, back to inside the <strong>App()</strong> function itself, underneath the fetchData() function, let's implement the useEffect hook, by calling fetchData() inside of it, using an initial function call.</p>
<pre><code class="lang-javascript">useEffect(<span class="hljs-function">() =&gt;</span> {
    fetchData(API_URL);
}, []);
</code></pre>
<p>Notice the empty array at the end of the initial function call. What this is used for, is to set a 'changing state variable' that will be relied on from the useEffect() function.</p>
<p>Currently, since we don't foresee any new Star Wars movies coming out any time soon, or any new data being altered or changed, we do not actually need to implement the <strong>person</strong> variable there at this time. But, if your data variable was to have current/continuous changes happening, it would be good to place that inside of the square array brackets. For this app, however, we're good to go as it stands.</p>
<p>This is what your <strong>App.jsx</strong> file should look like, currently:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681849761206/c7b00c4c-b7f2-45e5-a28d-7517bbb79694.png" alt class="image--center mx-auto" /></p>
<p>Okay so now that we've got that up and running, let's make sure this works. Head over to your browser window where you have <strong>http://localhost:3000/</strong> open, make sure your DevTools are up on your screen with the Console tab displayed, and click refresh on the page. If you see the data still being populated inside the Console tab, then you're on the right track!</p>
<p><strong>A quick geeky side note for all of my network speed junkies out there:</strong> I have also noticed that the SWAPI (Star Wars API) does inherently have a - very brief, but still somewhat noticeable to the trained eye - lag as the page is refreshed. Unfortunately, this is not my API, it is free and open-source, but I can assure you it is not an issue overall while coding along with this article. You're gonna be just fine, I promise. Just don't look at your Network tab in the DevTools, and pretend the short 1.98-second lag doesn't exist. It can't hurt you so long as you forget about it. Unlike the monsters under your bed.</p>
<h2 id="heading-last-person-in-is-a-rotten-variable">Last Person in is a rotten variable!</h2>
<p>As I'm sure you have noticed, if you have a good linter in your text editor of choice, or are using VS Code, your variable <strong>person</strong> has a weird pseudo-error squiggly line underneath it. This is simply because we have not provided it with any TLC as of yet, which we are about to do.</p>
<p>So, let's put our person variable to good use, inside of our unordered list element. We are going to <strong>.map()</strong> through this <strong>person</strong> data, and then return/display said data as an <strong>&lt;li&gt;</strong> element, along with giving each one a specific <strong>key</strong> as a sole identifier for that piece of data. I realize to someone new to this, it may seem a bit confusing, but code along here and I guarantee this will make sense by the next part.</p>
<p>Inside of our <strong>&lt;ul&gt;</strong> element, let's get rid of our already created <strong>li</strong> element, and open up a pair of curly braces like so:</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"container"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span>&gt;</span>
        {}
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>Here, in this set of curly braces, is where the real React magic happens. We can put things like variables in here, mathematical equations, or simply a bunch of nonsense, so long as it's related to JS in some way. In React though, we typically use this for either inserting variables, data, or setting up a pre-created function. In our case, the usage will be for mapping through the <strong>person</strong> variable data that we <strong>set</strong> earlier inside of our fetchData() function.</p>
<p>To start, we will call the <strong>person</strong> variable, chain the <strong>.map()</strong> function to it, and give that .map() an initial function. Inside of this function setup, we are going to give it 2 parameters to use: <strong>item</strong> and <strong>index</strong>. The <strong>item</strong> parameter will be used as the pinpointer that maps through the data, pulling what we want from it, and the <strong>index</strong> parameter will be used as a <strong>key identifier</strong> (or, an index) for each <strong>li</strong> element.</p>
<p>Let's see this in action.</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">className</span>=<span class="hljs-string">'container'</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span>&gt;</span>
        {person.map((item, index) =&gt; (
            <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">key</span>=<span class="hljs-string">{index}</span>&gt;</span>{item.name}<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
        ))}
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>If you'll notice, unlike a regular function that will open up with curly braces like <strong>{ ... }</strong>, here we have used parentheses <strong>( )</strong>, because we are explicitly returning something like HTML. If we were let's say also computing some other code inside of it, then we would use the <strong>{ }</strong> instead. But as you can see, the only thing we needed the mapping call to do, was to return our data in a cool and HTML-friendly way.</p>
<p>By now at the final checkpoint, your <strong>App.jsx</strong> file should look something like this:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681858122626/20cf3816-6d2f-46bb-ab80-a89f908343c3.png" alt class="image--center mx-auto" /></p>
<p>Go ahead and open your browser window for localhost back up and hit refresh (it should already be refreshed after saving the App.jsx file, but doing it for good measure doesn't hurt). You should see a list of all the cool names of people from Star Wars being displayed!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1681851850689/991b125e-42bb-41ca-b9ef-19cd6d915ff2.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-success-great-job-coder">Success! Great job Coder</h2>
<p>And that's all there is to it. Fetching data, mapping through the data to find what we need/want to use in our apps, and then producing it for the view. It really is quite simple when you break it down step by step, and it can be a lot of fun when it comes to making your own CRUD apps using large-scale APIs or even making your own data to manipulate and filter through for an app.</p>
<p>Hope you enjoyed it, and I am currently in the process of writing a full breakdown of Data and APIs and what it all means to use them in a full-stack application in both Web and Software.</p>
<p>If you have any questions, feel free to reach out to me. I'll be trying to post about once a week if not once biweekly from here forward, so keep an eye out for the next installment. As always, thanks for taking the time to read my article, and I hope it was educational for your future coding/programming endeavors!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661179893489/QP3Loqzy_.png" alt="cover.png" /></p>
<p><strong>~ Tyler is a Web &amp; Software Engineer with 10+ years in the tech field.</strong> <strong>Dad, Book nerd, React &amp; TypeScript Advocate.</strong></p>
]]></content:encoded></item><item><title><![CDATA[The Developer's Guide to Your First Job]]></title><description><![CDATA["You will never, ever forget your first. It's going to be the biggest learning curve that sets the tone for the rest of your experiences. Even if it sucks." ~Sloner Nitsly


Hit the ground running.
Like any field where you are required to know more t...]]></description><link>https://tylerengineer.hashnode.dev/the-developers-guide-to-your-first-job</link><guid isPermaLink="true">https://tylerengineer.hashnode.dev/the-developers-guide-to-your-first-job</guid><category><![CDATA[4articles4weeks]]></category><category><![CDATA[week1]]></category><category><![CDATA[Hashnode]]></category><dc:creator><![CDATA[BrainDeadMonkey]]></dc:creator><pubDate>Tue, 23 Aug 2022 02:44:29 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1661192400323/XN3o0MT6j.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p>"You will never, ever forget your first. It's going to be the biggest learning curve that sets the tone for the rest of your experiences. Even if it sucks." ~Sloner Nitsly</p>
</blockquote>
<hr />
<h2 id="heading-hit-the-ground-running">Hit the ground running.</h2>
<p>Like any field where you are required to know more than you need to, your first time actually being entered into the job field will always come with deep reverence and fear. You will feel as though, <em>this is it</em>, <em>you've made it</em>. That is truly an amazing feeling, and there will also come a want to impress and showcase what knowledge you have, especially as a Junior Dev on the team. The idea that you can maybe not just empty your cup and learn a lot, but also that you may be able to bring something fresh and exciting and new to the table. Heck, you may keep growing and be the youngest and coolest Senior Engineer by the time your work is done here!</p>
<p>But, as we Developers and Engineers all soon come to find out (some quicker than others), there is almost nothing ingenious or inventive or new that you could realistically bring to the table, and you need to learn to <em>pay your dues</em>, as it were.</p>
<p>Today, I am a Senior Web/Software Engineer, with nearly 10 years of experience in the tech field. I have been a Front-End Engineer (my focus and passion), as well as a Full Stack Engineer, and in the end I have learned that you learn to wear a lot of different hats no matter what company you work for, now or in the future. This, I promise you, is a good thing to experience.</p>
<p>Let me share some knowledge and answers to questions you may have for your first job. I'm going to give some sound advice that I wish I had been told when I was still new to the game. Advice that has gotten me from a Junior Dev too green to remember how to call an Object property, all the way to helping a tech startup blossom, as a Senior Engineer and Manager.</p>
<p>The best advice I can truly give you though, before we start, is <strong>do not ever feel like you are not good enough</strong>. We all started off with very little knowledge, a passion to code, and the insurmountable suck that is the <em>Imposter Syndrome</em>. Just know that you are good enough, and if you stick with it all, you can be great.
And remember, don't sweat the bugs. They come and go.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661221581927/RZDSFAqaC.jpg" alt="icons8-team-OLzlXZm_mOw-unsplash.jpg" /></p>
<hr />
<h2 id="heading-first-day-jitters">First Day Jitters</h2>
<p>Your first day/week on the job at a new company can be daunting, to say the least.</p>
<p>You are in and out of meetings, greetings, and handshakes, and you're simply too busy to even remember the Senior Back-End Engineer's name even though you just met them a couple of hours ago. The interviews and the TCI that you went through, along with all of your studying/project-building has trained you for this experience. You've got this, you know what it is you're supposed to be doing.</p>
<p>So there's no reason to be nervous, right?</p>
<p>The scary parts all happen during your first week, at any company. Knowing this is half the battle, honestly. As long as you're expecting to be busy as hell, and learning even more about the company's tech than you ever thought possible, then you can get through the actual work of it all.</p>
<hr />
<h2 id="heading-my-first-job-front-end-software-engineer">My First Job: Front-End Software Engineer</h2>
<p>My first actual position in the tech field was - working remotely, from home - with a national recycling company, that had built a software application to help large-scale companies manage not only their waste, but their recycling as well. I was tasked with editing and creating the full Front-End (and UX/UI design) of the software app. By myself.</p>
<p>The team consisted of: 1 Senior Back-End Engineer, 1 DevOps Engineer, an I.T. Tech, and me on the Front-End of it all.</p>
<p>The previous FE person before me, had apparently told the company that they had built a full-scale <em>prototype</em> app that was ready to go live, which turned out to be an outdated Bootstrap Admin template that they had secretly purchased and did not in fact know how to implement anything. My job was to un-screw the FE situation, and build them an actually usable and decently designed structure, so that the DevOps and BE can send data with our APIs to display properly for our large client base. The clients this company took on were some big brand names, so this isn't something that can look like or run anything short of amazing. I tried the best that I could do.</p>
<p>One random Monday, approximately 2 months into the job, I get a Slack notification about an immediate all-hands meeting at 9am. It was currently 8.30am, so I was a bit panicked. I had only ever been in one of the all-hands meetings so far, and it had ended with us being told of a 'change in management'. So I did not have high hopes for this one. Turns out, that our Senior (and only) BE Engineer had decided to quit for unspecified reasons. So now it was up to me to, as quickly as humanly possible, become a Full Stack Engineer, with only mild education in anything BE or how to even manage something like SQL table data, for example.</p>
<p><iframe src="https://giphy.com/embed/l46Cbqvg6gxGvh2PS" width="480" height="330" class="giphy-embed"></iframe><a href="https://giphy.com/gifs/originals-retro-l46Cbqvg6gxGvh2PS">via Giphy</a></p>
<p>Instead of giving up, I stood my ground and told management that they needed to not only <strong>immediately</strong> hire on a new BE Engineer, but also to give me time to continue not only my own tasks on the project, but also to educate myself on being a Full Stack as soon as possible. They were luckily enough respectful of that, and we pushed our next live production version of the software back an entire month and a half. No, I did not get paid the job of 2 people, I just worked my butt off and took on more hours (I was hourly not salary at the time) to salvage the MVP for the company. I was thankful that this was not all magically on my shoulders, but that I had a fantastic and brilliant team to work with every day.</p>
<p>In my professional opinion, this is not the worst way to learn something - by expediting the learning process - but, it can be used as a good trick for further down the line when you need to gain knowledge on something new for work or a personal project. Don't get me wrong, taking a lowly Junior FE Dev, and giving them Mid-Senior level tasks as a Full Stack can be extremely difficult. But, it can also be very rewarding, aside from the stress it will ultimately give you.</p>
<p>My point in bringing this up, is that sometimes in companies we work for, we are brought on for one thing, but behind the curtain are pushed to wear different hats in our employment. The idea behind this, is that immersing yourself in a few different things such as new languages or seeing how fun it can actually be to help construct a data schema, these things can actually be extremely beneficial for Devs/Engineers. You will fail, a lot. But that is very normal for this field. We all fail, encounter bugs that make our brains implode, or simply run into a problem we have never seen before. The trick, is to know how to walk through the failure step by step, fix it the best way you can find how to do, and learn from those mistakes.</p>
<p>In summary, having your first real job in the tech field can be life changing, not just for your career, but also for you as a person. Now, whether it is a good experience, or a not-so good one, is all dependent upon you, and how you learn from mistakes and triumphs. Don't ever feel like this job you have or want is going to make or break you as a Developer. Companies come and go in your life, that's why you'll almost never see a person's resume with just one place of experience, if they have been in the field long enough that is. Learn everything you can every day, and hope to give the company your very best work, also because you learn about yourself and your work ethic by doing so.</p>
<p>A funny little note I'll leave this section on before I get to some advice for Juniors in the field, I will tell you that I have watched the most badass of Senior Engineers fumble and fail miserably. Do you know what most of them do when this happens? They laugh, and get to work tracing back the steps, and searching for a better answer to solving the problem. Failure is common. It's what you learn from it that counts towards your future.</p>
<hr />
<h2 id="heading-heres-to-the-crazy-ones-the-misfits">Here's to the crazy ones, the misfits...</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661112679379/Mtzj2PvT4.jpg" alt="matese-fields-pvHma684eEI-unsplash.jpg" /></p>
<blockquote>
<p>"I am the wisest man alive, for I know one thing, and that is that I know nothing." ~Socrates</p>
</blockquote>
<p>Interviews can be scary, and outright terrifying. Whether you're prepared or not, the feeling that you are about to be (let's call it what it is) <strong>judged</strong> for the next 45 minutes to an hour, can absolutely become gut-wrenching. But, the best part is, they truly aren't scary at all. We're just led to believe they are.</p>
<p>I'm going to give my personal top 3 best interview tips, and I truly hope they help you along your Dev journey.</p>
<h3 id="heading-interview-tip-1-no-matter-what-be-honest"><strong>Interview Tip #1: No matter what, be honest.</strong></h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661222038639/DLV_Z19ao.jpg" alt="brett-jordan-Pd3ml1YRPlg-unsplash.jpg" /></p>
<p>If you are asked to answer a question - during the interview or at your job - that you feel is out of your wheelhouse, feel free to be upfront and honest with your response. Realistically, speaking from experience on both sides of that table, the simple fact that you are admitting you are not a Jedi Master of a subject matter can actually be viewed as a good thing, showcasing that you have room to grow, along with your willingness to learn. The tech field is one of the many difficult job fields where a lie pertaining to skills/knowledge can be almost immediately brought to light. So don't fake your skills or experience, study hard and tell the truth.</p>
<p>I have seen some of the smartest people I've ever met completely fumble a simple question in an interview. Your skills are based not only what you've learned, but your practice and dedication to the craft. Make sure that you're not applying for a job that is out of your range, just because it's a job in the tech field. Remember that it's better to be a <strong><a target="_blank" href="https://collegeinfogeek.com/become-t-shaped-person/">T-Shaped Person</a></strong> instead of a 'Jack of all Trades'.</p>
<h3 id="heading-interview-tip-2-what-to-do-about-a-tech-interview"><strong>Interview Tip :2: What to do, about a Tech Interview</strong></h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661221961793/CkXGoDqHp.jpg" alt="roman-synkevych-vXInUOv1n84-unsplash.jpg" /></p>
<p>Tech interviews are notoriously difficult. Google for example, has a multitude of videos on YouTube dedicated to showcasing the process of interviews at the company.</p>
<p>Going through the interview process can be daunting, but easily the part of the process that has the most notoriety is the TCI <em>(Technical Coding Interview)</em> test(s). This is a specific interview that is solely dedicated to testing how well you know your stuff. There are 2 main ways of doing this part of the procedure:</p>
<ul>
<li>Code Sharing</li>
<li>Test Project(s)</li>
</ul>
<p>Code sharing interviews unfortunately happen more often than any other type of TCI. They're not always high-stress, but they sure as heck can be, so be prepared and study like a crazy person before the interview. Always try and analyze the technical question being asked, and take your time (while being respectful of everyone's time) on finding the best route for the answer. In interviews like this, the interviewer is not necessarily looking for whether you got the answer 100% correct or not, but more the process of how your brain thinks and works on a problem. Do you get frustrated easily, do you process more verbally or internally, etc. Just bear that in mind during these, and remember to breathe.</p>
<p>In my personal opinion, I thoroughly appreciate the test projects, not only because you don't have to bum-rush to solve on the spot (which is not realistic anyway), but mainly due to the fact that if I am trying to accomplish a certain task but I don't have all the answers, I can go and study up (read some documentation) about how better to resolve the issue at hand. I've found that giving your brain the time to focus on a problem - without the feeling that someone is breathing down your neck waiting for the answer - allows you to formulate not an immediate response, but the best response to the question.</p>
<h3 id="heading-interview-tip-3-tell-me-more-tell-me-more"><strong>Interview Tip #3: Tell me more, tell me more</strong></h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661222292377/1EHwNkoK3.jpg" alt="absolutvision-82TpEld0_e4-unsplash.jpg" /></p>
<p>A fantastic thing to do during any interview process, is to ask good questions. The more questions you ask (without sounding over-eager), the more it shows that you're interested in the company itself, and maybe not just a paycheck and some benefits. All companies want someone who is not just going to work hard, but truly care on some level about the future potential of it all.</p>
<p>If you find that you can't think of a lot of good questions, think about these main points, and expand on them:</p>
<ul>
<li>The Company/Team</li>
<li>The Daily/Current Rundown</li>
<li>Goals/Ideals</li>
</ul>
<p>Questions about the company itself or the team you'll be working on is very important, because it allows you to learn about how the company operates and how the team works/manages itself in the coding process. You can even ask questions about previous workers and why they left/were asked to leave. I don't <strong>fully</strong> recommend this one, but I've seen it done and it's a fair and valid question to be asked at some places.</p>
<p>The Daily life of a Dev/Engineer on the team is especially crucial, so that you can see what the inner-workings of the team are all about. What kind of tasks are taken up usually, is there an All-Hands meeting every morning, once or twice a week, etc. This will keep your head in the game on what to be prepared for if you do end up working on the team.</p>
<p>Good goals and ideals are the founding basis for any great company. Without knowing what your company has come from and where it's going, then you will not have much of a future. The prospects and origins of a company are great to find out for yourself as the potential team member, because it can display what trajectory the company is planning to go in, and whether or not you see yourself being a part of that road.</p>
<h3 id="heading-interview-tip-4-bonus-tip"><strong>Interview Tip #4: Bonus Tip!</strong></h3>
<p><iframe src="https://giphy.com/embed/9xAsdwWGJP9qFg3FIY" width="480" height="270" class="giphy-embhttps://giphy.com/gifs/PixelBandits-pixel-austin-bandits-9xAsdwWGJP9qFg3FIYd"></iframe><a href="￼">via Giphy</a></p>
<p>Always, always, always, be sure to practice what you preach. If you swear that you are a <strong>JavaScript Master</strong>, then you had better have the skills to back up that claim! The job you apply for, should be what you're comfortable with doing. This sounds stupid and obvious, but the reality of the situation is that there just too many companies out there in the wild that have zero clue the difference between a Front-End Web Developer and a Full Stack Software Engineer. This is why we need to educate ourselves on what exactly we can do best, and practice it until we're writing <em>for() loops</em> for arrays in our sleep. So that when it comes time for a job interview, and the application says Front-End Engineer, you don't have to freak out because you know you've got this in the bag.</p>
<p>If you find an area of coding/programming that truly speaks to you, whether it's in the AI and Data Science side of the arena, or you simply found out that you love building web apps with React and SCSS all day, you need to do yourself that big favor and dive head first into that area with as much go-getter attitude you can muster. Remember,<a target="_blank" href="https://collegeinfogeek.com/become-t-shaped-person/">T-Shaped Person.</a>.</p>
<hr />
<h2 id="heading-necessity-portfolio">Necessity: Portfolio</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661141000548/MwrqxfKfP.jpg" alt="anete-lusina-zwsHjakE_iI-unsplash.jpg" /></p>
<p>Your Portfolio is so very important to the process of getting in the front door of any company, let alone interviewing with them. Companies across the world, when hiring for anyone in the tech field, care a lot about your previous works and work experience.</p>
<p>Having a website or a GitHub account, showcasing the places you've worked, and the level of commitment to greatness and projects as a coder/designer is seen as not only a right of passage, but your ability to tell the world how you work and what kind of expertise and skill-set you as a Developer/Engineer can bring to the table at any company.</p>
<p>The main point with a good portfolio, is that you need to make it your own. Design and develop it in your own style, or a style that you have found to be what can represent you as a coder/programmer.</p>
<p>Personally, as of 2 weeks ago, I had decided it was time to get rid of my now year-old portfolio and start coding up and designing a new one. I think it's good to change up your portfolio at least once a year, and to try doing something new or using a different framework than you did the last time. I've been a <strong>React</strong> and <strong>TypeScript</strong> coder for years, I'm faithful to both, but this new portfolio site will be coded entirely in <strong>Next.js</strong> and straight vanilla <strong>JavaScript</strong>.</p>
<p>So try something new and have fun with it! Push yourself to learn a new language or framework/library that you've never tried before, or even just something similar to what you have been wanting to learn.</p>
<p>Just remember, your portfolio is like your house: When people show up, you want them to be impressed with what they see. Is it a little vain to have a large focus on the aesthetic and design? Maybe. But you need an outlet for showcasing your skills beyond coding another new web app or some mock-up design work, so why not make it look the best you can make it to be!</p>
<hr />
<h2 id="heading-in-summary">In Summary...</h2>
<p>This has been a lot of fun writing this, but the better feeling is the hope that someone out there can learn something from it all. If you have any questions, or want some general advice in the tech field, I'm always up to helping people get where they need to get going - that is, if I can help.</p>
<p><strong>TL;DR</strong> - Don't sweat the small bugs, ask a lot of questions, dig deep to be a wealth of knowledge, and do not for a single second let Imposter Syndrome get to you. Know your worth, and show your worth.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661179893489/QP3Loqzy_.png" alt="cover.png" /></p>
<p><strong>~ Tyler is a Web &amp; Software Engineer with 9+ years in the tech field.</strong>
<strong>Dad, Book nerd, React &amp; TypeScript Advocate.</strong></p>
<p>#4articles4weeks #week1 @hashnode </p>
]]></content:encoded></item></channel></rss>