<?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: Tori Crawford</title>
    <description>The latest articles on DEV Community by Tori Crawford (@torianne02).</description>
    <link>https://dev.to/torianne02</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%2F103129%2Fe5791bb3-a61f-4ff4-a4a1-cb13ec35fdad.jpg</url>
      <title>DEV Community: Tori Crawford</title>
      <link>https://dev.to/torianne02</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/torianne02"/>
    <language>en</language>
    <item>
      <title>Productivity in Working Parents</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Tue, 09 May 2023 19:36:11 +0000</pubDate>
      <link>https://dev.to/torianne02/productivity-in-working-parents-3hkf</link>
      <guid>https://dev.to/torianne02/productivity-in-working-parents-3hkf</guid>
      <description>&lt;p&gt;It is 2023 but, unfortunately, we continue to live in a world where there are still stigmas surrounding working parents. An example of one of those stigmas is that once an employee becomes a parent they become less committed to their job and therefor less productive. This specific stigma is one that I am going to discuss today, because I do not believe that becoming a parent makes you less productive. Sure, you may need to work more flexible hours in order to work around school/daycare drop offs or extracurricular activities but &lt;a href="https://www.forbes.com/sites/carolinecastrillon/2022/03/23/why-flexible-work-boosts-employee-productivity/?sh=46a26c256e4b" rel="noopener noreferrer"&gt;working flexible hours does not have a direct correlation to a decrease in work productivity&lt;/a&gt;. &lt;/p&gt;

&lt;h6&gt;
  
  
  Spoiler alert: if you read the article cited above you will discover that flexible work hours actually increases productivity and it is not only working parents who want flexible hours.
&lt;/h6&gt;

&lt;p&gt;According to &lt;a href="https://s3.amazonaws.com/real.stlouisfed.org/wp/2014/2014-001.pdf" rel="noopener noreferrer"&gt;one study&lt;/a&gt;, parents were more productive than their childless peers. The study states that "mothers of at least two children, are, on average, more productive than mothers of only one child, and mothers in general are more productive than childless women." The study saw similar results for fathers of at least two children, but there was a slight difference in productivity in relation to childless men and fathers with one child. The study concluded that childless men and fathers of one child saw similar levels of productivity, but "toward the end of their careers, however, childless men appear to be somewhat more productive than fathers of one child."&lt;/p&gt;

&lt;h3&gt;
  
  
  Why are parents more productive?
&lt;/h3&gt;

&lt;p&gt;There are &lt;a href="https://recruitingdaily.com/working-parents-make-great-employees/#:~:text=Supporting%20parents%20at%20work%20is,stigmas%20for%20years%20to%20come." rel="noopener noreferrer"&gt;multiple studies&lt;/a&gt; that have attributed the following factors as reasons why parents are more productive. Parents&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;are great multi-taskers&lt;/li&gt;
&lt;li&gt;are empathetic&lt;/li&gt;
&lt;li&gt;develop better time management skills&lt;/li&gt;
&lt;li&gt;are "more likely to be in touch with the world and willing to research things"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From my own personal experience since becoming a mother, I know every single one of those factors listed above applies to me. I have become a much better multi-tasker, despite having thought I was great at it before parenthood. I have always considered myself an empathetic individual, but since becoming a mother I have found that my increasing ability to have more patience (especially with a 2 year old) has coupled beautifully with my empathy. Lastly, my time management skills have also increased exponentially because my ability to prioritize and actually sticking to set time boxes has gotten stronger.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Moving Forward
&lt;/h2&gt;

&lt;p&gt;It is important to note that these stigmas and biases are not always intentional. They may be unconscious biases that people are not even aware that they are holding onto. The first step is recognizing that you may have these opinions or beliefs about working parents and doing your own research to discover if you are correct or not. I have provided many different studies and articles at the bottom of this post that could be useful, but I highly encourage everyone to do a bit of research on their own.&lt;/p&gt;

&lt;p&gt;While individuals can make a difference, employers and companies also have to acknowledge and actively fight these stigmas and biases by implementing trainings and creating work environments that are safe for every single one of their employees.&lt;/p&gt;

&lt;h4&gt;
  
  
  Related Articles and Studies:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://hubblehq.com/blog/flexible-work-hours-productivity" rel="noopener noreferrer"&gt;Do Flexible Work Hours Improve Employee Productivity?&lt;/a&gt; by Lucy O'Connor | &lt;em&gt;Hubble&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.marketwatch.com/story/women-grads-earn-more-than-men-but-are-penalized-for-reaching-childbearing-age-2015-08-06?mod=article_inline" rel="noopener noreferrer"&gt;How the wage gap changes as women reach childbearing age&lt;/a&gt; by Jillian Berman | &lt;em&gt;MarketWatch&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://s3.amazonaws.com/real.stlouisfed.org/wp/2014/2014-001.pdf" rel="noopener noreferrer"&gt;Parenthood and Productivity of Highly Skilled Labor: Evidence from the Groves of Academe&lt;/a&gt; by Matthias Krapf, Heinrich W. Ursprung, and Christian Zimmerman | &lt;em&gt;Economic Research - Federal Reserve Bank of St. Louis&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://journals.aom.org/doi/abs/10.5465/amj.2016.0086" rel="noopener noreferrer"&gt;The Paradox of Family Structure and Plans after Work: Why Single Childless Employees May Be the Least Absorbed at Work&lt;/a&gt; by Tracy L. Dumas and Jill E. Perry-Smith | &lt;em&gt;Academy of Management&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.asanet.org/wp-content/uploads/savvy/images/members/docs/pdf/featured/motherwage.pdf" rel="noopener noreferrer"&gt;The Wage Penalty for Motherhood&lt;/a&gt; by Michelle J. Budig and Paula England | &lt;em&gt;American Sociological Review&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.460.4841&amp;amp;rep=rep1&amp;amp;type=pdf" rel="noopener noreferrer"&gt;When Professionals Become Mothers, Warmth Doesn't Cut the Ice&lt;/a&gt; by Amy J. C. Cuddy, Susan T. Fiske, and Peter Glick | &lt;em&gt;Journal of Social Issues&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.forbes.com/sites/carolinecastrillon/2022/03/23/why-flexible-work-boosts-employee-productivity/?sh=46a26c256e4b" rel="noopener noreferrer"&gt;Why Flexible Work Boosts Employee Productivity&lt;/a&gt; by Caroline Castrillon | &lt;em&gt;Forbes&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.marketwatch.com/story/why-parents-may-make-better-employees-2015-08-14" rel="noopener noreferrer"&gt;Why parents may make better employees&lt;/a&gt; by Catey Hill | &lt;em&gt;The Balance&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://recruitingdaily.com/working-parents-make-great-employees/#:~:text=Supporting%20parents%20at%20work%20is,stigmas%20for%20years%20to%20come." rel="noopener noreferrer"&gt;Working Parents Make Great Employees&lt;/a&gt; by Beau Peters | &lt;em&gt;Recruiting Daily&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note: The cover image for this blog post is brought to you while snowboarding at Bogus Basin Mountain Recreation Area in Boise National Forest, Idaho.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>motivation</category>
      <category>career</category>
    </item>
    <item>
      <title>Layoffs: It’s Okay to Not Be Okay</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Tue, 17 Jan 2023 22:28:14 +0000</pubDate>
      <link>https://dev.to/torianne02/layoffs-its-okay-to-not-be-okay-l2l</link>
      <guid>https://dev.to/torianne02/layoffs-its-okay-to-not-be-okay-l2l</guid>
      <description>&lt;p&gt;Layoffs. It’s a word we are all becoming very acquainted with here in the tech world—more for some than for others. Whether you survive a round of layoffs or become another one of the thousands of people laid off, they affect everyone. In my short 3.5 years in the tech industry, I have gone through 4 rounds of layoffs. I survived the first 3 and was unfortunately laid off in the most recent round.&lt;/p&gt;

&lt;p&gt;There are many feelings to be spoken about on both sides: surviving a layoff and being laid off. One can lose their sense of safety and, depending upon how the company handled the layoffs, there could be a lot of anger, resentment, mistrust, etc. When you survive a layoff there could also be a layer of survivor's guilt that can strike many people. It hit me very hard the 3rd round of layoffs I had experienced. I had only been at the company for a week and a half. I thought for sure I’d be an easy target to lay off, but no, two of my teammates who had been at the company for a while were laid off. The big thought in my mind for weeks following was “Why not me?”. &lt;/p&gt;

&lt;p&gt;Fast forward about 8 months and my company announced another round of layoffs and unfortunately, I was one of those affected. The first thing that crossed my mind was needing to pass along all of my knowledge on the current projects to my teammates, which I did. Then I cried and I cried A TON. &lt;/p&gt;

&lt;p&gt;I cried because I was losing the best team I had ever worked on. I cried because I was losing the best lead engineer I had ever worked with. I cried because I was losing some of the best senior and staff engineers I’d worked with because they taught me SO MUCH with tons of patience. I cried because I was losing my mentor. I cried because I was losing the first manager who ever showed interest in helping me progress my career to the next level. &lt;em&gt;I lost more than just a job, a paycheck.&lt;/em&gt; I cried because I had lost all of those things I have just mentioned.&lt;/p&gt;

