<?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: shawnhuangfernandes</title>
    <description>The latest articles on DEV Community by shawnhuangfernandes (@shawnhuangfernandes).</description>
    <link>https://dev.to/shawnhuangfernandes</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%2F257671%2F79ee0c22-e30a-46c4-8667-e9aa20b61cb8.png</url>
      <title>DEV Community: shawnhuangfernandes</title>
      <link>https://dev.to/shawnhuangfernandes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shawnhuangfernandes"/>
    <language>en</language>
    <item>
      <title>Anti-Advice: Handling Rejection</title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Thu, 07 May 2020 01:55:15 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/anti-advice-handling-rejection-kfn</link>
      <guid>https://dev.to/shawnhuangfernandes/anti-advice-handling-rejection-kfn</guid>
      <description>&lt;h1&gt;
  
  
  We All Struggle With Rejection
&lt;/h1&gt;

&lt;p&gt;Asking someone on a date and being turned down. Being picked last for a pickup sports game. Getting bad news after an interview. Requesting to have your own electric guitar solo in a mariachi band. &lt;strong&gt;Clearly I am no stranger to rejection&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/1SE4peGu8eIJhTj59B/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/1SE4peGu8eIJhTj59B/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many of us (myself included) who are seeking jobs as junior devs are getting heavy doses of rejection in large part due to the current state of economy.&lt;/p&gt;

&lt;p&gt;I personally have had recent trouble trying to pick myself back up and continue the job hunt with the same vigor I had when I started.&lt;/p&gt;

&lt;p&gt;It's been 3 months of rejection. That's a long time!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/jqScOnk9Dqk7ILU4kF/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/jqScOnk9Dqk7ILU4kF/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But... &lt;strong&gt;On the bright side, I've gotten really good at coping with rejection&lt;/strong&gt;. I want to share with you my tips for dealing with those hard knocks. &lt;strong&gt;Let's get started!&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip #1: Always Blame Others
&lt;/h3&gt;

&lt;p&gt;You may not know this, but a job rejection is basically a personal attack to your ego. The ego is &lt;strong&gt;literally&lt;/strong&gt; the most valuable asset any candidate brings to the table. &lt;/p&gt;

&lt;p&gt;Instead of focusing on areas of growth (as the age-old saying goes: growth is for nincompoops), shield your precious ego by blaming anything but yourself. &lt;strong&gt;Everything is fair game when it comes to blame&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The company (they personally had it out for you most likely)&lt;/li&gt;
&lt;li&gt;The circumstance (the questions were dumb, the code challenge was pointless)&lt;/li&gt;
&lt;li&gt;Anyone who cares about you (distractions, the LOT of em')&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/28fdeDukfpO4CmchDb/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/28fdeDukfpO4CmchDb/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip #2: HUSTLE HUSTLE HUSTLE.
&lt;/h3&gt;

&lt;p&gt;What? Did you not get the memo from LinkedIn? All you had to do was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wake up every day at 4 am&lt;/li&gt;
&lt;li&gt;Do 4 algorithms before 9am&lt;/li&gt;
&lt;li&gt;Go for a 12 mile jog to clear your head&lt;/li&gt;
&lt;li&gt;Send out 10 job applications by 12pm&lt;/li&gt;
&lt;li&gt;Do a pull request on 3 people's code and fix their stuff&lt;/li&gt;
&lt;li&gt;Network with 10 recruiters&lt;/li&gt;
&lt;li&gt;Start a side business&lt;/li&gt;
&lt;li&gt;Do yoga&lt;/li&gt;
&lt;li&gt;and repeat this every day for 6 months&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's so easy. You really ought to shame yourself until you start doing this. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/82ojNv29cQ5MzUzb5e/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/82ojNv29cQ5MzUzb5e/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remember&lt;/strong&gt;: If you're not hustling, then you should feel bad, because feeling bad is the best and healthiest way of being productive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip #3: Rewards are for Winners.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The LAST thing you want to do is reward yourself for trying&lt;/strong&gt;. You should encourage WINNING, not TRYING. If you get rejected, don't take a break. Don't go for a walk. Don't eat tasty food. Don't take a day-trip. Rewards for people who aren't rejects. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/VGTVzRd93jDBS/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/VGTVzRd93jDBS/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remember&lt;/strong&gt;: Just because you put yourself out there in the job market and was validated through rejection, does NOT mean you deserve a reward. Don't promote this behavior! Makes me want to vomit just thinking about it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip #4: Need More Emotional Distancing.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Just stop caring&lt;/strong&gt;. The next rejection won't hurt if you stop caring. It doesn't matter. Nothing matters. I'm pretty sure I read somewhere in Forbes or National Geographic that not only does indifference turn you into a better hustler (which, come on, we all want that), but it makes you look cooler too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/RBYBWi1IT8vDy/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/RBYBWi1IT8vDy/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus points&lt;/strong&gt;: If you can also not discuss your feelings with anyone. We all know that if you don't talk about your problems, you don't have any problems!&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip #6: Don't think, just do it.
&lt;/h3&gt;

&lt;p&gt;Have you seen your social media feed lately? It's full of people who are doing AMAZING things ALL THE TIME. Those people CLEARLY just do awesome things, and certainly haven't spent time reflecting on their failures. &lt;/p&gt;

&lt;p&gt;Don't reflect on your rejection, as it might make you feel insecure, which could potentially hurt your ego (you didn't forget about your precious ego, did you?).&lt;/p&gt;

&lt;p&gt;I mean really, what could you possibly learn from reflecting on your past experience while it's still fresh in your mind? Nothing, that's what!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JUST DO IT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/104ueR8J1OPM2s/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/104ueR8J1OPM2s/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  In Conclusion
&lt;/h1&gt;

&lt;p&gt;I hope this unsolicited advice finds you well. As some final remarks, please make sure you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hustle at the cost of your personal health&lt;/li&gt;
&lt;li&gt;Do not help others who are also struggling, as they are the enemy&lt;/li&gt;
&lt;li&gt;Protect your ego&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DO NOT&lt;/strong&gt; post any of your own anti-advice as comments to this post&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Coldest Regards,&lt;br&gt;
Shawn&lt;/p&gt;

</description>
      <category>sarcasm</category>
      <category>rejection</category>
      <category>hustlehustlehustle</category>
      <category>preciousego</category>
    </item>
    <item>
      <title>Life As A Bootcamp Dev - Week 13: Finding Productive Hobbies</title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Tue, 28 Apr 2020 17:05:57 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-13-finding-productive-hobbies-717</link>
      <guid>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-13-finding-productive-hobbies-717</guid>
      <description>&lt;h1&gt;
  
  
  Hi All!
&lt;/h1&gt;

&lt;p&gt;As of recently, I found myself being pretty unproductive. A response to an interview I had intensely prepared for got pushed out and I had trouble staying motivated to keep sending job applications out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So I took a break&lt;/strong&gt; (asides from the two projects I was collaborating on!).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/Prcy16jmbngZ2/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/Prcy16jmbngZ2/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I did a number of things I normally don't do to take my mind off the interview in general, like watching TV and playing A LOT of video games.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I was convincing myself&lt;/strong&gt; that I was just passing time until I would hear back from my interview.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If I got rejected, it was back to job applications, no problem!&lt;/li&gt;
&lt;li&gt;If I got accepted, it was a whole new chapter of my life!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I justified spending hours just killing time, for a couple days. And then the day came when I was supposed to hear back about my interview, and &lt;strong&gt;I was notified that the company was going to need another week&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/FqdruC6cJYXxC/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/FqdruC6cJYXxC/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yeah, my "time killing" strategy wouldn't be reasonable for a WHOLE additional week. I wanted to find hobbies that I could improve at that I could potentially use in my coding projects that were also fun and relaxing. Here's three things I picked up:&lt;/p&gt;

&lt;p&gt;1) I recently started learning piano. I loved putting sounds in my projects during my bootcamp, and I always wanted to learn to make my own music. My wife is an amazing piano player, so she had been teaching me the basics. It's been a blast!&lt;/p&gt;

&lt;p&gt;2) I began practicing to make digital art using ProCreate. I always enjoyed throwing pictures/animations into my projects that came straight from my brain rather than the internet! I just practice by drawing whatever comes to my head. Here's a random drawing I made.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aOO0XhyV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n1uhq18d6pq0dwe4b0qb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aOO0XhyV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n1uhq18d6pq0dwe4b0qb.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) I started making small games using Unity. I've always been interested in world building and telling stories, I figured this would be something cool to explore that also lets me practice my coding AND design skills! Here's a snip from a simple number guessing game I made!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--89ILtgq2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mgh8pkgh7mgfrqujuabt.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--89ILtgq2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mgh8pkgh7mgfrqujuabt.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  My Point: Do Something Small!
&lt;/h1&gt;

&lt;p&gt;If you've also been hit by negative thoughts or just feeling crummy about your situation, it is totally okay to take a breather and take a break. In fact getting burnt out is way more unproductive than binging on something for a day or two.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sometimes though, the best escape isn't actually doing nothing, but creating small things through activities you enjoy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I usually feel guilty after watching 2 hours of TV, because I have "accomplished nothing".&lt;/p&gt;

&lt;p&gt;But I usually feel happy after spending 2 hours drawing a silly picture, because I made a silly picture :).&lt;/p&gt;

&lt;p&gt;I'll be getting back on this job application train now.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/WdIaMQ6bLlvtm/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/WdIaMQ6bLlvtm/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Good luck with your own endeavors!&lt;/p&gt;

&lt;p&gt;Shawn&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Life As A Bootcamp Dev - Week 12: Interview Highlights</title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Mon, 20 Apr 2020 02:53:08 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-12-interview-highlights-215o</link>
      <guid>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-12-interview-highlights-215o</guid>
      <description>&lt;h1&gt;
  
  
  Here We Are Again!
&lt;/h1&gt;

&lt;p&gt;For those of you wondering where the past couple weeks have gone in terms of this blog post, I ended up writing a series on &lt;a href="https://dev.to/shawnhuangfernandes/system-design-intro-for-bootcamp-grads-41a6"&gt;System Design&lt;/a&gt; as preparation for an interview I had during this past week!&lt;/p&gt;

&lt;p&gt;I'll do a short recap of my interview experience, as that's been what I was focused on during the past couple weeks! I've also been particularly exhausted from studying for 8-10 hours straight for two weeks, so I'm just taking it easy until I hear back!&lt;/p&gt;

&lt;h1&gt;
  
  
  Interview Application
&lt;/h1&gt;

&lt;p&gt;This was a position that was targeting new programmers, but was about a totally new topic that I'd never heard about: Production Engineering. A couple things I did before I applied was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I googled the position to understand exactly what Production Engineering was&lt;/li&gt;
&lt;li&gt;I researched the company (although the company is well-known) and looked at their mission &amp;amp; values and tried to see if they aligned with my core values&lt;/li&gt;
&lt;li&gt;I messaged a couple Production Engineers at the company to get some information on the role and figuring out their day-to-day&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I liked the position, the team, and the work. It involved a lot of new concepts that I didn't learn in my bootcamp, but I decided it would not hurt to apply and see what happens! &lt;strong&gt;Application Sent!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/ABouZWsNyvZkI/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/ABouZWsNyvZkI/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The Coding Challenge
&lt;/h1&gt;

&lt;p&gt;Now at this point I had been using Leetcode and Hackerrank to practice algorithms. I had been doing &lt;strong&gt;easy&lt;/strong&gt; problems and was feeling pretty good. When I say I was feeling good, I mean I could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Understand&lt;/strong&gt;: Given the problem, I could re-state it clearly for myself to determine what it was asking me to do.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diagram&lt;/strong&gt;: I could draw or diagram the problem on a whiteboard or on my laptop&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pseudocode&lt;/strong&gt;: I didn't get excited and try to jump into implementation, instead I could write an english-y version of my implementation that was easy to follow&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code&lt;/strong&gt;: I could take my pseudocode and comfortably translate it into Javascript/Ruby.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Doing easy problems let me build the muscle memory of following this process.&lt;/p&gt;

&lt;p&gt;Luckily, I had networked with some fellow engineers who advised me to start trying to tackle some &lt;strong&gt;medium&lt;/strong&gt; level coding problems as preparation for any coding interview. Immediately I started hitting road blocks.&lt;/p&gt;

&lt;p&gt;I was following my regular process, writing code that I knew was working, but leetcode and hackerrank were shutting down my solutions for some specific test cases. What was going on? &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My solutions were timing out (aka taking too long to run)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3og0INAY5MLmEBubyU/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3og0INAY5MLmEBubyU/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I needed to learn to optimize my code. This is why everyone on the planet tells you to "learn your data structures". I was using nested for-loops to brute force my way through problems, with a rare application of a hash to speed up indexing. This simply wouldn't cut it for  medium problems, and turns out, is partially-acceptable in an interview.&lt;/p&gt;

&lt;p&gt;So my strategy changed:&lt;/p&gt;

&lt;p&gt;1) Understand the problem&lt;br&gt;
2) Diagram the problem&lt;br&gt;
3) Pseudocode &lt;strong&gt;a BRUTE FORCE&lt;/strong&gt; solution&lt;br&gt;
4) Code your &lt;strong&gt;BRUTE FORCE&lt;/strong&gt; solution&lt;br&gt;
5) Evaluate your solution (what could be improved)&lt;br&gt;
6) Optimize your solution&lt;br&gt;
7) Repeat 5 &amp;amp; 6 until you're satisfied&lt;/p&gt;

&lt;p&gt;From my studies, I realized there is so much more to algorithms that I haven't even touched on, but for the most part, I focused on going through this process as I did coding problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  And Then The Challenge Came
&lt;/h2&gt;

&lt;p&gt;I was sent an email for the coding challenge. I would be given an hour and a half to complete 2 coding problems. I had a lot of practice doing this, so going in &lt;strong&gt;I felt pretty confident&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/849C3YApus6Fq/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/849C3YApus6Fq/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The platform basically worked the same as LeetCode:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I had a problem laid out with a sample input and expected output&lt;/li&gt;
&lt;li&gt;I had an area where I could submit test cases&lt;/li&gt;
&lt;li&gt;I could run or submit my code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;I flew through the first problem in less than 15 minutes&lt;/strong&gt;, and I decided to annotate my code with comments just to be extra clear!&lt;/p&gt;

&lt;h3&gt;
  
  
  The Disastrous Second Problem of 2020
&lt;/h3&gt;

&lt;p&gt;I was feeling really confident. I had an hour and fifteen minutes to do a single problem. I dived into the second problem and immediately knew I was in for some trouble. It involved traversing a matrix and determining the shortest route to a specific point considering the values of the matrix. I hit a mental block and minutes ticked away and I felt myself getting more and more nervous. I wanted to get some code on the page and after 10 minutes of thinking, I took the first solution and began implementing it. It didn't take long before I was getting frustrated because my solution couldn't handle edge cases, and I fixing the edge cases broke the other ones. &lt;strong&gt;Long story short, I couldn't finish the second problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But, &lt;strong&gt;in the last 5 minutes of the challenge&lt;/strong&gt;, I wrote out my full understanding of the problem, acknowledged that I didn't have a working solution, and discussed possible implementations.&lt;/p&gt;

&lt;p&gt;I don't know if that played any part in my evaluation, but &lt;strong&gt;I passed the coding challenge, barely&lt;/strong&gt;! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/oO8Io8e7uHu8gJQYbg/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/oO8Io8e7uHu8gJQYbg/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The Interview
&lt;/h1&gt;

