<?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: Kim Hart</title>
    <description>The latest articles on DEV Community by Kim Hart (@kim_hart).</description>
    <link>https://dev.to/kim_hart</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%2F4975%2Fa8325583-2e96-4f77-a352-693ae638e871.JPG</url>
      <title>DEV Community: Kim Hart</title>
      <link>https://dev.to/kim_hart</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kim_hart"/>
    <language>en</language>
    <item>
      <title>How to Implement "dark mode" with Gatsby &amp; React Hooks</title>
      <dc:creator>Kim Hart</dc:creator>
      <pubDate>Thu, 01 Aug 2019 22:40:47 +0000</pubDate>
      <link>https://dev.to/kim_hart/how-to-implement-dark-mode-with-gatsby-react-hooks-k5a</link>
      <guid>https://dev.to/kim_hart/how-to-implement-dark-mode-with-gatsby-react-hooks-k5a</guid>
      <description>&lt;p&gt;I recently launched my &lt;a href="https://www.kimhart.nyc"&gt;new portfolio site&lt;/a&gt; and I have to say, I'm super proud! My old site was built on Wix years before I learned how to code and was in need of a major design update. &lt;/p&gt;

&lt;p&gt;I landed on &lt;a href="https://www.gatsbyjs.org/"&gt;Gatsby&lt;/a&gt; for my setup and &lt;a href="https://www.netlify.com/"&gt;Netlify&lt;/a&gt; for my deployment platform and guys, I cannot recommend each of them enough. But this post isn't about that!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why dark mode?
&lt;/h2&gt;

&lt;p&gt;Turns out, a lot of people like dark-themed internet things (just ask Twitter). I chose to implement &lt;strong&gt;toggleable sunrise and sunset themes&lt;/strong&gt; on my portfolio because it adds a level of interactivity to my otherwise static site, allowed me to play with more complex CSS, and it lets users customize their experience. It even persists through sessions via &lt;code&gt;localStorage&lt;/code&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  What'd I use?
&lt;/h2&gt;

&lt;p&gt;I considered building this myself until I found this tool called &lt;a href="https://github.com/donavon/use-dark-mode"&gt;use-dark-mode&lt;/a&gt;. In short, it's a custom React Hook that handles the storage part for you. Their docs are pretty great, but I'll walk you through my use case as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You must use &lt;code&gt;react@16.8.0&lt;/code&gt; or greater which includes Hooks&lt;/li&gt;
&lt;li&gt;This only works in &lt;strong&gt;functional components&lt;/strong&gt;, so if you're using older React class components with non-hook lifecycle methods, you may have a hard time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1. Install
&lt;/h3&gt;

&lt;p&gt;You'll install both &lt;code&gt;use-dark-mode&lt;/code&gt; and its Gatsby-specific plugin that helps with overall rendering of your themes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add use-dark-mode gatsby-plugin-use-dark-mode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Add to Gatsby config
&lt;/h3&gt;