&lt;p&gt;This post does not truly have a purpose other than for me to express my thoughts/grief and to let everyone else who has been laid off know that what they are feeling is completely okay and normal. Don’t beat yourself up. Don’t search for those “why’s” because you’ll likely never get closure. Try to accept your new reality and work through the grieving process. &lt;strong&gt;You got this.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: The cover image for this blog post is brought to you from a hike in Great Smoky Mountains National Park in July 2022.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>motivation</category>
      <category>writing</category>
      <category>layoffs</category>
    </item>
    <item>
      <title>How Do You Decide It Is Time to Move On?</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Wed, 06 Jul 2022 19:39:54 +0000</pubDate>
      <link>https://dev.to/torianne02/how-do-you-decide-it-is-time-to-move-on-1f1d</link>
      <guid>https://dev.to/torianne02/how-do-you-decide-it-is-time-to-move-on-1f1d</guid>
      <description>&lt;p&gt;It is not always easy to know when it is the right time to move on from your current role. For me it was honestly really hard.&lt;/p&gt;

&lt;p&gt;The decision to start interviewing again happened kind of organically for me. I had a FAANG recruiter reach out to me out of the blue and I decided it wouldn't hurt to just interview in order to gain the experience. It wasn't until I was denied after the technical interview that I got bit by the curiosity bug. I started wondering what it may be like working for another company, on a different product, in a different industry. This is when I really started to contemplate whether it was time for me to move on.&lt;/p&gt;

&lt;p&gt;I can honestly say that the decision to leave the company I worked for and dive into another job search was not an easy one for me for many reasons.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I genuinely liked my coworkers.&lt;/li&gt;
&lt;li&gt;I had a &lt;em&gt;rough&lt;/em&gt; initial job search when looking for my first role (feel free to checkout my many other posts about that job search).&lt;/li&gt;
&lt;li&gt;Interviewing just makes me incredibly anxious and I honestly think it always will no matter the years of experience I have under my belt.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Despite all of these reasons, I decided it was time to start interviewing again because I sat down and asked myself the hard questions. Is there possibility for promotion at my current role? How likely, if so? Am I feeling fulfilled? Am I feeling challenged still? Do the company's values still align with my own? Is my manager helping me progress professionally? etc.&lt;/p&gt;

&lt;p&gt;I ultimately listened to myself and my instincts and did what was best for me. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do y'all decide it is time to move on from your current role and start interviewing again?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>Despite Loss, Tori Coded</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Tue, 09 Mar 2021 01:50:56 +0000</pubDate>
      <link>https://dev.to/torianne02/despite-loss-tori-coded-12ga</link>
      <guid>https://dev.to/torianne02/despite-loss-tori-coded-12ga</guid>
      <description>&lt;p&gt;&lt;em&gt;TW: miscarriage&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It has been quite the year for me since International Women’s Day last year. I landed my first software engineering role at an amazing company. I got married. I got pregnant, twice. I experienced loss. I moved to a new state and, like everyone else, I have had to navigate living through a global pandemic. It has been a roller coaster of a year, to say the least.&lt;/p&gt;

&lt;p&gt;Prior to losing my great grandfather to COVID and having a miscarriage, I was creating a lot of content here on DEV but have been unable to find the motivation to do so since my world kind of turned upside down. I honestly did not know if I would even muster up the energy to write this post, but this is something I have done every year since I started my journey into tech and I did not want to tarnish that, &lt;strong&gt;so&lt;/strong&gt;... &lt;/p&gt;

&lt;p&gt;Here I am to say that despite everything that has happened over the last year, I have continued coding. I continue to strive to gain as much knowledge and experience as I can in everything that I do. I choose to make the most of every situation. I continue to be vocal about my pain and loss in order to help comfort anyone who has to go through a similar experience. Last but not least, I continue to feel incredibly grateful to have ended up at a company where I feel valued and safe as a woman engineer.&lt;/p&gt;

&lt;p&gt;Feel free to check out my &lt;a href="https://firehydrant.io/blog/spotlight-on-tori-crawford-software-engineer-at-firehydrant/" rel="noopener noreferrer"&gt;FireHydrant spotlight&lt;/a&gt; for International Women's Day where I answer a few questions such as important lessons I have learned and advice that I have for women wanting to break into tech.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: This post's cover image comes to you from Static Peak hike in Grand Teton National Park, Wyoming.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
    <item>
      <title>444 Days Later, Tori Hit the Jackpot</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Thu, 16 Jul 2020 02:12:50 +0000</pubDate>
      <link>https://dev.to/torianne02/444-days-later-tori-hit-the-jackpot-3o4p</link>
      <guid>https://dev.to/torianne02/444-days-later-tori-hit-the-jackpot-3o4p</guid>
      <description>&lt;p&gt;If you've been following me for a while, you know that I had been searching for a job for quite some time, 444 days to be exact. Thankfully, I have some &lt;strong&gt;fantastic&lt;/strong&gt; news to share with y'all. &lt;em&gt;I started working for &lt;a href="//firehydrant.io"&gt;FireHydrant&lt;/a&gt; as a software engineer&lt;/em&gt; a couple of weeks ago. It has been such a great experience so far and I've grown to accept that the long, crazy roller coaster ride that was my job search has been worth every second of it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femsh2a64mqah5y7fhgof.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femsh2a64mqah5y7fhgof.gif" alt="woman yelling jackpot!" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Throughout this chaotic job search, I was open and vulnerable with every one of you. Y'all got to experience the many highs and the many lows with me and, because of that, you were some of my biggest supporters. There were many days that the positivity and kind words y'all shared with me are what kept me chugging along and I can't thank you enough for that. &lt;/p&gt;

&lt;p&gt;Once again, I find myself here wanting to be open and vulnerable with you. Why? It's because I don't ever want anyone to feel alone. There were many times that I felt alone during my job search, because I rarely, if ever, found anyone who had been searching for their breakout role as long as I had been.&lt;/p&gt;

&lt;p&gt;Due to this, I want to keep it real and provide you with the rough numbers of applications submitted, interviews completed, and rejections received during the entirety of my long 444 day job search. Ultimately, I want people, like my past self, to know that all of our careers and lives progress at different speeds and that &lt;strong&gt;that is okay&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Applications
&lt;/h4&gt;

&lt;p&gt;Over the 444 days of my job search I submitted roughly &lt;strong&gt;430 applications&lt;/strong&gt;. Before anyone freaks out over that being an outrageous amount, let me break it down for you. I submitted just under 30 applications a month. My goal every week was to send out between 5 and 7 quality applications, which was totally manageable for me and gave me plenty of time left over to build projects, learn new skills, write blog posts, network, and contribute to open source. Oh, and to interview!&lt;/p&gt;

&lt;h4&gt;
  
  
  Interviews
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Overall
&lt;/h5&gt;

&lt;p&gt;In total, I prepared for and completed roughly 53 interviews.&lt;/p&gt;

&lt;h5&gt;
  
  
  First Round Interviews
&lt;/h5&gt;

&lt;p&gt;Over the course of my job search, I had around 29 first round interviews.&lt;/p&gt;

&lt;h5&gt;
  
  
  Technical Interviews
&lt;/h5&gt;

&lt;p&gt;I endured 20 technical interviews. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Quick Note: In this category, I included all code challenges, technical screens, and take-home assignments.&lt;/em&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Final Rounds
&lt;/h5&gt;

&lt;p&gt;I had the pleasure of making it to and completing 5 final round interviews. &lt;/p&gt;

&lt;h4&gt;
  
  
  Rejections
&lt;/h4&gt;

&lt;p&gt;The total number of rejections that I received over the entirety of my job search was 143. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Side Note: Rejection was my least favorite aspect of the job search. It took a long time for me to accept that rejections are not personal and should not be taken to heart. Lots of tears were shed over this that I wish I could have back, but, like I said earlier, it was all worth it in the end.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  No Responses
&lt;/h4&gt;

&lt;p&gt;I had roughly 233 applications that went into the abyss to never be heard from again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fug8xb9z4rqfserukj8ke.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fug8xb9z4rqfserukj8ke.gif" alt="GIF of two men jumping into the abyss with parachutes" width="271" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Offers
&lt;/h4&gt;

&lt;p&gt;Of the 5 final round interviews that I had, I received 3 offers. The first offer was to be a software engineering coach at the bootcamp that I completed. The next one was rescinded due to COVID. The last offer that I received was to work at &lt;a href="//firehydrant.io"&gt;FireHydrant&lt;/a&gt; as a software engineer that I gladly and excitedly accepted on June 11, 2020.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;p&gt;Now that we've made our way through those numbers, I wanted to take a moment to discuss a few of the greatest takeaways from this job searching experience for me. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Do not take rejections too personally. This should help you maintain your morale and mental health. &lt;/li&gt;
&lt;li&gt;Network. Network. Network. &lt;/li&gt;
&lt;li&gt;Ask people who know you and your work to refer you. This will decrease the number of applications you have go into the abyss, I promise. &lt;/li&gt;
&lt;li&gt;Take breaks. Interviewing is exhausting on your mental, physical, and emotional health. Give yourself days off every now and then. Allow yourself to disconnect and recharge.&lt;/li&gt;
&lt;li&gt;Don't be afraid to ask for help. There are so many great communities out there in the tech world with engineers that are willing and excited to help. You're in one right now as you read this article (hint: DEV).&lt;/li&gt;
&lt;li&gt;Be patient and understanding with yourself. &lt;/li&gt;
&lt;li&gt;Continue learning and, if you can, learn in public. Write a blog post, tweet, record a video, live code online, etc.. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hopefully at least one of these takeaways is useful to you! If you are someone who has been searching for your first role for quite some time now, please know that you are not alone and that you will find that role. &lt;/p&gt;