&lt;p&gt;I was sent an email with a PDF packet of a laundry list of things I'd be tested on &lt;strong&gt;in two weeks&lt;/strong&gt;. This wasn't to intimidate me, but a LOT of these things I honestly had no idea about. Some of them included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;li&gt;How to troubleshoot a computer using bash&lt;/li&gt;
&lt;li&gt;How operating systems work&lt;/li&gt;
&lt;li&gt;System Design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and also some things that I was familiar with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Coding&lt;/li&gt;
&lt;li&gt;Behavior Qs!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point, I knew that if I wanted to really go for this position (which I knew I liked already), &lt;strong&gt;I'd need to commit myself&lt;/strong&gt; to learning some new material for the next couple weeks.&lt;/p&gt;

&lt;p&gt;I had a conversation with one of their recruiters which helped me understand what I should target. I found some awesome online resources to learn Linux, the Shell, and System Design and spent the next two weeks immersing myself. I actually learned a ton of interesting things about Linux (the vision behind it, how it works under the hood etc) and got absolutely fascinated with system design. Although learning in an almost academic way wasn't super exciting, I tried to make it fun and informative by doing things like writing blog posts or using useful bash commands to look at my own computer's processes.&lt;/p&gt;

&lt;p&gt;I also created a STAR (or SAR) table in Google Sheets to help prepare myself for the Behavioral part of the interview. I also continued with my algorithms to prevent another debacle! &lt;/p&gt;

&lt;p&gt;And so I trained for two weeks!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/YaJknABE4uFUY/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/YaJknABE4uFUY/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking The Interview
&lt;/h2&gt;

&lt;p&gt;Because of COVID, everything as being done online. My interview had three parts, each one being conducted by a separate interviewer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Part 1: Linux + Coding&lt;/li&gt;
&lt;li&gt;Part 2: System Design&lt;/li&gt;
&lt;li&gt;Part 3: Behavioral&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Part 1: Linux and Coding
&lt;/h3&gt;

&lt;p&gt;With my struggle with the coding challenge at the forefront of my mind, I came into this part of the interview with the intention of taking my time, talking things through, and asking questions before anything else.&lt;/p&gt;

&lt;p&gt;We started with the Linux questions first. Some of the questions I immediately knew, others I asked for clarification, and &lt;strong&gt;prefaced that I was a beginner to Linux administration&lt;/strong&gt;. My interviewer was happy to answer my questions and I think my bringing it up was a better alternative than trying to pretend I was an expert.&lt;/p&gt;

&lt;p&gt;The coding part of the interview was short. The algorithm felt easy, but as I followed my process, I found myself catching some edge cases (which I made sure to verbalize). I provided a brute force solution, and then evaluated its performance, and provided a "divide and conquer" approach to reduce the runtime complexity. My interviewer seemed pleased with the result, and I left this part of the interview feeling good!&lt;/p&gt;

&lt;h3&gt;
  
  
  Part 2: System Design
&lt;/h3&gt;

&lt;p&gt;This was a very conversational part. I greeted my new interviewer and we immediately jumped into some basic questions about whether or not I understood the basic parts of a System and then moved into designing and optimizing a system on a limited budget.&lt;/p&gt;

&lt;p&gt;I felt like I did very well on this part of the interview for &lt;strong&gt;one reason&lt;/strong&gt;: I did not just provide one answer for each system design question, but I provided multiple alternatives and explained my justifications. I felt like this was the strongest part of my entire interview, and I left feeling awesome!&lt;/p&gt;

&lt;h3&gt;
  
  
  Part 3: Behavioral
&lt;/h3&gt;

&lt;p&gt;I have one main problem with answering questions: I talk way too much. During my behavioral interview, I was asked some pretty standard questions about my projects and how I handle teamwork. The interviewer did cut me off during one of my answers, which meant I was probably rambling at some point. Nevertheless, I did spend a good amount of time talking to the interviewer and felt like although I could have been more clear, it went well overall.&lt;/p&gt;

&lt;h1&gt;
  
  
  And Now We Wait
&lt;/h1&gt;

&lt;p&gt;So now after this two week study-pocalypse, I'll be awaiting an answer to see if I made the cut or not! I'm both dreadful and excited, but I was told that in the next couple days I should have an answer. Here's to hoping! Regardless, you'll know the outcome in my next post!&lt;/p&gt;

&lt;p&gt;Good luck with your own endeavors!&lt;br&gt;
Shawn&lt;/p&gt;

</description>
      <category>interview</category>
      <category>bootcamp</category>
      <category>jobs</category>
    </item>
    <item>
      <title>System Design Intro For Bootcamp Grads: Part 3</title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Mon, 13 Apr 2020 05:30:57 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/system-design-intro-for-bootcamp-grads-part-3-4h9f</link>
      <guid>https://dev.to/shawnhuangfernandes/system-design-intro-for-bootcamp-grads-part-3-4h9f</guid>
      <description>&lt;p&gt;This is the third installment of my introduction to System Design, as I prepare for an interview that requires knowledge of System Design! I hope this serves you well as a starting point for your &lt;strong&gt;dive&lt;/strong&gt; into System Design!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/SiKqNZqksVYWmQEMjd/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/SiKqNZqksVYWmQEMjd/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the previous two blog installments, I covered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terminology/Jargon&lt;/li&gt;
&lt;li&gt;System Design Principles&lt;/li&gt;
&lt;li&gt;Monolith Architecture&lt;/li&gt;
&lt;li&gt;Microservice Architecture&lt;/li&gt;
&lt;li&gt;High Level System Components (Servers, Caches, Databases, Load Balancers)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking at a web service that may or may not exist, Hopefully you might be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;choose a high level backend architecture to use&lt;/li&gt;
&lt;li&gt;keep the 5 system design principles in mind&lt;/li&gt;
&lt;li&gt;break down the web service into general components&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, one key part I haven't really covered is &lt;strong&gt;optimizing a design&lt;/strong&gt;. Such as how you can tailor your design for efficiency? For reliability? For scalability? In order to understand some of the options available for you to optimize your design, I'll briefly go over some of the high level strategies I've learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Horizontal Scaling vs. Vertical Scaling&lt;/li&gt;
&lt;li&gt;CAP Theorem&lt;/li&gt;
&lt;li&gt;Cacheing&lt;/li&gt;
&lt;li&gt;Single Region vs. Multi Region&lt;/li&gt;
&lt;li&gt;Horizontal Partitioning vs. Vertical Partitioning&lt;/li&gt;
&lt;li&gt;Indexing&lt;/li&gt;
&lt;li&gt;Redundancy &amp;amp; Replication&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Horizontal Scaling vs Vertical Scaling
&lt;/h2&gt;

&lt;p&gt;This is probably the most widely used term in System Design. They are relatively simple to understand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Horizontal Scaling&lt;/strong&gt; simply means that in order to increase your system capacity, you install more units (e.g if you had N servers, you now have N + 1 servers). You can horizontally scale any part of your system, but this works particularly well with distributed systems, and it is one of the primary reasons they are used. They can meet large scale demand at lower cost and higher reliability than monoliths.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vertical Scaling&lt;/strong&gt; means that in order to increase your system capacity, you upgrade your existing units (i.e replacing your computer with a faster, better one). This type of scaling is usually used in monoliths, but you can vertically scale parts of your system too.&lt;/p&gt;

&lt;h2&gt;
  
  
  CAP Theorem
&lt;/h2&gt;

&lt;p&gt;More often than not you will be designing a distributed system (multiple services that are totally independent from each other). When designing a distributed system, you can't have it all, &lt;em&gt;you need to decide on some tradeoffs&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/JDfQEoSR7Rpgk/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/JDfQEoSR7Rpgk/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The CAP Theorem&lt;/strong&gt; states that &lt;strong&gt;any distributed systems can only provide 2 of the 3 characteristics: Consistency, Availability, and Partition Tolerance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consistency&lt;/strong&gt; means that ANY particular request being served from ANY server will not show dissimilar data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Availability&lt;/strong&gt; means that your servers can take requests 100% of the time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Partition Tolerance&lt;/strong&gt; basically means that your system will never have issues communicating with each other.&lt;/p&gt;

&lt;p&gt;I was trying to explain this concept to my partner, and she gave me an example from her work that illustrates CAP Theorem.&lt;/p&gt;

&lt;p&gt;Imagine you're working on the same excel spreadsheet (database) with multiple coworkers (servers):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If you all made sure that everything you updated was in sync with your coworkers, and that there were no inter-communication problems, you wouldn't be able to do your work 100% of the time, because you'd have to wait occasionally to resolve inter-communication problems. &lt;strong&gt;(Consistent, Fault Tolerant, but NOT Available)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you made sure that all your coworkers could work on the spreadsheet 100% of the time and also ensured that they wouldn't have any inter-communication problems, you could potentially be dealing with inconsistent data. &lt;strong&gt;(Available, Fault Tolerant, but NOT Consistent)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you made sure that your coworkers could work on the spreadsheet 100% of the time and also made sure they were checking in with each other before working on the spreadsheet, you'd be susceptible to inter-communication problems. &lt;strong&gt;(Available, Consistent, but NOT Fault Tolerant)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If designing a distributed system, keep the CAP Theorem in mind!&lt;/p&gt;

&lt;h2&gt;
  
  
  Cacheing
&lt;/h2&gt;

&lt;p&gt;When do you decide whether or not you need a cache? If you have a high volume of requests for common data (like a request to see a celebrity post), it's a good idea to use a cache. &lt;/p&gt;

&lt;p&gt;Additionally, when it comes to optimization of a cache, here are some considerations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where should I put my cache?&lt;/li&gt;
&lt;li&gt;What should my cache eviction policy be?&lt;/li&gt;
&lt;li&gt;How should I update my cache?&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Where should I put my cache?
&lt;/h4&gt;

&lt;p&gt;Cache is quick-access memory, so you can either move it closer to the server handling the request, or move it closer to the database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/hTDD7L0FQtgfmwT4MX/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/hTDD7L0FQtgfmwT4MX/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Closer to the Server: If the Cache is stored in the server, this could potentially increase response times (since we wouldn't need to check for data all the way back in the database). However, you'd need to make sure (in a distributed system or a horizontally scaled service), that each cache has consistent data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Closer to the Database: If a Cache is located near a database, this would reduce response times, but you'd get the data consistency you'd need because the cache could be a separated from your server(s). This cache could also be scaled independently.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What should my cache eviction policy be?
&lt;/h4&gt;

&lt;p&gt;Since caches are typically small, they might get full quickly, and you might need to push out data according to specific criteria (pulled directly from Grokking the System Design Interview):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First In First Out (FIFO): The cache evicts the first block accessed first without any regard to how often or how many times it was accessed before.&lt;/li&gt;
&lt;li&gt;Last In First Out (LIFO): The cache evicts the block accessed most recently first without any regard to how often or how many times it was accessed before.&lt;/li&gt;
&lt;li&gt;Least Recently Used (LRU): Discards the least recently used items first.&lt;/li&gt;
&lt;li&gt;Most Recently Used (MRU): Discards, in contrast to LRU, the most recently used items first.&lt;/li&gt;
&lt;li&gt;Least Frequently Used (LFU): Counts how often an item is needed. Those that are used least often are discarded first.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  How Should I Update my Cache?
&lt;/h4&gt;

&lt;p&gt;As a re-iteration, caches allow you to store frequently accessed data from your database in a small localized storage for performance. That being said, Caches need to have some sort of mechanism to remain in sync with the database (or mark data that isn't consistent. This is called &lt;strong&gt;cache invalidation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write-Through Cache&lt;/strong&gt;: new data is written into the cache and database at the same time. This allows for consistent data, quick reads, but slow writes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write-Around Cache&lt;/strong&gt;: new data bypasses the cache and goes straight to the database. The cache will be populated by some other means. This allows for quicker writes, but also has the risk of creating a thing called a "cache miss", where lookup data is missing from the cache and has to go all the way to the network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write-Back Cache&lt;/strong&gt;: new data goes into the cache and eventually will be put into the database. This increases speed but has the risk of potentially losing data if say... the power goes out. &lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-Region or Single-Region
&lt;/h2&gt;

&lt;p&gt;When deciding on a distributed system, you may want to distribute your system in one region or in many. This is mainly a question of reliability vs cost.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/l3V0megwbBeETMgZa/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/l3V0megwbBeETMgZa/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Why would I want to spread my system across the globe?&lt;/em&gt; Reliability. If one  region system experiences something like a Hurricane, your system can "failover" to another region.&lt;/p&gt;

&lt;p&gt;This was something that came up in a mock-interview of mine, so I thought I'd bring this up here!&lt;/p&gt;

&lt;h2&gt;
  
  
  Horizontal Partitioning vs. Vertical Partitioning
&lt;/h2&gt;

&lt;p&gt;When you design your database, you may want to optimize it by partitioning, or breaking it up. This might be because you want to scale, balance database loads, or availability etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/b5Hcaz7EPz26I/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/b5Hcaz7EPz26I/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Horizontal Partitioning&lt;/strong&gt;: If we decide to split our database up by the rows in the table (or by a particular attribute of the table), this is horizontal partitioning. The drawback to this is that if our criteria for how to partition the rows isn't good, you could have a "shard" or "partition" of the original database being loaded very hard and others being underutilized.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vertical Partitioning&lt;/strong&gt;: If we split our database by its particular models (let's say we have a users table, tweets table etc), this is vertical partitioning. The drawback to this is that you may need to further partition your shards if the demand for the database data goes up (because a single database may not be able to handle the cost).&lt;/p&gt;

&lt;h2&gt;
  
  
  Indexing
&lt;/h2&gt;

&lt;p&gt;Imagine you have a giant database that you need to look through. Sometimes having a sort of table of contents would help us index directly to the right place in memory to grab data. An index serves as a separate table that stores references to the database to increase our read speeds!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sounds great, why wouldn't we use indexing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Well, in order to have a new record, you'd also need to generate a new/unique index. This would decrease the latency for our write operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Redundancy
&lt;/h2&gt;

&lt;p&gt;Often when you're designing a system of any kind, there might be "weak links" that might take your whole system down if they were compromised. These are called &lt;strong&gt;single points of failure&lt;/strong&gt;. Redundancy fixes single points of failure by having a backup of whatever that thing is, be it a database, a server, or even a load balancer. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3gmvFjzHgGZTG/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3gmvFjzHgGZTG/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The common scheme for implementing this is called the &lt;strong&gt;Master-Slave&lt;/strong&gt; system. Basically the masters gets every update and eventually moves them over to the slave.&lt;/p&gt;

&lt;h1&gt;
  
  
  And That's It! Where To From Here?
&lt;/h1&gt;

&lt;p&gt;System Design goes way beyond the basics that I went over during these blog posts. Honestly, &lt;strong&gt;I don't really know much more than you!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But if you are looking to really accelerate your System Design education from this point, here's what I'd recommend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Watch some sample System Design interview questions like &lt;a href="https://www.youtube.com/watch?v=5m0L0k8ZtEs"&gt;this one&lt;/a&gt; or &lt;a href="https://www.youtube.com/watch?v=fMZMm_0ZhK4"&gt;this one&lt;/a&gt; or &lt;a href="https://www.youtube.com/watch?v=wYk0xPP_P_8"&gt;this one&lt;/a&gt;!&lt;/li&gt;
&lt;li&gt;Go through the entire video and note down the terms you don't understand&lt;/li&gt;
&lt;li&gt;Google the terms, and try to understand them with respect to what you already know&lt;/li&gt;
&lt;li&gt;Start thinking about how you'd build some of these services! Draw it out!&lt;/li&gt;
&lt;li&gt;Continue with the deep dive on System Design concepts and if possible, incorporate them in your own projects!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good Luck with your learning! Stay healthy!&lt;/p&gt;

&lt;h5&gt;
  
  
  Reading Resources:
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://github.com/donnemartin/system-design-primer"&gt;System Design Primer&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/checkcheckzz/system-design-interview"&gt;System Design Interview&lt;/a&gt;&lt;br&gt;
&lt;a href="http://highscalability.com/start-here/"&gt;High Scalability (Website)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.educative.io/courses/grokking-the-system-design-interview"&gt;Grokking The System Design Interview&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Video Resources:
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=quLrc3PbuIw"&gt;Gaurav Sen System Design Series&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=KduoinBNru4"&gt;File, Block, and Object Storage&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>System Design Intro For Bootcamp Grads: Part 2</title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Mon, 06 Apr 2020 01:54:33 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/system-design-intro-for-bootcamp-grads-part-2-42fk</link>
      <guid>https://dev.to/shawnhuangfernandes/system-design-intro-for-bootcamp-grads-part-2-42fk</guid>
      <description>&lt;p&gt;This is the second installment of my initial dive into System Design as prep for an interview for a Production Engineer. If you are new to System Design and didn't read the &lt;a href="https://dev.to/shawnhuangfernandes/system-design-intro-for-bootcamp-grads-41a6"&gt;first blog post&lt;/a&gt;, I recommend it!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Please use this as a starting point to learn about System Design, as I am super new to System Design and may be using some terminology loosely! I provide some resources at the bottom of this blog as references to dive deeper!&lt;/p&gt;

&lt;p&gt;If you want to skip straight to the technical stuff, scroll down to the &lt;strong&gt;Expanding On The Fundamentals - High Level Design&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why System Design Matters?
&lt;/h1&gt;

&lt;p&gt;Whenever I'm learning something new, I always try to figure out its &lt;strong&gt;practical relevance&lt;/strong&gt; to my life. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/26ufaqo3YRPQ24HPW/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/26ufaqo3YRPQ24HPW/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;System Design has both practical and technical relevance:&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Relevance
&lt;/h2&gt;

&lt;p&gt;In my day-to-day, I constantly use software-based services (Netflix, Shutter, even LinkedIn). I also have experienced the frustration of having those services "go down" or be unavailable for some periods of time. These services rely on good system design (the structure) as well great UI (the look) to keep customers like myself coming back and using them. Understanding System Design makes me really appreciate the deliberate decisions taken by system engineers to make sure I can enjoy the services I use and rely on day to day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Relevance
&lt;/h2&gt;

&lt;p&gt;As a fullstack developer, learning basic System Design changed the way I approach project planning. Here was my current design flow:&lt;/p&gt;

&lt;p&gt;1) "I'll plan a project" -&amp;gt; I create my user stories, mockups, models&lt;br&gt;
2) "I will implement the project with tools that I'm familiar with" -&amp;gt; I usually end up picking React for the front end, and pick a REST or GraphQL style backend arbitrarily, etc.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;That sounds fine, what's the problem?&lt;/em&gt; The problem is that I am trying to fit my project AROUND tools. The tools I'm using may not be the best fit based on my project.&lt;/p&gt;