&lt;p&gt;To prevent a flash of default-styled content on page load, add this block to your &lt;code&gt;gatsby-config.js&lt;/code&gt; file. (More in the &lt;a href="https://www.gatsbyjs.org/packages/gatsby-plugin-use-dark-mode/"&gt;docs&lt;/a&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;resolve:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gatsby-plugin-use-dark-mode"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;options:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="err"&gt;classNameDark:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dark-mode"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="err"&gt;classNameLight:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"light-mode"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="err"&gt;storageKey:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"darkMode"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="err"&gt;minify:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: you can name these classes whatever you like! I stuck with the defaults.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Add to React
&lt;/h3&gt;

&lt;p&gt;Here's a ultra-simplified version of my hero component. It contains two icon components (sunrise and sunset) that fire &lt;code&gt;handleTheme&lt;/code&gt; on click, which launch either &lt;code&gt;darkMode.enable()&lt;/code&gt; or &lt;code&gt;darkMode.disable()&lt;/code&gt; depending on their props.&lt;/p&gt;

&lt;p&gt;The goal here is to change to dark mode when you click sunset, and light mode when you click sunrise.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;useDarkMode&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;use-dark-mode&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Sunrise&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../components/icons/sunrise&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Sunset&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../components/icons/sunset&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Hero&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Instantiate with the default behavior, in this case, it defaults to light-mode&lt;/span&gt;
 &lt;span class="c1"&gt;// This places "light-mode" class on document.body, as outlined in my gatsby-config.js&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;darkMode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useDarkMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Custom function that handles the toggling&lt;/span&gt;
  &lt;span class="c1"&gt;// When called, it replaces the class on document.body and holds it in localStorage&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleTheme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dark&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;darkMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;enable&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;darkMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;disable&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"hero"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Sunrise&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleTheme&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Sunset&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleTheme&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Hero&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;The sunset and sunrise icon components are super similar, they just pass different values ("light" and "dark"). Here's a slimmed-down version of Sunset:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Sunset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// If the `onClick` prop exists, call it with 'dark'&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleClick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onClick&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dark&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"theme-toggle"&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleClick&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Note: you could also accomplish this with passing boolean values (i.e. "true" for dark, but I chose to keep it more readable and used strings)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CSS
&lt;/h2&gt;

&lt;p&gt;Now that we have the class on &lt;code&gt;document.body&lt;/code&gt; toggling between light-mode and dark-mode when we click the sunrise or sunset icons, we can adjust our CSS to reflect the changes.&lt;/p&gt;

&lt;p&gt;I used Less, which makes it super easy to apply rules based on parent values. Again, this is simplified, but hopefully you get the idea.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;.dark-mode &amp;amp;&lt;/code&gt; selector will look for anytime the &lt;code&gt;dark-mode&lt;/code&gt; class exists on a higher component (in this case, the &lt;code&gt;body&lt;/code&gt; tag). You can then apply whatever rules you need — in this case it's a variable for the background colors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;   &lt;span class="nc"&gt;.hero&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;sunrise-gradient&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nc"&gt;.dark-mode&lt;/span&gt; &lt;span class="k"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;sunset-gradient&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;... and that's it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;You don't have to completely recreate the wheel to implement dark mode in a Gatsby app. Hopefully this was helpful and I'm happy to answer any questions in the comments!&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>css</category>
      <category>showdev</category>
    </item>
    <item>
      <title>What Do You Look For in a Mentor?</title>
      <dc:creator>Kim Hart</dc:creator>
      <pubDate>Fri, 13 Jul 2018 01:35:14 +0000</pubDate>
      <link>https://dev.to/kim_hart/what-do-you-look-for-in-a-mentor-4ohb</link>
      <guid>https://dev.to/kim_hart/what-do-you-look-for-in-a-mentor-4ohb</guid>
      <description>&lt;p&gt;Front end engineer here, looking to make a positive impact on the growth of new devs 💪&lt;/p&gt;

&lt;p&gt;When you first started your programming journey — what are some of the concepts/workflows/teaching techniques that your first mentors really knocked out of the park, and why? &lt;/p&gt;

&lt;p&gt;If your experiences haven't been super positive, what would make the learning process easier and more enjoyable for you? What would you change about the industry to make it less intimidating and more empathetic?&lt;/p&gt;

&lt;p&gt;Let's hear it in the comments!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>discuss</category>
      <category>frontend</category>
      <category>mentorship</category>
    </item>
    <item>
      <title>5 Lessons My Bootcamp Didn't Teach Me</title>
      <dc:creator>Kim Hart</dc:creator>
      <pubDate>Sat, 01 Apr 2017 23:42:14 +0000</pubDate>
      <link>https://dev.to/kim_hart/5-lessons-my-bootcamp-didnt-teach-me</link>
      <guid>https://dev.to/kim_hart/5-lessons-my-bootcamp-didnt-teach-me</guid>
      <description>&lt;p&gt;As a career-changer, I can wholeheartedly say that I wouldn't have learned to code without going to General Assembly. They planned the curriculum, taught us the lingo, held us accountable, and gave us a support system of classmates, teachers, and TAs. They also sold us a shiny promise that we'd &lt;em&gt;easily&lt;/em&gt; land a $80k+ job with just four projects, a rewritten resume, and a can-do attitude. In hindsight, the last part seems ridiculous.&lt;/p&gt;

&lt;p&gt;I loved every second of my program, but it failed to prepare me for the reality of the job hunt post-grad. I can chalk a lot of the deficiency up to my own blind optimism and naivetÃ©, but this lack of direction is a major flaw in the bootcamp model. While my experience doesn't apply to &lt;em&gt;every&lt;/em&gt; bootcamp grad, it rings true for many of us and it needs to be addressed. &lt;/p&gt;

&lt;p&gt;Here are 5 practicalities I've learned in my first year in the trenches (that my bootcamp didn't teach me):&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Your first job as a developer should not be a solo gig.
&lt;/h3&gt;