&lt;p&gt;Everything that led up to me working at &lt;a href="//firehydrant.io"&gt;FireHydrant&lt;/a&gt; has helped me become who I am today and I am incredibly proud of that person. It is my hope that you'll get to say that one day as well.&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;Note: The cover image for this blog post is brought to you from a hike at Caslte Rock State Park in California that I did this past weekend.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>jobsearch</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Data Structures From Scratch: Array</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Thu, 11 Jun 2020 16:16:23 +0000</pubDate>
      <link>https://dev.to/torianne02/data-structures-from-scratch-array-24d5</link>
      <guid>https://dev.to/torianne02/data-structures-from-scratch-array-24d5</guid>
      <description>&lt;p&gt;As many of you know, I have been searching for my first dev role for quite some time now. It took me completing quite a few technical interviews over the span of 6 or 7 months to narrow down what I thought was the main reason I wasn’t successfully making it past the technical interview round. I realized my weakness was my lack of knowledge in data structures outside of an &lt;code&gt;array&lt;/code&gt; and a &lt;code&gt;hash&lt;/code&gt;, as well as my unfamiliarity of some pretty important CS principles such as &lt;a href="https://dev.to/sarah_chima/the-big-o-notation-an-introduction-34f7"&gt;Big O Notation&lt;/a&gt;. Once realizing my weaknesses, I sought out to strengthen them so that I could &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;better increase my chances of landing my first role &lt;/li&gt;
&lt;li&gt;become a better and more well rounded dev&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In December of 2019, I enrolled in Andrei Neagoie's course &lt;a href="https://www.udemy.com/course/master-the-coding-interview-data-structures-algorithms/" rel="noopener noreferrer"&gt;Mastering the Coding Interview: Data Structures + Algorithms&lt;/a&gt;. I still haven’t managed to complete the entire course just yet, but I have had the opportunity to make my way through the Big O section as well as the entirety of the course’s data structures portion. While working through this course, I learned how to code data structures from scratch in &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt; which inspired me to create this blog series. &lt;/p&gt;

&lt;p&gt;With this blog series, I will be writing tutorials on how to create some of the more popular data structures from scratch in, my favorite programming language, &lt;a href="https://www.ruby-lang.org/en/documentation/" rel="noopener noreferrer"&gt;Ruby&lt;/a&gt;. This is the first installment in this series and I figured we’d cover one of the more basic data structures (and one of the very first I ever learned), &lt;code&gt;arrays&lt;/code&gt;. Let’s dive on in and get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  Create the Class
&lt;/h2&gt;

&lt;p&gt;The first step in the process of creating an &lt;a href="https://ruby-doc.org/core-2.7.0/Array.html" rel="noopener noreferrer"&gt;&lt;code&gt;array&lt;/code&gt;&lt;/a&gt; from scratch is to create the class, so let's get that done.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyArray&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Awesome! Now let's move on to the next step. &lt;/p&gt;

&lt;h2&gt;
  
  
  Initialize the Class
&lt;/h2&gt;

&lt;p&gt;The next step is to &lt;a href="https://www.geeksforgeeks.org/the-initialize-method-in-ruby/#:~:text=The%20initialize%20method%20is%20part,not%20used%20inside%20initialize%20method" rel="noopener noreferrer"&gt;initialize&lt;/a&gt; our class. Before doing this, we need to think about what variables should be included in every instance of an &lt;code&gt;array&lt;/code&gt;. One thing we know that is kept track of in regards to &lt;code&gt;arrays&lt;/code&gt; is the amount of elements within the &lt;code&gt;array&lt;/code&gt;, also known as the length of the &lt;code&gt;array&lt;/code&gt;. We will implement an &lt;a href="https://www.rubyguides.com/2018/11/attr_accessor/" rel="noopener noreferrer"&gt;&lt;code&gt;attr_reader&lt;/code&gt;&lt;/a&gt; for the length so that we can access the length of our &lt;code&gt;array&lt;/code&gt; using &lt;code&gt;.length&lt;/code&gt; outside of our class.&lt;/p&gt;

&lt;p&gt;We also know that we must keep track of the elements that exist within the &lt;code&gt;array&lt;/code&gt;. To do this, I’m going to have us save the elements within the &lt;code&gt;array&lt;/code&gt; as a &lt;a href="https://ruby-doc.org/core-2.7.0/Hash.html" rel="noopener noreferrer"&gt;&lt;code&gt;hash&lt;/code&gt;&lt;/a&gt; (the next data structure in this series!!). Why? Well, I don’t really see the purpose of using an &lt;code&gt;array&lt;/code&gt; in my demonstration of creating an &lt;code&gt;array&lt;/code&gt; from scratch, so we are going to make use of another great data structures! &lt;/p&gt;

&lt;p&gt;Alright, let’s go ahead and build out the initialize method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyArray&lt;/span&gt;
  &lt;span class="nb"&gt;attr_reader&lt;/span&gt; &lt;span class="ss"&gt;:length&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;
    &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="vi"&gt;@elements&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt; 
&lt;span class="k"&gt;end&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We initialize the class with a &lt;code&gt;length&lt;/code&gt; of &lt;code&gt;0&lt;/code&gt; because when the &lt;code&gt;array&lt;/code&gt; is created, no elements are present. The same logic is used for the &lt;code&gt;@elements&lt;/code&gt; variable that is set to an empty &lt;code&gt;hash&lt;/code&gt;. With that done, let's move on to the next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;Array&lt;/code&gt; Methods
&lt;/h2&gt;

&lt;p&gt;The next step in the process of building out our &lt;code&gt;array&lt;/code&gt; is to consider which methods we should build out. There are &lt;em&gt;so many&lt;/em&gt; &lt;code&gt;array&lt;/code&gt; methods and for the purpose of this blog post we are only going to cover a few. &lt;em&gt;Please feel free to explore other &lt;code&gt;array&lt;/code&gt; methods that you use frequently so that you can practice building out that functionality.&lt;/em&gt; The methods that I've chose to cover are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;adding an element to the &lt;code&gt;array&lt;/code&gt; - &lt;a href="https://ruby-doc.org/core-2.7.0/Array.html#method-i-push" rel="noopener noreferrer"&gt;&lt;code&gt;.push(element)&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;returning the element at a given index - &lt;a href="https://ruby-doc.org/core-2.7.0/Array.html#method-i-at" rel="noopener noreferrer"&gt;&lt;code&gt;.at(index)&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;removing the last element of the &lt;code&gt;array&lt;/code&gt; - &lt;a href="https://ruby-doc.org/core-2.7.0/Array.html#method-i-pop" rel="noopener noreferrer"&gt;&lt;code&gt;.pop()&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;removing an element at a given index - &lt;a href="https://ruby-doc.org/core-2.7.0/Array.html#method-i-delete_at" rel="noopener noreferrer"&gt;&lt;code&gt;.delete_at(index)&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;removing a given element - &lt;a href="https://ruby-doc.org/core-2.7.0/Array.html#method-i-delete" rel="noopener noreferrer"&gt;&lt;code&gt;.delete(element)&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;checking to see if an element exists in the array - &lt;a href="https://ruby-doc.org/core-2.7.0/Array.html#method-i-include-3F" rel="noopener noreferrer"&gt;&lt;code&gt;.includes?(element)&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the sake of restricting all of our methods to one purpose as well as maintaining &lt;a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself" rel="noopener noreferrer"&gt;DRY&lt;/a&gt; code, we will also create an additional method called &lt;code&gt;shift_elements(index)&lt;/code&gt;, which will shift the elements within the &lt;code&gt;array&lt;/code&gt; when an element is deleted using our &lt;code&gt;.delete(element)&lt;/code&gt; or &lt;code&gt;.delete_at(index)&lt;/code&gt; methods.&lt;/p&gt;

&lt;p&gt;Let's dive on in to the first method we'll be creating: &lt;code&gt;.push(element)&lt;/code&gt;. &lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;.push(element)&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;In order to add an element to our &lt;code&gt;array&lt;/code&gt;, we are going to create the &lt;code&gt;.push(element)&lt;/code&gt; method which adds the new element to the end of our &lt;code&gt;array&lt;/code&gt;. In this method, we need to make sure to add the element to the &lt;code&gt;array&lt;/code&gt; as well as increasing that &lt;code&gt;@length&lt;/code&gt; count by 1.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="vi"&gt;@length&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt;
  &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are wondering why I set the element's index to the &lt;code&gt;@length&lt;/code&gt; of the &lt;code&gt;array&lt;/code&gt;, think about the differences between the way indices and length are counted. Indices start at 0, whereas length starts at 1. By setting the element to index of &lt;code&gt;@length&lt;/code&gt;, I am setting it to the index of the last element in the &lt;code&gt;array&lt;/code&gt; &lt;strong&gt;plus 1&lt;/strong&gt;. &lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;.at(index)&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;The next method we are going to build out is &lt;code&gt;.at(index)&lt;/code&gt; which allows us to access and retrieve the element at a provided index. We can do this two different ways.&lt;/p&gt;