&lt;p&gt;This is the equivalent of saying:&lt;/p&gt;

&lt;p&gt;1) "I need to hang up a picture frame"&lt;br&gt;
2) "Well, in my toolbox I've got a sledgehammer and sandpaper... I'll make it work!"&lt;br&gt;
3) You proceed to lose all house renovation credibility for the rest of your life.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic system design knowledge lets you break down a project/problem into its requirements and makes sure you can pick and implement the right pieces of technology for the job&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Expanding On The Fundamentals - High Level Design
&lt;/h1&gt;

&lt;p&gt;In the previous blog post we covered some very high level system design concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terminology/Jargon&lt;/li&gt;
&lt;li&gt;System Design Principles&lt;/li&gt;
&lt;li&gt;Monolith Architecture&lt;/li&gt;
&lt;li&gt;Microservice Architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;In this blog post&lt;/strong&gt;, I'll try to introduce you to some of the components in a typical system. I'll also list out some resources from the last blog post (and some new ones) in case you are interested in learning more about System Design.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bird's Eye View: A System
&lt;/h2&gt;

&lt;p&gt;Looking at a system from a top level view. It'd look something like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AF5NEru---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y1ynn3e2l12u15ly3l67.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AF5NEru---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y1ynn3e2l12u15ly3l67.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Business Logic
&lt;/h3&gt;

&lt;p&gt;Devices and software dedicated to serving user or internal system requests such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A user wants to create a new record (creating a new account) in a dating service&lt;/li&gt;
&lt;li&gt;A user wants to see all their followers (viewing many accounts)&lt;/li&gt;
&lt;li&gt;A user might want to update their account name (updating an existing record)&lt;/li&gt;
&lt;li&gt;A user might want to delete their account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Business logic consists of components that let an application efficiently carry out these kinds of CRUD (Create, Read, Update, Delete) operations. Typically the servers that carry out the logic store data in some kind of data storage if future requests will need access to data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Storage
&lt;/h3&gt;

&lt;p&gt;These are devices &amp;amp; software dedicated for the long-term storage of data that the system will need to carry out its services (whether it's to let a user search a song, or follow someone's feed). This typically will hold SQL/noSQL databases or Object Storage. These respond to the business logic. Usually services interact with data storage, and therefore the storage is not exposed to client requests (they are typically the last steps in service routes).&lt;/p&gt;

&lt;h2&gt;
  
  
  High Level System Components
&lt;/h2&gt;

&lt;p&gt;Both parts of a system may be comprised some basic components&lt;/p&gt;

&lt;h5&gt;
  
  
  Business Logic
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Service(s)&lt;/li&gt;
&lt;li&gt;Load Balancers&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Data Storage
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;SQL &amp;amp; noSQL Databases&lt;/li&gt;
&lt;li&gt;File/Block &amp;amp; Object Storage&lt;/li&gt;
&lt;li&gt;Caches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's look at each of these and see what they are and how they fit in!&lt;/p&gt;

&lt;h2&gt;
  
  
  Business Logic
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Service
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A Service is function that is built of infrastructure (think servers, caches, load balancers etc.) that are designed to accomplish a specific task&lt;/strong&gt;. They might &lt;strong&gt;interact with client requests&lt;/strong&gt; or be totally &lt;strong&gt;internal&lt;/strong&gt;. It lives in the business logic part of your system. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Netflix streaming service has a single responsibility of getting a video to a user. Netflix has other independent services like a searching service, or recommendation service.&lt;/li&gt;
&lt;li&gt;A URL shortening service... shortens a URL. &lt;/li&gt;
&lt;li&gt;You might even have internal services (that users don't interact with), like a cleanup service that deletes old unused data, or a service dedicated to generating unique identifiers as an intermediate step in a record creation. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For example&lt;/strong&gt;, You can imagine that a &lt;strong&gt;client&lt;/strong&gt; sends a request (maybe via HTTP), which hits a &lt;strong&gt;proxy server&lt;/strong&gt; that determines whether &lt;strong&gt;Service #1&lt;/strong&gt; or &lt;strong&gt;Service #2&lt;/strong&gt; handles the request. Either service handles the request and persists data to their respective database. &lt;strong&gt;Service #3&lt;/strong&gt; may get triggered every 3 months to clean up or do something with the data in both the databases. Totally random example, but hopefully it illustrates the point.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rDNeqDh4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/70y36tmta2u3zrel19x4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rDNeqDh4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/70y36tmta2u3zrel19x4.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Services are the modular components that build the business logic of a system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Load Balancers
&lt;/h3&gt;

&lt;p&gt;Load Balancers are used in distributed systems when you are dealing with multiple servers that are for the same service. They &lt;em&gt;balance&lt;/em&gt; the workload equally among all the servers, as well as re-route work in case a server goes offline (as well as other things). Here's a simple diagram of a system that would use a load balancer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u8UgQ_Ve--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4katmctvsc9j8yo7m8fw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u8UgQ_Ve--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4katmctvsc9j8yo7m8fw.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you begin to scale your services up, perhaps you might want to install new machines dedicated to a service. You'd would then incorporate Load Balancers in your system design.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Storage
&lt;/h2&gt;

&lt;p&gt;When talking about Data Storage for a system design, we often break them down into &lt;strong&gt;Databases&lt;/strong&gt; and &lt;strong&gt;File/Block/Object Storage&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Databases
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Databases are systematic collections of data&lt;/strong&gt;. When you are deciding what kind of database you might need to use in your application, you'll be deciding between SQL and noSQL. Here's a breakdown of them both according to my studies. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a3HAvaof--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kp3ok6t70oz215vo4hnu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a3HAvaof--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kp3ok6t70oz215vo4hnu.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  SQL
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;SQL is a relational-database/table-based query language&lt;/strong&gt;. If you've used PostgreSQL or SQLite for Rails projects, you've worked with this before. SQL is a good database structure to follow if you want a database that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;has a fixed schema (data structure never changes)&lt;/li&gt;
&lt;li&gt;requires complex queries&lt;/li&gt;
&lt;li&gt;has many relationships (data has references to each other)&lt;/li&gt;
&lt;li&gt;will be interfacing with a monolith system&lt;/li&gt;
&lt;li&gt;dealing with financial transactions&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  noSQL
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;noSQL is a non-relational/object-oriented query-language&lt;/strong&gt; that has its own place in a system design. MongoDB is an example of a noSQL database. noSQL is a good database structure to follow if you want a database that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;has a flexible schema (data structure may change)&lt;/li&gt;
&lt;li&gt;simple queries&lt;/li&gt;
&lt;li&gt;does not have many relationships (not many internal references)&lt;/li&gt;
&lt;li&gt;will be interfacing with a distributed system&lt;/li&gt;
&lt;li&gt;easier to run metrics or calculations on the data&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Block, File and Object Storage
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;File, Block, and Object Storage are types of data storage that is meant for storing chunks of data like images, videos, and other types of files&lt;/strong&gt;. You'd opt for this if you have data that has no structure (maybe you'd be storing a .txt file one time and a .png another time).&lt;/p&gt;

&lt;h4&gt;
  
  
  Block Storage
&lt;/h4&gt;

&lt;p&gt;Block storage is typically located near the server (in the same physical space). It separates its data in hard disks and DOES NOT use the internet to send data. It's all local, so it's really fast. Naturally, it's hard to scale this type of system up because of its reliance on physical space.&lt;/p&gt;

&lt;h4&gt;
  
  
  File Storage (Network Attached Storage)
&lt;/h4&gt;

&lt;p&gt;Typically connected via a local-area-network (I think of a computer network in an office building). Data is organized into files and directories. It's not as performant as block storage, but can scale more easily.&lt;/p&gt;

&lt;h4&gt;
  
  
  Object Storage
&lt;/h4&gt;