&lt;p&gt;When I graduated, I had a new job lined up within 24 hours. I was one of the first in my cohort to do so, and I was pumped. &lt;em&gt;Holy shit, someone actually wants to pay me to do this!&lt;/em&gt; I got caught up in the excitement and failed to be selective in my search.&lt;/p&gt;

&lt;p&gt;This company hired me as their first front-end developer. ðŸš¨ &lt;strong&gt;DANGER&lt;/strong&gt; ðŸš¨ One thing became abundantly clear, and fast: "First developer" is often code for, "We have no idea what to do with you."&lt;/p&gt;

&lt;p&gt;After joining, my manager regularly called me by the wrong title (UX person?) and questioned my legitimacy because I said being a designer, a front-end dev and a backend dev were three &lt;em&gt;very&lt;/em&gt; different jobs, and I couldn't do them all. Their clients set impossible deadlines for my projects. They wouldn't grant me IT permissions to use the terminal, and eventually asked me to use my personal laptop instead. I left after 2 months.&lt;/p&gt;

&lt;p&gt;Jobs like this won't give you equipment, structure, or professional guidance. Being marooned on a non-technical island is not the best way to grow as a brand new developer. That being said...&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Don't take a job that doesn't require you to prove your skills up front.
&lt;/h3&gt;

&lt;p&gt;I left the previous company to pursue a full-stack role at a different organization where I was again, the solo dev, but with even less oversight. This time, I was hired by a non-technical team to work on internal projects without any clearcut deadlines, and they trusted my skills implicitly. &lt;em&gt;Cool! I have complete creative freedom&lt;/em&gt;, I thought. &lt;/p&gt;

&lt;p&gt;A few weeks in, I realized they didn't care about my skills because they had no way to measure them. Because no one monitored my work, my performance was never subjected to praise or constructive criticism. I can't stress this enough: it is &lt;strong&gt;so easy&lt;/strong&gt; to become complacent (and stagnant) in your skills if no one is around to challenge you.&lt;/p&gt;

&lt;p&gt;This type of environment can also make your job vulnerable, or even dispensable. If software isn't a priority for anyone else at the company, it's likely that your position could be one budget meeting away from being cut. This happened to me, and it seems ridiculous (&lt;em&gt;why did you even hire me?&lt;/em&gt;), but it's common in disorganized companies. Jobs like this are easy to land, and often hard to keep. &lt;/p&gt;

&lt;h3&gt;
  
  
  3. Technical interviews are no joke.
&lt;/h3&gt;

&lt;p&gt;Since parting ways with the last company, I launched into a 6-month stretch of code challenges and technical interviews. It turns out, proving yourself worthy of a "real" dev job is really hard – it requires practice, confidence, and adaptability. My career coach at GA insisted, rather, that a sparkling LinkedIn profile would be our best asset in this race, and he disregarded the rest of the process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro-tip: a well-worded LinkedIn does not make up for poor performance in a technical interview.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's a snapshot of some interview scenarios I encountered for junior/mid-level front end roles (some between 3-6 hours long):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solving riddles and writing game-like algorithms with my screen shared on a projector in a room full of engineers (Palindromes, Fibonacci, Tic-Tac-Toe, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://insights.dice.com/2016/07/13/tips-passing-pair-programming-test/"&gt;Pair programming&lt;/a&gt; to create a custom Sass animation with @keyframes&lt;/li&gt;
&lt;li&gt;Working with a designer to build a page using their chosen preprocessor (Slim) and the company's custom Sass style guide&lt;/li&gt;
&lt;li&gt;Racing through a timed, super-granular multiple choice syntax test&lt;/li&gt;
&lt;li&gt;Answering theoretical questions like, "What's the difference between cookies and local storage?", "How does JS event propagation work?", "How can you improve loading time?", and "List the pros &amp;amp; cons of each browser."&lt;/li&gt;
&lt;li&gt;Taking a handwritten test on fundamentals like, "What is a closure?", "How do you determine if a variable is an object?", "What does 45 + '17' evaluate to?", and, you guessed it, &lt;a href="https://www.forbes.com/sites/quora/2016/09/12/solving-fizzbuzz-shows-interviewers-much-more-than-your-programming-skills/#4c7746463b36"&gt;FizzBuzz&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While I found common themes in each challenge, the method changed each time, and GA failed to drill us on any of them. Take the preparation into your own hands. Read up on ways to &lt;a href="https://www.interviewcake.com/coding-interview-tips"&gt;stand out and pose thoughtful questions&lt;/a&gt; to your interviewers. Practice answering common questions with a friend. Try handwriting those riddle algorithms. Explain theoretical concepts &lt;em&gt;out loud&lt;/em&gt; – it's harder than you think. &lt;/p&gt;