&lt;p&gt;Example 1:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;at&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="vi"&gt;@length&lt;/span&gt;
    &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="k"&gt;else&lt;/span&gt; 
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example 2:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;at&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="vi"&gt;@length&lt;/span&gt;
    &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each_value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;with_index&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;else&lt;/span&gt; 
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In both examples we check to make sure that the index we are attempting to access is not out of range for our &lt;code&gt;array&lt;/code&gt; using a &lt;a href="https://www.rubyguides.com/ruby-tutorial/ruby-if-else/" rel="noopener noreferrer"&gt;conditional&lt;/a&gt;. If the index does not exist, we want our method to return &lt;code&gt;nil&lt;/code&gt; as that is the normal functionality of the &lt;code&gt;.at(index)&lt;/code&gt; method. &lt;/p&gt;

&lt;p&gt;Now, in the first example, we are using an &lt;code&gt;array&lt;/code&gt; method referred to as an &lt;a href="https://ruby-doc.org/core-2.7.0/Array.html#method-i-5B-5D" rel="noopener noreferrer"&gt;element referrence&lt;/a&gt; to access the element. In the second example, we use the &lt;code&gt;hash&lt;/code&gt; method &lt;a href="https://ruby-doc.org/core-2.7.0/Hash.html#method-i-each_value" rel="noopener noreferrer"&gt;&lt;code&gt;.each_value&lt;/code&gt;&lt;/a&gt; in combination with &lt;a href="https://www.rubydoc.info/stdlib/core/Enumerator:with_index" rel="noopener noreferrer"&gt;&lt;code&gt;.with_index&lt;/code&gt;&lt;/a&gt; to traverse over each value in our &lt;code&gt;array&lt;/code&gt; until the index of a value matches the provided index. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: I personally prefer to use the second example as it isn't making use of a built in &lt;code&gt;array&lt;/code&gt; method, however, I will be using the first example in the remainder of our methods to save myself time.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let's move on to methods that allow us to remove elements from our &lt;code&gt;array&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;.pop()&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;If there is ever a need to remove and return the last element in an &lt;code&gt;array&lt;/code&gt;, &lt;code&gt;.pop()&lt;/code&gt; is the way to go. There are three things that we need to accomplish when building out this method. We need to &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;remove the last element from the &lt;code&gt;array&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;update the length of our &lt;code&gt;array&lt;/code&gt; by subtracting 1&lt;/li&gt;
&lt;li&gt;return that element&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In order to return the last element in the &lt;code&gt;array&lt;/code&gt; once the other two steps have been completed, we must save the element to a new variable before removing it from the &lt;code&gt;array&lt;/code&gt;. Let's build it out!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="c1"&gt;# save the last element to a new variable&lt;/span&gt;
  &lt;span class="n"&gt;last_element&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="c1"&gt;# delete the last element&lt;/span&gt;
  &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="c1"&gt;# subtract 1 from the length&lt;/span&gt;
  &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

  &lt;span class="c1"&gt;# return the last element&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;last_element&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;.delete_at(index)&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;The next method we are going to build that removes an element from our &lt;code&gt;array&lt;/code&gt; is the lovely &lt;code&gt;.delete_at(index)&lt;/code&gt; method. With this method, we can provide the index of the element we wish to remove from the &lt;code&gt;array&lt;/code&gt;. This method returns the removed element just like &lt;code&gt;.pop()&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Now, this type of element removal is a bit more involved because we aren't just removing the last element in the &lt;code&gt;array&lt;/code&gt;. We will need to shift the index of all remaining elements in the &lt;code&gt;array&lt;/code&gt; up by 1. To do this, we are going to create the &lt;code&gt;shift_elements(index)&lt;/code&gt; method that I mentioned earlier. &lt;/p&gt;

&lt;p&gt;To build out this method, we are going to require a parameter: the index of the element being removed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;shift_elements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;
  &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt; 

  &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At the end of our &lt;a href="https://www.w3resource.com/ruby/ruby-loops-statements.php" rel="noopener noreferrer"&gt;&lt;code&gt;while loop&lt;/code&gt;&lt;/a&gt;, our &lt;code&gt;array&lt;/code&gt; will look a little funky. The last element in the &lt;code&gt;array&lt;/code&gt; will be repeated two times which means we need to remove one of them, hence our deletion of the last element in the &lt;code&gt;array&lt;/code&gt;. If you'd like to take a closer look yourself, feel free to throw in a &lt;a href="https://www.rubyguides.com/2018/10/puts-vs-print/" rel="noopener noreferrer"&gt;&lt;code&gt;print&lt;/code&gt;&lt;/a&gt; statement.  &lt;/p&gt;

&lt;p&gt;Now that we have that method built, let's move on to the implementation of our &lt;code&gt;.delete_at(index)&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;delete_at&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="c1"&gt;# make sure index given is within range&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="vi"&gt;@length&lt;/span&gt;
    &lt;span class="c1"&gt;# save the to be deleted element for return&lt;/span&gt;
    &lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="c1"&gt;# shift and remove desired element&lt;/span&gt;
    &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;shift_elements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt;
  &lt;span class="k"&gt;else&lt;/span&gt; 
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt; 
&lt;span class="k"&gt;end&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;.delete(element)&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;The last removal method we'll be covering in this tutorial is &lt;code&gt;.delete(element)&lt;/code&gt; which allows us to delete and return the provided element. This method is pretty similar to the one above except for one thing: we'll need to find the index of the given element in order to use our &lt;code&gt;shift_elements(index)&lt;/code&gt; method. Let's build it out!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each_value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;with_index&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt;
      &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;shift_elements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# if given element does not exist in array&lt;/span&gt;
    &lt;span class="k"&gt;elsif&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt; 
  &lt;span class="k"&gt;end&lt;/span&gt; 

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;.includes?(element)&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;Now for the final method we'll be building in this tutorial, and my personal favorite: &lt;code&gt;.includes?(element)&lt;/code&gt;. This method will traverse our &lt;code&gt;array&lt;/code&gt; looking for the given element and return a &lt;a href="https://www.rubyguides.com/2019/02/ruby-booleans/" rel="noopener noreferrer"&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/a&gt;. If our &lt;code&gt;array&lt;/code&gt; does not include the given element, the method will return &lt;code&gt;false&lt;/code&gt;. If it does include the element, the method will return &lt;code&gt;true&lt;/code&gt;. Let's go ahead and build out our final &lt;code&gt;array&lt;/code&gt; method!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;includes?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
  &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each_value&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Final Product
&lt;/h2&gt;

&lt;p&gt;Awesome! We've gone through and built out all of the methods for an &lt;code&gt;array&lt;/code&gt; that we planned to build. &lt;em&gt;Again, there are many other &lt;code&gt;array&lt;/code&gt; methods, but for the purpose of this blog post we only did a select few.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Let's go ahead and take a look at the final product that we've built.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyArray&lt;/span&gt;
  &lt;span class="nb"&gt;attr_reader&lt;/span&gt; &lt;span class="ss"&gt;:length&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;
    &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="vi"&gt;@elements&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="vi"&gt;@length&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt;
    &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt; 

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;at&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="vi"&gt;@length&lt;/span&gt;
      &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each_value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;with_index&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt; 
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt; 

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;last_element&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;last_element&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt; 

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;shift_elements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt; 

    &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;delete_at&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="vi"&gt;@length&lt;/span&gt;
      &lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;shift_elements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt; 
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt; 
  &lt;span class="k"&gt;end&lt;/span&gt; 

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each_value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;with_index&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt;
        &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;shift_elements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="k"&gt;elsif&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="vi"&gt;@length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt; 
    &lt;span class="k"&gt;end&lt;/span&gt; 

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;includes?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
    &lt;span class="vi"&gt;@elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each_value&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt; 
&lt;span class="k"&gt;end&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;It's been a lot of fun creating this for y'all and I'm really excited to move on to the next installment in this series, &lt;code&gt;hashes&lt;/code&gt;. I hope that this tutorial has been helpful. If there is anything that you'd like to add please feel free to do so in the discussion section below. Or if you want to build out your favorite &lt;code&gt;array&lt;/code&gt; method and show it off, please feel free to share that in the discussion as well!&lt;/p&gt;

&lt;p&gt;Thank you for reading and happy coding!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: The cover image of this blog post is brought to you from a recent &lt;a href="https://www.alltrails.com/trail/us/california/aquinas-trail" rel="noopener noreferrer"&gt;hike&lt;/a&gt; that my fiancé and I did near Los Gatos, Ca.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>codenewbie</category>
      <category>computerscience</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I Love Technical Screens and Here's Why</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Fri, 24 Apr 2020 20:10:52 +0000</pubDate>
      <link>https://dev.to/torianne02/i-love-technical-screens-and-here-s-why-3ano</link>
      <guid>https://dev.to/torianne02/i-love-technical-screens-and-here-s-why-3ano</guid>
      <description>&lt;p&gt;More often than not, at this point in my job search, I have been doing well enough in the first round interview to get extended a second one. The second-round interview for most companies is often a technical one, whether that be a technical screen, a code challenge, or a take-home project. &lt;/p&gt;

&lt;p&gt;The technical portion of the interviewing process, to me, is the most difficult aspect of the whole process because every company does it differently. To semi-quote Forest Gump, technical interviewing is “like a box of chocolates. You never know what you’re gonna get.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzyt6r2nooxbvoouhd93u.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzyt6r2nooxbvoouhd93u.gif" alt="Forest Gump waiving and smiling from shrimp boat" width="400" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Personally, (past me would be shocked that I’m about to say this, but…) I prefer having a technical screen or, as some companies call it, a pair programming session with one of the company’s engineers over any other type of technical interview. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F538qn07z39pjw344ithd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F538qn07z39pjw344ithd.gif" alt="Jenna from MTV's Awkward making a shocked face" width="500" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some of you who have experienced the technical interviewing process may be thinking “Why would you like technical screens over something you do on your own? There is so much added pressure when you are live coding with someone else.” Yes, those of you thinking that would be 100% correct, there is that extra pressure, but I get to experience working with an engineer at the company! Most companies will even have your interview with an engineer that you’d work with if hired. This means that I’d get a sneak peek at what it could be like working with that person for that company on a daily basis. &lt;/p&gt;