&lt;p&gt;A highly scalable type of storage because you can connect any device from anywhere. Whenever you hear the term "cloud", that cloud is typically backed by Object Storage. It is very good for storing large amounts of unstructured data. It is the least performant of the three types of data storage. Typically if you're working with storing media, you'll have to consider implementing some form of Object Storage in the data storage part of your system. AWS S3 is one example of Object Storage (in fact it's used very often in cloud storage).&lt;/p&gt;

&lt;h3&gt;
  
  
  Caches
&lt;/h3&gt;

&lt;p&gt;Imagine you have a service that accesses a database to get data based on a user request. &lt;strong&gt;What happens if you have many requests for that same piece of data?&lt;/strong&gt; Well, each request for that same piece of data would have to go all the way to the database, and having the server 'search' for the same record in the database would be inefficient (reference the graphic below).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BZ_A6mo_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mwneipxu770lv69jifeh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BZ_A6mo_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mwneipxu770lv69jifeh.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we decided to use some special "local" storage for specific kinds of data like this, we could potentially reap some benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prevent multiple calls across the network&lt;/li&gt;
&lt;li&gt;Prevent/Avoid recalculating things (store calculations)&lt;/li&gt;
&lt;li&gt;Avoid overtaxing a database&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where a &lt;strong&gt;cache&lt;/strong&gt; comes in handy. Caches in System Design are basically intermediate storage between a server and database dedicated to getting common/useful data quickly. A cache could be installed on the physical server (so we are not required to use a slow network call to get the data), or an intermediate source of storage between the server and the data storage. If we threw a cache into our system to reap some of the above benefits, it might look like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2Sy8YQgn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/05f4f8envw1gk7ndrb6g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2Sy8YQgn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/05f4f8envw1gk7ndrb6g.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Hopefully at this point you are familiar with the simple building blocks of a larger system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Dl80Fp5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wnhpxy5e80aqa7nbzu1a.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Dl80Fp5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wnhpxy5e80aqa7nbzu1a.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's so much more left for me to learn! I feel like the more I dive into System Design, the more the topic opens up! It's exciting and overwhelming. I know a couple of my colleagues, like me, are also having interviews involving system design so I hope that this helps them and anyone else who is in the same boat!&lt;/p&gt;

&lt;h1&gt;
  
  
  Next Steps and Resources
&lt;/h1&gt;

&lt;p&gt;Now that I have a grasp on the parts that build the business logic and data storage parts of a system, I'll try to hit on some &lt;strong&gt;design concepts and strategies&lt;/strong&gt; as well as possibly &lt;strong&gt;answer a typical system design question&lt;/strong&gt; in some future posts.&lt;/p&gt;

&lt;p&gt;I hope this was helpful for you, and encourage you to learn more on your own! Here are a couple resources that were helpful for me:&lt;/p&gt;

&lt;p&gt;Reading Resources:&lt;br&gt;
&lt;a href="https://github.com/donnemartin/system-design-primer"&gt;System Design Primer&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/checkcheckzz/system-design-interview"&gt;System Design Interview&lt;/a&gt;&lt;br&gt;
&lt;a href="http://highscalability.com/start-here/"&gt;High Scalability (Website)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.educative.io/courses/grokking-the-system-design-interview"&gt;Grokking The System Design Interview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Video Resources:&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=quLrc3PbuIw"&gt;Gaurav Sen System Design Series&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=KduoinBNru4"&gt;File, Block, and Object Storage&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this was helpful! Good luck with your own endeavors!&lt;br&gt;
Shawn&lt;/p&gt;

</description>
      <category>systems</category>
      <category>tech</category>
      <category>codenewbie</category>
      <category>beginners</category>
    </item>
    <item>
      <title>System Design Intro For Bootcamp Grads</title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Wed, 01 Apr 2020 02:10:20 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/system-design-intro-for-bootcamp-grads-41a6</link>
      <guid>https://dev.to/shawnhuangfernandes/system-design-intro-for-bootcamp-grads-41a6</guid>
      <description>&lt;p&gt;Last week I heard back from a company hiring for a production engineer, and they told me that I passed a coding challenge I'd taken a month prior, and I'd be having an interview in a couple weeks. I was ecstatic! &lt;/p&gt;

&lt;p&gt;They provided details on my interview, that would be split into three parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Coding (Yes!)&lt;/li&gt;
&lt;li&gt;Systems Design (&lt;strong&gt;Wat?&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Behavioral (Yes!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I had never ever heard about System Design, but I had two weeks until I was going to interview for this awesome position. &lt;strong&gt;So I decided to hit the books&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3oxRmoTueKDmUguzL2/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3oxRmoTueKDmUguzL2/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A System Design Primer
&lt;/h2&gt;

&lt;p&gt;The definition of a System is &lt;em&gt;a set of things working together as parts of a mechanism or an interconnecting network&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In this way, System Design for Software is similar to a Library System. &lt;/p&gt;

&lt;p&gt;If you wanted a convenient way to share books between people, you might build a small library, maybe with a single person handling all the tasks of library-ing like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Checking out books&lt;/li&gt;
&lt;li&gt;Taking late payments&lt;/li&gt;
&lt;li&gt;Cleaning and re-stocking the shelves&lt;/li&gt;
&lt;li&gt;etc. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What if your library starts to gain popularity, and soon hundreds of people are coming in to use it?&lt;/strong&gt; You may need to design the library infrastructure such that it reliably serves the increased library traffic. Maybe you'd add shelves to hold more books? Maybe you'd assign specific jobs to specific people (e.g librarian etc.). Perhaps each person might have a backup who's on call in case they are sick? &lt;strong&gt;This is one example of designing a reliable and efficient library system&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/pKf7PlSjbtJN6/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/pKf7PlSjbtJN6/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this same way, if you write some code that does something useful, say... a library API. Maybe you built a single application that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manages check-outs&lt;/li&gt;
&lt;li&gt;Handles transactions&lt;/li&gt;
&lt;li&gt;Signs In/ Creates User accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;And let's say that people love using your API, and a lot of people want to use it, we mean MILLIONS of people&lt;/strong&gt;. You may add more servers and databases? Maybe you'd separate your central system into modular systems for each API service? Maybe you'd install backup servers or databases to make sure the API is always available. &lt;strong&gt;This is one example of software system design&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is This Important To Know?
&lt;/h2&gt;

&lt;p&gt;Here's what I think the perks of knowing the basics of System Design are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you want to build useful apps that help people on a larger scale, familiarity with the infrastructure that makes your frontend and backend go will really help you pick the right technology (i.e parts of the system) for the job.&lt;/li&gt;
&lt;li&gt;Most larger companies build and maintain large systems, and thus System Design knowledge seems to be valued by these companies!&lt;/li&gt;
&lt;li&gt;It is full of technical jargon, which means you'll look smart ;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Overview of a Basic System
&lt;/h2&gt;

&lt;h3&gt;
  
  
  First, Some Terminology For Future Reference
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Client&lt;/strong&gt;: For all intents and purposes, consider it as an entity that makes requests of servers. &lt;em&gt;This could be a React application making a fetch request, or a browser requesting access to a URL.&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Server&lt;/strong&gt;: It's a computer/program that takes requests from the client directly or from another component and interacts with other components like a database. &lt;em&gt;This is like a controller/model pair in Rails that persists, retrieves, or updates things from a database.&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Service&lt;/strong&gt;: Pretty ambiguous term. It's a feature-specific thing the system does for you. &lt;em&gt;This is like an URL shortening Service, or Netflix Streaming Service&lt;/em&gt;.&lt;br&gt;
&lt;strong&gt;Database&lt;/strong&gt;: Structured data held in a computer that persists. &lt;em&gt;These are like your SQL databases hooked up in a rails backend&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Request/Response&lt;/strong&gt;: Communication typically sent between client/servers following an application protocol like HTTP. &lt;em&gt;I can't really explain it better than &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview"&gt;this&lt;/a&gt;.&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Latency&lt;/strong&gt;: How long it takes to get a response. &lt;br&gt;
&lt;strong&gt;Bandwidth&lt;/strong&gt;: How much data can be passed through (aka throughput).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/IV9bTsaZmq0LK/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/IV9bTsaZmq0LK/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At a very high level, the two main pieces of a web application are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Frontend Client&lt;/strong&gt;: Anything that is making the request to the backend server(s). In a Rails-React app this would mean the React project would be the Client.&lt;br&gt;
&lt;strong&gt;The Backend System&lt;/strong&gt;: The part that handles requests from the Client through HTTP or similar requests and persists data if necessary. This could be a cloud service, or an API that I built in backend hooked up to a PostgreSQL database.&lt;/p&gt;

&lt;p&gt;The System simply takes requests, handles it, and gives a response back to the Client. &lt;strong&gt;System Design focuses on the Backend System&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Down One Level: System Architectures
&lt;/h2&gt;

&lt;p&gt;So far, in the past two days, I've learned of two structures/architectures for the System: the &lt;strong&gt;Monolith&lt;/strong&gt; and &lt;strong&gt;Microservice&lt;/strong&gt; Architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  Monolith Architecture
&lt;/h3&gt;

&lt;p&gt;Put simply, a Monolithic System Architecture means you have a backend system whose full functionality resides with a single unit (think of it as one giant program or machine). This architecture "style" applies to the servers as well as the database. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server&lt;/strong&gt;: Single program/machine that handles all fetches for all resources&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Database&lt;/strong&gt;: If you have a single database holding all the data.&lt;/p&gt;

&lt;p&gt;If you ever built a Rails backend, that is a completely monolithic architecture. I'm pretty familiar with this so this was a bit of an 'Ah-Ha!' moment&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7vVAPP55--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2z0ijk55z817hp0iaa3l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7vVAPP55--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2z0ijk55z817hp0iaa3l.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Microservice Architecture
&lt;/h3&gt;

&lt;p&gt;Microservice Architecture means that you split responsibility among different units, thus being modular. This also applies to both the server and the database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server&lt;/strong&gt;: If you have separate programs/machines that focus on taking fetches for different resource (or service).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Database&lt;/strong&gt;: If you have multiple databases, perhaps one database for each resource.&lt;/p&gt;

&lt;p&gt;I have never built anything based on this architecture, but I have heard of some technologies that use this architecture such as MongoDB for databases and Microsoft Azure for servers. I would like to get some hands on experience at some point, hopefully before the interview.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pSjvEU8M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wsfxs1g7qfc9ziou1bux.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pSjvEU8M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wsfxs1g7qfc9ziou1bux.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  System Design Principles
&lt;/h3&gt;

&lt;p&gt;Just like there are principles when writing code (an example being the &lt;a href="https://www.codeproject.com/articles/1059863/the-four-pillars-of-object-oriented-design"&gt;4 Pillars of Object Oriented Programming&lt;/a&gt;), there are also System Design Principles. Here's what I found in my studies:&lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;Scalability&lt;/strong&gt; - &lt;em&gt;What if your product/service gets popular?&lt;/em&gt; Are you going to buy more servers? Are you going to replace your current server with a bigger one? etc.&lt;br&gt;
2) &lt;strong&gt;Reliability&lt;/strong&gt; - &lt;em&gt;What if part of your product/service unexpectedly turns off?&lt;/em&gt; Do you have backup servers? etc.&lt;br&gt;
3) &lt;strong&gt;Availability&lt;/strong&gt; - &lt;em&gt;How often will your product/service be usable?&lt;/em&gt; 100% of the time (never needs maintenance)? 10% of the time?&lt;br&gt;
4) &lt;strong&gt;Efficiency&lt;/strong&gt; - &lt;em&gt;How quick is the response to a fetch (aka latency) and how much data can pass through the system (aka bandwidth)&lt;/em&gt;&lt;br&gt;
5) &lt;strong&gt;Serviceability&lt;/strong&gt; - &lt;em&gt;How easy is your product/service to operate and maintain&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;As I'm learning more about the components in Monolithic and Microservice design, I'll keep these principles in mind, as they typically govern why one design decision is made over another.&lt;/p&gt;

&lt;h3&gt;
  
  
  Monolith vs Microservice
&lt;/h3&gt;

&lt;p&gt;So, if I were trying to build my own software product, &lt;strong&gt;which one should I use&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/Uni2jYCihB3fG/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/Uni2jYCihB3fG/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As someone who has been learning about this for less than 2 days, I don't know the definitive answer. But from my research, there are advantages and disadvantages of both systems and typically it's wise to &lt;strong&gt;incorporate both architectures into your system to reap the benefits of both&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Monolith Pros and Cons
&lt;/h4&gt;

&lt;p&gt;Pros: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quick internal processing time&lt;/strong&gt;: Because everything lives in a single system/machine, things DO NOT need to communicate over the network/internet. This speeds up how quickly this system can perform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent Data&lt;/strong&gt;: Since everything is localized in one place, it's easier to make sure things are updated before returning data to the client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Less Complex&lt;/strong&gt;: You don't have additional parts to manage separate &amp;amp; distinct services. Designing it is less complex.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hardware limitation&lt;/strong&gt;: Imagine having to turn off a huge system that serves thousands or millions of people every time you had to update it. Also, following a monolith architecture, upgrading your system means replacing it with something bigger and better, which works only until a point (space limitations etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single Point Of Failure&lt;/strong&gt;: If one part of your monolith breaks, your entire monolith breaks. This is like having one giant script with a syntax error on line 43,287. Your entire script will come to a grinding halt.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Microservice Pros and Cons
&lt;/h4&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scales Well&lt;/strong&gt;: Because a Microservice isn't one giant thing, and is instead modular pieces that are connected via a network, when you want to add more capacity, you can add infrastructure anywhere in the world. Also, because your system is made up of independent parts, integrating a new service doesn't affect the availability of other services (nothing needs to be shut off... in a sense).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilient&lt;/strong&gt;: If one of your servers suffers a catastrophic failure, like a rat chewing on wires, or the intern accidentally flips the power switch, your entire system won't crash. One of my peers gave me a perfect example of how Netflix's recommendation system might go down, but you can still watch your movies (you probably wouldn't even notice).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Higher Latency&lt;/strong&gt;: You have separate systems, which may need to communicate via the network/internet. This will bog down the system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inconsistent Data&lt;/strong&gt;: Since your system is broken up or "distributed", getting the most up to date data is not a given. You'll need to account for this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More Complex&lt;/strong&gt;: There will be additional components because there's more to manage in a microservice architecture. You'll also need to connect them, which is another design hurdle.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;What has been covered in this blog post is very &lt;strong&gt;High Level Design&lt;/strong&gt;. Actually implementing these architectures (&lt;strong&gt;Low Level Design&lt;/strong&gt;) is incredibly complicated and I am currently learning how to further break down systems into functional components before I apply my coding skills to implement them. &lt;strong&gt;There is so much left for me to learn, and I'll be trying to cover them in some subsequent blog posts&lt;/strong&gt;. My hope is that it might help another developer with little to no knowledge of System Design feel less intimated by the subject and find some direction so they might also get prepped to take an interview that involves System Design.&lt;/p&gt;

&lt;p&gt;If at this point, you're still interested in learning more, &lt;strong&gt;I'll leave a couple resources at the bottom of this post&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;The next steps in preparing for my system design interview will be:&lt;/p&gt;

&lt;p&gt;1) Learning the specific components of a distributed system (Caches, SQL, noSQL, Load Balancers, Proxy Servers) and understand their uses and how they work.&lt;br&gt;
2) Learning about strategies for optimization such as Data Partitioning, Indexing, Consistent Hashing and &lt;strong&gt;other words that at this point sound like jargon to me&lt;/strong&gt;.&lt;br&gt;
3) Understanding the process of answering system design questions in an interview environment&lt;br&gt;
4) Breaking down a couple large well known system services such as Facebook Messenger, Instagram Posts, Netflix Streaming and &lt;strong&gt;trying to explain it in a way that even I can understand it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Resources For Learning System Design:&lt;br&gt;
&lt;a href="https://github.com/donnemartin/system-design-primer"&gt;System Design Primer&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/checkcheckzz/system-design-interview"&gt;System Design Interview&lt;/a&gt;&lt;br&gt;
&lt;a href="http://highscalability.com/start-here/"&gt;High Scalability (Website)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll see y'all in another blog post! &lt;br&gt;
Good luck with your own endeavors!&lt;/p&gt;

</description>
      <category>systems</category>
      <category>tech</category>
      <category>codenewbie</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Life As A Bootcamp Dev - Week 9: Big Interview and Focusing on Learning </title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Mon, 30 Mar 2020 05:59:59 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-9-big-interview-and-focusing-on-learning-4nb1</link>
      <guid>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-9-big-interview-and-focusing-on-learning-4nb1</guid>
      <description>&lt;h1&gt;
  
  
  The Week In Review
&lt;/h1&gt;

&lt;p&gt;I'm starting to feel like I can summarize the past couple weeks with a couple works.&lt;/p&gt;

&lt;p&gt;COVID. &lt;strong&gt;UGGGGG!&lt;/strong&gt; Learning. &lt;strong&gt;YAY!&lt;/strong&gt; Job Hunting. &lt;strong&gt;PAAAAIIIINNNNN&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That being said, I'm going to stop "grading" myself as I have have done in &lt;a href="https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-8-the-importance-of-resolve-3iaa"&gt;previous weeks&lt;/a&gt;, and I'll highlight the things that were particularly interesting, insightful, or motivating that might be of value to others who are struggling with the current job market.&lt;/p&gt;

&lt;p&gt;Although the job hunt has been slim pickings, many people (whom I didn't know) really showed up for me and took time to chat about how I could re-strategize to be successful in the long haul of what seems to be the beginnings of a rec___ion (we're not allowed to say the word, it might jinx everything).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's jump straight into things&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/GbIHIHhkgfpAs/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/GbIHIHhkgfpAs/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A Big Upcoming Interview and Making A Commitment
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: I have recently noticed that mentioning names of businesses and people has gotten me into trouble, so if it sounds like I'm being mysterious, it's not because I want to withhold information, it's because I learned through hard knocks.&lt;/p&gt;

&lt;p&gt;That being said, I took a coding challenge for an entry-level apprenticeship position at a well known company two weeks ago which I had previously thought I bombed. They told me this week that they will be pushing me to the next step, which is the in-person (AKA virtual) interview &lt;strong&gt;which will happen in 2 weeks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They provided me a PDF which basically said:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We will be testing you on 3 things: Coding, System Design, and your Behavior.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is what went through my brain when I read this:&lt;/p&gt;

&lt;p&gt;1) Coding: &lt;em&gt;Cool Cool! I've been doing algorithms, and I can really be sure to learn the advanced data structures like Trees, Graphs, Linked Lists. I can prepare for this!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;2) System Design: &lt;em&gt;... I'll probably start by Googling this?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;3) Behavioral: &lt;em&gt;I can make sure I know myself, am confident, and can relate my core values to the team and the company in a genuine and honest manner. I'm genuinely excited about the position, so this should be straightforward.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hopefully I'm making it clear that &lt;strong&gt;I knew nothing about System Design&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Well, at least not explicitly (more on that later). So I decided to learn a little bit about what System Design is, and try to understand its importance for my growth as a developer who loves building things that have meaningful impact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long Story Short&lt;/strong&gt;: System Design is really important, full of technical jargon, and my top priority for preparing for this upcoming interview. &lt;strong&gt;I am currently taking a course online, referencing some awesome resources, and leveraging connections in my network to help me prepare&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are some resources that were provided to me, in case you find yourself wanting to learn about System Design (these were provided to me by other developers, pay their kindness forward by sharing this with people who might benefit from it):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/donnemartin/system-design-primer"&gt;System Design Primer&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/checkcheckzz/system-design-interview"&gt;System Design Interview&lt;/a&gt;&lt;br&gt;
&lt;a href="http://highscalability.com/start-here/"&gt;High Scalability (Website)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I will be submitting a blog post in a couple days where I try to break down System Design into parts that even a goober like me can understand as part of my studying, so keep posted!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/yDYAHbqe5DfyM/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/yDYAHbqe5DfyM/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Focusing On Learning
&lt;/h2&gt;