&lt;h3&gt;
  
  
  4. Rejection is going to become a familiar feeling
&lt;/h3&gt;

&lt;p&gt;And it's not always your fault. Maybe your interviewer is having a bad day. Maybe they brought you in even though your skills don't completely align with the role. Maybe you're an "awesome culture fit", but they "went with a more experienced candidate". Maybe they said they want to hire you, but the budget for the role got yanked the next day. Maybe your recruiter just doesn't know wtf they're doing. I've been victim to all of this.&lt;/p&gt;

&lt;p&gt;But what about when the failure &lt;strong&gt;is&lt;/strong&gt; your fault? Technical interviews are highly intimidating – even very &lt;a href="https://medium.com/javascript-scene/tech-hiring-has-always-been-broken-heres-how-i-survived-it-for-decades-b7ac33088de6"&gt;skilled developers often fail them&lt;/a&gt;. Maybe you studied browser quirks and sorting algorithms all night just to get quizzed on CSS instead. Maybe you completely freeze under pressure. Maybe you rely too heavily on Google. Maybe you need to brush up on the CS fundamentals. I'm also guilty of &lt;strong&gt;all of this&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;If your experience is anything like mine, this trial-and-error process will cause a heaping sense of imposter syndrome. Every time I failed or a more experienced engineer outperformed me, I got a sinking feeling that I'd never be good enough. Even though I wrote code every day, listened to dev podcasts, went to networking events/meetups/conferences, read programming books, learned a few new libraries &amp;amp; frameworks, and built a handful of side projects, I still couldn't hack these interviews (pun intended). If you're doing all of these things and experiencing similar luck, keep at it. Stay immersed.&lt;/p&gt;

&lt;p&gt;Professional rejection is an awful feeling, but it is &lt;strong&gt;completely normal&lt;/strong&gt;. Know that you're getting wiser with each interview, and these failures rarely reflect on your overall potential or skill. Failing doesn't mean you're a bad developer –it means you need more practice, and the right fit has yet to come along. &lt;/p&gt;

&lt;p&gt;This industry is also competitive as hell. I often came across job postings that already had 400+ applicants by the time I found them. By the end of 6 months, I applied to 211 jobs. These numbers are intimidating, but keep in mind that if you're getting in the door at all, you're doing something right. Keep practicing.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Landing a great job is a marathon, not a sprint
&lt;/h3&gt;

&lt;p&gt;Bootcamps sell a short term solution for a long term goal. Students are told that they can abandon their careers, code for a few months, and come out the other end with an ROI comparable to that of a 4-year degree. The reality of that sentiment is still hotly debated.&lt;/p&gt;

&lt;p&gt;The pure short-term hustle and instant-gratification vibe of a bootcamp evokes a sense that an amazing job will just &lt;em&gt;appear&lt;/em&gt; when you graduate. In most cases, this couldn't be farther from the truth.&lt;/p&gt;

&lt;p&gt;I wish someone had told me that this goal would take a healthy dose of failure, serious self-awareness, a whole lot of tenacity, and most of all... &lt;em&gt;time&lt;/em&gt;. The transformation doesn't happen overnight.&lt;/p&gt;

&lt;p&gt;Bootcampers: we're known in this industry for being scrappy self-starters and fast learners – don't let that end when your job hunt begins. Keep grinding, be selective, and land a job where your professional growth is a priority.&lt;/p&gt;

&lt;p&gt;Bootcamps: let's get more practical in the career coaching arena, yes?&lt;/p&gt;