&lt;p&gt;Completing a take-home project or code challenge on my own wouldn’t allow me to have that experience. I wouldn’t get the opportunity to walk through my thought process with the interviewer and bounce ideas off of them. They wouldn’t get to see me make mistakes, catch them, and then fix them. Most importantly, I wouldn’t be able to get a feel for what working with the company’s engineers is like.&lt;/p&gt;

&lt;p&gt;Some of the things I ask myself during and after technical screens are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did the interviewer challenge me by asking why I chose one solution and not another? &lt;/li&gt;
&lt;li&gt;Did this person give me the answer when I asked a question or did they guide me in the right direction?&lt;/li&gt;
&lt;li&gt;Was the atmosphere more like a collaboration or an interrogation? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aspects of the interview are important to me because, as a junior, I want someone to question why I’m choosing to do something a certain way. What if my way is not efficient or completely wrong? I’d want to know that, but, hopefully, the interviewer doesn’t just tell me why it’s wrong, hopefully, they ask me questions that lead me to that realization. To me, I want it to feel like we are collaborating and bouncing ideas off of one another like we would if it were a normal day at work.&lt;/p&gt;

&lt;p&gt;If the interview feels more like an interrogation or that I’m talking to a brick wall, I feel uncomfortable. When this happens, I immediately cross the company off of my list, because why would I want to work for a company that made me feel uncomfortable during the interviewing process? Should I want to work with someone I didn’t feel like I could collaborate with or with someone who may not feel comfortable answering questions? Or for a company that doesn't want the interviewers to answer questions? &lt;/p&gt;

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

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;I'm a junior developer trying to find my first role with a company that I believe could provide me with the best possible environment, one that will help me grow professionally and thrive. Technical screens help me determine whether a company will be a good fit for me, which is why I love them. &lt;/p&gt;

&lt;p&gt;Interviewing with a company is as much about you being a great fit for them as it is the company being a great fit for you. If you have read any of my articles about interviewing prior to this one, you have heard me say that a ton already but I seriously cannot stress this enough! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make sure you are doing what is best for you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: The cover image is brought to you from a recent trip to the Antelope Valley California Poppy Reserve in Lancaster, Ca.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>jobsearch</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>The Heartbreaks of Interviewing During COVID19</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Mon, 13 Apr 2020 19:04:32 +0000</pubDate>
      <link>https://dev.to/torianne02/the-heartbreaks-of-interviewing-during-covid19-302b</link>
      <guid>https://dev.to/torianne02/the-heartbreaks-of-interviewing-during-covid19-302b</guid>
      <description>&lt;p&gt;COVID19 has been disruptive to all of our lives. It has forced a lot of people to work from home and/or lose their childcare. Some of us are losing loved ones to this virus. Others are being laid off due to the financial difficulties a lot of companies are experiencing at this time. Some companies have had to put a freeze on hiring and others have had to fold. While these are a few examples of difficulties that people are facing during this pandemic, they don’t even begin to scrape the surface of problems people are experiencing at this time. With this article, I want to discuss the one that has been the most impactful on me personally, interviewing during COVID19.&lt;/p&gt;

&lt;p&gt;The impact that COVID19 has had on my job search has been devastating. For some background on me (if you don’t already know), I have been actively interviewing for over a year in search of my first software engineering role. This means I have been on the emotional roller coaster ride of interviewing for a long time now. I have experienced some great highs as well as some pretty low lows. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9nft7mmcrbd4anuz6pd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9nft7mmcrbd4anuz6pd.gif" alt="GIF of roller coaster ride" width="262" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me be honest before COVID19 hit I was already inching towards my breaking point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-COVID19
&lt;/h2&gt;

&lt;p&gt;Noticing that I was getting close to my breaking point, I set out to improve on what I felt I was weakest at. My goal with doing this was to eliminate the stressors that I had control over in hopes to move further away from that breaking point. Before COVID19 hit, I felt that I was accomplishing this goal and my confidence in my interviewing skills was increasing tremendously. &lt;/p&gt;

&lt;p&gt;Eventually, I had the opportunity to work with a startup for a week as a paid trial, an interview of sorts. This was an amazing opportunity for me as I viewed this trial as a win-win situation because it gave me a week of professional experience I didn’t have whether I was extended an offer or not. Luckily enough I was extended my first official software engineering offer after the trial was over. &lt;strong&gt;This was the proudest moment of my job search.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then along came COVID19…&lt;/p&gt;

&lt;h2&gt;
  
  
  COVID19
&lt;/h2&gt;

&lt;p&gt;Within a week of COVID19 becoming prevalent and amid contract negotiations, the company reached out to me and let me know they had to put a freeze on hiring. This news came after &lt;strong&gt;three hundred and fifty-six&lt;/strong&gt; days of searching for a job and &lt;strong&gt;thirteen&lt;/strong&gt; days after I received that offer. It was devastating, but I bounced back, as I always do in the face of adversity.&lt;/p&gt;

&lt;p&gt;Backing up a tiny bit, before receiving that offer, I had already been interviewing with another company that had the intention of bringing on two new software engineers. When my first offer was rescinded, yes I was devastated (as I just mentioned), but I also felt a sense of relief because this other company felt promising so I shifted my focus to my upcoming technical screen with them. &lt;/p&gt;

&lt;p&gt;After completing this amazing technical screen, I felt that I had found the company and the people that would help foster an amazing environment for my professional growth. When I received news that I was among the four final candidates moving on to the final round of interviews, I was ecstatic and also relieved that they weren’t putting a freeze on hiring. &lt;/p&gt;

&lt;p&gt;For the final interview, I met with three other employees that I had not previously interviewed with as well as the hiring manager. After meeting and interviewing with each person, I got more and more excited at the prospect of working at this company. By the time I met with the hiring manager I was beaming with excitement, then came the bad news. &lt;/p&gt;

&lt;p&gt;She started her portion of the interview by informing me that the company had cut her budget and she could only bring on one engineer. She then told me that two of the other candidates were mid-level engineers, which is always nerve-racking to hear as a junior as I don’t have the same experience they do. While this news sucked, I knew I still stood a pretty good chance considering I was one of four final candidates so I chose to stay positive. &lt;/p&gt;

&lt;h5&gt;
  
  
  The Heartbreak
&lt;/h5&gt;

&lt;p&gt;After a few days of doing everything I could to distract myself while waiting to hear back, I got the news that they had chosen to go with a different candidate. With this news, I felt my heart crumble and all hope slide away with it. (To be completely honest here, this is incredibly hard to write about right now, as the feelings are all still very raw.) I had made it &lt;strong&gt;one year and eight days&lt;/strong&gt; into my job search before the thought &lt;em&gt;“I just want to quit”&lt;/em&gt; popped into my head. That’s a long time of riding that emotional job search roller coaster before finally feeling the need to get off of it. &lt;/p&gt;

&lt;p&gt;To me, the fact that the thought even crossed my mind was more devastating than the rejection itself. I am not one to give up, ever, and I wasn’t going to let myself start now. To keep myself on the ride, I had to take a little bit of time to myself to recharge emotionally, so, after another interview only a few days later, I took two days to myself even though I had the intention of taking the rest of the week. &lt;/p&gt;

&lt;h2&gt;
  
  
  Moving Forward Despite COVID19
&lt;/h2&gt;

&lt;p&gt;By the third day, I was completing a code challenge that was extended after the aforementioned interview. By the fourth day, I found myself browsing open positions, which struck a sense of panic in me due to the new influx of people searching for roles as well as the decrease of job openings all due to COVID19 layoffs and hiring freezes. &lt;/p&gt;

&lt;p&gt;Part of me is happy that I am bouncing back and ready to ride the roller coaster again, but the other is hesitant knowing that there are most likely a few more heartbreaks in my future, whether they be due to COVID19 hiring freezes or other reasons. Either way, I’m going to rise up and keep moving forward knowing that the right fit for me is out there somewhere and I’ll find it eventually. &lt;/p&gt;

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

&lt;p&gt;To anyone who is in the same boat as me right now, I feel for you. You are not alone. I know your struggles and I am here for you. Please feel free to DM me here or on Twitter if you feel you need to talk to someone.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: This post's cover image comes to you from an awesome hike I did in Waipiʻo Valley, Big Island, Hawaii.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>career</category>
      <category>jobsearch</category>
    </item>
    <item>
      <title>What Non-Technical Interview Questions Have You Been Asked?</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Mon, 30 Mar 2020 23:25:05 +0000</pubDate>
      <link>https://dev.to/torianne02/what-non-technical-interview-questions-have-you-been-asked-558n</link>
      <guid>https://dev.to/torianne02/what-non-technical-interview-questions-have-you-been-asked-558n</guid>
      <description>&lt;p&gt;After my recent article, &lt;a href="https://dev.to/torianne02/looking-for-your-first-dev-role-advice-for-young-devs-by-a-young-dev-part-2-57ga"&gt;Looking for Your First Dev Role: Advice for Young Devs by a Young Dev Part 2&lt;/a&gt;, I have had a few new devs who are ramping up to apply for their first roles reach out to me and there was one common thread amongst them. They were asking about some of the most common soft skills or non-technical interview questions that I have been asked. Before this happening, I hadn’t really thought about writing a blog post about this topic, but here I am writing it! &lt;/p&gt;