&lt;p&gt;Learning new stuff is incredibly fun, especially when you can put it into practice. I was recently on a call with someone from business who was reaching out to developers out of the goodness of her heart to help them position themselves to pull some success out of the hardships of COVID. &lt;/p&gt;

&lt;p&gt;She gave me positive feedback on my profile, resume, and general presence, but she asked me a good question:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What are you learning?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I told her about the two projects I'm working on, the technologies I'm using, and the team I'm working with. She told me that &lt;strong&gt;building projects is awesome, but companies are also looking for people who are actively learning AS WELL AS building stuff&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Example: If you're working on the coolest algorithm that does something but nobody knows what, it's as if you're not doing it at all.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3R9LDINpbGX2o/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3R9LDINpbGX2o/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson&lt;/strong&gt;: Make sure companies can see what you're learning. Apply it in projects, write blogs about it, help others learn.&lt;/p&gt;

&lt;p&gt;My plan is to target relevant skills that a development company I'd want to work for, cares about, and use them in my projects and show them on my profile. So far this week I've taken courses in the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agile Development&lt;/li&gt;
&lt;li&gt;Software Architecture Foundations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have a list of other courses I plan on taking, but I would like to apply concepts I've learned in these courses to both of the projects that I am involved in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Next Couple Weeks
&lt;/h2&gt;

&lt;p&gt;Since I've got this big interview coming up, I'll be dialing back my project work and diving into learning System Design and doing algorithms. I'm exciting to buckle down, learn some skills, and let you know how it goes next week!&lt;/p&gt;

&lt;p&gt;Good luck with your own endeavors!&lt;br&gt;
Shawn&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Life As A Bootcamp Dev - Week 8: The Importance Of Resolve</title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Mon, 23 Mar 2020 04:33:36 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-8-the-importance-of-resolve-3iaa</link>
      <guid>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-8-the-importance-of-resolve-3iaa</guid>
      <description>&lt;h1&gt;
  
  
  The Past Week
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-7-long-term-4lj0"&gt;Last week&lt;/a&gt; has come and gone, and being in the midst of what looks like the beginning of a recession due to COVID, I've tried to keep my head down, stay positive, and keep myself busy. Networking is very hard, but being cooped up at home &lt;strong&gt;gave me an opportunity to really focus on building my tech skills&lt;/strong&gt;. My week is reflective of that:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sdhw4NEc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2t5kvqz2an3f6q8bmojv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sdhw4NEc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2t5kvqz2an3f6q8bmojv.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;To be frank, &lt;strong&gt;it's been rough&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People are losing their jobs (which sucks), and means there's more people looking for work&lt;/li&gt;
&lt;li&gt;People (recruiters especially) are really hard to get responses from&lt;/li&gt;
&lt;li&gt;Hiring freezes are becoming a thing of the present, and it's becoming harder to find opportunities&lt;/li&gt;
&lt;li&gt;Socializing with people in-person (something I love) is not an option, so much of my presence and interactions are through the internet&lt;/li&gt;
&lt;li&gt;We've had some scares within my immediate community with COVID, which is unnerving&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But there are some &lt;strong&gt;cup-half-fulls&lt;/strong&gt; too:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's very clear that I picked the right partner, we've spent literally 2 full weeks (24 hours) around each other (she's working from home) and it's been so much fun (asides from stress of the job hunt/COVID).&lt;/li&gt;
&lt;li&gt;I get entire days to work on projects, research new technologies, or do my job prep with literally no chance of distractions&lt;/li&gt;
&lt;li&gt;It's been a wake up call for our household on how we prepare for emergencies&lt;/li&gt;
&lt;li&gt;I learned about GarageBand (I now realize why iPads are used for parenting)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/B1rJf5dyhrhVS/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/B1rJf5dyhrhVS/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Game Plan From Last Week
&lt;/h2&gt;

&lt;p&gt;Here were my todos from last week, with the more interesting talking points in bold.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send out 10 applications for "Junior Software Developer" roles&lt;/li&gt;
&lt;li&gt;Message/Follow Up with at least 15 recruiters or software devs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continue working on Personae&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continue working on Play It Forward&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Do 10 algorithms&lt;/li&gt;
&lt;li&gt;Do 1 whiteboard practice problem&lt;/li&gt;
&lt;li&gt;Cover a couple chapters from Cracking The Coding Interview&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Draw something, or just do something NOT tech related&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Continue Working On Personae
&lt;/h2&gt;

&lt;p&gt;This week in Personae, my deliverable for the week was to implement backend authentication and do a slight refactor of the rails models to allow us to scale the application down the road. &lt;/p&gt;

&lt;p&gt;After doing my model refactor, I tested the functionality out in my seeds file using&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;console rails c&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
. Yay! Using my prior Flatiron experience, the plethora of blogs, and documentation, I also got my user authentication working as well! Marked off our team Trello board and moved onto my other stuff for the week!&lt;/p&gt;

&lt;h2&gt;
  
  
  Continue Working on Play It Forward
&lt;/h2&gt;

&lt;p&gt;This was a really fun and challenging week in Play It Forward. I was charging ahead and trying to really get our rough application views working so we could play with the GraphQL/Hasura backend that Jen had built. At this point, I'd been playing with Tailwind and React for long enough that I had developed a strategy to quickly whip out some views in a methodical way.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create the page as a component in my pages folder&lt;/li&gt;
&lt;li&gt;Divide the mockup for that view into reusable components, and create them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hRU0BMVn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7e09s901qs8jhvuvottx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hRU0BMVn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7e09s901qs8jhvuvottx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the page container component, add divs to structure the page to the appropriate layout
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="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="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Navbar&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../components/Navbar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;AuthWindow&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../components/AuthWindow&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="c1"&gt;// Layout&lt;/span&gt;
&lt;span class="c1"&gt;// Navbar, AuthWindow&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;AuthPage&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="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"auth-page w-screen h-screen"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="cm"&gt;/* Navbar */&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Navbar&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="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"auth-page-body flex h-full justify-center items-center"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="cm"&gt;/* AuthWindow */&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AuthWindow&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;&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="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;AuthPage&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Add one component into the page at a time, and test it to make sure it works. In this case I was building the AuthWindow component rendered above.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;LoginDialogueBox&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;./LoginDialogueBox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;SignUpDialogueBox&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;./SignUpDialogueBox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;// ClickableTabs (x2), LoginBody || SignUpBody&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;AuthWindow&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;loginTabbed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setLoginTabbed&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&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;isVolunteer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsVolunteer&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&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;tabHeaderClass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flex text-white justify-center items-center w-6/12 h-12 &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;selected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bg-blue-500&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;unSelected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bg-blue-600&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="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"auth-page-window flex flex-col h-80 w-9/12 bg-red-400"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="cm"&gt;/* Clickable Tabs */&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="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex"&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="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;tabHeaderClass&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;loginTabbed&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;selected&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;unSelected&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onClick&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;setLoginTabbed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          Login
        &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;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;tabHeaderClass&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;loginTabbed&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;unSelected&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;selected&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onClick&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;setLoginTabbed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          Signup
        &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;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="cm"&gt;/* LoginBody || SignUpBody */&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;loginTabbed&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;LoginDialogueBox&lt;/span&gt; &lt;span class="na"&gt;isVolunteer&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;isVolunteer&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;setIsVolunteer&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setIsVolunteer&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;:&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;SignUpDialogueBox&lt;/span&gt; &lt;span class="na"&gt;isVolunteer&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;isVolunteer&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;setIsVolunteer&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setIsVolunteer&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;/&amp;gt;&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;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;AuthWindow&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Then you get Jen's opinion how how it looks, and see if it needs tweaks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--81H4r_nJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x36k0ynhugexaybaw48g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--81H4r_nJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x36k0ynhugexaybaw48g.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building UIs this week was really fun. I learned a LOT about CSS from using Tailwind's utility-driven library, and I also began converting components into Typescript with Jen's help! Most of all, I became a lot more confident with managing using state and props as well. &lt;strong&gt;Currently all the views are built for mobile, so next week I will be making the UI responsive for desktop as well&lt;/strong&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  Draw Something (or just DON'T code)
&lt;/h2&gt;

&lt;p&gt;Because I've been drawing animations and images for Play It Forward. I decided I'd take a small break from coding during the week and practice my drawing. I particularly was interested in just getting my hands on a pencil (or apple pen?) and putting my brain on a page. &lt;/p&gt;

&lt;p&gt;In the &lt;strong&gt;spirit of feeling grateful for the good things we do have&lt;/strong&gt;, despite the challenges of the job hunt, My partner helped me come up with this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9tU_wG6W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3ons5n7u7c88vagr9bov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9tU_wG6W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3ons5n7u7c88vagr9bov.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is actually a title page for a secret thing I'm doing, but I'll tell you more about that later down the road ;).&lt;/p&gt;

&lt;p&gt;Good luck with your own endeavors!&lt;br&gt;
Shawn&lt;/p&gt;

</description>
      <category>career</category>
      <category>jobs</category>
      <category>life</category>
    </item>
    <item>
      <title>Life As A Bootcamp Dev - Week 7: Long Term</title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Mon, 16 Mar 2020 05:40:39 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-7-long-term-4lj0</link>
      <guid>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-7-long-term-4lj0</guid>
      <description>&lt;h1&gt;
  
  
  This Week
&lt;/h1&gt;

&lt;p&gt;The COVID crisis has affected King County (where I live) pretty significantly, and as a result, dampened my ability to network and interact with others. &lt;strong&gt;I consider myself lucky&lt;/strong&gt;, because I personally haven't experienced any hardship further than not being able to go out to restaurants, which is very minimal.&lt;/p&gt;

&lt;p&gt;Here's my illustration of this week:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MXYXn07j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hzlkubmas3mvjdmp7ujc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MXYXn07j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hzlkubmas3mvjdmp7ujc.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overall&lt;/strong&gt;: It was more or less was productive. Being forced to be in my house for multiple days did make me feel little bit crazy. Here's a quick synopsis of what I did. Items I will be talking about in further detail are &lt;strong&gt;bolded&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Presence:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Sent out 10 job applications&lt;/li&gt;
&lt;li&gt;Worked with my mentee at ADA on one of her new projects&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Networking:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Sent messages to over 20 recruiters to get information on positions and/or companies, and surprisingly heard back from a couple!&lt;/li&gt;
&lt;li&gt;Sent messages to around 10 software engineers working in positions I applied for, and some of them even got back to me!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;I started reading Cracking The Coding Interview once again to get a handle on data structures that weren't covered during my bootcamp&lt;/li&gt;
&lt;li&gt;I completed 9 algorithms (I'm starting to go into LinkedLists, and some of the algorithms were taking me over an hour to figure out!)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I really dived into Github, React, and Rails as I collaborated on Personae and Play It Forward with my two teams&lt;/strong&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Working On Personae - Setting Up A Rails Backend API
&lt;/h2&gt;

&lt;p&gt;Before I dive into what I did, a quick snapshot of what Personae is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Personae is a text annotation tool that allows organizations to collect feedback on projects and pull out meaningful data from them using machine learning&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I suggested our team use Trello to split up our deliverables. After our kickoff meeting on Monday, I ended up taking responsibility to build the server of our web application! &lt;/p&gt;

&lt;p&gt;My plan was to build a Rails API that could serve data to be consumed by the frontend.&lt;/p&gt;

&lt;p&gt;The general flow of how this happened was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used rails scaffolding command to generate a rails project setup with PostgreSQL database&lt;/li&gt;
&lt;li&gt;Double checked gems/libraries needed (bcrypt, cors etc.)&lt;/li&gt;
&lt;li&gt;Checked config files (ensuring CORS was enabled)&lt;/li&gt;
&lt;li&gt;Generated resources for Models.&lt;/li&gt;
&lt;li&gt;Setup relationships using Rails conventions in each model&lt;/li&gt;
&lt;li&gt;Build some very simple serializers to clear up some of the JSON that'd normally come back from my API endpoints&lt;/li&gt;
&lt;li&gt;Setup the routes for the API endpoints using the nested API::V1 convention&lt;/li&gt;
&lt;li&gt;Migrated everything to create the schema so any created instances of the models would live in the database&lt;/li&gt;
&lt;li&gt;Tested for expected behavior using the rails console&lt;/li&gt;
&lt;li&gt;Populated seedfile with some data to show the team before our Friday check-in&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hadn't done much Rails in a while, and it was a good exercise to get back into the flow with the backend. I coordinated with Christian (the frontend person) to make sure the JSON I was planning on sending was structured properly for the client to receive!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/aYD4HCKqKVVMA/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/aYD4HCKqKVVMA/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When we connected at the end of the week, I presented the backend data as JSON, Christian presented the frontend view he had build, and the PM took notes and updated us on the work he was doing meeting with potential clients. Very cool stuff! We'll be connecting next week to set up the next sprint!&lt;/p&gt;

&lt;h2&gt;
  
  
  Working on Play It Forward
&lt;/h2&gt;

&lt;p&gt;Play It Forward has been a blast to work on. Just as a recap on its purpose:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play It Forward is a web application where nonprofits and volunteers can connect with one another through events, and volunteers are incentivized to engage through added elements of a game&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This week I was working on some rough front end views just to understand how we will be working with a new CSS library called Tailwind. I wanted to wrap up 2 basic views:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nonprofits List Page&lt;/li&gt;
&lt;li&gt;About Page&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Jen (my collaborator on this project) spent the week trying to refactor one of my components into Typescript and also integrate the backend she built using GraphQL.&lt;/p&gt;

&lt;p&gt;For some reason I can't seem to attach images, so I'll share those at a later time!&lt;/p&gt;

&lt;p&gt;For next week, Jen and I will be swapping roles, and I will be learning GraphQL and Typescript, and she will be using my views as a reference to build our login/signup page using Tailwind. I'm excited to see how she does as well as learning a new web service methodology (as opposed to REST).&lt;/p&gt;

&lt;h1&gt;
  
  
  Preparing for The Long Haul
&lt;/h1&gt;

&lt;p&gt;I'm beginning to think that this job hunt will be especially difficult considering some factors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recruiters being less responsive considering COVID &lt;/li&gt;
&lt;li&gt;Reduced hiring capabilities due to the state of the economy&lt;/li&gt;
&lt;li&gt;Less opportunities to meet with people to work on things&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Considering that previous grads averaged a 3 month job acquisition in a normal economy, I'm &lt;strong&gt;mentally preparing&lt;/strong&gt; myself to be ghosted more frequently for the next couple months!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/gym9elMTpp4TS/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/gym9elMTpp4TS/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Simplified Game Plan For The Long Haul
&lt;/h3&gt;

&lt;p&gt;Seeing as networking will be pretty much done remotely, and my online presence is pretty much based on my ability to network at this point, &lt;strong&gt;Here's my short laundry list of things to do for next week&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send out 10 applications for "Junior Software Developer" roles&lt;/li&gt;
&lt;li&gt;Message/Follow Up with at least 15 recruiters or software devs&lt;/li&gt;
&lt;li&gt;Continue working on Personae&lt;/li&gt;
&lt;li&gt;Continue working on Play It Forward&lt;/li&gt;
&lt;li&gt;Do 10 algorithms&lt;/li&gt;
&lt;li&gt;Do 1 whiteboard practice problem&lt;/li&gt;
&lt;li&gt;Cover a couple chapters from Cracking The Coding Interview&lt;/li&gt;
&lt;li&gt;Draw something, or just do something NOT tech related.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This will be tough for sure, but I was once told that &lt;em&gt;people who work hard tend to be luckier than those who don't&lt;/em&gt;, so I guess I'll just do my best to be lucky :).&lt;/p&gt;