&lt;p&gt;*** 8 Month Edit *** &lt;br&gt;
I'm happy to report that by the time this post went live in April, I had just landed what's proven to be a highly creative, inclusive, technical role where I learn &amp;amp; grow every day. Just know that these jobs are out there – and a &lt;em&gt;really tough&lt;/em&gt; interview process is not always a reflection of your skills or potential as an engineer. Keep going! ðŸ™ŒðŸ¼&lt;/p&gt;

</description>
      <category>bootcamp</category>
      <category>frontend</category>
      <category>juniordevs</category>
    </item>
    <item>
      <title>Nevertheless, Kim Hart Coded</title>
      <dc:creator>Kim Hart</dc:creator>
      <pubDate>Mon, 06 Mar 2017 21:26:07 +0000</pubDate>
      <link>https://dev.to/kim_hart/nevertheless-kim-hart-coded</link>
      <guid>https://dev.to/kim_hart/nevertheless-kim-hart-coded</guid>
      <description>&lt;h2&gt;
  
  
  I began coding because...
&lt;/h2&gt;

&lt;p&gt;My marketing job had me feeling exhaustingly bored every day — it was tedious and my work didn't add much value to anyone's day. I hated answering the question, "So, what do you do?" I was craving something more challenging, more creative, more purposeful.&lt;/p&gt;

&lt;p&gt;Learning to code seemed like a borderline unattainable goal for a girl who majored in journalism and was traditionally unskilled at math. More than a handful of people told me it was going to be too hard for me as a "right-brained" artist-type. Despite the apparent mountain in front of me, I couldn't shake the gut feeling that I should try to climb it anyway.&lt;/p&gt;

&lt;p&gt;I started looking for inspiration in other female engineers who came from backgrounds other than computer science, and their stories were badass! I didn't want to waste any more of my career watching from the sidelines, so I quit my job, put myself in debt, and joined a boot camp. It was the best decision I've ever made.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm currently hacking on...
&lt;/h2&gt;

&lt;p&gt;I'm co-founding a political web app that helps you keep track of your Senators and Congresspeople (how they vote, how often they show up to work, what bills they introduce, etc.) Eventually, we'll be able to tell you how well your ideologies match your reps' voting patterns. I'm building the front end with React, Relay, GraphQL and Node.js. Our API is built with Python and SQL, so it's been a huge learning experience all around.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm excited about...
&lt;/h2&gt;

&lt;p&gt;Diving into different types of study material! I recently started checking out development books to get a better grasp on programming fundamentals. I'm currently reading &lt;em&gt;Eloquent JavaScript&lt;/em&gt; by Marijn Haverbeke (highly recommend).&lt;/p&gt;

&lt;p&gt;I've also become an advocate for tech podcasts recently. For my fellow front end devs, I recommend &lt;a href="http://frontendhappyhour.com/"&gt;Front End Happy Hour&lt;/a&gt; — it's hosted by a really cool group of (male &amp;amp; female!) engineers from LinkedIn, Netflix and other power companies.&lt;/p&gt;

&lt;h2&gt;
  
  
  My advice for other women who code is...
&lt;/h2&gt;

&lt;h4&gt;
  
  
  For those just starting to learn:
&lt;/h4&gt;

&lt;p&gt;Try not to let imposter syndrome get you down. Even if you're brand new and haven't touched GitHub or a text editor yet, don't let intimidation get the best of you. The learning curve is steep and everyone feels overwhelmed at some point. The fact that you've chosen to pursue this field means that you're tough, both intellectually and emotionally. Seek out mentorships and events through &lt;a href="https://www.womenwhocode.com/"&gt;WomenWhoCode&lt;/a&gt; or &lt;a href="https://girlswhocode.com/"&gt;GirlsWhoCode&lt;/a&gt;. Don't let anyone talk down to you, men or otherwise. You have good ideas, so speak with conviction. Don't be afraid to ask for help. Last but not least, build things that make you happy.&lt;/p&gt;

&lt;h4&gt;
  
  
  For the established engineers:
&lt;/h4&gt;

&lt;p&gt;Y'all are awesome! Keep kicking ass, breaking glass ceilings, and practicing empathy with devs who are less experienced than you are. Your guidance (even via Twitter/Stack Overflow/forums) is more appreciated than you realize.&lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
  </channel>
</rss>