&lt;p&gt;With this brief article, I am going to list a few of the most common soft skills and non-technical interview questions that I have been asked over the last year. I would love for any of you reading this that have gone through the interview process in the past to contribute any of the common questions you were asked as well. &lt;strong&gt;Let us try to create a great resource for those new devs out there trying to land their first roles or any experienced dev entering the job search again wanting to brush up their interviewing skills!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Questions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Can you tell me about a time when you overcame a challenge?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can you give an example of a time you’ve had a conflict with a coworker? How was this conflict resolved?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give an example of a time you’ve stood up for something you believed was right. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What made you switch careers? What ultimately led you to pursue software engineering?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What project are you most proud of and why?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How would you go about explaining a technical topic/issue with someone non-technical?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tell me about a time that you built a good relationship with someone you didn’t particularly like.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What was the most difficult aspect of going through bootcamp? What was the most rewarding?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A Quick Note
&lt;/h2&gt;

&lt;p&gt;These are all of the questions that I can think of right now. Check back at any point to see if I’ve added any new questions or to check the discussion section to see questions that the amazing DEV community has added. &lt;/p&gt;

&lt;p&gt;I personally know how stressful the job search can be, so I hope that this article can help any of those new devs out there trying to prep for interviews. &lt;/p&gt;

&lt;p&gt;Good luck to anyone out there interviewing!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feaer9zx4bv1v2nqu4120.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feaer9zx4bv1v2nqu4120.gif" alt="Patrick star waving a foam finger with the quote "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post's cover image is brought to you from my recent trip to Hawaiʻi Volcanoes National Park in Volcano, Hawaii.&lt;/em&gt; &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>codenewbie</category>
      <category>jobsearch</category>
    </item>
    <item>
      <title>Looking for Your First Dev Role: Advice for Young Devs by a Young Dev Part 2</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Mon, 23 Mar 2020 23:50:38 +0000</pubDate>
      <link>https://dev.to/torianne02/looking-for-your-first-dev-role-advice-for-young-devs-by-a-young-dev-part-2-57ga</link>
      <guid>https://dev.to/torianne02/looking-for-your-first-dev-role-advice-for-young-devs-by-a-young-dev-part-2-57ga</guid>
      <description>&lt;p&gt;It’s been a hot minute since I have written a blog on one of my favorite topics, the job search. On one hand, I know this is because I landed the software engineer coaching position at &lt;a href="//flatironschool.com"&gt;Flatiron School&lt;/a&gt; back in August (which I left at the end of November). On the other though, I didn’t stop interviewing even when I got that job, so what’s my excuse? &lt;em&gt;I don’t have one&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;When I wrote the first part of this series only 57 days into my job search, I never thought I would be where I am right now, still jobless. It’s been a tough ride over the last year and as I’m gearing up to hit the one year anniversary of declaring my job search, I have begun reflecting on the mistakes I have made along the way thus far. It is here, with this article, that I am truly self-reflecting and will be sharing the wisdom I’ve gained through this process.&lt;/p&gt;

&lt;p&gt;Let’s get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  Take Notes
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gk3ufj6e11zy8clzajs.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gk3ufj6e11zy8clzajs.gif" alt="man with notepad and pen saying " width="480" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the first few months of interviewing and not having any luck, I wasn’t entirely sure what I was doing wrong and eventually decided to start taking notes at the end of every interview. As soon as the interview would end I would start jotting down notes about what I think I did well at and what I think I did poorly at. Then I’d sit and reflect on what steps I could take to improve. I would always ask myself: “How can I do better next time?” This is a very important question to ask oneself after every interview. &lt;/p&gt;

&lt;h5&gt;
  
  
  Rehearsed Answers
&lt;/h5&gt;

&lt;p&gt;We all know that a lot of interviewers ask similar questions. This means that we often have thought-out answers for every one of those oh-so-familiar questions. I do, but I don’t always phrase it the same way every single time. Some days I phrase it in a way that I even surprise myself, and, on those days, I have started to write down the exact phrasing that I used. I then reflect on why the new phrasing stood out to me and which aspects I’d like to reuse.&lt;/p&gt;

&lt;p&gt;To further this idea, I also take notes on the phrasing I didn’t like. There are times that I reflect and think that what I said could have come off wrong or wasn’t representing the message I wanted to relay. To avoid making the same mistake again, I write it down. &lt;/p&gt;

&lt;h2&gt;
  
  
  Ask Questions
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fki3pkjsbfo8l6h3id4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fki3pkjsbfo8l6h3id4.gif" alt="man lifting his index finger saying " width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing I’ve lived by during this whole journey is that the interview is just as much about me interviewing the company as it is the company interviewing me. The more interviews I have had, the more I have learned which questions bring out what I want to know about the company. There are a few key questions that I love asking and I’m going to share them with you here. Feel free to steal them for your personal use!&lt;/p&gt;

&lt;h5&gt;
  
  
  1. What is your favorite aspect of working at Company XYZ?
&lt;/h5&gt;

&lt;p&gt;This question is one of my favorites. This gives the interviewer a moment to boast about their favorite aspects of the company. In my experience, the interviewer tends to have the longest answer for this question because as they talk about their favorite aspect they often think about other aspects and go on and on. It’s a fun moment for me to see the pride the interviewer has in the company they work for. &lt;/p&gt;

&lt;p&gt;Immediately after asking this question, I follow it up with…&lt;/p&gt;

&lt;h5&gt;
  
  
  2. What is your least favorite aspect of working here?
&lt;/h5&gt;

&lt;p&gt;This is also another favorite of mine that tells &lt;strong&gt;A LOT&lt;/strong&gt; about the company. I often have the interviewer say something along the lines of “oh, that’s a tough one.” The answers I get always seem genuine. One time I got a very raw answer that once I ended the interview, I crossed this company off my list. To me, this is great because this is the point of interviewing! The company must be a good fit for me and the only way to find that out is to ask the tough questions. Which brings me to the next question…&lt;/p&gt;

&lt;h5&gt;
  
  
  3. What are the biggest challenges facing the company right now?
&lt;/h5&gt;

&lt;p&gt;This question often gets answered with difficulties that face the company as a whole. If it is a startup, I often hear about the growing pains of a startup. If there is a new competitor in the field or something along those lines, they’ll mention that. &lt;/p&gt;

&lt;p&gt;There are times that I omit this question if time is running out because I think the above question is more telling about a company. &lt;/p&gt;

&lt;h5&gt;
  
  
  4. What does Company XYZ do to promote an inclusive and diverse work environment?
&lt;/h5&gt;

&lt;p&gt;The answers to this question, in my experience, have determined whether I want to continue interviewing with a company or not. With one company, I made it 3-rounds in and asked every person this question. None of them could give me a solid answer. To me, this comes off as if the company doesn’t do anything to promote an inclusive and diverse workplace. &lt;/p&gt;

&lt;p&gt;Then there are times where I get an amazing answer that is detailed and says a lot about the company and how they care about their employees' mental health and well-being. This not only helps me get more excited about the company but also gives me faith in the future of tech. It’s often my final question to hopefully end things on a high note! &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Inclusivity and diversity are incredibly important to me, which is why I always ask this question. If these things aren’t important to you, then this question seems a little pointless and you don’t need to add it to your question list.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Interviews
&lt;/h2&gt;

&lt;p&gt;Now for the embarrassing story. After almost a full year of interviewing I have completed &lt;em&gt;a ton&lt;/em&gt; of technical interviews. It is normally at this point in the interview process that I have received those daunting rejection no-reply emails. There have been many interviews when I thought I had crushed the technical interview, but it turns out, I hadn’t.&lt;/p&gt;

&lt;p&gt;It wasn’t until around October/November of 2019 that I realized what was going wrong. To prepare for a final round in-person interview, a friend at the company offered to help me prepare. He brought up multiple data structures that I knew about but didn’t know why I should use one over the other or what their Big O implications were. This opened my eyes and by December I enrolled in the &lt;a href="https://www.udemy.com/" rel="noopener noreferrer"&gt;Udemy&lt;/a&gt; course &lt;a href="https://www.udemy.com/course/master-the-coding-interview-data-structures-algorithms/" rel="noopener noreferrer"&gt;Master the Coding Interview: Data Structures + Algorithms&lt;/a&gt; created by Andrei Neagoie. &lt;/p&gt;

&lt;p&gt;Now we are creeping up on April and I have still yet to complete the course, but my confidence during technical interviews has improved tremendously and I have moved on in the interview process more often than I had before. &lt;/p&gt;

&lt;p&gt;Here are a few things I have changed recently that I think have helped and hopefully one would find useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speak most, if not all, of your thoughts aloud&lt;/strong&gt;. This gives the interviewer the chance to get to know your thought process. If you choose to use data structure A over data structure B, let them know your reasoning. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write comments and pseudo-code&lt;/strong&gt; as much as possible before diving into writing code. This allows you to discover holes or possible problems in your approach before starting to write code that you’d have to change. It’ll save you time from going down the wrong path. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask clarifying questions&lt;/strong&gt; when necessary.&lt;/li&gt;
&lt;li&gt;Come to terms with the fact that you &lt;strong&gt;will not always finish the problem and that is OKAY!&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Handling Rejection
&lt;/h2&gt;