&lt;p&gt;Good luck with your own endeavors,&lt;br&gt;
Shawn&lt;/p&gt;

</description>
      <category>career</category>
      <category>job</category>
      <category>productivity</category>
      <category>life</category>
    </item>
    <item>
      <title>Life As A Bootcamp Dev - Week 6: Quarantines, Routines, and the Job Scene</title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Mon, 09 Mar 2020 03:39:37 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-6-quarantines-routines-and-the-job-scene-25in</link>
      <guid>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-week-6-quarantines-routines-and-the-job-scene-25in</guid>
      <description>&lt;h1&gt;
  
  
  The Past Week
&lt;/h1&gt;

&lt;p&gt;Since I'm very much still in the job hunt from &lt;a href="https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-part-5-interviews-offers-and-the-power-of-networking-21pg"&gt;last week&lt;/a&gt; (going on about one month and a half), I'm still trying to keep myself accountable on all fronts. Here's how I felt I did.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XlW-kh7z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q0uai8k6jig1mdnrda4c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XlW-kh7z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q0uai8k6jig1mdnrda4c.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;As some (or all) might be aware, the corona virus (or COVID-19) situation has had a noticeable effect in Washington State and as a result I took precautions and did a self-quarantine. As a result, I haven't had the chance to go out and meet with people and attend meetups. I added some little COVID monsters as an indicator that &lt;strong&gt;I wasn't being lazy&lt;/strong&gt;. That being said, this was a relatively productive week, and here's a summary (talking points will bolded):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;I officially passed on a job opportunity from last week, and connected one of my colleagues with the company&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;I submitted 10 job applications.&lt;/li&gt;
&lt;li&gt;I reached out to 15 recruiters/developers on LinkedIn.&lt;/li&gt;
&lt;li&gt;I completed 15 algorithms and did 1 whiteboard practice problem).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I began officially mentoring for ADA&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I officially began work on Personae&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I built some views for Play It Forward with Jen&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;I had my resume reviewed and polished it further.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Passing On An Offer
&lt;/h2&gt;

&lt;p&gt;From last week, I interviewed with a really cool startup for a position as a developer advocate. Looking back, I was just so excited that ANY company wanted to hire me and I jumped into the interview with both feet and tried to bring my authentic overly-enthusiastic self to the table.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/11sBLVxNs7v6WA/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/11sBLVxNs7v6WA/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For my interview, they gave me about 2 hours to use their platform's API to build something. 2 hours is a long time, and &lt;strong&gt;I barely got myself set up with an access key&lt;/strong&gt; within that time. I had barely anything to show when the time was up.&lt;/p&gt;

&lt;p&gt;I still remember the moment when the CEO walked into the room and asked "&lt;em&gt;So how did it go?&lt;/em&gt;", and I responded jokingly with something along the lines of "&lt;em&gt;How did what go?&lt;/em&gt;". I was initially embarrassed but started feeling way more comfortable when we started talking because I could be totally honest about how I felt about the interview, the position, where I was as a developer, and my future.&lt;/p&gt;

&lt;p&gt;Here are samples of things I remember saying during my interview (just add rambling and awkward pauses and it'll be like you were right there):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"&lt;em&gt;I don't think I have the experience that you need to fill this position, this looks like you will need someone who understands the underlying workings of web technology as it applies to developers. I have a good practical understanding from my bootcamp, but it would take time for me to learn the underlying things&lt;/em&gt;"&lt;/li&gt;
&lt;li&gt;"&lt;em&gt;Have you thought about reaching out to developers through Hackathons? Having a hackathon sponsored by you folks where you encourage the use of your API in a project would be a cool avenue to promote your product&lt;/em&gt;"&lt;/li&gt;
&lt;li&gt;"&lt;em&gt;This is my first interview.&lt;/em&gt;"&lt;/li&gt;
&lt;li&gt;"&lt;em&gt;This WeWork space is so fancy!&lt;/em&gt;"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So overall, being honest didn't help me say the &lt;strong&gt;right&lt;/strong&gt; things, but it helped me hold a genuine conversation as if I was working with them, which I was told later, was something they appreciated.&lt;/p&gt;

&lt;p&gt;An important takeaway for me was when my interviewer asked me &lt;strong&gt;this question&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;"&lt;strong&gt;What ONE thing&lt;/strong&gt; do you want to do?"&lt;/p&gt;

&lt;p&gt;Which, of course, in my brain I heard myself say:&lt;/p&gt;

&lt;p&gt;"&lt;em&gt;Oh man, say whatever you think she wants to hear, SAY YOU WANT TO WORK WITH APIS FOREVER&lt;/em&gt;"&lt;/p&gt;

&lt;p&gt;She could tell I was having an internal struggle trying to not BS but also not 'throw away' the interview. She put a nugget of knowledge in my head that really helped me understand how I could be better with my job hunting.&lt;/p&gt;

&lt;p&gt;She told me that &lt;strong&gt;many members of her engineering team were not chosen originally because they were super-duper software engineers or data scientists&lt;/strong&gt; (in fact they weren't even remotely involved with web technologies). She picked the people on her team because they were &lt;strong&gt;magical&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To her, &lt;strong&gt;magical people love doing one thing, dive deep into it, and get really, really, REALLY good at that one thing&lt;/strong&gt;. The rationale is that if &lt;strong&gt;you have the discipline and interest to follow-through with one thing&lt;/strong&gt; (whether its frontend, backend, devOps, drawing, mechanical engineering, writing) you have the ability to be magical about anything you care about.&lt;/p&gt;

&lt;p&gt;Her advice to me? &lt;strong&gt;Pick ONE thing you really enjoy, practice it, don't give in, and integrate that thing into whatever you do, wherever you work&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/e2nYWcTk0s8TK/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/e2nYWcTk0s8TK/giphy.gif" alt="alt"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The conversation with her made me realize that &lt;strong&gt;my fear of not being able to apply to all the jobs because of weird qualifications was irrational, and made me lose touch with why I decided to struggle with a new career in the first place&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I loved making experiences and I wanted to integrate creativity and technical knowhow to grab everyone's attention and reshape the way they live their lives for the better. In order to do that, I'd need to build my skills (clearly I need more practice with APIs)!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/Vzk5PFo9iH5AEustmv/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/Vzk5PFo9iH5AEustmv/giphy.gif" alt="alt"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I learned some awesome skills in web development, and instead of trying to  justify that I knew all the buzzwords on all the entry-level job postings, I'd better start working really hard to learn and build stuff one stack that I enjoyed. React is easily my favorite, so from here on out I'll be focusing on React (with some dabbling in React Native for fun) with some Rails just to keep my backend skills up to par.&lt;/p&gt;

&lt;p&gt;That being said, I realized that the position wasn't totally aligned with the skills I was trying to build, and I respectfully declined, but also connected them with another candidate who I know would be a rockstar for them!&lt;/p&gt;

&lt;h2&gt;
  
  
  Mentoring With ADA
&lt;/h2&gt;

&lt;p&gt;I really wanted to give back to the dev community, especially to those who found it difficult like I did to pick up dev skills. I decided it'd be a good idea to be a mentor for others, and after finding the &lt;a href="https://adadevelopersacademy.org/"&gt;ADA school&lt;/a&gt;, I wanted to donate my time! I was set up with a mentee and had my first (and second) 1-on-1 online session with them. This was really awesome for multiple reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The tech stacks students learn at ADA are identical to those I learned at Flatiron (Ruby, Rails, React, Javascript)&lt;/li&gt;
&lt;li&gt;They are project based (very intense!), so I got to work with this person on projects, which is more challenging than helping with concepts in my opinion&lt;/li&gt;
&lt;li&gt;My mentee is not from a programming background, is super motivated, and can definitely make a huge impact in her own community when she enters the tech space for real&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are currently working on a Ruby project to set up some has-many relationships. It is a good refresher for me to help someone else, and it is something I look forward to every week!&lt;/p&gt;

&lt;h2&gt;
  
  
  Working on Play It Forward
&lt;/h2&gt;

&lt;p&gt;Working on a React project feels good. Jen and I did some extensive brainstorming and planning, so this past week I did some coding! I had access to the mockup, which let me break down each page into its components. When I was coding up each page, I had a couple of priorities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Build the structure, do not flush out every detail.&lt;/strong&gt; I want to get Jen's opinion during our check-in meetings and standups to keep her in the loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add helpful comments that help break the page up for readability&lt;/strong&gt;. I anticipate that other developers may jump on board this project, and keeping it easy to read is really important.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add personal flair&lt;/strong&gt;. Even though I'm building some structure, since I am responsible for the UI, I wanted to take some opportunities to inject my own personality into the project to keep it fun! Jen actually liked some of the rough gifs and images I made.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build for mobile first, then come back and make it responsive for desktop&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example: The Landing Page
&lt;/h3&gt;

&lt;p&gt;I built two views this week, the landing page and an events list page. Let's walk through how I built the landing page using React and Tailwind. &lt;/p&gt;

&lt;p&gt;Looking at the mockup I drew using Procreate, this is what I had to follow:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6ypF51KI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1fg8t92sxqdf6thuuxns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6ypF51KI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1fg8t92sxqdf6thuuxns.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recognized that in the &lt;strong&gt;Landing Page&lt;/strong&gt; we had three main components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Header (needs a header component)&lt;/li&gt;
&lt;li&gt;Text (add h1 or other html text)&lt;/li&gt;
&lt;li&gt;Event List (needs an event card component, and event container)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ended up deciding to replace the text with a Logo gif (that I made in Procreate), so the structure looked like&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Header&lt;/li&gt;
&lt;li&gt;Gif Logo&lt;/li&gt;
&lt;li&gt;Event List&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I wrote the code in react, I tried to make this apparent.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// React Imports&lt;/span&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="c1"&gt;// Custom Imports&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Navbar&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;../components/Navbar&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;EventCardCollection&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;../components/EventCardCollection&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;trophyGif&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../media/animations/trophy-rotate.gif&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="c1"&gt;// This functional component renders the landing page&lt;/span&gt;
&lt;span class="c1"&gt;// Layout (from top --&amp;gt; bottom):&lt;/span&gt;
&lt;span class="c1"&gt;// Navbar, Logo, Upcoming Events&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;LandingPage&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="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex flex-col w-screen"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="cm"&gt;/* Navbar */&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Navbar&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="cm"&gt;/* Logo */&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="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center justify-center h-64"&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;img&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"h-64"&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;trophyGif&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&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="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="cm"&gt;/* Upcoming Events */&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="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex flex-col items-center justify-center w-screen flex-grow"&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="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"font-bold text-xl pb-1"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;UPCOMING EVENTS&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;EventCardCollection&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;&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="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;LandingPage&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;The class names are coming from &lt;a href="https://tailwindcss.com/"&gt;Tailwind&lt;/a&gt;&lt;/strong&gt;. Styling with it was really fun, and it actually helped me understand what CSS actually does (and learned CSS in the process). I prefer this over prebuilt components that naturally hide CSS from you.&lt;/p&gt;

&lt;p&gt;The page, after some basic polish, looked like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7G_jRHUR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/p544zjbd829dlukjae4y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7G_jRHUR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/p544zjbd829dlukjae4y.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You might notice that the color scheme is not the same as the mockup, and that's because I'm building it for a mobile view, but the mockups are for desktop. This will be apparent for every page, but Tailwind provides some nice utilities to dynamically change layouts based on screen size, which I will be visiting later down the road.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Jen is working on the backend data, so I created some mock data in the same format as Jen will be providing from the backend which I used to populate the event cards.&lt;/p&gt;

&lt;p&gt;I followed the same design process for the event list page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jQIpPG9T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/81er1etyk6b5ukkp0uea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jQIpPG9T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/81er1etyk6b5ukkp0uea.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll be checking in with Jen on Monday to walk her through what I've done, and see where she's at. Very exciting React stuff!&lt;/p&gt;

&lt;h2&gt;
  
  
  Working on Personae
&lt;/h2&gt;

&lt;p&gt;Kicking off our React Project Personae has been awesome. They're both very dilligent, involved, and just pleasant people. This past week we were getting the project setup, and also committing to 2 meetings a week. Mondays we will have standups (for deliverable setting), and Fridays we will have recap meetings (for reviews). &lt;/p&gt;

&lt;p&gt;In the beginning of the week we did our standup zoom meeting and we assigned some basic deliverables to each of us.&lt;br&gt;
My deliverables for the week were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a simple react project with tailwind setup on it&lt;/li&gt;
&lt;li&gt;Create a rails backend api hooked up with postgresql&lt;/li&gt;
&lt;li&gt;Draw up a simple model visualization for the backend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first two bullets were really easy. I had a project (Play It Forward) that was already set up with react and tailwind. I pretty much used that project as a boilerplate and set it up on Github. The rails backend was also just a simple command line action and it was also created.&lt;/p&gt;

&lt;p&gt;For the model visualization, I had the page mockups that the PM provided in an awesome slide deck. Looking through those, I categorized what kind of data we'd need for a backend and drew it up in Procreate (drawing software).&lt;/p&gt;

&lt;p&gt;Our team met at the end of the week to have our recap meeting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The PM shared with us clients he met to discuss use cases.&lt;/li&gt;
&lt;li&gt;Christian provided a frontend view component list so we can jump straight into the UI and get coding.&lt;/li&gt;
&lt;li&gt;I provided my deliverables&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Right now everything is going smoothly, we will be meeting again on Monday to set new deliverables for the upcoming week!&lt;/p&gt;

&lt;h1&gt;
  
  
  Next Week
&lt;/h1&gt;

&lt;p&gt;This week felt productive but I think I spent a lot of time working on projects and doing coding-related activities, but I will need to keep on networking and sending applications out. It does feel nice to have some project work going on, because I can definitely talk about it in the upcoming interviews-to-be-had. Very excited for what the next week will bring!&lt;/p&gt;

&lt;p&gt;Thanks for reading! Good luck with your own endeavors!&lt;br&gt;
Shawn&lt;/p&gt;

</description>
      <category>career</category>
      <category>jobs</category>
      <category>life</category>
    </item>
    <item>
      <title>Life as A Bootcamp Dev - Week 5: Interviews, Offers, and the Power Of Networking</title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Mon, 02 Mar 2020 08:26:21 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-part-5-interviews-offers-and-the-power-of-networking-21pg</link>
      <guid>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-part-5-interviews-offers-and-the-power-of-networking-21pg</guid>
      <description>&lt;h1&gt;
  
  
  This Week In Review
&lt;/h1&gt;

&lt;p&gt;This week was pretty exciting overall! I had an interview for a cool startup which was a humbling and eye-opening experience. I completed nearly all of the items on my todo-list from last week, and even learned some information that might really help me strategize about how I might job-search in the future. Here's my rating for this week:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BnBCZsVF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hnng28jwm1mdr9ufjic5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BnBCZsVF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hnng28jwm1mdr9ufjic5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Stuff I Said I'd Get Done
&lt;/h2&gt;

&lt;p&gt;From the &lt;a href="https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-part-4-another-week-another-job-hunt-pc4"&gt;previous week&lt;/a&gt; I had a list of things that I needed to get done before I 'had any fun'. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/7tUFxA4PSWwOQ/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/7tUFxA4PSWwOQ/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NOTE: I will be marking in &lt;strong&gt;bold&lt;/strong&gt; the items I will be elaborating on. If you are curious about any of the items I'm don't talk about during the blog, feel free to reach out to me on LinkedIn or here.&lt;/p&gt;

&lt;h4&gt;
  
  
  Presence - &lt;em&gt;how people see me&lt;/em&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Send 15 applications out&lt;/li&gt;
&lt;li&gt;Get feedback from my portfolio website&lt;/li&gt;
&lt;li&gt;Update my portfolio website&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Learning - &lt;em&gt;developing base competencies in programming and development&lt;/em&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Update Flexable Native initial views&lt;/strong&gt; (&lt;strong&gt;incomplete&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Solve 15 algorithms on Leetcode&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Try to whiteboard 3 problems&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Work on Play It Forward&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Work on Personae&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Read Chapters 7-11 on Cracking The Coding Interview&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Networking - &lt;em&gt;forming awesome relationships with awesome people&lt;/em&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Email follow-ups&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Software Engineering Interview Meetup&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Other Meetups (&lt;strong&gt;incomplete&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;'Coffee' Meetings&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Additional Things That Happened
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;I became a mentor for the ADA bootcamp**&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I had an interview with a company and am being considered for a position&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Incomplete: Updating Flexable Native
&lt;/h3&gt;

&lt;p&gt;I mostly wanted to talk about this because you too, may need to make an executive decision to drop some of your expectations for how much you can get done! &lt;strong&gt;I made the decision to postpone Flexable Native&lt;/strong&gt; and here's why:&lt;/p&gt;

&lt;p&gt;During weekdays, I was: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Going to meetups&lt;/li&gt;
&lt;li&gt;Meeting with people in-person&lt;/li&gt;
&lt;li&gt;Reaching out to people via LinkedIn&lt;/li&gt;
&lt;li&gt;Sending Cold Applications&lt;/li&gt;
&lt;li&gt;Committed working on 2 projects with actual people&lt;/li&gt;
&lt;li&gt;Committed to being a volunteer mentor at ADA&lt;/li&gt;
&lt;li&gt;Doing algorithms&lt;/li&gt;
&lt;li&gt;Trying to practice whiteboarding&lt;/li&gt;
&lt;li&gt;Trying to dive deeper into tech stacks that I know&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;During the weekends, I was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trying to spend quality time with my partner&lt;/li&gt;
&lt;li&gt;Serving as a life coach at a non-profit&lt;/li&gt;
&lt;li&gt;Apparently fixing my parents' fence (as a TOTAL side note, if you have to choose between a privacy fence and not, don't pick a privacy fence)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Asides from making myself pretty busy, &lt;strong&gt;the biggest factor that made me drop Flexable Native was that I was working on two other projects that I absolutely love and furthermore, that I was a member of a team&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/l3q2Wl7Wpz09Z5hfi/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/l3q2Wl7Wpz09Z5hfi/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To me, collaborative projects are not only great opportunities for developing your tech skills (in the same way personal projects do), but they build &lt;strong&gt;incredible&lt;/strong&gt; relationships and demonstrate a highly-valued skill companies look for: Working well in teams.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try To Whiteboard 3 Problems
&lt;/h3&gt;

&lt;p&gt;A lot of my weekdays have been spent at Flatiron, and I do the job hunting shenanigans in the company of at least 4 other graduates. We decided to each do a whiteboarding problem where one of us becomes the interviewee, and the rest of us become the interviewer. Having this dynamic makes it more interactive for both parties (as opposed to awkwardly watching someone mumble and struggle on their own). I've learned a lot about whiteboarding process (it almost feels like a game). Here's the breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First &lt;strong&gt;Understand&lt;/strong&gt; the problem. Ask clarifying questions and eventually re-state the problem back to the interviewer so you are BOTH on the same page&lt;/li&gt;
&lt;li&gt;Then, &lt;strong&gt;Diagram&lt;/strong&gt; the problem. Drawing some sort of pictorial view of how you plan to handle the data/structures is a really strong way of demonstrating that you put a lot of thought into solutions rather than immediately trying to code a naive solution&lt;/li&gt;
&lt;li&gt;Then &lt;strong&gt;Pseudocode&lt;/strong&gt; your solution. Writing your solution in plain english will once again demonstrate that you know (from a top level) how to solve the problem, and will also help your interviewer help you solve the problem (since they know ever step you will be coding out before you write any code down).&lt;/li&gt;
&lt;li&gt;Then &lt;strong&gt;Code&lt;/strong&gt; your solution. Obviously practice really helps here, but there are also small things that can help you not get overwhelmed like partitioning the whiteboard space into 3 columns to save space, or making a truth table to hold values so you can 'debug' your own code, talking about what data structures you'd like to use up front, how you'd optimize your code, or what the Big O Notation of your code is.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Work On Play It Forward
&lt;/h3&gt;

&lt;p&gt;Jennifer Williams (one of my peers from Flatiron) and I had sat down and began flushing out some actual deliverables on our old Hackathon Project reboot. &lt;/p&gt;

&lt;p&gt;This was a learning opportunity to learn some new web technologies together, so part of our planning involved choosing what technologies we'd use. Here's the list we made:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8qB7lM3k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2aad60orj6xs7bely56b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8qB7lM3k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2aad60orj6xs7bely56b.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We wanted to try to keep our work process accountable, so we jumped on &lt;a href="https://github.com/features/project-management/"&gt;Github Projects&lt;/a&gt; and started a kanban board for our backend and frontend. Here's a snip of our frontend git repo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Brb0vOE---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1c9j7fy9i920yz23k9m2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Brb0vOE---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1c9j7fy9i920yz23k9m2.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We normally start our web applications with some mockups, so I decided to use Procreate on my iPad to draw our mockups. Here's a couple photos of some of the mockups.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WVBqpgWZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/erp3r9z0csv99tozz6h0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WVBqpgWZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/erp3r9z0csv99tozz6h0.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kziun2WC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5pg9kv5rpmy6r4y8rmbm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kziun2WC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5pg9kv5rpmy6r4y8rmbm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That being said, I am working on the Frontend portion of this project, and Jen is working on the backend part. I'm excited to keep practicing my React skills and dive a little more into styling using a new framework called &lt;a href="https://tailwindcss.com/"&gt;Tailwind CSS&lt;/a&gt;. Jen helped me figure out how to configure it with Create React App and now all that's left for me to do is build each view with its respective components. This upcoming week, I'll be diving into React and building actual (hopefully) reusable components to build the UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Work On Personae
&lt;/h3&gt;

&lt;p&gt;Had an initial meeting with the team for Personae and we all agreed on a schedule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monday we will have a standup where Christian and I will talk about what features we want to implement that week, and our general plan for doing so&lt;/li&gt;
&lt;li&gt;Friday we will touch base with the PM to discuss what worked, lessons learned, and get his insight as he is the visionary for this project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We are meeting on Tuesday to also get the project off the ground. Christian and I won't necessarily be working on separate pieces, we both may end up working on backend and frontend portions as needed.&lt;/p&gt;

&lt;p&gt;Very excited to see where this goes!&lt;/p&gt;

&lt;h3&gt;
  
  
  Sending Email Follow Ups
&lt;/h3&gt;

&lt;p&gt;I learned something very cool this week. &lt;strong&gt;People really like it when you care about them&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3o7qDMolZq4qTvKe6Q/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3o7qDMolZq4qTvKe6Q/giphy.gif" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In all seriousness, I wanted to see how a lot of post-grads were doing, so I just sent them an email/message asking how they were doing. So many of them were so receptive and even offered to meet up and chat about how my job hunt was doing. From that, I not only &lt;strong&gt;got some more people to potentially come to a board game night I'm planning on hosting&lt;/strong&gt; but they also were nice enough to offer to refer me to people they knew (or even recruiters).&lt;/p&gt;

&lt;p&gt;Be nice to people, and be genuine! Kindness is a powerful networking tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software Engineering Meetup
&lt;/h3&gt;

&lt;p&gt;I attended a meetup this week that definitely changed how I looked at my position as a job seeker. It was hosted by a company called &lt;a href=""&gt;Outco&lt;/a&gt; and they had an initial portion dedicated to advanced algorithm techniques such as Tabulation and Memoization, but the later half of the meetup was very relevant to me because it was about &lt;strong&gt;how to do reverse-recruiting&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If I had to summarize what reverse recruiting is, it is &lt;strong&gt;your ability to humanize the people you network with, identify the problem they're trying to solve, and engage with them in a way that helps them recognize that you are solving their problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When I first started reaching out to recruiters, I basically said this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;'Hey, I hear your company is hiring for some job. I want that job. Here's 6 reasons you should give me that job. I am... I have done... I'd love to talk more about why that job should be mine.'&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;However, this comes off as selfish, and it totally ignores the recruiter and their problem. You can notice that I mention &lt;em&gt;I... I... I'm...I&lt;/em&gt; over and over again. Here's the steps (from what I gathered) to &lt;em&gt;reverse recruit&lt;/em&gt; when reaching out to engineers, recruiters, and possibly CEOs.&lt;/p&gt;

&lt;p&gt;1) Recognize THEIR problem (Recruiters are PAID to find you, Engineers are paid bonuses for referrals etc)&lt;br&gt;
2) Share your solution to their problem using WHY, HOW, WHAT&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why you're interested in helping them solve their problem (make it mutual)&lt;/li&gt;
&lt;li&gt;How you found them&lt;/li&gt;
&lt;li&gt;What experience and skills you bring to them table
3) What potential do you have (Why should someone &lt;strong&gt;invest&lt;/strong&gt; $100,000 in you)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although I haven't heard any responses from recruiters, I will definitely share responses from recruiters after using this strategy in future blogs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Had an Interview For A Company, And Got An 'Offer'
&lt;/h3&gt;