&lt;p&gt;Rejection: arguably one of the toughest aspects of the job search. When I first started the job search, I felt as if every rejection was personal. This is a really silly mindset to have when looking for jobs and I am very happy that I have come to realize this. It has made a world of difference in my ability to bounce back after receiving a rejection. I often like to think of the old saying that &lt;em&gt;when one door closes, another will open in its place&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Now, if you get lucky and receive a rejection from an actual person and not a no-reply email, make sure to leave things on good terms. This happened to me recently and the company reached back out a week later offering to do a week-long paid trail interview. This was amazing for me because it gave me the ability to gain a week's worth of professional experience that I had never had before. I got to sit in on a design review, daily stand-ups, code reviews, etc.. It was an invaluable experience I would not have gotten otherwise. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;An update on that story: I received an offer, but due to COVID19 the offer was rescinded. They have since offered to hire me as a contract engineer until I find a full-time role somewhere. I am incredibly blessed and grateful to have been exposed to this amazing company that cares.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Anyways, make sure to handle rejection with grace and try to bounce back as fast as you can. If you find yourself struggling with rejection don’t worry, you aren’t alone. I have had my fair share of rejection tears over the last year. Feel free to reach out to me if you can’t seem to move past one, I am a great positivity buddy. &lt;/p&gt;

&lt;h2&gt;
  
  
  Keep Improving
&lt;/h2&gt;

&lt;p&gt;The most important piece of advice I can give you today is to &lt;strong&gt;continue improving yourself&lt;/strong&gt;. Continue to write code. Continue to learn new things or deepen your understanding of topics that you already know. Continue to learn more about yourself and your weaknesses so that you can &lt;strong&gt;turn those weaknesses into your strengths&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;While it is incredibly disappointing that I have yet to land a full-time role as a dev after nearly a year of searching, I am &lt;strong&gt;proud of myself&lt;/strong&gt; for continuing to self-reflect and improve throughout the whole process. If, in a few months, you haven't secured a role yet, could you self-refect and say that you are proud of how far you have come? I think this is an important question to pose to yourself down the line or to use as daily motivation. Always strive to continue improving yourself!!&lt;/p&gt;

&lt;p&gt;Another closing note I'd like to mention is that the choice to be positive is important in maintaining your mental health during the job search, so &lt;strong&gt;do your best to stay positive&lt;/strong&gt;. I get it, sometimes you just can't stay positive. Take 30 minutes and just let all the negativity out. Let it be acknowledged, then move on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xqb819n6kbeaftsb55k.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xqb819n6kbeaftsb55k.gif" alt="woman twirling her finger in an all-encompassing circle saying " width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: This posts cover image is brought to you from my recent trip to Hawaiʻi Volcanoes National Park in Volcano, Hawaii.&lt;/em&gt;   &lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>career</category>
      <category>firstyearincode</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Nevertheless, Tori Kept Interviewing</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Fri, 06 Mar 2020 20:50:08 +0000</pubDate>
      <link>https://dev.to/torianne02/nevertheless-tori-kept-interviewing-1kml</link>
      <guid>https://dev.to/torianne02/nevertheless-tori-kept-interviewing-1kml</guid>
      <description>&lt;p&gt;For anyone who doesn't know much about me, I am a career changer who attended and later coached at, &lt;a href="https://flatironschool.com/" rel="noopener noreferrer"&gt;Flatiron School&lt;/a&gt;. I graduated from their online self-paced software engineering program in February of 2019 and declared my official job search start date as March 26th. Now, here I am, March 6th 2020, almost exactly a year later, still without a job, and believe me, it hasn't been from a lack of trying. &lt;/p&gt;

&lt;p&gt;As someone who was a two-sport collegiate athlete and double major, &lt;em&gt;I am no stranger to working my butt off to accomplish what I want&lt;/em&gt;. The grind I've been on to establish myself in the tech world has been no different.&lt;/p&gt;

&lt;p&gt;Every single day I wake up and figure out what I plan on doing that day to make myself even just the tiniest bit better. Currently, I am working my way through a &lt;a href="https://www.udemy.com/" rel="noopener noreferrer"&gt;Udemy&lt;/a&gt; course on technical interviewing so that I can work on bettering myself in that respect. &lt;/p&gt;

&lt;p&gt;Lately, a majority of my days are spent applying, prepping for interviews, and interviewing. It has been fun (and stressful) to be actively interviewing at 3 different companies at a time since January. At one point it was 5 companies at once which was very chaotic but I wouldn't change it for the world. Why? Well, because &lt;strong&gt;I love coding and I love the continuous flow of learning and improving myself&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Keeping with this determination and drive to break into tech will, one day soon, help me land a software engineering position at a company that I love. Giving up is not part of my character, it is not in my genes. So, with that said, &lt;strong&gt;nevertheless, I continue coding, interviewing, and learning&lt;/strong&gt;.&lt;/p&gt;

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

</description>
      <category>wecoded</category>
    </item>
    <item>
      <title>Get to Know the Command Line: Basic Git Commands</title>
      <dc:creator>Tori Crawford</dc:creator>
      <pubDate>Mon, 06 Jan 2020 19:58:14 +0000</pubDate>
      <link>https://dev.to/torianne02/get-to-know-the-command-line-basic-git-commands-oe6</link>
      <guid>https://dev.to/torianne02/get-to-know-the-command-line-basic-git-commands-oe6</guid>
      <description>&lt;p&gt;A few weeks ago I started the “Get to know the Command Line” series with this &lt;a href="https://dev.to/torianne02/get-to-know-the-command-line-basic-commands-453i"&gt;Basic Commands&lt;/a&gt; article. This article that you are currently reading is the second installment which will cover basic &lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;Git&lt;/a&gt; commands that I believe new developers should get acquainted with. Actually, more than just acquainted. New developers need to get downright cozy with these commands as they are not likely to be going anywhere any time soon. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg99y5s52m7m14eu09sjj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg99y5s52m7m14eu09sjj.gif" alt="GIF of a cat cuddling up and getting cozy with a dog who is napping" width="420" height="241"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before jumping in let's cover the following question: What is Git? It's a version control system that can be used for small and large projects alike. What is a version control system? At the surface level, a version control system helps keep track of changes made to a codebase while at the same time keeping a copy of the previous versions. &lt;/p&gt;

&lt;p&gt;With that introduction behind us, let's go ahead and get started.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;git init&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git init&lt;/code&gt; is the command that allows us to add Git to our current working directory (project). To go into more detail, this command creates an empty Git repository &lt;strong&gt;or&lt;/strong&gt; reinitializes one that already exists. &lt;/p&gt;

&lt;p&gt;For the purpose of this blog post, I created a new project called &lt;code&gt;git-command-practice&lt;/code&gt; and used the command &lt;code&gt;cd git-command-practice&lt;/code&gt; to change into the project's directory. From here, I am going to initialize Git for this project. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqmvo37j8fs41iu25g58.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqmvo37j8fs41iu25g58.png" alt="terminal screenshot of git init command" width="684" height="68"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;git remote add origin &amp;lt;GitHub URL&amp;gt;&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;For those of us who use &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; as our preferred repository hosting site, we need to create a new GitHub repository. The next step would be to use the command &lt;code&gt;git remote add origin &amp;lt;GitHub URL&amp;gt;&lt;/code&gt; in order to connect our local project with the GitHub repository. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3vs5c8puo3dzc53t28c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3vs5c8puo3dzc53t28c.png" alt="terminal screenshot of git remote add origin command" width="556" height="39"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This allows us to see the changes and commits we've made to our code on GitHub. we'll be able to see file changes, new lines of code, deleted lines, as well as commit messages for each commit that has been made. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;git clone &amp;lt;GitHub URL&amp;gt;&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;git clone&lt;/code&gt; command is used to copy an existing repository to one's local machine. Let's say someone wanted to clone one of the existing projects I've worked on that exists on my GitHub profile, like my portfolio site. The way to do this is by using the command &lt;code&gt;git clone https://github.com/torianne02/victoria-fluharty-portfolio&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Now that we have covered the commands that we need to get a repository up and running, let's discuss some of the commands that we will be using often while writing code. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;git&lt;/code&gt; / &lt;code&gt;git --help&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;I am about to throw a few commands at y'all and it might feel a little overwhelming. Don't worry though, these next few commands are really helpful for those of us who have a hard time memorizing things, like me. &lt;/p&gt;

&lt;p&gt;If one feels lost or can't remember a command at any time while writing code, they could make use of either of the commands &lt;code&gt;git&lt;/code&gt; or &lt;code&gt;git --help&lt;/code&gt;, which return the same thing: a list of common git commands. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzu2p8x3vmkr7ukmae9sh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzu2p8x3vmkr7ukmae9sh.png" alt="screenshot of terminal executing command git" width="566" height="751"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As with most Git commands, &lt;code&gt;git --help&lt;/code&gt; has options that allow us to add to it to receive a different kind of output.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Most Git commands have a multitude of options and I will not discuss them all here, but I will discuss a few notable ones I think may be helpful.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;git --help -a&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;This command lists available subcommands. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwv6oh5l7w5qcztrdk6b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwv6oh5l7w5qcztrdk6b.png" alt="terminal screenshot of command git --help -a" width="800" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;git --help -g&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;This Git command outputs a list of Git guides available. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr6ga2wz5a59o4nd04hyp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr6ga2wz5a59o4nd04hyp.png" alt="terminal screenshot of command git --help -g" width="515" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;git --help &amp;lt;command name&amp;gt;&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;This is a helpful Git command that allows us to view details about a specific Git command, such as the description, options, examples, etc..&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;git status&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git status&lt;/code&gt;, in my opinion, is arguably the most important Git command that is used regularly while writing code. This command allows us to see the status of the current working tree. It does this by outputting the paths that&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;have differences between the index file and the current HEAD commit.&lt;/li&gt;
&lt;li&gt;have differences between the working tree and the index file.&lt;/li&gt;
&lt;li&gt;are in the working tree that are not yet tracked by Git.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point, let's create a file in this project called &lt;code&gt;practice-file.rb&lt;/code&gt;. Now let's use the command &lt;code&gt;git status&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxaezkg0q3qid1inen40.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxaezkg0q3qid1inen40.png" alt="terminal screenshot of git status" width="541" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice that it says our new file is "untracked," this leads me to our next command:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;git add &amp;lt;file path&amp;gt;&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git add&lt;/code&gt; is the command used to add the contents/changes of a file to the index. In order to add our newly created file to Git so that it can be tracked, we would run the following command&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe2shk3xaywqkr3k6ign0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe2shk3xaywqkr3k6ign0.png" alt="terminal screenshot of command git add practice-file.rb" width="386" height="41"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;git add .&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;If one wants to add all the files that they have recently changed, they could use the command &lt;code&gt;git add .&lt;/code&gt;.  &lt;/p&gt;

&lt;p&gt;If there is one thing that I want my readers to take away from this article, it would be that one should &lt;strong&gt;never&lt;/strong&gt; use this command without first running &lt;code&gt;git status&lt;/code&gt;. Why? To make sure that one is aware of all the files that have been changed and are about to be added to the index. What if a dev accidentally hit a key and caused a typo on a file that was never meant to be edited? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0pcfs1l4ynq7yovk4vuf.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0pcfs1l4ynq7yovk4vuf.gif" alt="doodle pressing nope button on keyboard and a satellite blowing up the computer" width="248" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Okay, okay. Maybe it isn't that dramatic, but please &lt;em&gt;always be aware of what you are adding to the index!!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now that we used &lt;code&gt;git add&lt;/code&gt; let's use the command &lt;code&gt;git status&lt;/code&gt; again to see what it looks like. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bjpefn2u3md7qn6a7go.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bjpefn2u3md7qn6a7go.png" alt="terminal screenshot of git status after git add" width="390" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice the phrase "Changes to be committed" followed by the file path that we recently added to the index, &lt;code&gt;practice-file.rb&lt;/code&gt;. This brings us to the next command: &lt;code&gt;git commit&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;git commit&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The command &lt;code&gt;git commit&lt;/code&gt; records the current contents of the index, which just happens to be all of the changes made to the code that we added to the index by using &lt;code&gt;git add&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;git commit -m&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;When committing code, one wants to add a detailed message about the changes being made to the code. In the case of this example, I created a practice file in order to take screenshots of the commands I am covering here so I should express that in the message. In order to accomplish this, I have to add &lt;code&gt;-m 'message here in quotes'&lt;/code&gt; to the command &lt;code&gt;git commit&lt;/code&gt;. Here is what it looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22ptqu1v2u5jk8o7flv9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22ptqu1v2u5jk8o7flv9.png" alt="terminal screenshot of git commit -m " width="649" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will notice in the screenshot that I had a few typos. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr59n7nnzp43ezgkgqui0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr59n7nnzp43ezgkgqui0.gif" alt="Leslie Knope saying " width="245" height="170"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Guess what?! It's not a nightmare and we can fix this!&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;git commit --amend -m&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;Let's be honest, we all make mistakes from time-to-time. Thankfully, Git gives us the ability to fix our typo mistakes in our commit messages. &lt;/p&gt;

&lt;p&gt;If we notice our mistake &lt;em&gt;BEFORE&lt;/em&gt; using the next command (&lt;code&gt;git push&lt;/code&gt;), we can use the command &lt;code&gt;git commit --amend -m 'new message to replace old message'&lt;/code&gt;. Let's fix that typo!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8rxy18ujou8yhh5ukz4i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8rxy18ujou8yhh5ukz4i.png" alt="terminal screenshot of git commit --amend -m 'created new practice file to take images of git commands'" width="581" height="109"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Awesome! Now we are good to move on to the next command. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;git push&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The command &lt;code&gt;git push&lt;/code&gt; comes into play once one is happy with the changes made to their code and with the commit messages that they have recorded. &lt;code&gt;git push&lt;/code&gt; updates remote references and repositories, in our case the GitHub repo, of the current repo with local commits and changes. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jmkxxlsh25kzgyxmhbt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jmkxxlsh25kzgyxmhbt.png" alt="terminal screenshot of git push" width="425" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;git checkout &amp;lt;branch name&amp;gt;&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git checkout&lt;/code&gt; is a command that allows one to switch between the different branches of a repository. What is a branch? A branch is essentially a copy of the &lt;code&gt;master&lt;/code&gt; version of the repository with a unique name that a developer can use to make changes to the codebase without directly changing the &lt;code&gt;master&lt;/code&gt; branch. &lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;git checkout -b &amp;lt;branch name&amp;gt;&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;One common practice when using Git is to create a branch for each new feature or major change one wishes to add to the project. A branch allows the developer to work on a branch of the &lt;code&gt;master&lt;/code&gt; codebase. In other words, the developer can make a ton of changes to this branch and it wouldn't affect the main version of the codebase. At least not until they choose to add the new changes to &lt;code&gt;master&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Let's create a new branch called &lt;code&gt;new-practice-branch&lt;/code&gt; &lt;strong&gt;and&lt;/strong&gt; switch to it by using the command:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fat9foz636o16t7ve8jfh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fat9foz636o16t7ve8jfh.png" alt="terminal screenshot of git checkout -b new-practice-branch" width="448" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, let's use &lt;code&gt;git checkout&lt;/code&gt; to switch back to the &lt;code&gt;master&lt;/code&gt; branch. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxzgwfx23f1jau60f123.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxzgwfx23f1jau60f123.png" alt="terminal screenshot of git checkout master" width="449" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we've covered branches, let's cover what command to use when one wants to join two branches together. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;git merge &amp;lt;branch name&amp;gt;&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git merge&lt;/code&gt; is the command that one would use when they want to merge two branches together. Let's say we are currently in our &lt;code&gt;master&lt;/code&gt; branch and we want to add the changes made to our &lt;code&gt;new-practice-branch&lt;/code&gt; to &lt;code&gt;master&lt;/code&gt;. In order to accomplish this, we need to use this command &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8eudhuomtmzmok0z53kv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8eudhuomtmzmok0z53kv.png" alt="terminal screenshot of git merge new-practice-branch command" width="358" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Awesome! Now we've merged two branches together. Now let's say we were working with a partner and they made changes on their own local machine and pushed to our remote GitHub version of &lt;code&gt;master&lt;/code&gt;. This means that my local version of &lt;code&gt;master&lt;/code&gt; is not up-to-date. Don't worry! There is a command to fix this.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;git pull&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git pull&lt;/code&gt; gives us the ability to fetch changes from another repository or local branch and integrate them with our local repository. Pretty neat, but this doesn't quite fix our problem. The next command does though! Let's check it out.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;git pull origin master&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;The command we need to use in order to update our local version of &lt;code&gt;master&lt;/code&gt; with our GitHub's remote version of &lt;code&gt;master&lt;/code&gt; is &lt;code&gt;git pull origin master&lt;/code&gt;. All we are doing here is adding an origin pointer that tells Git where we want to pull from. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7skkow4rfh919f1v6qkc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7skkow4rfh919f1v6qkc.png" alt="terminal screenshot of git pull origin master" width="390" height="91"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For this example, I was the only one working on the project so there is nothing to be pulled which is why I received the message "Already up to date." This would look different if this wasn't the case. &lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Phew! It probably feels like I just threw &lt;strong&gt;a lot&lt;/strong&gt; of new commands at you. Don't worry though! Even senior developers have to Google things from time to time, so don't feel bad if it doesn't stick right away. The more you use the commands, the faster they'll become second nature for you. &lt;/p&gt;

&lt;p&gt;Good luck with your journey and be on the lookout for future articles in this series! &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: The cover photo for this post is brought to you by one of my favorite places on earth: Twin Lakes in Mammoth Lakes, Ca.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Resources
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://dev.to/davedodea/git--commands-you-need-to-git-going-3mpg"&gt;Git-- commands you need to git going!&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/jeremy/6-git-commands-every-beginner-should-memorize-j26"&gt;6 Git commands every beginner should memorize&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/dhruv/essential-git-commands-every-developer-should-know-2fl"&gt;Essential git commands every developer should know&lt;/a&gt;&lt;br&gt;
&lt;a href="https://git-scm.com/docs/git-help" rel="noopener noreferrer"&gt;git-help&lt;/a&gt;&lt;br&gt;
&lt;a href="https://confluence.atlassian.com/bitbucketserver/basic-git-commands-776639767.html" rel="noopener noreferrer"&gt;Basic Git Commands&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>firstyearincode</category>
    </item>
  </channel>
</rss>