&lt;p&gt;I was reached out to by a startup that said they liked my resume and my portfolio website and wanted to have a phone screen a couple days ago. I'll break down the order of events:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Got an invitation by the startup to have a phone screen for a position&lt;/li&gt;
&lt;li&gt;Accepted the invitation, and began reading up on the company and the position (I read blogs, CTO/CEO bios)&lt;/li&gt;
&lt;li&gt;Wrote up reasons why I liked the company, and how they were aligned with my development goals, and also wrote up a list of risks (for both the company and myself)&lt;/li&gt;
&lt;li&gt;Did the phone screen, which was pleasant. They asked me about my strategy with learning new technologies, why I got into tech, and my experience working with others. I saw opportunities to be honest about my excite for the opportunity, while also being transparent about the fact that this was a high-performing startup which I might lack the experience to contribute to. I emphasized my willingness to learn, which resonated with the person.&lt;/li&gt;
&lt;li&gt;They decided to move me into an on-site interview. I met their Head of Product via zoom in the morning, went into their WeWork space and was given a task of using their API to build something simple. I failed, I very much struggled with the API documentation and had to call in the CTO multiple times to help me just get a basic setup started.&lt;/li&gt;
&lt;li&gt;I met the CEO after and spoke about the experience. She was really honest about the nature of the companies work, which I read as "I don't think you'll be a good fit at the moment". I practically told her "I don't think I'm the person you're looking for". We still had a good conversation and she left to discuss with her team. The CTO came in and asked me if I'd like to work with one of their product engineers for two weeks to see if I'd be a good fit. I told them I'd think about it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;I honestly don't know if I handled this situation in the best way possible&lt;/strong&gt;. I was absolutely nervous, I felt really dumb, I babbled and spoke in circles. I caught myself thinking too much about what my interviewers must be thinking about me. &lt;/p&gt;

&lt;p&gt;This startup seems like an awesome opportunity to dive deep into technologies and also use my creativity to build wacky apps using their API. They are also in a market that's growing super rapidly, so being a part of that wave seems great too. On the flip side, I just don't know if I have to developer chops to perform at the level they need, and I have a HUGE fear of disappointing others.&lt;/p&gt;

&lt;p&gt;Well, I'll hear more about this next week, so in the mean time I'll just be chugging along with more job hunting stuff!&lt;/p&gt;

&lt;p&gt;Good Luck With Your Own Endeavors,&lt;br&gt;
Shawn&lt;/p&gt;

</description>
      <category>career</category>
      <category>jobs</category>
      <category>life</category>
    </item>
    <item>
      <title>Life As A Bootcamp Dev - Week 4: Another Week, Another Job Hunt</title>
      <dc:creator>shawnhuangfernandes</dc:creator>
      <pubDate>Mon, 24 Feb 2020 08:54:00 +0000</pubDate>
      <link>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-part-4-another-week-another-job-hunt-pc4</link>
      <guid>https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-part-4-another-week-another-job-hunt-pc4</guid>
      <description>&lt;h1&gt;
  
  
  This Week In Review
&lt;/h1&gt;

&lt;p&gt;This week went a lot smoother than &lt;a href="https://dev.to/shawnhuangfernandes/life-as-a-bootcamp-dev-part-3-job-applications-actions-and-evaluations-508i"&gt;last week&lt;/a&gt;, considering that I came in with a plan of attack for tackling the junior dev job hunt! Here's how I thought it went overall:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xfMr8ep7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vrsptyje8tn05i6ft98i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xfMr8ep7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vrsptyje8tn05i6ft98i.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Presence - 8/10
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;AKA how I worked on how I appear to job recruiters, companies etc&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Did
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Sent out 10 job applications (previous week deliverable)&lt;/li&gt;
&lt;li&gt;Finalized my Gatsby portfolio website (previous week deliverable)&lt;/li&gt;
&lt;li&gt;Reach out to 5 recruiters and 5 developers (previous week deliverable)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How It Went
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Sending out 10 job applications (cold applications)
&lt;/h4&gt;

&lt;p&gt;It took some time to compare my desired job criteria against the actual job postings on LinkedIn, GlassDoor, Dice and other job boards. This included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reading the desired qualifications, and re-arranging my resume as necessary&lt;/li&gt;
&lt;li&gt;Writing a unique, genuine cover letter as a supplement to the application&lt;/li&gt;
&lt;li&gt;Contacting any bootcamp grads or engineers who may already work for that company for insight&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;I have been told that cold applications are typically the most unlikely way to get an interview as a bootcamp junior dev&lt;/strong&gt;. That being said, some people get discouraged or don't understand the point of cold applications. I personally feel like cold applying is a great way of understanding more about the type of position you want to work in. I don't have expectations to hear back from employers, but I will put my best effort when sending my application materials over!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Things I Could Do Better&lt;/strong&gt;: Send more applications out, and also do more sleuthing on finding actual people to talk to rather relying on an ATS algorithm to have mercy on me.&lt;/p&gt;

&lt;h4&gt;
  
  
  Finalizing my Gatsby Portfolio Website
&lt;/h4&gt;

&lt;p&gt;It is finally up! You can find it &lt;a href="//shawnhuangfernandes.netlify.com"&gt;here&lt;/a&gt;! It feels good to be able to actually have a website that is a central place to look at my projects and also see information about me. I haven't quite figured out in what circumstances I should share my portfolio project, but I am excited to fill in the fields for job applications that ask for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Things I Could Do Better&lt;/strong&gt;: Having the Gatsby portfolio site is nice, but I definitely need to revisit it to make it more responsive. I'll get feedback on it and go from there. &lt;/p&gt;

&lt;h4&gt;
  
  
  Reaching Out To 5 Recruiters and 5 Developers
&lt;/h4&gt;

&lt;p&gt;I wanted to reach out to recruiters to just let them know that I was interested in both the company as well as particular positions their companies were hiring for. I used LinkedIn to find all the recruiters by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Seeing the recruiter on the job posting and contacting them that way&lt;/li&gt;
&lt;li&gt;Searching the company on LinkedIn and finding the people/recruiters who worked for that company and messaging them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Of the 5 recruiters I messaged, 0 have responded&lt;/strong&gt;. This is alright because I came in with the understanding that this is normal. Recruiters' accounts get blown up on LinkedIn, but I wanted to do my due diligence. &lt;/p&gt;

&lt;p&gt;Reaching out to developers was particularly successful. I looked for bootcamp developers who went to Flatiron, particularly other earlier graduates who snagged jobs. This was much easier than writing a message to a recruiter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I was very much excited to see how their new jobs/lives were&lt;/li&gt;
&lt;li&gt;They would give me really honest feedback on their work&lt;/li&gt;
&lt;li&gt;Most of them were situated in Seattle, and I could set up coffee meetings&lt;/li&gt;
&lt;li&gt;Some of them very much understood the struggle, and offered to help me polish up things like my resume, or get me in contact with another professional&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Things I Could Do Better&lt;/strong&gt;: I spoke to a lot of people, and sometimes I'd want to reconnect with them at a later time (like a recruiter or someone who offered to help me out). I will be creating a separate category in Trello to track my conversations or follow-ups!&lt;/p&gt;

&lt;h3&gt;
  
  
  Next Week
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Send 15 applications out, and try to contact developers/recruiters to learn more about each position if possible&lt;/li&gt;
&lt;li&gt;Get feedback on my portfolio website from other developers&lt;/li&gt;
&lt;li&gt;Fix up platform/size issues on portfolio website&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learning - 6/10
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;AKA how I learn to speak code, solve algorithms, and build projects&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Did
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Completed 15 Algos (on LeetCode)&lt;/li&gt;
&lt;li&gt;Play around with React Native to build 4 simple views for one of my old projects, Flexable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Things I Didn't Do&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read Chapters 7-11 on Cracking The Coding Interview (I didn't realize the amount of time meetups and new projects would take, and cut this out of this week's activities)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How It Went
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Completed 15 Algos (on LeetCode)
&lt;/h4&gt;

&lt;p&gt;These were all focused on Array operations. I think as an exercise it was really nice to keep my Javascript skills sharp. Furthermore, it was a good exercise in thinking about what a solid algorithm answer &lt;strong&gt;looks and sounds like&lt;/strong&gt;. Whenever I tried solving an algorithm, I would think about some things I learned from Cracking the Coding Interview:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is the O(n) in terms of speed and memory usage?&lt;/li&gt;
&lt;li&gt;What type of data structure might be ideal for the algorithm?&lt;/li&gt;
&lt;li&gt;What might be potential pitfalls/refactors to optimize the solution?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helped me learn not only just how to solve the problem, but also how to talk about the problem, which is a really important part of white-boarding interviews.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Things I Could Do Better&lt;/strong&gt;: Find some people to do actual white boarding with, and try to do some mock white board interviews with some colleagues! Also, maybe share some of my solutions with others to get feedback on the readability of my code!&lt;/p&gt;

&lt;h4&gt;
  
  
  Play Around With React Native
&lt;/h4&gt;

&lt;p&gt;As an exercise in a mobile development, I wanted to make small steps towards learning how to use React Native by building some simple views for one of my old projects. In my quest for mobile competence, I started learning &lt;a href="https://reactnavigation.org/docs/en/hello-react-navigation.html"&gt;React Native Navigation&lt;/a&gt; so I could go between my views. There were some additional projects and meetups that I became involved with that took some time away from this, so I mainly just got around to learning and implementing some basic routing. Here's a sample:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// React Native imports&lt;/span&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="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-native-gesture-handler&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NavigationContainer&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-navigation/native&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createStackNavigator&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-navigation/stack&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Custom imports&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;LandingScreen&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;./screens/LandingScreen&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;AuthenticateScreen&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;./screens/AuthenticateScreen&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;MenuSelectionScreen&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;./screens/MenuSelectionScreen&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;YellowBox&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-native&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;YellowBox&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ignoreWarnings&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Remote debugger&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;Stack&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;createStackNavigator&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&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="nc"&gt;NavigationContainer&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;Stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Navigator&lt;/span&gt;
        &lt;span class="na"&gt;screenOptions&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="na"&gt;headerShown&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;initialRouteName&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"LandingScreen"&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;Stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Screen&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"LandingScreen"&lt;/span&gt; &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;LandingScreen&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;Stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Screen&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"AuthenticateScreen"&lt;/span&gt; &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;AuthenticateScreen&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;Stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Screen&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"MenuSelectionScreen"&lt;/span&gt; &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;MenuSelectionScreen&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;Stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Navigator&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;NavigationContainer&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;I spent a lot of time reading React Native docs and understanding how stacks, screens, and components all fit into the larger mobile 'navigation' picture. I added a simple button with an event listener to make sure stuff worked! Here's a sample of my landing screen with the equivalent of a Link To in regular React:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// React Native imports&lt;/span&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;View&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;StyleSheet&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-native&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Custom imports&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;colors&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;../constants/colors&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;LandingScreen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;navigation&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="nc"&gt;View&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;screen&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;Text&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;This is the landing screen&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Text&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;Button&lt;/span&gt;
        &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Go to Authenticate"&lt;/span&gt;
        &lt;span class="na"&gt;onPress&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;navigation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;navigate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;AuthenticateScreen&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&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;View&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;styles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;StyleSheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;screen&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;100%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;100%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;paddingTop&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;paddingHorizontal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;primary&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;LandingScreen&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;I'm excited to continue further into React Native land next week!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Things I Could Do Better&lt;/strong&gt;: I need to partition my time accordingly, because there's quite a few new activities that will be on my plate for the next week!&lt;/p&gt;

&lt;h3&gt;
  
  
  Next Week
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Add UI components on each of the 4 views, and have functional navigation between&lt;/li&gt;
&lt;li&gt;Solve 15 more algos on LeetCode&lt;/li&gt;
&lt;li&gt;Try to do 3 Whiteboarding Sessions either by myself or with other people&lt;/li&gt;
&lt;li&gt;Work on Play It Forward (see below)&lt;/li&gt;
&lt;li&gt;Work on Personae (see below)&lt;/li&gt;
&lt;li&gt;Read Chapters 7-11 on Cracking the Coding Interview&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Networking - 8/10
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;AKA building meaningful relationships with other professionals&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Did
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;New Project: Play It Forward &lt;/li&gt;
&lt;li&gt;New Project: Personae!&lt;/li&gt;
&lt;li&gt;Went to a SeattleJS conference&lt;/li&gt;
&lt;li&gt;Went to a Career Path In Tech Meetup (Last Week's Deliverable)&lt;/li&gt;
&lt;li&gt;Going to a Junior Dev Struggle Bus Meetup (Last Week's Deliverable)&lt;/li&gt;
&lt;li&gt;Going to a Community Hack Night Meetup (Last Week's Deliverable)&lt;/li&gt;
&lt;li&gt;Got a Referral for an actual job and took an interview and &lt;strong&gt;bombed it&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Contacted by a consultant and sat down to talk about contract jobs&lt;/li&gt;
&lt;li&gt;Reached out to various people and set up some meetings and explore some cool opportunities!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Things I Didn't Do&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Try to balance Networking with Learning and Presence (I definitely neglected learning React Native because I was running everywhere).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How It Went
&lt;/h3&gt;

&lt;h4&gt;
  
  
  New Project: Play It Forward
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://democracylab.ghost.io/play-it-forward-makes-volunteering-fun/"&gt;Play It Forward&lt;/a&gt; was one of the projects I worked on during one of Democracy Lab's hackathons. It was the brainchild of &lt;a href="https://jenniferwilliams.dev/"&gt;Jennifer Williams&lt;/a&gt;, one of my classmates at Flatiron and myself. We both loved the idea 6 weeks into our bootcamp and promised each other we'd keep working on it after we graduate. Sure enough, Jen and I reconnected and decided we'd get cracking. We met at a coffee shop and started making a plan of attack! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hVyWw_pK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vy4bi4p68khrvrzaeud4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hVyWw_pK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vy4bi4p68khrvrzaeud4.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We're hoping to use this as a opportunity to practice our React chops and do some deep dives into new technologies such as &lt;a href="https://graphql.org/"&gt;GraphQL&lt;/a&gt;, &lt;a href="https://tailwindcss.com/"&gt;Tailwind CSS&lt;/a&gt;, &lt;a href="https://www.apollographql.com/"&gt;Apollo&lt;/a&gt;, &lt;a href="https://www.typescriptlang.org/index.html"&gt;Typescript&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  New Project: Personae
&lt;/h4&gt;

&lt;p&gt;During last week's Diversity and Women in Tech meetup, I met some really awesome people, including a PM working on a cool project. After some casual conversation he mentioned he was looking for support for a project that he was trying to get off the ground that might help local government and beyond. Coming from a government job, this really resonated with me, and it looked like he wanted some help mocking up a proof of concept web application. I volunteered to help him out and we set up a meeting this week! I brought this up to my Flatiron cohort and one of my peers, &lt;a href="http://christianmkastner.com/"&gt;Christian Kastner&lt;/a&gt;, expressed interest, so we joined forces to help the PM work on this project. More details on this in upcoming posts!&lt;/p&gt;

&lt;h4&gt;
  
  
  Went to the SeattleJS Conference
&lt;/h4&gt;

&lt;p&gt;My first conference! It was a very technical jargon heavy conference (talking mainly about cool new tools), and it was hard to follow the content. I decided to leave early and go home and work on my projects, algorithms, and job applications. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Things I Could Do Better&lt;/strong&gt;: Try to endure a jargon heavy experience (by Googling and make connections with people!&lt;/p&gt;

&lt;h4&gt;
  
  
  Went To Career Path In Tech Meetup
&lt;/h4&gt;

&lt;p&gt;One of my old coaches at Flatiron who is now employed, &lt;a href="https://www.linkedin.com/in/lucysuddenly/"&gt;Lucy Suddenly&lt;/a&gt;, was a panelist during this meetup, and I wanted to support her. Additionally, I love compassionate tech spaces that are actively trying to support those who are statistically at a disadvantage in the tech field. This meetup mainly hit on the non-conventional ways the panelists found their way into a tech job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Things I Could Do Better&lt;/strong&gt;: I actually spent a lot of time socializing, but I forgot to actually connect with people on LinkedIn or leave thank you messages for the hard work of those who planned the event. Gratitude goes a long way!&lt;/p&gt;

&lt;h4&gt;
  
  
  Going to THE JDSB (Junior Dev Struggle Bus) Meetup
&lt;/h4&gt;

&lt;p&gt;Great Meetup with a mixed crowd of developers sharing their experiences with job hunting, networking, and learning. It was held in a loud bar, and I found myself almost losing my voice just trying to talk to people! It was really encouraging to chat with other devs going through the same experience as myself. I connected with some other bootcamp devs, but I also decided to leave early to get home on time!&lt;/p&gt;

&lt;h4&gt;
  
  
  Community Hack Night Meetup
&lt;/h4&gt;

&lt;p&gt;Simply some time for developers to work on personal projects in a group setting. I went with my fellow graduates Jen and Fonzie and we used the time to study. We arrived slightly late and didn't talk too much to anyone. I definitely want to go again and work on my React Native Project, Personae, and Play It Forward with other community devs.&lt;/p&gt;

&lt;h4&gt;
  
  
  Got A Referral, Bombed an Interview
&lt;/h4&gt;

&lt;p&gt;I applied to an awesome company and was introduced to one of their recruiters who gave me an opportunity to actually take a pre-screening frontend technical interview on &lt;a href="https://codesignal.com/"&gt;Code Signal&lt;/a&gt;. If I passed the test, I would move on to the next stage. &lt;br&gt;
I was given 1.5 hours to tackle three coding questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A simple algorithm involving arrays (or string, or numbers, based on how you approached it)&lt;/li&gt;
&lt;li&gt;A basic DOM manipulation problem in JS&lt;/li&gt;
&lt;li&gt;A string-related algorithm
I was incredibly nervous, and had never taken an interview before. I accepted this as a learning experience and jumped in expecting to struggle, and &lt;em&gt;struggle I did&lt;/em&gt;*. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My strategy was this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solve the problem using a naive solution if an elegant solution wasn't clearly obvious to me&lt;/li&gt;
&lt;li&gt;Write comments explaining each step&lt;/li&gt;
&lt;li&gt;Below the code write how I would optimize for performance, what I thought the big O was, and possible caveats/refactors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I spent 20 minutes on the first problem, 60 minutes on the second problem (which didn't pass the tests), and ran out of time on the third problem. I understood DOM manipulation pretty well during my bootcamp, but after 6 weeks of React and no vanilla javascript, I was very rusty.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Could Do Better&lt;/strong&gt;: Practice writing Javascript, try to do as many technical interviews as I can.&lt;/p&gt;

&lt;h4&gt;
  
  
  Spoke with a Consultant about Contract Jobs
&lt;/h4&gt;

&lt;p&gt;A Consultant reached out to me this week and wanted to know if I was interested in doing contract work in the future. I set up a meeting to learn more about it and met them on-site. After a short discussion I gleaned the following knowledge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This wasn't a job offer, this was just trying to gauge whether or not I would be interested in being considered for contracts. I would still be interviewing for these positions.&lt;/li&gt;
&lt;li&gt;The consultant did not just reach out to every bootcamp grad (to my surprise), and mentioned that it was clear I put a lot of thought into my resume, which was the reason they reached out to me. Arguably, I don't really know what their bar is.&lt;/li&gt;
&lt;li&gt;The consultant did not find me on LinkedIn, but apparently found me on Dice. I happened to be on Dice because I had applied to a job that required a Dice account.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The person I met was actually really nice, and very honest about the pay and how their business operated. It seemed like a good opportunity for junior devs to get a food in the door with a company if hired on contract, because companies often hire contract engineers to full time positions later down the road.&lt;/p&gt;

&lt;p&gt;When I got home, I sent a thank-you email to the person I met, and also wrote a reminder to check back in with them at the end of next week.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reached Out To A Bunch Of People
&lt;/h4&gt;

&lt;p&gt;I've been really active with reaching out to a lot of people. I think the biggest lesson I learned this week is that &lt;strong&gt;helping people and being nice is the best networking strategy&lt;/strong&gt;. Many people who have offered to help me out have either worked with me on a team or are people who I made laugh. I have a couple exciting activities lined up with some people this next week, and we'll see what happens! I'll be sure to talk about it in more detail later!&lt;/p&gt;

&lt;h3&gt;
  
  
  Next Week
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Email Follow Ups&lt;/li&gt;
&lt;li&gt;Software Engineering Interview Meetup&lt;/li&gt;
&lt;li&gt;Other meetups&lt;/li&gt;
&lt;li&gt;Coffee Meetings&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  In Closing
&lt;/h1&gt;

&lt;p&gt;This week as been really busy, but there's definitely room for improvement. I now totally understand why job hunting as a junior dev takes a lot out of you. However, I have enjoyed branching out, meeting people, working on meaningful projects, and exploring the options for my future. Whether it takes 3 days or 3 months, you'll find me here, working and blogging!&lt;/p&gt;

&lt;p&gt;Good luck with your own endeavors!&lt;br&gt;
Shawn&lt;/p&gt;

</description>
      <category>career</category>
      <category>bootcamp</category>
      <category>life</category>
      <category>jobs</category>
    </item>
  </channel>
</rss>
