<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ careers - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ careers - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 24 May 2026 16:31:05 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/careers/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Use LinkedIn to Get Your First Developer Job – A Step-by-Step Guide ]]>
                </title>
                <description>
                    <![CDATA[ By Kenny Rogers LinkedIn is sort of a love-it-or-hate-it kind of platform. Some people love it for the opportunities it provides and the ease with which it facilitates professional connections. Other people hate it because it often seems like it has ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/linkedin-handbook-get-your-first-dev-job/</link>
                <guid isPermaLink="false">66d45f6a052ad259f07e4b08</guid>
                
                    <category>
                        <![CDATA[ beginners guide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Junior developer  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ LinkedIn ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 17 Feb 2021 23:42:29 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/02/FCC-Article-Cover.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Kenny Rogers</p>
<p>LinkedIn is sort of a love-it-or-hate-it kind of platform.</p>
<p>Some people love it for the opportunities it provides and the ease with which it facilitates professional connections.</p>
<p>Other people hate it because it often seems like it has a veneer of genuine connection while the substance is mostly self-serving networking.</p>
<p>In reality, both of these extremes have a degree of truth to them.</p>
<p>LinkedIn is not a magical solution where you can create an account and instantly be discovered by hundreds of companies eager to throw money at you.</p>
<p>But it is also not the cesspool of recruiters and fake networkers sending out spammy connection requests all day.</p>
<p>Despite what you might think about the platform, the reality is that, when used correctly, LinkedIn provides an excellent opportunity for you to stand out, get noticed, and get hired, even if you don't have professional experience.</p>
<p>The key lies in the <em>when used correctly</em> part of that sentence.</p>
<p>So today we're going to go through some strategies that you can can use to leverage LinkedIn to get you that crucial first job.</p>
<p>We'll cover both profile setup and connection/networking strategies. These will help you increase your visibility to recruiters and employers searching for developers, and start to form relationships with people in the industry who can bring you valuable opportunities.</p>
<p>I love examples, so I'm going to walk you through this using an example as if I was a new React developer trying to get my first job.</p>
<p>You can follow along using your specific situation and goals.</p>
<h2 id="heading-how-to-set-up-your-linkedin-profile">How to Set Up your LinkedIn Profile</h2>
<p>The main goal with setting up your profile in LinkedIn is to make it easier for the right people to find you, mainly recruiters and employers.</p>
<p>Recruiters are not the only people scouring LinkedIn for good candidates. Small agencies and other small companies that may not have the resources for a recruiter also use LinkedIn in order to find good talent.</p>
<p>We want to be visible to both groups of people here, so when they are searching for someone matching your skillset they find you.</p>
<p>Let's go through each component of a strong LinkedIn profile.</p>
<h3 id="heading-use-the-right-keywords">Use the Right Keywords</h3>
<p>It all starts with the keywords. Your keywords are how you are going to structure the content of your profile. We'll include these keywords in relevant parts of your profile where it makes sense. But we'll make sure to maintain readability so you don't sound like a robot and still appeal to the humans actually looking at your profile.</p>
<p>Some keywords I might want to include might be React, GraphQL, and Node if I'm going for a full-stack JS developer position.</p>
<p>I like to go more specific and put the specific technologies I am learning and want to work with, rather than going too broad, like JavaScript.</p>
<p>At the same time, there's a balance here. You can also go too narrow and put things that not a lot of people are going to be searching for.</p>
<p>An example of something too narrow might be Next, Firebase, and Tailwind. Those are very specific technologies and the likelihood of someone searching specifically for those is less than React.</p>
<p>But, somebody who knows React and can demonstrate some basic proficiency in a few different stacks based in React will be appealing to someone even if the specific stack they are using differs from your specific stack.</p>
<p>The main thing we want to communicate here is that you have knowledge using certain technologies you want to work in while communicating the fact that you are capable of learning others.</p>
<p>For this example I'm going to go with React, GraphQL, and Node as my keywords.</p>
<h3 id="heading-compose-your-intro">Compose Your Intro</h3>
<p>The intro portion of your profile is comprised of your photo, headline, banner image, name, location, and your URL.</p>
<p>It forms the first impression people will get of you and your profile, so it's important to get it right. Let's go through each component of the intro section one at a time.</p>
<p>First, the big three.</p>
<p>These first three components are what will show up anytime you interact with anyone on LinkedIn or show up in someone's feed.</p>
<p>They are the only parts that people will see even if they don't click through to your profile, so make them count.</p>
<h4 id="heading-your-name">Your Name</h4>
<p>Pretty self-explanatory. Use your real first and last name. Nicknames are fine, as long as that is what you would go by if you were to get hired somewhere.</p>
<p>Keep it consistent across all your profiles and your website if possible, as this strengthens the branding aspect of your online presence.</p>
<p>Example: My name is Kenneth Rogers but my LinkedIn says Ken Rogers because that is usually what I go by, and that's what I go by on all my social media profiles.</p>
<h4 id="heading-profile-photo">Profile Photo</h4>
<p>Your profile photo is an important part of your profile.</p>
<p>There's some disagreement about whether or not you should have a photo of yourself in your social media profiles.</p>
<p>Some people think it can cause unnecessary unconscious bias in people who look at your profile.</p>
<p>While this may be true, let's look at the alternative.</p>
<p>Whether we like it or not, having an empty spot where you profile photo gives the look of incompleteness.</p>
<p>So the unconscious bias is unavoidable. It's part of the process, whether we like it or not.</p>
<p>I think having a high-quality photo is a much better decision that leaving it empty or using something that is not actually you.</p>
<p>For the photo, the basics apply.</p>
<p>Clear, high-quality headshot, preferably smiling, with a neutral background that is not distracting.</p>
<p>If you are able to do so, hire a professional, but I realize not everyone can do that.</p>
<p>Luckily smartphones have amazing capabilities these days. By asking a friend who knows what they are doing or by learning a bit about phone photography yourself, you can take a great picture that gives a good first impression.</p>
<p>Make it so that if someone met you in person after looking at your profile, they would easily recognize you. No pets or family, just a clear headshot of you.</p>
<h4 id="heading-headline">Headline</h4>
<p>The headline is one of the most important pieces of your LinkedIn profile.</p>
<p>Even though it's short, it has a high impact on your search visibility and on whether or not somebody will click through to learn more about you.</p>
<p>So what makes a good headline? It needs to appeal to both human readers and the LinkedIn search engine at the same time.</p>
<p>That means it needs to be clear and concise in communicating exactly what it is you do (or want to do).    </p>
<p>One thing I do not recommend doing is putting words like "Junior", "Aspiring", or "Student", in your profile.</p>
<p>If you currently create things using code, you are currently a developer, you just may not have an official job title.</p>
<p>Get rid of any language that says you are not currently a developer. It's not about lying, we're not going to fake any experience you don't actually have.</p>
<p>It's about having confidence in your abilities and yourself to call yourself what you are, a developer: someone who creates things with code.</p>
<p>Your headline should include your specialty (what you want to work in) and your unique value proposition (what you specifically bring to the table).</p>
<p>The first part is pretty self-explanatory, but how can you have a unique value proposition as a brand new developer?</p>
<p>This can be as simple as what you want your specialty to be or unique things you have accomplished with past projects.</p>
<p>Do you have an interest in accessibility and did you build a project that incorporates accessibility? That's a recipe for a compelling headline that helps you stand out.</p>
<p>Something like, "React developer building highly-accessible web applications."</p>
<p>We've got one of our keywords in there, potentially two if you identified accessibility as a keyword, and it clearly communicates the value you bring to the table for companies.</p>
<p>For my profile, I'll go with "Building excellent user experiences in React and GraphQL".</p>
<p>I want to be a React developer and I have a passion for crafting excellent user experiences.</p>
<p>For you, this might be clean code, well-tested code, and so on.</p>
<p>Choose something that you uniquely focus on that adds value to organizations.</p>
<p>This doesn't have to be technical, either. If you come from a background that utilized other soft skills that are relevant to development, integrate that in there.</p>
<p>Let's say you used to work in customer service, so communication is one of your strong skills.</p>
<p>You might make your headline "Building React applications that effectively solve client problems" because your communication skills allow you to ensure that you are clear on the client needs and the tools you build accomplish that task well.</p>
<p>Something to decide here is which part of your headline you want at the beginning. Only the first 65 to 80 characters will be shown in search results and content feeds depending on if you are on mobile or desktop.</p>
<p>So you need to decide which aspect of your work is more important and put that first.</p>
<h4 id="heading-banner-image">Banner Image</h4>
<p>Customizing your banner image is another one of those little details that communicates that you took the time to customize your profile and really care about how it looks.</p>
<p>There are two options for your banner image.</p>
<p>If you can find a stock photo or a photo you took that communicates something about you, you can use that.</p>
<p>For example, I live in Colorado and love the mountains, so I might choose a mountain photo.</p>
<p>It does not necessarily have to communicate something professional about you, but it shouldn't be generic.</p>
<p>For example, don't use a picture of a computer with code on it, since that doesn't do anything to differentiate you from other new developers.</p>
<p>The other option is to create your own banner image that communicates your career goals.</p>
<p>Lots of consultants do this, and I have something similar on mine.</p>
<p>You can do this using Canva or hire someone on Fiverr.</p>
<p>Some things you could put on the banner:</p>
<ul>
<li>Icons of the tech you work with</li>
<li>Another picture of you with an overlay and some text describing what you can bring to the table</li>
</ul>
<p>Here are a few examples of this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-96.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Here Justin highlights his primary professional driver and lists his website.</p>
<p>This is a great example if you have a specific mission that drives you to code.</p>
<p>As you can see, the banner image doesn't have to be fancy or complicated, simpler is usually better.</p>
<p>Here's what mine looks like:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-98.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Personally, I would go with this second style of banner, where you have some text describing what you do, over the first. It gives more clarity on you as a person. </p>
<p>Although if you are having trouble coming up with something like this, a beautiful picture that still communicates something about you is better than the default.</p>
<h4 id="heading-url">URL</h4>
<p>Customizing your URL is one of those little details that takes 10 seconds but adds that little bit of polish to your profile.</p>
<p>Change your URL to some form of your first and last name. You can also add in initials and other forms of your name if necessary.</p>
<p>For example, I usually go by Ken Rogers or Kenny Rogers, but those were both taken so my URL is https://linkedin.com/in/kennetharogers, which uses both my full first name and my middle initial.</p>
<h3 id="heading-summary">Summary</h3>
<p>Opinions vary on the best length for a summary, but I am personally inclined to recommend shorter summaries.</p>
<p>One thing I've noticed is that people feel like they need to include their entire life story in their summary or in places like their portfolio site about page.</p>
<p>Think about your online profiles like online writing.</p>
<p>In writing, the only goal of the headline or introduction is to get the reader to read the next line.</p>
<p>Your goal with your LinkedIn headline and summary is not to get hired, it's to get the person viewing your profile interested enough to just take the next step. That might be sending you a DM on LinkedIn, sending you an email, or visiting your portfolio site.</p>
<p>This job hunt process should be viewed in this step-by-step manner. It helps keep you focused on what each component is best used for and avoids overwhelming people with too much information too soon.</p>
<p>So how can we apply that to your summary?</p>
<p>You want to hook the reader in on the first two lines of the summary, since LinkedIn requires you to hit the "Show More" button in order to view beyond that.</p>
<p>To make this a bit easier to write, I like to use the following structure:</p>
<ul>
<li>Hook</li>
<li>Mission</li>
<li>Expertise</li>
<li>Proof</li>
<li>CTA</li>
</ul>
<p>In the hook, you want to use something unique and interesting about you and open up a loop that can only be closed by reading further. This is how you'll get the reader to read your entire summary.</p>
<p>I like to integrate something from my background and why I got into coding here. You can also hint at something that happened to you during that process that gets explained later in the summary.</p>
<p>So if I was doing this for my example, I might write something like this:</p>
<p>"It was many late nights spent coding after driving a forklift all day before I built my first web app. But when I did, I learned something unexpected about myself."</p>
<p>This captures the reader's attention by showing that I am motivated to learn and dedicated to doing so, briefly mentions I've built something from start to finish, and hints that I learned something, which we'll continue explaining in the mission section.</p>
<p>"I learned why I truly love to code. That particular app was built to solve a small problem I had in my life, consistent journaling, and by completing it I realized the immense satisfaction I get from building something real, that makes someone's life easier, using nothing but code and my own effort."</p>
<p>Now we're starting to get into why I actually code. This is more important than people realize. Hiring, as much as some companies try to make it, is not an automated, robotic process.</p>
<p>It's people who will be looking at your profile, reaching out to you, and hiring you. You need to connect on a personal level in order to catch someone's attention.</p>
<p>Now let's dive into our expertise by moving into talking about how we actually accomplish the "what" and "why" listed above.</p>
<p>This is another spot you'll want to use those keywords you chose earlier. In this example, I chose React, GraphQL, and Node. With that in mind, here's how I might write this section of my summary.</p>
<p>"I'm obsessed with solving complex problems using React, GraphQL, and Node by building web applications with an emphasis and accessibility and usability."</p>
<p>Anyone can say these things, you also need to back it up with proof. That means you need to have a built a complete project or two using the exact tools and concepts you discuss in this section.</p>
<p>We'll go into that in just a second, first let's round out this section with a clear CTA so readers know what we are looking for.</p>
<p>"I'm currently looking to contribute my skills to a team where I can prove my skills while growing in my capabilities. If you are looking for a competent, highly-motivated developer, let's chat. You can reach me at email@example.com or by DMing me here on LinkedIn."</p>
<p>This gives people a clear action to take and shows them exactly what you are looking for.</p>
<p>Now, on to that proof we were talking about.</p>
<p>Rather than just listing it out here, I like to include links that link to a project or two, and maybe a piece of writing that showcases the attributes you've written about here.</p>
<p>You can utilize the "Featured" section for that.</p>
<h3 id="heading-featured">Featured</h3>
<p>The featured section is simple but very powerful.</p>
<p>What I recommend doing here is linking to a project or two that lines up with the skills and attributes you listed in your summary, and maybe a piece of writing or two that does the same.</p>
<p>For the projects, don't just link to a live version of the project or a GitHub page. You should have a dedicated page on your portfolio site that walks readers through how and why you built the project.</p>
<p>Building a portfolio site is outside the scope of this guide, but I highly recommend reading Josh Comeau's <a target="_blank" href="https://www.joshwcomeau.com/effective-portfolio/">book on building great portfolio sites</a>.</p>
<h3 id="heading-experience">Experience</h3>
<p>What can you put in the experience section when you don't have any experience?</p>
<p>There is almost always relevant experience that can be used even if your other jobs were in another field.</p>
<p>Learning how to communicate they ways in which your soft skills learned in other fields are relevant to web development is going to be critical here.</p>
<p>What I recommend doing is looking at this <a target="_blank" href="https://epicassist.org/the-10-soft-skills-employers-value-the-most/">list of skills</a> that virtually every employer values. Then see which of those you had to utilize in your previous jobs and how that translates to being a good developer.</p>
<p>Be sure to list any specific accomplishments and awards you received as well as concrete examples of demonstrating those skills.</p>
<p>For example, I used to be a server and drove a forklift before I became a developer.</p>
<p>A couple of skills from that list that I had to use quite often were communication and adaptability.</p>
<p>So let's see how I could integrate that into my experience.</p>
<p>I might write something like this in my server experience section:</p>
<p>"Simultaneously served multiple tables while ensuring their orders were correct and guests were satisfied. Adapted to changing demands by performing multiple duties such as hosting and bussing as restaurant traffic increased and decreased throughout multiple shifts."</p>
<p>This is a simple example, but it communicates that I am able to handle multiple responsibilities while maintaining good communication and customer service, and that I am adaptable and willing to help out the team even if it means doing a job that is not necessarily my primary function.</p>
<p>One mistake I see a lot of people make is just stating that they have certain skills instead of showing it with examples. This is one way to do that.</p>
<p>If you have done any freelance work, you can also put that here as relevant work experience if you did it under a company name, or even your own name.</p>
<p>Make sure to focus on results delivered to clients or employers. If you can, list specific things you accomplished and how that contributed value to the organization or person you worked for.</p>
<h3 id="heading-education">Education</h3>
<p>If you have formal education or a bootcamp under your belt, you can put that here.</p>
<p>Besides that, put any course work you've completed here. Things like Udemy courses or freeCodeCamp curriculum certificates should be included here as well. Any structured training program or course you've taken should be included in the Education section.</p>
<h3 id="heading-skills">Skills</h3>
<p>For your skills, I recommend choosing the top three based on the keywords you've chosen. These top three are the most crucial and will be used to filter your profile.</p>
<p>As for the rest, my preferred rule of thumb is to include any skills you have used to build a complete project.</p>
<p>Don't list every piece of tech you've ever touched here, as that is a subtle hint to employers and recruiters that you are desperate to get whatever job you can. And it's virtually impossible for someone to be proficient in that many things.</p>
<h3 id="heading-recommendations">Recommendations</h3>
<p>If you can get them, recommendations are great. Try to get recommendations from people you have worked for in the past.</p>
<p>These aren't required as getting them depends on external factors, but get one or two if you are able to.</p>
<h2 id="heading-how-to-amplify-your-reach-on-linkedin">How to Amplify Your Reach on LinkedIn</h2>
<p>You've got your profile nailed down, now it's time to get it in front of people.</p>
<p>The other half of LinkedIn is using it properly in order to meet the right kind of people and get on their radar as someone who will be a valuable addition to their organization.</p>
<p>You have the foundation in place in your properly created profile, now you need to get it in front of as many eyes as possible.</p>
<p>You've optimized your profile to take advantage of LinkedIn's search functionality, but you don't only want to be passive in this process.</p>
<p>You also want to be active in getting in front of the right eyes.</p>
<p>This isn't going to be some awkward process. We'll mostly just be connecting with people and posting content.</p>
<p>You won't have to send any DMs or try to sell yourself on LinkedIn.</p>
<p>This is a two-part process:</p>
<ol>
<li>Connecting with people</li>
<li>Writing compelling content</li>
</ol>
<h3 id="heading-how-to-connect-with-people-on-linkedin">How to Connect with People on LinkedIn</h3>
<p>Let's talk about connecting with people first.</p>
<p>You want to be intentional about the people you are connecting with. The best way to do that is to connect vertically.</p>
<p>Most people focus a good chunk of their networking on horizontal connections. This means that they connect with people at the same level as they are.</p>
<p>There's nothing wrong with this, and I'm not saying you shouldn't do that. But your effort is better spent on people who are either in a position you want to be in, or are in a position that hires people like you.</p>
<p>So a good place to start is to start looking up companies you admire and would want to work for, and start connecting with employees at that company, people that currently do what you want to do, and people in charge of hiring at that company.</p>
<p>As you do this, LinkedIn will start to suggest relevant people to connect with, making this process a lot easier and faster.</p>
<p>I have conflicting feelings on connection request messages. On one hand, I understand the value of customized messages, but on the other, I actually tend to see better acceptance rates with the default message. So I don't write custom messages anymore.</p>
<p>This is something you'll want to experiment with for yourself.</p>
<p>Try both and see what works better for you. For your custom messages, keep it simple and say you are a new developer looking to connect with other people in the industry.</p>
<p>That's it. You don't need to send a personal DM or try to form a friendship with them now. You're just trying to grow your network and increase your visibility. The long-term connection is going to come in the form of creating valuable, interesting content.</p>
<h3 id="heading-how-to-write-good-content-and-share-it-on-linkedin">How to Write Good Content and Share it on LinkedIn</h3>
<p>So how do you write engaging content on LinkedIn that makes people want to learn more about you?</p>
<p>My favorite method is to be working on a project, and write about what I'm learning during your process But – and this is an important distinction – write about it from the perspective of a teacher/authority.</p>
<p>What I mean by this is that instead of writing "I learned this today" write "Here's how to do this."</p>
<p>And LinkedIn is better for high-level, conceptual types of content rather than overly technical types.</p>
<p>So write about the high-level lessons you are learning, rather than the technical things themselves.</p>
<p>So let's say I was working on a project using Gatsby and after a bit of struggle, I figured out how to turn it into a PWA without following a tutorial, just the docs.</p>
<p>I might write a post along these lines:</p>
<blockquote>
<p>"Today I managed to accomplish turning my Gatsby site into a Progressive Web App without following a tutorial.  </p>
<p>Tutorials and courses are great, but the real learning occurs when we struggle through implementing a solution on our own, dealing with the inevitable bugs and setbacks along the way.  </p>
<p>Whenever you're slogging through a problem and struggling to come up with a solution, know that struggle is your brain adapting to a new situation and learning.  </p>
<p>This is where real growth happens."</p>
</blockquote>
<p>You want your content to communicate the fact that you are learning every time you build something, and that you are constantly on a journey of discovering the best ways to be a developer, and share those insights with others.</p>
<p>This gives people a great insight into how your mind works and what kind of a developer you will be.</p>
<p>By consistently creating content like this and getting it in front of the intentional connections you've been making, you can start to build a profile for yourself that will help you stand out among other new developers.</p>
<p>Slowly, you'll start to have people reaching out to you who are interested in hiring you. And then when you start to see job openings show up for these companies, you will already be on their radar as someone who is competent.</p>
<p>The key to coming up with great content is to learn to see inspiration everywhere. As you are browsing Twitter, working on projects, reading articles, listening to podcasts, and so on, start writing down content inspiration and ideas you have.</p>
<p>Then, set aside some time every week to write your content for the week and try to post a new piece of content every day.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>By following these steps you will drastically increase your chances of being found on LinkedIn and building new relationships with people in the industry.</p>
<p>It's not a magic bullet, but it is one piece of a strong job-hunting strategy and an important piece of the puzzle when hunting for that first job, which can be very challenging.</p>
<p>For the rest of the roadmap, <a target="_blank" href="https://lever.so">Lever.so</a> can help. It's a step-by-step course and mentoring community designed to help new developers land their first jobs, regardless of experience or education.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Problem Solving Patterns for Technical Interviews: the Frequency Counter Pattern Explained ]]>
                </title>
                <description>
                    <![CDATA[ By Martin Cartledge In my last article, I shared my thoughts on how to prepare for a software developer interview.  In this article, I am going to switch gears a bit and talk about common patterns you can use to solve problems in technical interviews... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/solve-technical-interview-questions-using-frequency-counter/</link>
                <guid isPermaLink="false">66d4601a51f567b42d9f8493</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviews ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 18 Dec 2020 21:48:23 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/12/beach.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Martin Cartledge</p>
<p>In my last article, I shared my thoughts on how to <a target="_blank" href="https://www.martincartledge.io/prepare-for-software-developer-interview/">prepare for a software developer interview</a>. </p>
<p>In this article, I am going to switch gears a bit and talk about common patterns you can use to solve problems in technical interviews. We'll discuss the <em>frequency counter</em> pattern in depth to help you tackle it effectively.</p>
<h2 id="heading-what-is-the-frequency-counter-pattern">What is the “Frequency Counter” pattern?</h2>
<p>The Frequency Counter pattern uses an object or set to collect values and the frequency of those values.</p>
<p>This pattern is often used with an <code>array</code> or a <code>string</code>, and allows you to avoid nested loops (quadratic time complexity <code>O(n²)</code>).</p>
<h2 id="heading-when-should-i-use-the-frequency-counter-pattern">When should I use the Frequency Counter pattern?</h2>
<p>The Frequency Counter pattern is most helpful when you have multiple pieces of data that you want to compare with one another. Let me walk you through an example to see the Frequency Counter in action.</p>
<h2 id="heading-the-samesquared-exercise">The "sameSquared" exercise</h2>
<ul>
<li>Write a function called <code>sameSquared</code> which accepts two arrays</li>
<li>The function should return <code>true</code> if <em>every</em> value in the first array has its corresponding value squared in the second array</li>
<li>The frequency of the values must be the same</li>
</ul>
<h3 id="heading-what-is-the-optimal-outcome">What is the optimal outcome?</h3>
<p>After our function is written, we should expect our <code>sameSquared</code> function to return these values.</p>
<p><code>sameSquared([1, 2, 3], [4, 1, 9]); _// true_</code></p>
<p><code>sameSquared([1, 2, 3], [1, 9]); _// false_</code></p>
<p><code>sameSquared([1, 2, 1], [4, 4, 1]); _// false_</code></p>
<p><code>sameSquared([2, 3, 6, 8, 8], [64, 36, 4, 9, 64]); _// true_</code></p>
<h3 id="heading-getting-started">Getting started</h3>
<p>First, using the <code>function</code> keyword, we create a function with the identifier <code>sameSquared</code>:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sameSquared</span>(<span class="hljs-params"></span>) </span>{
</code></pre>
<p>Our function <code>sameSquared</code> needs two parameters, a first array and a second array. In this example, we are passing these values <code>[1, 2, 3]</code> and <code>[4, 1, 9]</code>.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sameSquared</span>(<span class="hljs-params">firstArr, secondArr</span>) </span>{
</code></pre>
<h3 id="heading-check-edge-cases">Check edge cases</h3>
<p>Inside of our function block, we want to address a few edge cases. First, we need to check that both parameters have truthy values, that is <em>not</em> <code>null</code>, <code>undefined</code>, and so on. </p>
<p>We can check for a falsy value by using the <code>!</code> operator. If <code>firstArr</code> or <code>secondArr</code> is falsy, we return <code>false</code>.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sameSquared</span>(<span class="hljs-params">firstArr, secondArr</span>) </span>{
  <span class="hljs-keyword">if</span> (!firstArr || !secondArr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
</code></pre>
<p>The next edge case we want to account for is to ensure that the length of both arrays are the same. If they are different, we know that they can <em>not</em> contain an equal amount of shared values.</p>
<p>By checking the <code>length</code> property on both parameters, we can determine if they are the same. If they are not, we return <code>false</code>.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sameSquared</span>(<span class="hljs-params">firstArr, secondArr</span>) </span>{
  <span class="hljs-keyword">if</span> (!firstArr || !secondArr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
  <span class="hljs-keyword">if</span> (firstArr.length !== secondArr.length) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
</code></pre>
<h3 id="heading-build-a-dictionary-to-avoid-nested-loops">Build a "dictionary" to avoid nested loops</h3>
<p>We need to keep track of all values in at least one of the arrays. To do this, and to avoid a nested loop, we can store these values in a hash table (object). I’ll call mine <code>lookup</code>.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sameSquared</span>(<span class="hljs-params">firstArr, secondArr</span>) </span>{
  <span class="hljs-keyword">if</span> (!firstArr || !secondArr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
  <span class="hljs-keyword">if</span> (firstArr.length !== secondArr.length) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;

  <span class="hljs-keyword">const</span> lookup = {};
</code></pre>
<p>Using a <code>for of</code> loop, we iterate through the <code>firstArr</code>. Inside of the <code>for of</code> block, we assign the key to the result of <code>value * value</code>.</p>
<p>The value in this key/value pair will be a <em>frequency counter</em> that reflects how many times a specific value is “seen” in the <code>firstArr</code>.</p>
<p>First, we check if <code>lookup</code> contains an entry for <code>value * value</code>, if it does, we add <code>1</code> to it. If it does not, we assign the value to <code>0</code> and then add <code>1</code>.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sameSquared</span>(<span class="hljs-params">firstArr, secondArr</span>) </span>{
  <span class="hljs-keyword">if</span> (!firstArr || !secondArr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
  <span class="hljs-keyword">if</span> (firstArr.length !== secondArr.length) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;

  <span class="hljs-keyword">const</span> lookup = {};

  <span class="hljs-keyword">for</span> (value <span class="hljs-keyword">of</span> firstArr) {
    lookup[value * value] = (lookup[value * value] || <span class="hljs-number">0</span>) + <span class="hljs-number">1</span>;
  }
</code></pre>
<p>Once the <code>firstArr</code> is finished looping, the <code>lookup</code> should contain these values:</p>
<pre><code class="lang-javascript">{
  <span class="hljs-number">1</span>: <span class="hljs-number">1</span>,
  <span class="hljs-number">4</span>: <span class="hljs-number">1</span>,
  <span class="hljs-number">9</span>: <span class="hljs-number">1</span>
}
</code></pre>
<h3 id="heading-compare-array-values">Compare array values</h3>
<p>Now that we have iterated through all of the values in the <code>firstArr</code> and stored them as their respective <em>squared</em> value, we want to compare those values to the values in the <code>secondArr</code>.</p>
<p>We start by creating another <code>for of</code> loop. On the first line inside of our new <code>for of</code> block, we write a conditional statement to check if the current value from our <code>secondArr</code> is <em>not</em> inside of our <code>lookup</code>. If it is not, we stop looping and return <code>false</code>.</p>
<p>If the value from the <code>secondArr</code> is in our <code>lookup</code>, we want to decrement the value of that entry. We can do so by using the <code>-=</code> assignment operator.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sameSquared</span>(<span class="hljs-params">firstArr, secondArr</span>) </span>{
  <span class="hljs-keyword">if</span> (!firstArr || !secondArr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
  <span class="hljs-keyword">if</span> (firstArr.length !== secondArr.length) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;

  <span class="hljs-keyword">const</span> lookup = {};
  <span class="hljs-keyword">for</span> (value <span class="hljs-keyword">of</span> firstArr) {
    lookup[value * value] = (lookup[value * value] || <span class="hljs-number">0</span>) + <span class="hljs-number">1</span>;
  }
  <span class="hljs-keyword">for</span> (secondValue <span class="hljs-keyword">of</span> secondArr) {
    <span class="hljs-keyword">if</span> (!lookup[secondValue]) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
      lookup[secondValue] -= <span class="hljs-number">1</span>;
    }
</code></pre>
<p>After we are finished looping through the <code>secondArr</code>, our <code>lookup</code> should have these values:</p>
<pre><code class="lang-javascript">{
  <span class="hljs-number">1</span>: <span class="hljs-number">0</span>,
  <span class="hljs-number">4</span>: <span class="hljs-number">0</span>,
  <span class="hljs-number">9</span>: <span class="hljs-number">0</span>
}
</code></pre>
<h3 id="heading-wrapping-up-our-samesquared-function">Wrapping up our "sameSquared" function</h3>
<p>If we finish iterating through the <code>secondArr</code> without returning <code>false</code>, that means that our <code>firstArr</code> contains all values that are in a squared state in the <code>secondArr</code>. Therefore, we return <code>true</code> outside of <code>for of</code> loop.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sameSquared</span>(<span class="hljs-params">firstArr, secondArr</span>) </span>{
  <span class="hljs-keyword">if</span> (!firstArr || !secondArr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
  <span class="hljs-keyword">if</span> (firstArr.length !== secondArr.length) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;

  <span class="hljs-keyword">const</span> lookup = {};
  <span class="hljs-keyword">for</span> (value <span class="hljs-keyword">of</span> firstArr) {
    lookup[value * value] = (lookup[value * value] || <span class="hljs-number">0</span>) + <span class="hljs-number">1</span>;
  }
  <span class="hljs-keyword">for</span> (secondValue <span class="hljs-keyword">of</span> secondArr) {
    <span class="hljs-keyword">if</span> (!lookup[secondValue]) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
    lookup[secondValue] -= <span class="hljs-number">1</span>;
  }
  <span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
}
</code></pre>
<p>Let me show you another example which is used very commonly in coding assessments (so you might’ve seen this problem before).</p>
<h2 id="heading-the-isanagram-exercise">The "isAnagram" exercise</h2>
<ul>
<li>Write a function called <code>isAnagram</code> which accepts two strings</li>
<li>The function should return <code>true</code> if the two strings parameters are <a target="_blank" href="https://en.wikipedia.org/wiki/Anagram">anagrams</a> of each other</li>
</ul>
<h3 id="heading-what-is-the-optimal-outcome-1">What is the optimal outcome?</h3>
<p>After our function is written, we should expect our <code>isAnagram</code> function to return these values.</p>
<p><code>isAnagram(“silent”, “listen”); _// true_</code></p>
<p><code>isAnagram(“martin”, “nitram”); _// true_</code></p>
<p><code>isAnagram(“cat”, “tag”); _// false_</code></p>
<p><code>isAnagram(“rat”, “tar”); _// true_</code></p>
<h3 id="heading-getting-started-1">Getting started</h3>
<p>First, using the <code>function</code> keyword, we create a function with the identifier <code>isAnagram</code>:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">isAnagram</span>(<span class="hljs-params"></span>) </span>{
</code></pre>
<p>Our function <code>isAnagram</code> needs two parameters, a first <code>string</code> and a second <code>string</code>. In this example, we are passing these value, <code>silent</code> and <code>listen</code>.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">isAnagram</span>(<span class="hljs-params">firstStr, secondStr</span>) </span>{
</code></pre>
<h3 id="heading-check-edge-cases-1">Check edge cases</h3>
<p>On the first few lines of our function block, we want to address a few edge cases, just like in the first example. </p>
<p>Similar to <code>isAnagram</code>, we need to check that both parameters have truthy values, that is <em>not</em> <code>null</code>, <code>undefined</code>, and so on. We can check for a falsy value by using the <code>!</code> operator. If <code>firstStr</code> or <code>secondStr</code> is falsy, we return <code>false</code>.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">isAnagram</span>(<span class="hljs-params">firstStr, secondStr</span>) </span>{
  <span class="hljs-keyword">if</span> (!firstStr || !secondStr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
</code></pre>
<p>The next edge case we want to account for is to ensure that the length of both arrays are the same. If they are different, we know that they can <em>not</em> contain an equal number of shared values.</p>
<p>By checking the <code>length</code> property on both parameters, we can determine if they are the same. If they are not, we return <code>false</code></p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">isAnagram</span>(<span class="hljs-params">firstStr, secondStr</span>) </span>{
  <span class="hljs-keyword">if</span> (!firstStr || !secondStr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
  <span class="hljs-keyword">if</span> (firstStr.length !== secondStr.length) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
</code></pre>
<h3 id="heading-build-a-dictionary-to-avoid-nested-loops-1">Build a "dictionary" to avoid nested loops</h3>
<p>Remember, we are using the frequency counter pattern and we need to keep track of all values in at least one of the arrays. Now we know that the best way to handle this is to store these values in a hash table (object). To keep things consistent, I’ll call mine <code>lookup</code> again.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">isAnagram</span>(<span class="hljs-params">firstStr, secondStr</span>) </span>{
  <span class="hljs-keyword">if</span> (!firstStr || !secondStr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
  <span class="hljs-keyword">if</span> (firstStr.length !== secondStr.length) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;

  <span class="hljs-keyword">const</span> lookup = {};
</code></pre>
<p>Using a <code>for of</code> loop, we iterate through the <code>firstStr</code>. Inside of the <code>for of</code> block, we assign the key to the result of the expression <code>value * value</code>.</p>
<p>The value in this key/value pair will be a <em>frequency counter</em> that reflects how many times a specific value is “seen” in the <code>firstStr</code>.</p>
<p>Using a ternary operator, we check if <code>lookup</code> contains an entry for <code>value * value</code>, if it does, we use the <code>+=</code> assignment operator to increment the value by <code>1</code>. If it does not, we simply assign the value to <code>1</code>.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">isAnagram</span>(<span class="hljs-params">firstStr, secondStr</span>) </span>{
    <span class="hljs-keyword">if</span> (!firstStr || !secondStr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
    <span class="hljs-keyword">if</span> (firstStr.length !== secondStr.length) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;

    <span class="hljs-keyword">const</span> lookup = {};

    <span class="hljs-keyword">for</span> (first <span class="hljs-keyword">of</span> firstStr) {

        lookup[first] ? (lookup[first] += <span class="hljs-number">1</span>) : (lookup[first] = <span class="hljs-number">1</span>);

  }
</code></pre>
<p>Once the <code>firstStr</code> is finished looping, the <code>lookup</code> should contain these values:</p>
<pre><code class="lang-javascript">{
  <span class="hljs-attr">s</span>: <span class="hljs-number">1</span>,
  <span class="hljs-attr">i</span>: <span class="hljs-number">1</span>,
  <span class="hljs-attr">l</span>: <span class="hljs-number">1</span>,
  <span class="hljs-attr">e</span>: <span class="hljs-number">1</span>,
  <span class="hljs-attr">n</span>: <span class="hljs-number">1</span>,
  <span class="hljs-attr">t</span>: <span class="hljs-number">1</span>
}
</code></pre>
<h3 id="heading-compare-array-values-1">Compare array values</h3>
<p>Now that we have iterated through all of the values in the <code>firstStr</code> and stored their values, we want to compare those values to the values in the <code>secondStr</code>.</p>
<p>We start by creating another <code>for of</code> loop. On the first line inside of our new <code>for of</code> block, we write a conditional statement to check if the current value from our <code>secondStr</code> is <em>not</em> inside of our <code>lookup</code>. If it is not, we want to stop iteration and return <code>false</code>.</p>
<p>Otherwise, if the value from the <code>secondStr</code> <em>is</em> in our <code>lookup</code>, we want to decrement the value of that entry. We can do so by using the <code>-=</code> assignment operator.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">isAnagram</span>(<span class="hljs-params">firstStr, secondStr</span>) </span>{
  <span class="hljs-keyword">if</span> (!firstStr || !secondStr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
  <span class="hljs-keyword">if</span> (firstStr.length !== secondStr.length) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;

  <span class="hljs-keyword">const</span> lookup = {};

  <span class="hljs-keyword">for</span> (first <span class="hljs-keyword">of</span> firstStr) {
    lookup[first] ? (lookup[first] += <span class="hljs-number">1</span>) : (lookup[first] = <span class="hljs-number">1</span>);
  }

  <span class="hljs-keyword">for</span> (second <span class="hljs-keyword">of</span> secondStr) {
    <span class="hljs-keyword">if</span> (!lookup[second]) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
    lookup[second] -= <span class="hljs-number">1</span>;
  }
</code></pre>
<p>After we are finished looping through the <code>secondStr</code>, our <code>lookup</code> should have these values:</p>
<pre><code class="lang-javascript">{
  <span class="hljs-attr">s</span>: <span class="hljs-number">0</span>,
  <span class="hljs-attr">i</span>: <span class="hljs-number">0</span>,
  <span class="hljs-attr">l</span>: <span class="hljs-number">0</span>,
  <span class="hljs-attr">e</span>: <span class="hljs-number">0</span>,
  <span class="hljs-attr">n</span>: <span class="hljs-number">0</span>,
  <span class="hljs-attr">t</span>: <span class="hljs-number">0</span>
}
</code></pre>
<h3 id="heading-wrapping-up-our-isanagram-function">Wrapping up our "isAnagram" function</h3>
<p>If we finish iterating through the <code>secondStr</code> without returning <code>false</code>, that means that our <code>firstStr</code> contains all values that are in the <code>secondStr</code>. Therefore, we return <code>true</code> outside of <code>for of</code> loop.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">isAnagram</span>(<span class="hljs-params">firstStr, secondStr</span>) </span>{
  <span class="hljs-keyword">if</span> (!firstStr || !secondStr) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
  <span class="hljs-keyword">if</span> (firstStr.length !== secondStr.length) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;

  <span class="hljs-keyword">const</span> lookup = {};

  <span class="hljs-keyword">for</span> (first <span class="hljs-keyword">of</span> firstStr) {
    lookup[first] ? (lookup[first] += <span class="hljs-number">1</span>) : (lookup[first] = <span class="hljs-number">1</span>);
  }

  <span class="hljs-keyword">for</span> (second <span class="hljs-keyword">of</span> secondStr) {
    <span class="hljs-keyword">if</span> (!lookup[second]) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
    lookup[second] -= <span class="hljs-number">1</span>;
  }
  <span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
}
</code></pre>
<h2 id="heading-in-summary">In Summary</h2>
<p>I hope this in-depth overview of the Frequency Counter pattern was helpful. Now that you know how the pattern works, I am confident that you will be able to impress your interviewer by showcasing your skills at an even higher level.</p>
<p>In my next article, I will be discussing another common problem-solving pattern called the Sliding Window. Thanks for reading, and happy interviewing!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Get an Interview as a Software Developer ]]>
                </title>
                <description>
                    <![CDATA[ By Martin Cartledge In this article, I will share the steps you should take to increase your chances of getting an interview as a software developer.  Whether you are just starting out, or looking for something new, I am confident that you will find ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-get-an-interview-as-a-software-developer/</link>
                <guid isPermaLink="false">66d46014052ad259f07e4b14</guid>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interview tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviews ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 30 Nov 2020 19:43:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/11/dog_at_beach-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Martin Cartledge</p>
<p>In this article, I will share the steps you should take to increase your chances of getting an interview as a software developer. </p>
<p>Whether you are just starting out, or looking for something new, I am confident that you will find value in what I share below. </p>
<p>I'll be sharing other <em>interview insights</em> in future articles, as well. So look out for them over the coming weeks.</p>
<p>Alright, let’s get started!</p>
<h2 id="heading-how-to-determine-your-ideal-role">How to determine your ideal role</h2>
<p>This might sound strange, but I think it is a question that is often overlooked. </p>
<p>Due to the eclectic nature of our industry, it is common to just apply to <em>any</em> kind of job. </p>
<p>This is tricky because, on the one hand, you want interviews and experience with different technologies. But I have found that answering a few questions can put you ahead in your search. So what are those questions?</p>
<h3 id="heading-what-kind-of-developer-do-you-want-to-be">What kind of developer do you want to be?</h3>
<p>If you are looking for your first job, this might be the hardest question you have to answer. </p>
<p>Although this might seem overly simplified, I do think it is most important to pick a niche of software that makes <em>you happy</em>. After all, you are the one that will be doing this work 40 hours a week, right?</p>
<p>If you are brand new to software development and are not sure what you like best, I suggest browsing <a target="_blank" href="https://www.freecodecamp.org/">freeCodeCamp</a>, <a target="_blank" href="https://www.codecademy.com/">Code Academy</a>, <a target="_blank" href="https://teamtreehouse.com/">Treehouse</a>, or <a target="_blank" href="https://www.udemy.com/">Udemy</a>. Then take a course that sounds interesting to you.</p>
<p>It is easy to get caught in a state of limbo when you are not sure what to do next. My advice when that happens is to just pick something and try it.</p>
<h3 id="heading-what-kind-of-company-do-you-want-to-work-for">What kind of company do you want to work for?</h3>
<p>This might be a tricky question to answer, but it can really save you lots of headaches down the road. </p>
<p>In software development, there are typically three <em>types</em> of companies:</p>
<h4 id="heading-startups">Startups</h4>
<p>Startups typically have under 500 employees, are less than 5 years old, and embrace a fast-paced environment.</p>
<p>Pros:</p>
<ul>
<li>You will play a large role in the problems that your company is trying to solve</li>
<li>You'll work with cutting edge technology in the industry</li>
<li>There will be lots of opportunities to learn from senior developers</li>
</ul>
<p>Cons:</p>
<ul>
<li>You'll be responsible for (you'll “own”) more pieces of the codebase</li>
<li>Processes such as code review and a team code style might not be established</li>
<li>You might have to quickly throw out code you contributed to because the team is trying out other ideas</li>
</ul>
<h4 id="heading-mid-sized-companies">Mid-sized companies</h4>
<p>A mid-sized company will typically have 500–5,000 employees and be at least 5 years old.</p>
<p>Pros:</p>
<ul>
<li>There's a high chance that the company will be profitable (job security)</li>
<li>There will be more onboarding resources and documentation</li>
<li>You'll have solidified planning strategies and clear goals for each quarter</li>
</ul>
<p>Cons:</p>
<ul>
<li>More processes can mean more meetings and less time spent coding</li>
<li>A larger team can mean less individual input/direction of a project</li>
<li>It can be harder to adopt newer technologies due to legacy applications, and so on</li>
</ul>
<h4 id="heading-large-corporations">Large corporations</h4>
<p>Large corporations typically have 5,000+ employees and are over 10 years old.</p>
<p>Pros:</p>
<ul>
<li>They usually have the resources to pay higher salaries</li>
<li>Traditionally there's a more vetted process to get hired, and so lots of opportunity to learn from team members</li>
<li>Stock options (you benefit when your company benefits)</li>
</ul>
<p>Cons:</p>
<ul>
<li>It tends to feel like you are a small fish in a large pond (contributions are not as tangible)</li>
<li>Career advancement (like promotions or switching teams) can be a long-winded process</li>
<li>It's often harder to bond as a team if you're globally distributed</li>
</ul>
<p>All of these factors are good things to keep in mind when you're looking to switch companies or if you are looking to join your first company. </p>
<h3 id="heading-how-do-you-learn-more-about-a-company">How do you learn more about a company?</h3>
<p>A lot of resources have surfaced over the last 5–10 years that help folks get an “inside view” into a company’s interview process, culture, and salaries. A few that are particularly useful are:</p>
<ul>
<li><a target="_blank" href="https://www.glassdoor.com/">Glassdoor</a>: Employee reviews, interview experiences, and common salaries</li>
<li><a target="_blank" href="https://www.teamblind.com/">Blind</a>: Anonymous employee reviews, interview experiences, common salaries, and employee referrals</li>
<li><a target="_blank" href="https://www.levels.fyi/">Levels.fyi</a>: Title hierarchy, title comparisons to other companies, and common salaries</li>
</ul>
<p>Once you've answered these questions and figured out what sort of company you want to work for, and in what kind of role, you're ready to prepare for the job hunt. So what does that involve?</p>
<h2 id="heading-update-your-resume">Update Your Résumé</h2>
<p>I like to think that everyone on the job hunt has a personal billboard that they carry around with them. You can write on it, or decorate it however you like. That billboard is your résumé.</p>
<p>What you decide to put on your personal billboard will greatly affect your chances of getting an interview or not. So here are some things to keep in mind when writing a résumé:</p>
<ul>
<li>Keep it short (1 page, or 2 pages if you have 10+ years of experience)</li>
<li>Tailor your resume to the job you want</li>
<li>If past technology/experience is not applicable, try to make it applicable or leave it out</li>
<li>Write 3–5 bullet points for each job</li>
<li>Make your contributions impactful by using metrics (Wrote a function that processed 10,000k data points, cut down on processing time by 60%, and so on)</li>
</ul>
<p>Keep in mind that a recruiter or HR representative will only spend 10–15 seconds (at most) scanning your résumé, so you do not have much time. You want to make sure you include details that will help illustrate that you can help this company.</p>
<p>With that being said, a few things you might want to leave out are:</p>
<ul>
<li>A personal photo</li>
</ul>
<p><em>Instead</em>: Make your name and the position you <em>want</em> catch the reader's eye</p>
<ul>
<li>Graph representations of skill level</li>
</ul>
<p><em>Instead</em>: Try replacing it with a sorted list of technologies, starting with your highest comfort level</p>
<p><em>Or</em>: List your skills in alphabetical order and make your best skills <strong>bold</strong></p>
<ul>
<li>Listing jobs that are not relevant to the career field</li>
</ul>
<p><em>Instead</em>: Use that space to expand on the experience you have in the software industry. If you don’t have much experience yet, this is a great place to expand on a project(s) you have worked on.</p>
<h3 id="heading-try-out-your-resume-on-a-friend-or-tool">Try out your résumé on a friend (or tool)</h3>
<p>Another great way to determine if your résumé conveys what you would like it to is to have a friend read it for 15 seconds. </p>
<p>After that time is up, take the résumé and have them tell you what they remembered from it. This can be a company name, skill, or contact information. </p>
<p>This is a great trial run to determine what grabs a person’s eye when they scan your résumé.</p>
<p>Here are some helpful tools to improve your résumé:</p>
<ul>
<li><a target="_blank" href="https://www.grammarly.com/">Grammarly</a></li>
<li><a target="_blank" href="https://docs.google.com/document/d/1ARVyybC5qQEiCzUOLElwAdPpKOK0Qf88srr682eHdCQ/edit">Google Drive Resume Template (Serif)</a></li>
<li><a target="_blank" href="https://docs.google.com/document/d/1WR_axh5A9t1jwER_5mFCIcr5I1oNqm4cB1PHAQEEWqc/edit">Google Drive Resume Template (Swiss)</a></li>
</ul>
<h2 id="heading-how-to-conquer-the-job-hunt">How to Conquer the Job Hunt</h2>
<blockquote>
<p><em>"By failing to prepare you are preparing to fail." - Benjamin Franklin</em></p>
</blockquote>
<p>Let’s just face it: the job hunt is an exhausting and grueling affair for most. I have found that the best way to approach the job search is to have two important things before you start:</p>
<ul>
<li>Goals (daily and weekly)</li>
<li>A plan of action (daily and weekly)</li>
</ul>
<p>Let's talk about how you can establish both.</p>
<h3 id="heading-set-goals-and-create-a-plan">Set Goals and Create a Plan</h3>
<p>I know what you are thinking: <em>ummm, my goal is to get a new job?</em> Of course, this is the end goal. But, in my experience, spending the time to determine what your goals are early is a great way to feel productive and confident. </p>
<p>The reason I break down these goals into two categories is that it is important to feel like you are being productive every day, even if you are not getting emails or calls back.</p>
<p>Some examples I have used in the past for daily and weekly goals are:</p>
<h4 id="heading-daily-goals">Daily Goals:</h4>
<ul>
<li>Submit 10 applications</li>
<li>Spend 30 minutes on a side project</li>
</ul>
<h4 id="heading-weekly-goals">Weekly Goals:</h4>
<ul>
<li>Schedule a phone interview</li>
<li>Spend 2 hours on technical interview prep</li>
</ul>
<p>These might seem overly simplified, and you’re right! That is the idea. You want to make sure you make your daily and weekly goals are things that are easily measurable, and <em>sustainable</em>.</p>
<h2 id="heading-make-the-most-of-your-time">Make the Most of Your Time</h2>
<p>So far we have talked about the importance of determining your ideal role, refining your résumé, and setting a schedule for yourself. To ensure that these tasks are not wasted effort, you want to make sure you are making the most of your time.</p>
<p>What do I mean by that? Think of the old sayings <em>Set yourself up for success</em> or <em>Put the right foot forward</em>. Basically, you want to make sure you are equally balanced in your journey to getting more interviews and being successful at them.</p>
<p>Besides doing the items mentioned above, a few others that can carry great importance are:</p>
<ul>
<li>Practice what you're learning (and what you already know)</li>
<li>Work on side projects</li>
<li>Develop an online presence</li>
</ul>
<h3 id="heading-practice-what-youre-learning">Practice What You're Learning</h3>
<p>Out of all the things I mention in this post, this one should come as the least surprising.</p>
<p>To get better at coding, problem-solving, interviewing, or underwater basket weaving, you have to <em>practice.</em> A LOT. There is no getting around this step. </p>
<p>I, like many, have fallen victim to a cycle of planning too much, taking too many tutorials, or telling myself <em>I’ll start tomorrow</em>.</p>
<p>For me, this was, and still is the hardest part about preparing for interviews, or quite honestly just being in this industry in general. Things move really quickly, and no one wants to feel like they are falling behind. </p>
<p>But, tech is a mentally draining profession. It is more than understandable that the thought of practicing coding interview questions in any capacity is exhausting. </p>
<p>I have some good news, though. When you think about practicing, try to think of your current skills as water in a bucket. Each time you practice, even something you think is small or not enough, think of that as drops of water that fill your bucket.</p>
<p>All experiences, good or bad, frustrating or rewarding, fill this bucket up and make <em>you</em> a stronger developer <em>every day</em>.</p>
<p>I think a great way to get into the habit of practicing writing code is to give yourself a goal per week. Remember, the ultimate goal is to practice and stay consistent, so avoid setting the bar at an unrealistic level for yourself. All this will do is make you feel bad on days you just don’t feel like coding.</p>
<p>Remember, you are the only person like <em>you</em>. There will never be anyone else like you, and that is awesome. So be nice to yourself, this stuff is hard. </p>
<p>If you make a habit to practice just a little bit, each time that bucket will fill up and you will surprise yourself after just a few weeks of staying consistent. You got this!</p>
<p>Here are some helpful tools to get you in the habit of practicing consistently:</p>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/">freeCodeCamp</a></li>
<li><a target="_blank" href="https://leetcode.com/">Leetcode</a></li>
<li><a target="_blank" href="https://www.codecademy.com/">Code Academy</a></li>
</ul>
<h3 id="heading-work-on-side-projects">Work on Side Projects</h3>
<p>This is something else that I am sure you have heard a million times. But I do think that working on a side project can really help you stand out as a candidate. And it'll also help you stay engaged on days you don’t feel like practicing your coding skills.</p>
<p>In my experience, it has been easier to get started when you can think of answers to both of these questions:</p>
<ul>
<li>What tech do I want to learn or get better at?</li>
<li>What is a product I really like, or I wish existed?</li>
</ul>
<p>With the answer to these two questions, you have a framework for your project! Do you like the new look of Twitter? Pick a feature and try to recreate the look and feel of it. Can’t find a habit tracker app you like? Try building one yourself.</p>
<p>If you would prefer to contribute to a project that is already established, that’s great as well. This can be a daunting task if it is your first time. But <a target="_blank" href="https://firstcontributions.github.io/">there is a great website</a> that lists tons of projects on Github that are looking for first-time contributors. So check it out.</p>
<p>Here are some other helpful tools:</p>
<ul>
<li><a target="_blank" href="https://medium.com/better-programming/12-ideas-for-programming-projects-too-dangerous-not-to-build-514e3212ab77">“12 Great Ideas for Programming Projects That People Will Use” by Filipe Silva</a></li>
<li><a target="_blank" href="https://github.com/florinpop17/app-ideas">“app-ideas” repo by Florin Pop</a></li>
</ul>
<h3 id="heading-develop-an-online-presence">Develop an Online Presence</h3>
<p>I like to think of the web as another place that allows us to have our own “personal billboard”. There are many advantages to having a solid presence online, and some of them include:</p>
<ul>
<li>Networking / meeting other developers</li>
<li>Showing off projects</li>
<li>Getting potential interest from other companies</li>
</ul>
<p>Putting in the extra effort to make your online presence solid can take you a long way, and the ways you can achieve this are relatively straightforward. Here are a few things I suggest you do:</p>
<h4 id="heading-build-a-portfolio-site">Build a portfolio site</h4>
<p>This does not have to be an extravagant, complicated website if you do not want it to be. As long as it has contact information, links to your various profiles, and a blurb about yourself you should be good-to-go. </p>
<p>This can be a great place to showcase your technical skills or talk about your passions and work history, too.</p>
<h4 id="heading-get-a-personalized-url">Get a personalized URL</h4>
<p>A lot of common websites that developers use (like Github, LinkedIn, Medium, Dev.to, Twitter, and others) allow you to change your URL. I suggest you make it your user name. I would also suggest trying to use the same name for each website.</p>
<h4 id="heading-start-a-blog">Start a blog</h4>
<p>If you are not interested in building projects and would prefer writing, this is a great way to show your skills and build an audience.</p>
<h4 id="heading-have-a-consistent-profile-photo">Have a consistent profile photo</h4>
<p>Ideally you want to use a photo that is professional, but lets your personality shine through as well. Once you find one, try to use that same photo across all your sites/social media profiles.</p>
<h3 id="heading-be-active-on-social-media">Be active on social media</h3>
<p>This is certainly not a requirement, but if you want to leverage social media as a platform for your development, I suggest that you post about things you learn and try to engage your audience often. </p>
<p>Finding the balance between letting your personality show while also adding value via sharing your knowledge can be tricky, but your followers will appreciate it!</p>
<h2 id="heading-in-summary">In Summary</h2>
<p>Whether you are new to the field and are looking for your first job, or you are an experienced developer looking for a new challenge, I hope these insights help. </p>
<p>The job hunt can be a daunting, exhausting process. But remember, it is a marathon, not a race. You got this. Consistency is key. Every rejection is an opportunity to improve your skills for the job you were meant for. </p>
<p>If you are struggling with any aspect of the job hunt, please feel free to <a target="_blank" href="mailto:martin@hey.com">send me an email</a>.</p>
<p>If you enjoyed this blog, please keep a lookout for the next entry in the <em>Interview Insights</em> series. My next article will be focused on preparing for technical interviews, look for that in 2 weeks. Thank you for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How MySpace Taught Me How to Code and Where You Should Look to Develop Your Passion ]]>
                </title>
                <description>
                    <![CDATA[ Learning something new is hard. It's even more challenging if you have a hard time trying to find motivation. How can we find things in our everyday lives that can help us learn? Tom is no longer in your extended network It's been almost 10 years sin... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-myspace-taught-me-how-to-code-and-where-you-should-look-to-develop-your-passion/</link>
                <guid isPermaLink="false">66b8e32c6a98b2a27ee1f346</guid>
                
                    <category>
                        <![CDATA[ Career ]]>
                    </category>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Career Change ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Career development  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Developer ]]>
                    </category>
                
                    <category>
                        <![CDATA[ developers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learn to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Lifelong Learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Self Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Colby Fayock ]]>
                </dc:creator>
                <pubDate>Thu, 21 May 2020 16:24:56 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/05/myspace.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Learning something new is hard. It's even more challenging if you have a hard time trying to find motivation. How can we find things in our everyday lives that can help us learn?</p>
<h2 id="heading-tom-is-no-longer-in-your-extended-network">Tom is no longer in your extended network</h2>
<p>It's been almost 10 years since we saw massive changes underway at MySpace. If you don't remember what <a target="_blank" href="https://myspace.com/">MySpace</a> was, it was the popular social network before Facebook was king (though technically it still exists).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/myspace-tom-profile.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Tom's MySpace Profile</em></p>
<p>This was when everyone started with a new friend named Tom who was the co-founder of MySpace. Everyone could set their own "top 8" that could make or break the best friendships if you snubbed someone. </p>
<p>You could also set a song for your profile which would be added as a little player, back when it was “okay” to automatically play a song when your page loaded.</p>
<p>But MySpace is now a thing of the past, so why am I talking about it?</p>
<h2 id="heading-making-myspace-your-space">Making MySpace, your space</h2>
<p>MySpace had a unique characteristic about it that you don't see in any of the popular social networks these days – it allowed you to add HTML and CSS into the page so that you could really do whatever you wanted with the your profile.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/myspace-edit-profile.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Example of custom code in a MySpace profile from <a target="_blank" href="https://www.dummies.com/social-media/myspace/how-to-embed-video-in-your-myspace-profile/">dummies.com</a></em></p>
<p>Though from a simplistic perspective, this gives you some limited options. Maybe you can add some CSS that updates how the headers look and change a background color.</p>
<p>But realistically, this opened the door to adding full webpages that you could overlay on top of your profile by positioning your new layout above the original content with some z-indexing.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/myspace-profile-filmore-band.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Custom MySpace profile for the band Filmore</em></p>
<p>The trick was, you had a limited amount of characters that you could put in each input. That had limitations, but these limitations helped promote creativity whether it was figuring out how to strip all of the whitespace in the code or by figuring out a way to add something with less overall code.</p>
<h2 id="heading-learning-through-hobbies">Learning through hobbies</h2>
<p>Building MySpace profiles was addicting! It was a social medium that you could customize to make your own and stamp your name on it to show everyone what you did. </p>
<p>While you could do the same with your own website, it wasn't as easy at the time. And building out a profile on MySpace was easy, free, and you could connect with all of your friends.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/myspace-custom-profile-colby-fayock-1.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>One of my portfolio custom profiles</em></p>
<p>Each time I made a new page, I tried to think about what else I could do. I was even involved with small communities where we would share our work and help each other figure out how to hack things into a profile page (shoutout DM!).</p>
<p>This whole time, as I was trying to learn what more I could customize, I was learning how to code! I learned about how I could squeeze every inch of HTML I could out of a document and I also developed an understanding of how CSS selectors worked. I also learned how positioning allowed me to do cool things on the page and how to center things back when we didn’t have the option to <a target="_blank" href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/">flexbox</a> all the things.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/flexbox-all-the-things-1.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Flexbox all the things!</em></p>
<p>And this led to “business Colby” developing a sense of entrepreneurship.  At this point, I was still in high school, but I was able to spin off a little business from building these pages. </p>
<p>While a modest $50 per profile seems low, that's a lot for a highschooler in 2004, not to mention that was a lot of money for another highschooler to pay to get one created!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/stk-counter-strike-team-website.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>STK Counter-Strike 1.6 team website</em></p>
<p>But this was the start of my code journey. Building off of MySpace, I started creating actual websites for Counter-Strike teams (CAL anyone?) and bands which would ultimately lead me to make a career out of coding.</p>
<h2 id="heading-turning-hobbies-into-jobs">Turning hobbies into jobs</h2>
<p>I've heard others with a similar story, even others who similarly started with MySpace that eventually turned their interest into a coding career. While the MySpace era is something we all look back and laugh at, it really inspired a lot of people to find what they love to do.</p>
<p>Finding this kind of inspiration can be important to discovering how you want to spend your time. Whether it's a hobby or learning on the side to turn it into a career, keeping engaged with something you're actually interested in is important to learning a new craft.</p>
<p>But it's important to pay attention to how you engage with that new interest. You don't want to force it into a career and quickly burn yourself out. That will lead to regret and resentment.</p>
<p>While I got lucky that my interest in coding ended up turning into my career, I make sure to not "take my work home" as it's important to separate the work from your personal interests like <a target="_blank" href="https://wwdc-memoji.netlify.app/">random</a> <a target="_blank" href="https://github.com/colbyfayock">OSS projects</a> on the side.</p>
<h2 id="heading-find-what-motivates-you">Find what motivates you</h2>
<p>The important thing is to find something that can motivate and inspire you to develop your passion whether for a career or hobby. Each of us have our own journey, whether code related or not, and we should try to find something that will make us happy.</p>
<p>What was your inspiration for your interests? <a target="_blank" href="https://twitter.com/colbyfayock">Share with me on Twitter!</a></p>
<div id="colbyfayock-author-card">
  <p>
    <a href="https://twitter.com/colbyfayock">
      <img src="https://res.cloudinary.com/fay/image/upload/w_2000,h_400,c_fill,q_auto,f_auto/w_1020,c_fit,co_rgb:007079,g_north_west,x_635,y_70,l_text:Source%20Sans%20Pro_64_line_spacing_-10_bold:Colby%20Fayock/w_1020,c_fit,co_rgb:383f43,g_west,x_635,y_6,l_text:Source%20Sans%20Pro_44_line_spacing_0_normal:Follow%20me%20for%20more%20JavaScript%252c%20UX%252c%20and%20other%20interesting%20things!/w_1020,c_fit,co_rgb:007079,g_south_west,x_635,y_70,l_text:Source%20Sans%20Pro_40_line_spacing_-10_semibold:colbyfayock.com/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_68,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_145,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_222,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_295,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/v1/social-footer-card" alt="Follow me for more Javascript, UX, and other interesting things!" width="2000" height="400" loading="lazy">
    </a>
  </p>
  <ul>
    <li>
      <a href="https://twitter.com/colbyfayock">? Follow Me On Twitter</a>
    </li>
    <li>
      <a href="https://youtube.com/colbyfayock">?️ Subscribe To My Youtube</a>
    </li>
    <li>
      <a href="https://www.colbyfayock.com/newsletter/">✉️ Sign Up For My Newsletter</a>
    </li>
  </ul>
</div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I landed offers from Microsoft, Amazon, and Twitter without an Ivy League degree ]]>
                </title>
                <description>
                    <![CDATA[ By Zhia Chong This is for those of you out there who are about to start your job search and who may be worried that you can’t land a top-tier tech job without a Stanford CS degree. Someone told you that you’re not good enough to get a job at ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-landed-offers-from-microsoft-amazon-and-twitter-without-an-ivy-league-degree/</link>
                <guid isPermaLink="false">66d461c857503cc72873deea</guid>
                
                    <category>
                        <![CDATA[ Backend Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Career development  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ coding ]]>
                    </category>
                
                    <category>
                        <![CDATA[ coding interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Facebook ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Google ]]>
                    </category>
                
                    <category>
                        <![CDATA[ internships ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviews ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Microsoft ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Twitter ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sun, 23 Feb 2020 08:14:06 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/02/1_QuyFfwka5D5j7Z2IR4mcCQ.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Zhia Chong</p>
<p>This is for those of you out there who are about to start your job search and who may be worried that you can’t land a top-tier tech job without a Stanford CS degree. Someone told you that you’re not good enough to get a job at Microsoft or Facebook. </p>
<p>But I’m here to tell you that you can get that job. Here’s how I landed my dream job at Twitter.</p>
<p>Read more about my courses <a target="_blank" href="https://docs.google.com/document/d/1PeK69h4H82rwKjhactiE_sAIorCcZgXgXTY7k-nXpnE/edit?usp=sharing">here</a> to learn how I prepared.</p>
<p>You can read about my experiences after a year at Twitter <a target="_blank" href="https://www.freecodecamp.org/news/what-ive-learned-in-1-year-at-twitter-65150f5d4af2/">here</a>.</p>
<h3 id="heading-what-this-article-covers">What this article covers:</h3>
<ul>
<li>My background</li>
<li>How I landed interviews with top tech companies in the world: Facebook Google, Amazon, LinkedIn, Microsoft, Twitter, Pinterest, Snapchat, and others.</li>
<li>How I landed multiple offers as a full-time software engineer</li>
<li>Lessons from my interview experience</li>
<li>Subscribe <a target="_blank" href="http://eepurl.com/dnt9Sf">here</a> for more article updates from me</li>
</ul>
<p>If you prefer to watch my story instead, I made a video here:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/83Reyvrs-VQ" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<h2 id="heading-background">Background</h2>
<p>I did not graduate from an Ivy league school. I went to a community college in Idaho for two years, and then finished my CS degree at a small Catholic university.</p>
<p>I started learning computer science in my junior year of college, because it sounded fun to me at the time. The only thing resembling a computer I had growing up was a Chinese copycat of the Nintendo SNES. Even then, it would break every time I put a cartridge in it.</p>
<p>To support myself through college, I took multiple part-time jobs like cleaning floors and working stand-up concessions.</p>
<p>When I graduated, I didn’t have a job lined up. I applied to as many big tech companies as I could, and had the good fortune of landing a few phone interviews.</p>
<p>At this point, I didn’t have a single notion of what a technical screen would be like, much less how to prepare for it. I headed into these interviews thinking that the interviewer would ask me what a linked list or binary tree was.</p>
<p>I <strong>didn’t pass</strong> any of those interviews.</p>
<h2 id="heading-moving-forward">Moving forward</h2>
<p>I didn’t delve too much into whether I was good. I knew that I could learn things fast. I just needed an opportunity.</p>
<p>As the saying goes, cast your net far and wide. So that’s what I did.</p>
<p>What I did next is something I’m particularly proud of. I wrote a simple Python script that scraped job listings on Craigslist with titles containing keywords from a list, and collected the emails in a spreadsheet. For the actual war story, you can read the article <a target="_blank" href="https://www.freecodecamp.org/news/how-i-built-a-web-crawler-to-automate-my-job-search-f825fb5af718/">here</a>.</p>
<p>It wasn’t the smartest solution, but people who post on Craigslist are surprisingly accurate with their titles.</p>
<p>Craigslist, however, didn’t like people scraping their website. To work around this, I ran my script through a VPN, and had a timer that would pause the script every few minutes or so. It wasn’t perfect, but it worked well enough.</p>
<p>In the end I collected about 500 emails from around San Francisco, Portland, Spokane, and Seattle. I filtered the results by how specific and recent they were, and kept improving it by adding more and more features.</p>
<p>As it turned out, there were a few bots in the market already that crawled Craigslist and sent out automated emails. These were mostly offshore companies that were looking to pitch their company to the US market.</p>
<p>One of my workarounds was that I crafted emails that used keywords from their listings in the title of my emails. I then added more details using the body of the postings to make it seem more personable. I did a quick A/B test, and the replies I received had increased quite a bit from around 2–3% to 10%.</p>
<p>Out of the 500 or so emails, I received about 50 replies, and landed phone screens with a small percentage of those. I stopped at 500 because I was short on time and needed to finalize a job as soon as possible. I was optimizing for results rather than reach at that point.</p>
<p>As luck would have it, I finally landed a job at a startup in Seattle as a junior software engineer. The startup was located in Kirkland at the time, so I had to take a 45-min bus ride to make it in time for the interview.</p>
<p>I then stayed there for the next 3.5 years, where I learned a great deal of stuff like Amazon AWS, EC2, DynamoDB, SQS, and Docker. I grew a lot during this period. I learned how to write modular, maintainable code. I learned how to reason about software design. And I learned how to handle people problems.</p>
<p>I was working next to a group of smart people who held jobs at Microsoft, Amazon, and LinkedIn, and I tried to be the “sponge” in the group. I absorbed anything and everything they threw at me. I believe this made a huge impact in my career.</p>
<h2 id="heading-startup-days">Startup Days</h2>
<p>During my stint at the startup, I worked almost exclusively on backend development, with some dev-ops in between. I started out writing some functions to add/modify a feature that were mostly small in scope. But it was a great opportunity to understand the codebase and get some code reviews.</p>
<p>A year into it, I started owning parts of the codebase, and then I was tasked with turning a set of features into a service. That was the start of the SOA phase for the startup. We started turning various components of the site into services, and that’s how I started learning more about RESTful services, authentication, AWS services, pub-sub, distributed systems and so forth.</p>
<p>The interesting part here is that <em>I didn’t learn about any of these through books or formal education.</em> Rather, I needed to get that set of features done and there were the bottlenecks.</p>
<p>So I thought, let’s go solve it!</p>
<p>There were many times where I was stuck in analysis paralysis — a state where I over-analyzed scenarios and ended up not able to make progress.</p>
<p>Those trying times were the <strong>greatest</strong> learning opportunities. I started to learn feature scoping, negotiations, monitoring, alerting, and documentation. Each step of the process revealed more things I needed to learn. I grew the most during these 2–3 years, both as an individual and software engineer.</p>
<h2 id="heading-how-i-prepared-for-my-interviews">How I prepared for my interviews</h2>
<p>After suffering through my first job search, I told myself that I must be prepared in future interviews.</p>
<p>I started preparing for interviews by charting out an overview of what I was good at, bad at, and where I could improve. I broke it down into three categories: <strong>data structures, algorithms, and system design.</strong></p>
<p>Having worked in PHP for most of my professional career, and C++ in college, I wanted to try something a little simpler and less verbose for interviewing.</p>
<p>For this reason, I picked Python. It is a great language to learn, easy to pick up, supports many data structures out of the box, and can be written quickly on the whiteboard. I learned Python by going through YouTube tutorials like <a target="_blank" href="https://www.youtube.com/watch?v=Z1Yd7upQsXY">these</a>, and also reading their documentation. I prefer Python 2.x, but you can go for either 2.x or 3.</p>
<p>Also, another reason why I picked Python is that it’s highly readable and easy to write on a whiteboard. Here’s a trivial comparison between C++ and Python.</p>
<p>A C++ program to sort in descending order:</p>
<pre><code class="lang-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;bits/stdc++.h&gt;</span></span>
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> <span class="hljs-built_in">std</span>; 
<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{   
    <span class="hljs-keyword">int</span> arr[] = {<span class="hljs-number">1</span>,<span class="hljs-number">10</span>,<span class="hljs-number">0</span>,<span class="hljs-number">4</span>,<span class="hljs-number">5</span>};
    <span class="hljs-keyword">int</span> n = size(arr)/<span class="hljs-keyword">sizeof</span>(arr[<span class="hljs-number">0</span>]);   
    sort(arr, arr + n, greater&lt;<span class="hljs-keyword">int</span>&gt;());   
    <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i &lt; n; i++) {       
        <span class="hljs-built_in">cout</span> &lt;&lt; arr[i] &lt;&lt; <span class="hljs-string">" "</span>;   
    }    
    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}
</code></pre>
<p>Compare that with Python’s version:</p>
<pre><code class="lang-py">a = [<span class="hljs-number">1</span>,<span class="hljs-number">2</span>,<span class="hljs-number">4</span>,<span class="hljs-number">5</span>,<span class="hljs-number">1000</span>]
a.sort(reverse=<span class="hljs-literal">True</span>)
<span class="hljs-keyword">print</span> a
</code></pre>
<p>I’ve received feedback from interviewers to <strong>err on the side of brevity</strong> in an interview. In a 45-minute interview, you want to use most of your time solving the actual problem.</p>
<p>Pro tip: pick a language that’s less verbose so that you can write the code more quickly on the whiteboard.</p>
<h2 id="heading-preparation-mode">Preparation mode</h2>
<p>I spent about a week going through simple challenges on LeetCode, HackerRank, and Project Euler to familiarize myself with their interfaces, and to get used to writing code in Python.</p>
<p>The first week gave me insights into my competence level at certain programming languages. I spent another week going through some design challenges like “design X” and went as wide and deep as I could.</p>
<p>This was a lot of fun for me, because I often looked at iOS apps and tried to figure out how they did it. For example, how would you build Instagram from scratch? (I was asked this at Facebook.)</p>
<p>My background is in API designs and service-oriented architecture, so I took this opportunity to show how I would design my own version of Instagram. And because I have some iOS programming experience from my side-projects, I could talk a little bit about callbacks and push/long-polls here.</p>
<p>I started the conversation with some features I’d like to have on my own version of Instagram: likes, upload a photo, and a simple timeline. Feature scoping enabled me to build a very solid API because I know these scenarios well.</p>
<p>I then drew some pictures of a high-level design, of how the client would interact with the backend, and of how the backend would store the data.</p>
<p>I started small, and then added more components where needed and proactively sought where the bottlenecks were. I made educated guesses (read <strong>educated, not blind guesses</strong>) on what the requirements would be, and how each technology would fit in well. And also equally important, what technologies would <em>not fit well.</em></p>
<p>For example, why would you use Cassandra over MySQL to store certain information (hint: scale, speed of development, schema reviews), why use OAuth over simple authentication, Redis vs Memcached for caching data, streaming vs batch processing, and so on.</p>
<p>There are many areas you can explore here, so typically a one-hour session is not enough. To do well on these questions, you have to read and learn about trade-offs. Pros and cons of technologies in the industry. For this, I recommend a site like <a target="_blank" href="http://highscalability.com/all-time-favorites/">HighScalability</a>.</p>
<p>Take it like a typical brainstorming session with a coworker, so explore <em>as widely and as deeply</em> as you can.</p>
<p>It’s crucial to know that these design interviews are meant to explore how much you know and how well you know it, and it’s <strong>an opportunity for you to shine.</strong> I watched this YouTube <a target="_blank" href="https://www.youtube.com/watch?v=ZgdS0EUmn70">video</a> from an ex-Facebook engineer about how to solve design problems, and it gave me insights that helped me tremendously with my design interviews. My two main lessons from it: <strong>drive the design conversation,</strong> and <strong>show what you know</strong>.</p>
<p>I listed out my competency level for: <strong>data structures</strong> (linked list, hash map, binary tree, binary search tree, heap, array), <strong>algorithms</strong> (binary search, hashing, dynamic programming, sorting), and <strong>language-specific syntax and libraries</strong> (like sort, lambda for Python, appending, indexing).</p>
<p>I picked the area I was worst at, and started working on it: <strong>algorithms</strong>.</p>
<p>Algorithms have never been my forte. It’s been a while since my college days, and I didn’t spend much time doing binary search in my day-to-day career. I had an inkling of how each algorithm would perform, and in what scenarios to use them. But I wasn’t 100% comfortable with writing a binary search in under 10 mins. On a whiteboard. In front of an interviewer.</p>
<p>I also picked up a bunch of fine-point markers from <a target="_blank" href="https://www.amazon.com/86601-Low-Odor-Markers-Assorted-8-Count/dp/B000Z88D2E/ref=sr_1_3?ie=UTF8&amp;qid=1518801079&amp;sr=8-3&amp;keywords=white+board+pens">Amazon</a>, which work amazingly well. Perhaps it’s just me, but the fine-point markers in interviewing rooms usually don’t work at all. I’d usually scramble for 2–3 mins looking for a working pen, and that’s 2–3 mins you can’t afford to waste. Plus, fine-point markers allow you to write 5–8 more lines of code on a typical whiteboard vs. thicker ones. :)</p>
<p>Pro tip: Get your own set of fine-point markers.</p>
<p>I got a whiteboard from Costco for $50, some books from Amazon (listed in the tools I recommend section below), and started practicing. I made sure I ramped up on binary search, recursion, dynamic programming, BFS and DFS. A lot of interviewing questions revolved around recursion and binary search or some variations of it.</p>
<p>The best interviewing questions I’ve seen had many different solutions to them, and there’s an additional layer added on top as you progress through.</p>
<p>One Google question I had was related to file-system directories, and how to traverse them (hint: recursion). I solved that relatively quickly, and the interviewer asked how to identify a missing file in that directory. That was a little more difficult, but I got through it. And we then moved into how to rebuild the directory, how to serialize/deserialize it, and we spent a good chunk of time debating how file directories work underneath the hood. It was a very enjoyable session for me.</p>
<h2 id="heading-interviewing-at-top-tier-companies">Interviewing at top-tier companies</h2>
<p>It was a nerve-wracking experience, to say the least, and a real roller-coaster.</p>
<p>I allocated my time in the following manner: 20% resume, 20% research and 60% interview preparation.</p>
<p>I spent 20% of my time fixing up my resume, which hadn’t been updated in at least three years. I took a hard look at the stuff I’ve done in the past, and picked projects I handled end-to-end, <strong>regardless of complexity.</strong></p>
<p>The reason for doing this is two-fold. Taking a project from start to completion demands discipline and leadership — two of the traits I’d like to be identified with.</p>
<p>Secondly, ownership of a project end-to-end means I can talk about each aspect of the project <strong>at length and in depth.</strong> This proved critical in helping me navigate my design round at Twitter, where they grilled me hard on not only the designs of my projects, but also the decisions behind them.</p>
<p>20% of my time was used for research. Research in this case meant doing due diligence on companies I was interested in and reaching out for referrals. Having referrals helps with return calls.</p>
<p>From my experience, I sent out 20 or so cold messages to startups and mid-stage companies, and only heard back from a handful. But, almost all the companies I was referred to by an existing employee sent me a message within a week. This is anecdotal, but there’s value to be had there.</p>
<p>I am not that sociable, and I didn’t know many people who’d be able to refer me to a company I was interested in. To solve that problem, I went on LinkedIn. They have a search functionality that I used to search for 1st and 2nd-level connections. 2nd-level connections are people who’re one hop away from your immediate circle. In other words, we have mutual friends who can <strong>vouch for my credibility</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/02/linkedin-search.png" alt="Image" width="600" height="400" loading="lazy">
<em>LinkedIn search</em></p>
<p>This is incredibly important, because cold-calling someone for a job is very, very hard, especially in today’s market. People tend to err on the side of caution when it comes to cold-callers. Using LinkedIn was super helpful for my research phase.</p>
<p>Looking back at all the companies I interviewed at, here are my thoughts on each of them:</p>
<ul>
<li><strong>Facebook/Google</strong> — very mechanical. The standard interviewing process, and I didn’t feel any personal connection to them.</li>
<li><strong>Pinterest</strong> — not the best interviewing experience, but a cool product and company.</li>
<li><strong>Microsoft</strong> — loved the team and especially the manager and her manager. Standard interviewing questions, but very personable. Close-second choice. Your mileage may vary, though — each team at Microsoft interviews differently.</li>
<li><strong>Amazon</strong> — standard interviewing process. About 50% of the people love it, the others don’t.</li>
<li><strong>Twitter</strong> — incredibly fun and personal. Loved the interviewing process, gave a lot of emphasis on the individual and what I’d done in the past.</li>
<li><strong>Snapchat</strong> — cool office in LA, great bunch of people who decided to jump on the startup bandwagon. Felt like things were shrouded under a cloud of secrecy.</li>
<li><strong>Lyft</strong> — near to where I live, nice office, standard interviewing process. No strong feelings about it.</li>
</ul>
<h2 id="heading-lets-talk-about-my-favorite">Let’s talk about my favorite</h2>
<p>In many ways, I’d say Twitter’s interviewing style was hard. But at the same time, it was more interesting and personable than other companies I’ve interviewed at.</p>
<p>Their interviewing process starts with an introductory phone call with an engineering manager. That’s followed up by one or two technical phone screens, depending on how you perform. If you do well, they’ll fly you out to the office you’re interviewing for, which was Seattle in my case. There are three 1-hour-and-15-minute rounds, each with two interviewers.</p>
<p>The first two technical phone screens are the standard, run-of-the-mill technical screens where you solve coding problems on a shared coding doc.</p>
<p>The onsite rounds, however, are much more conversational and feel much less intimidating. The interviewers will ask you in-depth questions about your past projects, and they’ll grill you on what you’ve done in the past. If you claim ownership of a project, you should expect some questions about it. You’re encouraged to use them for references and to bounce ideas off of.</p>
<p>I never felt any pressure to magically come up with a fully working solution, and it felt highly collaborative.</p>
<h2 id="heading-the-others">The others</h2>
<p>In comparison, interviewing at Facebook and Google felt much more mechanical. They have one or two technical phone screens, and five to six onsite coding rounds. Each round involves some coding on a whiteboard, and you’re expected to come up with a near-perfect solution in a reasonable amount of time.</p>
<p>Facebook has two coding rounds, one design round, and one behavioral round.</p>
<p>I went through an additional shadow round at the end of the day, which didn’t count towards my overall score.</p>
<p>Google had five coding rounds, none of which focused on designs, and not a single interviewer asked about my previous projects. I don’t necessarily think this is bad. But I think it felt very mechanical and didn’t give much opportunity for the engineer to show what they’re capable of. Some people do well in these scenarios, much like some students do well in exams.</p>
<p>I <strong>did not enjoy</strong> my interview with Pinterest. I think the product itself is interesting, and their engineering team seems to be working on very cool technical <a target="_blank" href="https://medium.com/@Pinterest_Engineering">problems</a>. But I definitely had a negative experience during my interview there.</p>
<p>Pinterest has three coding rounds and one design round. Of those four rounds, the design round was most disappointing to me. Here’s why:</p>
<p>The interviewer came in late, and he spent a few minutes glancing over my resume before proceeding to draw some APIs on the board. He gave a short description of what he expected the API to do, and asked how I would solve it. We clarified the features of the API, and I started describing my solution using the whiteboard. About 5 minutes into it, I turned around and <strong>saw him taking a nap!</strong></p>
<p>Not cool.</p>
<p>I gave the recruiter my feedback in a survey, and I didn’t hear back from them after that.</p>
<p>I won’t delve into specifics of the questions I was asked during all the interviews. Instead, I’ll share some of the insights and useful tips I learned from my preparation process.</p>
<h2 id="heading-what-i-learned">What I learned:</h2>
<ul>
<li>Be <strong>honest</strong> on your resume. Most companies <em>will</em> ask you questions about your resume, and they can tell if you made it up. It’s better to be able to know <strong>100% about one project than to know 10% about 10 different projects.</strong></li>
<li>One-page resumes are <strong>recommended</strong>. This is especially true for tech companies, and it seems that the wisdom within the tech sphere is that you should reserve two pages and longer for post-doctoral work, or if you’ve done a lot of projects that you know and care deeply about. A friend of mine runs a <a target="_blank" href="https://www.jobscan.co/">company called Jobscan</a> that scans resumes and makes <em>specific, actionable</em> improvements on them. They’re pretty awesome, so try them out :)</li>
<li><strong>Socialize and establish a network</strong>. There’s a lot of competition for software engineering jobs, and these top tech companies are filtering through thousands of resumes a day. Having a referral will help you get some eyes on your resume.</li>
<li><strong>Nail</strong> your pitch. Every company that’s interested in you wants to know why you’re interested in them. <strong>A bad answer</strong>: I just need a job right now to pay bills. <strong>A less-bad answer</strong>: I was browsing online and found you guys. Sounds like you’re working on interesting things. <strong>A good answer</strong>: I know you’re doing some interesting work in X to achieve Y. I’ve done some work in the past and here’s what I learned about A, B, C that might be related to X. I am passionate about Y because blah. (<em>Don’t</em> use this as a template. Instead, you should see the pattern here — do your research, use your background, and show the company why both of you would fit well together.)</li>
</ul>
<h2 id="heading-some-more-advice">Some more advice</h2>
<p>Technical interviews are incredibly difficult, and sometimes it’s a hit-or-miss. The best opportunities, however, are reserved for those <em>who are prepared.</em></p>
<ul>
<li><strong>Prepare early, prepare <em>well</em></strong>. Everyone knows that they should prepare for an interview, but most don’t know how to do it <em>well</em>. As with anything worth doing, it takes deliberate practice to do well at something. And deliberate practice means you need to have a system.</li>
<li><strong>Build a system</strong> to practice technical skills. I started by rating myself from 1–10 on how good I was, and worked on the ones I was worst at. I spent days on different types of questions until I fully mastered each concept. And I <strong>wrote notes daily on Evernote</strong>. I had a note that serves as a brain dump for all things programming. It is full of programming tips &amp; tricks, common errors and misconceptions, frameworks for solving specific types of questions, and much more.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/02/my-notebook.png" alt="Image" width="600" height="400" loading="lazy">
<em>My notebook</em></p>
<ul>
<li><strong>Keep a notebook</strong> of the things you’ve learned. I use both <a target="_blank" href="http://evernote.com">Evernote</a> and <a target="_blank" href="http://onenote.com">OneNote</a> to keep track of things. OneNote for technical stuff/code, because I like that I can easily format the note any way I like. I use Evernote for essays/thoughts. The image above shows a note I keep on architecture and system designs.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/02/evernote.png" alt="Image" width="600" height="400" loading="lazy">
<em>Evernote for thoughts/tips</em></p>
<ul>
<li><strong>Jot everything down</strong>, even if you don’t think you’ll use it. I tend to forget very easily, so anything that I learn I write it down, including shell commands. I read technical blogs from time-to-time, and if I find anything interesting I jot it down on Evernote right away. I’ll revise it every week or month and reorganize accordingly. This has helped me tremendously over my career.</li>
<li><strong>Get mock interviews</strong>. This was definitely very valuable and I highly advise it. I had mock interviews with friends and tried to practice as much as I could. If you can’t find friends to practice with, then I recommend Refdash, which is an Interview-As-A-Service. They have a group of interviewers who work at big tech companies like Google, Facebook, and Microsoft. These interviewers will assess you on your coding and design skills. The best part of it is they’ll give you a score at the end of it with specific actionable items on how to improve.</li>
<li>It’s <strong>OK to fail. I failed multiple interviews during this whole process.</strong> Sometimes you just have a bad day. It’s not the end of the world if you fail. Companies are biased towards saying no because it’s a lower risk for them. A false positive costs more than a false negative in the long run. The first few rejections definitely stung the most. I failed multiple phone screens when I first started interviewing, and my confidence level sunk. I had doubts in my mind about my abilities and started fearing that my skills weren’t relevant in today’s job market. However, I gave myself a tip: If you fail 10 times, then try 10 times more. <em>All you need is one success.</em> That reassurance gave me a lot of confidence to keep pushing through and when my first offer came through, the other offers came much more easily.</li>
</ul>
<p>It took me about <strong>2 months</strong> of deliberate practice and preparation for my interviews. I spent about <strong>20 hours/week, or 80 hours/month,</strong> learning and writing notes on top of a full time job.</p>
<p>To build up my resume, it took 3.5 years of focused, deliberate work. I intentionally picked things that were tough and icky so that I could learn more than anyone else. Even though I don’t have a brand name university or top-tier tech company on my resume, I made up for it with a clear, thorough understanding of the projects I worked on. And this was possible because I researched and wrote down notes of everything I learned, and have a system to review them.</p>
<p>Remember: the strong survives, the tough thrives.</p>
<p>TL;DR: Don’t give up, set yourself up for opportunities, practice a lot, and stay hopeful. Focus on the process, and take a disciplined, dedicated approach to the process.</p>
<h3 id="heading-tools-i-recommend">Tools I Recommend</h3>
<ul>
<li><a target="_blank" href="https://amzn.to/2I80wup">Designing Data-Intensive Applications</a>: Awesome book for learning about scaling distributed systems! Highly recommended.</li>
<li><a target="_blank" href="http://amzn.to/2Dcs6Qd">Elements of Programming Interviews</a>: Great for solving coding problems.</li>
<li><a target="_blank" href="http://amzn.to/2Hj91OH">Cracking The Coding Interview</a>: Great for covering foundational CS coding problems.</li>
<li><a target="_blank" href="https://www.dailycodingproblem.com/zhiachong">Daily Coding Problem.com</a>: This is a free-to-try website that offers free daily coding problems. You can sign up for interesting daily coding challenges, and you can pay for solutions if you want.</li>
<li><a target="_blank" href="https://db.tt/tdUSP79S">Dropbox</a>: I keep all my files, pictures, resume here. Easy access, installed once and available everywhere. Love it ❤️ (If you sign up thru this link, both of us will get free 500MB!</li>
<li><a target="_blank" href="https://coderunnerapp.com/">CodeRunner</a>: I love this Mac app! I used this multiple times to run ad-hoc Python scripts/functions and it just works amazingly well. ?</li>
<li><a target="_blank" href="https://amzn.to/2D8FUxS">Kafka the Guide</a>: I used this book as a reference guide, and enjoyed it for the high-level description.</li>
</ul>
<p>(I share more resources I personally have used and recommend on <a target="_blank" href="http://zhiachong.com/resources">zhiachong.com</a>, if you’re interested in learning more.)</p>
<p>Thanks for reading my story! You can find me on <a target="_blank" href="https://twitter.com/zhiachong">Twitter</a> and <a target="_blank" href="https://www.linkedin.com/in/zhiachong/">LinkedIn</a>. I would love to connect and talk more about tech, startups, travel :D</p>
<p><strong>Credits:</strong></p>
<p><a target="_blank" href="https://twitter.com/hakczar">Brandon O’brien</a>, my mentor and good friend, for proof-reading and providing valuable feedback on how to improve this article.</p>
<p><a target="_blank" href="https://medium.com/@yksugi">YK Sugishita</a>, an up-and-coming Youtube star who left his job at Google to pursue his dreams, for proof-reading and giving critical feedback.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Why new developers should work at a small startup ]]>
                </title>
                <description>
                    <![CDATA[ By Lekha Surasani In my first year of working in the industry (6 months as an intern, 6 months as a full-time employee), I worked at startups that were less than 10 people large. I was one of the only 2 or 3 developers, and usually one of the first. ]]>
                </description>
                <link>https://www.freecodecamp.org/news/why-new-developers-should-work-at-a-small-startup-79790e2d93ff/</link>
                <guid isPermaLink="false">66d4601cd1ffc3d3eb89de22</guid>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Junior developer  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ startup ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 22 Apr 2019 15:56:32 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*kMXskalgRWK9VKkurkcx4g.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Lekha Surasani</p>
<p>In my first year of working in the industry (6 months as an intern, 6 months as a full-time employee), I worked at startups that were less than 10 people large. I was one of the only 2 or 3 developers, and usually one of the first. Throughout the year I spent working at startups, I learned a lot, and I failed a lot. Most importantly, I experienced amazing growth in my career and my technical abilities. Here are some of the biggest benefits of working at a startup:</p>
<h3 id="heading-ownership">Ownership</h3>
<p>Being one of the few people on the development team, I was always able to make a pretty big impact on the code base. In one of my jobs, I created the front-end of the app almost entirely by myself. In another, I re-wrote the entire front-end of the app.</p>
<p>I was able to take this level of ownership as a new developer because, quite simply, there was no one else to do it. Through ownership of the code base, I learned a lot of important lessons <em>very</em> quickly. If I wrote a method longer than 10 lines or had Components (I was using React at my previous position) that were longer than 100 lines, I knew that I had to comment on everything. If I looked at the code next month, it would be time-consuming to remember what I did and why. I wrote thorough documentation regarding certain decisions we made — whether it was for refactoring code, implementing new features, or just upgrading React (<a target="_blank" href="https://medium.com/@lesurasani/a-guide-to-upgrading-to-react-router-4-bc064f3cbdb9">I actually wrote an article on how to upgrade to React Router 4 that was born out of this</a>).</p>
<p>I learned these lessons out of a feeling of responsibility for the code I had written. It was mine, and it was my job to make sure that in the future, I, or anyone who would look at this after me, would easily be able to see what it was doing.</p>
<h3 id="heading-fast-paced">Fast-paced</h3>
<p>When I started these jobs, my managers didn’t waste any time on getting me started. By the second week of working, I usually had already made a PR or two and had some tasks assigned for the sprint. Within a month of working, or once I felt acquainted enough with the code base, I was already tasked with implementing new features by myself. We had deadline after deadline, and there was never any shortage of work or interesting things to do. I was constantly learning new things, and I was rarely bored. My GitHub commits share the same story:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Q4wIcLQTMpkRdz3Y7I6skvbyqgTsk-YK0ZNe" alt="Image" width="800" height="216" loading="lazy">
<em>Contributions I made while I was working there are shown in the red box</em></p>
<p>These contributions illustrate changes made to the default branch of the repository. Commits added through PRs, mostly. It was a rare day when I didn’t make a PR for something. It was usually because I was working on a particularly large project.</p>
<h3 id="heading-mentorship">Mentorship</h3>
<p>This is one of the biggest advantages of working at a small company. My manager only had one person to focus on — me! Whenever I needed help or was confused about something, all I had to do was turn to my manager and ask.</p>
<p>When my manager had decisions to make — whether it was UI/UX decisions or decisions about what to focus on next, we usually had a discussion about it.</p>
<p>I learned a lot about UI/UX, product management, hiring, and creating technical roadmaps because my manager was willing to have this dialogue with me. After all, who else was he going to talk to? It was mutually beneficial for us to have this dialogue — I learned a lot, and my manager had a sounding board.</p>
<h3 id="heading-impact">Impact</h3>
<p>When you’re one of ten or fifteen people at a company, your work makes an impact on the overall growth of the company. Especially if the company’s mission is something you’re passionate about, you’d be actively making an impact on that mission every day. Your work isn’t just one small part of a much larger machine — your work <em>is</em> the machine.</p>
<h3 id="heading-caveats">Caveats</h3>
<p>Startups can be tricky to navigate — toxic behavior and a negative environment are rampant in startups because no one has held them accountable just yet. So, if you’re thinking about working for one of them, there are some red flags you should look out for!</p>
<ul>
<li><strong>Lack of clear leadership</strong> — do the founders and your manager have a vision for where they want the company to go? Do they make decisions quickly and do they know what they want?</li>
<li><strong>Lack of growth</strong> — when was the last time they hired someone? How many people are they planning on hiring in the next 3 months? How about 6 months? How are sales? What are the next steps to grow the company and the team?</li>
<li><strong>Undervaluing Employees</strong> — I’ve seen startups who try to undercut employees when it comes to pay and benefits severely. Know what your minimum or expected salary/equity is, and use your judgment and talk to people you trust if you have reason to believe that accepting an offer lower than what you expect will pay off.</li>
<li><strong>Not the right mentor</strong> — The mentorship aspect I mentioned earlier is only worth something if you have a good mentor! Be sure that your manager is knowledgeable, patient, and wants to mentor you.</li>
<li><strong>Overworking Employees</strong> — Ask how many hours a week are expected of employees. Ask whether you’d ever be subjected to unusual (late evenings/weekends) hours. I usually only ever worked 40–45 hours a week. There were a handful of occasions where I needed to stay an hour or two late.</li>
</ul>
<p>You can usually find out this information when you’re interviewing — either by observation or just directly asking!</p>
<p>In addition to asking if the startup is a suitable place to work, you should ask yourself if it’s a good fit for you, too!</p>
<ul>
<li><strong>You’re okay with risk</strong> — When you work at large companies, you generally know what you’re getting. You may have had friends or distant cousins who work at those companies, and people’s experiences are pretty well-documented or established. You can expect that not much will change from the time you accept your offer to the time you start working to 5 years from then. But when you’re at a startup, things can change on a day-to-day basis. You may not know what you’re getting until you get there. Additionally, <a target="_blank" href="https://www.failory.com/blog/startup-failure-rate">a lot of startups fail</a> — there’s a chance your company may not be around as long as you’d like it to be!</li>
<li><strong>You want the experience for your career, not your bank account</strong> — As I mentioned before, a lot of startups fail. And a failed startup is worth $0 — as is your equity.</li>
<li><strong>You like fast-paced environments</strong> — Fast-paced environments are not for everyone! Know what environments you thrive best in, and if ‘fast-paced’ isn’t how you’d describe your ideal environment, then you may not want to join a startup. At the end of the day, you need to do what’s best for you and your career — which means being in an environment that’s best for you.</li>
</ul>
<p>And that’s my case for why you should consider working for a startup, especially as a new developer. I’ve seen a lot of people in the dev world who leave college and chase prestige. They only look for work at Google, Facebook, Microsoft, or IBM-type companies.</p>
<p>There’s nothing wrong with wanting to work for large, successful, and innovative companies, of course. I think that this is another alternative that should be considered when searching for your first job! Even if you’re not a huge fan of startup environments, or you just can’t seem to find a good one, you can find a lot of these benefits at slightly more established (between 50–100 people) startups or small companies.</p>
<p>If you have any questions/comments about startups or working for one, please feel free to comment below!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to get a job after a coding bootcamp ]]>
                </title>
                <description>
                    <![CDATA[ By Roxy Ayaz Getting a tech job after a coding bootcamp is very possible, but not necessarily pain-free. The days/weeks/months after a bootcamp is completed come with a learning curve of their own, and often include rejection and serious contemplatio... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-get-a-job-after-a-coding-bootcamp-684aafbf4d4a/</link>
                <guid isPermaLink="false">66c3521339769b84d9fe9715</guid>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ #CodingBootcamp  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ jobs ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 10 Apr 2019 17:09:19 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/0*D9niY9CYw_0FANor" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Roxy Ayaz</p>
<p>Getting a tech job after a coding bootcamp is very possible, but not necessarily pain-free.</p>
<p>The days/weeks/months after a bootcamp is completed come with a learning curve of their own, and often include rejection and serious contemplations of what you’re doing with your life.</p>
<p>(Unless you come in with a job offer or some serious leads — lucky you!)</p>
<p>In the bootcamp, you learn more than you ever have in a short period of time. You will build strong foundations for learning how to code.</p>
<p>However, you are not going to learn enough to pass most coding challenges. You will not be ready to have discussions where you confidently share your opinions on different languages and technologies. To top it all off, you might not have any professional technical experience to show your worth.</p>
<p>You will feel like an imposter.</p>
<p>Due to your un-readiness, as well as some skeptics in the industry who doubt the legitimacy of these non-accredited programs, you are going to constantly be rejected for not meeting expectations.</p>
<p>It takes on average six months to find a job after a coding bootcamp. Thankfully, after nearly seven months, and moving across the country, my misery came to an end. I got (and have) a job that I love.</p>
<p>If you’re contemplating a12-week coding bootcamp, remember that it is not a quick $15k hack for changing the direction of your life because you are:</p>
<p><em>A. not satisfied with you current job or personal life</em></p>
<p><em>B. not happy with how much you make</em></p>
<p><em>C. assuming you will find a job shortly after the program ends</em></p>
<p><em>D. somewhat curious/interested/intrigued about what tech is like</em></p>
<p>You have to really want this to make it to the end.</p>
<p>Quite a few students in my cohort went back to their old industry/job function after a few months post-bootcamp. Some have also gotten very coveted jobs — it honestly goes both ways!</p>
<p>Here are some tips to stay motivated and to help you land your first job after the coding bootcamp.</p>
<h3 id="heading-get-some-real-world-experience-volunteering">Get some real world experience volunteering</h3>
<p>It’s important to continue to improve your skills while also working on your team-working skills. Having your code out there that is actually in-production and in active use is the best way to prove yourself and contribute.</p>
<p>Taproot foundation connects nonprofit organizations with skilled volunteers.</p>
<p>I used this site to find opportunities in my area, as well as remotely. I worked as a frontend developer for a mental-health site, part-time, remotely.</p>
<p>My role was to convert Wireframes (created on Zeplin) to React components. I split my “free time” between job searching/interviewing and volunteering.</p>
<p>We had weekly conference calls and I was learning much faster and more efficiently than if I were to find another YouTube tutorial/project to follow along.</p>
<p>Not only was I contributing to a cause I cared about, I was given a lot of mentorship by my teammates and was also given some leeway if I had a busy week if I had something going on — such as interviews. Check it out <a target="_blank" href="https://taprootfoundation.org/volunteers/">here</a>.</p>
<h3 id="heading-get-some-real-world-experience-in-general">Get some real world experience, in general</h3>
<p>Better than working solo, working on your own projects is being out there.</p>
<p>Be open to internships and apprenticeships. Many of them are open to bootcamp grads, and the chances of you getting accepted into those are much higher than landing a full-time job at the same company. The chances of you getting hired from completing an internship at the same company are very high too!</p>
<p>Ask around your network to see if anyone needs some help with something — maybe a professional website needs some fixing up, or ask a local business if you can offer some help. These are great to add to your portfolio!</p>
<h3 id="heading-have-a-decent-portfolio-site-because-it-is-being-judged">Have a decent portfolio site — because it is being judged</h3>
<p>This isn’t an industry where your resume tells all. Resumes are accompanied by websites. Those are your two assets, as you submit your faceless application.</p>
<p>Your website is an ongoing showcase of some of your best work.</p>
<p>There is where you tell your story. Take advantage of this opportunity to demonstrate competency and professionalism.</p>
<p>During many interviews I went on, my website was commented on. My Medium articles were sometimes also mentioned.</p>
<p>Here is a checklist of things you should include:</p>
<p>❏ Bio/about section</p>
<p>❏ Projects (ideally deployed) with documented source code (Github)</p>
<p>❏ Downloadable resume</p>
<p>❏ Relevant social media profiles: LinkedIn, Twitter</p>
<p>❏ Easy-to-find contact information</p>
<p>❏ Custom web url</p>
<p>❏ Responsive design</p>
<p><a target="_blank" href="https://spyrestudios.com/web-developer-portfolio/">Here</a> is some inspiration.</p>
<h3 id="heading-use-linkedin-effectively">Use LinkedIn effectively</h3>
<p>LinkedIn is the face you put out to the world, so put yourself in a good light. Often, as soon as your application is considered, employers look at your LinkedIn.</p>
<p>First things first, make sure your profile is complete, the more detail the better. Have a professional photo, a detailed bio and resume.</p>
<p>The more details you include about your work history, the less recruiters/hiring managers will have to guess about your background. The more chances you have for getting contacted.</p>
<p>Help recruiters <a target="_blank" href="https://www.linkedin.com/jobs/career-interests/">find you</a> by having the right preferences on the career interests section of LinkedIn where you can let recruiters know you are open to jobs. Put where you are in your job search, what job titles you are open to, what cities/locations and types of jobs you are open to.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/WYkWdwx6NQGoN0fhKLh5i6K5z5tnSi3Wtg8o" alt="Image" width="788" height="1107" loading="lazy"></p>
<p>You can also look for mentors in your industry that you would like career advice from, sort of like a mentorship program. You can select what sort of preferences you have in order to get <a target="_blank" href="https://www.linkedin.com/opportunities/career-advice/get-advice/">recommendations</a>.</p>
<p>You can choose to get advice from someone who is in your region, from your college, or is your 1st or 2nd degree LinkedIn connection.</p>
<h3 id="heading-attend-networking-events-meetups-hackathons">Attend networking events, Meetups, Hackathons</h3>
<p>The key message here is to put yourself out there.</p>
<p>PUT YOURSELF OUT THERE.</p>
<p>Do not hide behind a screen, applying to hundreds of applications and hoping for some good luck to kick in.</p>
<p>You are competing against thousands of bootcamp grads, who have the same tech experience as you, so go out there and put a face and personality to your name.</p>
<p>Meet people, attend events. I met great people who were also looking to increase their knowledge of tech, get a job, and some even helped me with my job search.</p>
<p>A great way to find these types of events is by going on Meetup.com, and looking in the Tech group category. You can search by <a target="_blank" href="https://www.meetup.com/find/tech/">city or zip code</a>.</p>
<p>(FYI: a lot of these events have free pizza, snacks and drinks!)</p>
<p>Add who you connect with on LinkedIn, and this will only help you be more relevant in recruiters’ searches.</p>
<p>Another great event to participate in is a Hackathon. Not only is it a great way to show that you are actively involved in the tech community, but you’ll acquire industry-related skills, learn more, and network with peers and industry-level experts.</p>
<h3 id="heading-study-for-the-interview-coding-challenges">Study for the interview: coding challenges</h3>
<p>The hiring managers will certainly question whether you have the skills to take on the job, especially if you don’t have any prior professional tech experience.</p>
<p>Coding challenges range from the simple FizzBuzz challenge or something more complex, such as building an entire app. You’re going to have to spend extra time beyond the coding bootcamp</p>
<p>You can use this website to practice technical interview questions: <a target="_blank" href="https://interviewing.io/">https://interviewing.io/</a></p>
<p>I also practiced by going on Glassdoor and reading what questions people posted that they were asked. I’d practice those questions, and topics that they covered.</p>
<p>Sometimes, they ask the exact same questions!</p>
<h3 id="heading-have-a-support-group-to-lean-on">Have a support-group to lean on</h3>
<p>You can’t get through this without your friends. The best support I got was from other students from my cohort, or former bootcamp-graduates who understood my journey and pain points.</p>
<p>Personally, at times, it was a bit tough leaning on non-tech/bootcamp friends (and venting to them). Often my well-meaning friends would ask after just two months of unemployment, “how long do you think it will be before you go back to your old job?”</p>
<p>But don’t let this discourage you…push on!</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/68RGWF7JSQyteFvWKjGD6Btx3JDqsx53UxR-" alt="Image" width="800" height="533" loading="lazy">
_Photo by [Unsplash](https://unsplash.com/@priscilladupreez?utm_source=medium&amp;utm_medium=referral" rel="noopener" target="_blank" title=""&gt;Priscilla Du Preez on &lt;a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral" rel="noopener" target="<em>blank" title=")</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I navigated the job hunt and landed my dream job ]]>
                </title>
                <description>
                    <![CDATA[ By Julius Zerwick Photo by Unsplash This article is about how I went through my job hunt for a full time position as a software engineer in New York City and ended up with my dream job. I had spent two years building my skills and had aspirations to... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-navigated-the-job-hunt-and-landed-my-dream-job-b37bf3d0d630/</link>
                <guid isPermaLink="false">66c34e00465d1b2f886ba3f3</guid>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ engineering ]]>
                    </category>
                
                    <category>
                        <![CDATA[ jobs ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 05 Apr 2019 21:12:00 +0000</pubDate>
                <media:content url="https://s3.amazonaws.com/cdn-media-1.freecodecamp.org/ghost/2019/05/1_97LZJyxxYi4gf4A6EbIdlQ-1.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Julius Zerwick</p>
<p><img src="https://s3.amazonaws.com/cdn-media-1.freecodecamp.org/ghost/2019/05/1_97LZJyxxYi4gf4A6EbIdlQ.jpeg" alt="Image" width="1800" height="1195" loading="lazy"></p>
<p><em>Photo by</em> <a target="_blank" href="https://unsplash.com/photos/kheTI8pIywU?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"><em>Unsplash</em></a></p>
<p>This article is about how I went through my job hunt for a full time position as a software engineer in New York City and ended up with my dream job. I had spent two years building my skills and had aspirations to work at a top tech company with a high bar for engineering excellence.</p>
<p>I knew this goal would not be easy to achieve, especially without a CS degree, barely having any network in New York City, and having to compete against engineers from top schools. It would be a long shot, and I was prepared for the long haul.</p>
<p><strong>9 weeks later…</strong></p>
<p><img src="https://s3.amazonaws.com/cdn-media-1.freecodecamp.org/ghost/2019/05/source.gif" alt="Image" width="700" height="394" loading="lazy"></p>
<p>I’m ecstatic to say that I’ve accepted an offer from DigitalOcean to work as a Software Engineer II from their NYC HQ!</p>
<p>This success came after countless study sessions, mock interviews, hours of practice, and facing numerous challenges &amp; rejections. But I kept my spirits up and came out the other end happier than I imagined possible.</p>
<p><strong>How did you go from start to finish?</strong></p>
<p>That question is what this article is all about! I’ll be detailing my preparation process for interviews, how I built my network, and managed myself during this job hunt.</p>
<p>That being said, everyone’s experiences are different and should pull from this article what they feel will benefit them. No two job hunts are the same and there are different factors in each one.</p>
<p>With that said, let’s dive in!</p>
<h3 id="heading-first-things-first-build-a-solid-foundation"><strong>First things first: build a solid foundation</strong></h3>
<p><img src="https://s3.amazonaws.com/cdn-media-1.freecodecamp.org/ghost/2019/05/1_bkJzT9fx13c_oOfUbHIb6g.jpeg" alt="Image" width="1200" height="800" loading="lazy"></p>
<p><em>Photo by [Unsplash](https://unsplash.com/photos/vII7qKAk-9A?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" rel="noopener"&gt;NESA by Makers on &lt;a href="https://unsplash.com/search/photos/software-development?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" rel="noopener)</em></p>
<p>Before anything else, it’s vital that you have a rock solid foundation in the fundamentals of software engineering. Instead of chasing after the hottest technologies, what’s important is to have the technical foundation needed to learn new things quickly and deeply.</p>
<p>In my opinion, the best way to do this is to pick one industry-proven language and stick with it while learning about variables, functions, tools, software design, databases, APIs, and building web applications. This allowed me focus on depth in my knowledge, proficiency in solving coding challenges, and experience in building quality projects.</p>
<p>To build my fundamentals, I chose to study at <a target="_blank" href="https://launchschool.com/">Launch School</a> which offers an extensive curriculum and rigorous assessment process that ensured that I had deeply learned the fundamentals before progressing.</p>
<h3 id="heading-build-a-project-that-impresses-employers-amp-engineers">Build a project that impresses employers &amp; engineers</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*PodXWdegqPnOmtgZDT94kQ.gif" alt="Image" width="1166" height="509" loading="lazy"></p>
<p><em>SpaceCraft demo</em></p>
<p>In the current day, there are multitudes of bootcamps and online tutorials that provide aspiring software developers with projects to help them land a job.</p>
<p>However, there is now a saturation in the market of developers with simple CRUD apps or clones of popular apps like Instagram, Netflix, Reddit, etc. These projects no longer impress employers or other engineers as they once did.</p>
<p>That said, many engineers need some way to evaluate you before giving you a referral and there is no replacement for showing your skills off with a solid project.</p>
<p>That’s why <a target="_blank" href="https://gooi.tech/">Gooi</a>, <a target="_blank" href="https://njohnson7.github.io/">Nick</a>, and I built <a target="_blank" href="https://spacecraft-repl.com/">SpaceCraft</a>, a real-time collaborative REPL that allows developers to write and execute code in the browser for Ruby, JavaScript, and Python.</p>
<p>It was an incredible experience, and also a TON of work. You can read more about how we built SpaceCraft in this <a target="_blank" href="https://hackernoon.com/building-spacecraft-a-real-time-collaborative-repl-deebcf084ed9">article</a> or read our <a target="_blank" href="https://spacecraft-repl.com/whitepaper">case study</a>.</p>
<p>We spent hundreds of hours researching how to build a REPL, enable real-time collaboration, use Docker to create isolated user sessions, and handle user requests with a proxy server.</p>
<h3 id="heading-market-yourself-effectively">Market yourself effectively</h3>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://livestream.com/accounts/686369/events/8535115/videos/186248334/player?autoPlay=true&amp;height=360&amp;mute=false&amp;referrer=https:%2F%2Fmedium.freecodecamp.org%2Fmedia%2F6caa6cbadb228f40bd5697c72bc7aad1%3FpostId%3Db37bf3d0d630&amp;width=640">https://livestream.com/accounts/686369/events/8535115/videos/186248334/player?autoPlay=true&amp;height=360&amp;mute=false&amp;referrer=https:%2F%2Fmedium.freecodecamp.org%2Fmedia%2F6caa6cbadb228f40bd5697c72bc7aad1%3FpostId%3Db37bf3d0d630&amp;width=640</a></div>
<p> </p>
<p>While SpaceCraft may showcase our skills, I still needed to get people to look at it. Since I had relocated to NYC for my job hunt, my professional network was close to nil and I did my best to put myself in front of as many engineers as possible.</p>
<p>That’s why our team wrote our case study, an article on HackerNoon, and presented at Meetups. These efforts helped us stand out among the sea of other applicants and generated interest from employers &amp; engineers.</p>
<p>Presenting at Meetups were a game changer for me as they got my name out there and procured referrals to several companies, along with giving me the chance to practice and refine my communication skills.</p>
<p>I also built a <a target="_blank" href="https://rouxcaesar.github.io/">personal website</a> and beefed up my <a target="_blank" href="https://www.linkedin.com/in/julius-zerwick-842000b2/">LinkedIn</a> &amp; <a target="_blank" href="https://angel.co/julius-zerwick?al_content=view+your+profile&amp;al_source=transaction_feed%2Fnetwork_sidebar">AngelList</a> profiles in order to make it easier for prospective companies to find me and see my work.</p>
<p>Devoting time to market yourself and skill set through writing articles, presenting at events, and professional networking sites can lead to a big payoff in the interview process.</p>
<p>I had a big increase in the number of engineers and companies reaching out to me after seeing my updated profiles and hearing me present, and having a video of my presentation to include in my outreach emails resulted in a higher response rate and more interviews.</p>
<h3 id="heading-reach-out-to-engineers-amp-companies">Reach out to engineers &amp; companies</h3>
<p>In the same vein, I made sure to consistently reach out to engineers at companies I was interested in. Using LinkedIn Connect requests, I had over a dozen coffee meetings with engineers from DigitalOcean, Cockroach Labs, Oscar Health, DataDog, Peloton, and more. These meetings helped me get a feel for the job market in NYC, hear an insider perspective on company culture and teams, and gain referrals.</p>
<p>My advice is to approach these meetings casually and with interest in your fellow engineer’s work, career, and company. Don’t go in asking for a referral at the beginning, many times they will offer to refer you if you’re nice and the conversation goes well.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*hhoIR1BlNh0uYDiXSFEQpg.gif" alt="Image" width="480" height="258" loading="lazy"></p>
<p>Another form of outreach that I did was more directly emailing engineers. Whenever I found a job posting that I really liked, I would reach out to an engineer who works at the company through LinkedIn Inmail, using <a target="_blank" href="https://chrome.google.com/webstore/detail/clearbit-connect-supercha/pmnhcgfcafcnkbengdcanjablaabjplo?hl=en">Clearbit Connect</a> when needed to find contact info.</p>
<p>In the email, I would include an introduction on my background, my most impressive project, a link to one of my presentations, and ask if they were open to chatting about the position.</p>
<p>This form of outreach lead to my highest response rate out of any other avenue with nearly 1/3 of all my emails getting a response. Remember, the job hunt is entirely a numbers game and it’s best to try out all forms of outreach to see which nets you the highest returns.</p>
<h3 id="heading-study-practice-repeat">Study, practice, repeat</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*JU7-Ksjiq4PaSbnS1-A6gw.jpeg" alt="Image" width="1200" height="800" loading="lazy"></p>
<p><em>Photo by</em> <a target="_blank" href="https://unsplash.com/photos/3V8xo5Gbusk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"><em>Unsplash</em></a></p>
<p>That said, none of these efforts would go anywhere if I didn’t have the skills to succeed in the technical interviews. With a solid foundation in the fundamentals, I needed to spend my time solving coding challenges and studying topic relevant to the positions.</p>
<p>The types of questions and challenges you can face in interviews are VAST and often times you won’t know what to expect. Many of the top companies will focus on algorithms and data structures, while startups and mid-size companies may focus on more “practical” problems like refactoring an existing class or adding features to a basic project.</p>
<p>My advice is to study a variety of coding challenges and do your best to predict the questions they will ask you. For algorithms and data structures, my main resources for building a foundation and conceptual understanding were:</p>
<ul>
<li><p><a target="_blank" href="https://www.amazon.com/Common-Sense-Guide-Data-Structures-Algorithms/dp/1680502441">A Common-Sense Guide to Data Structures and Algorithms</a></p>
</li>
<li><p><a target="_blank" href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=sr_1_1?crid=3B576YLQLTSY8&amp;keywords=cracking+the+coding+interview&amp;qid=1553352055&amp;s=gateway&amp;sprefix=cracking%2Caps%2C285&amp;sr=8-1">Cracking the Coding Interview</a></p>
</li>
<li><p><a target="_blank" href="https://medium.com/basecs">BaseCS</a></p>
</li>
</ul>
<p>I also solved 2–3 problems a day on <a target="_blank" href="https://leetcode.com/">LeetCode</a> for 5–6 days a week.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*t_azHzMuCidoyf_ItbhIhA.gif" alt="Image" width="470" height="264" loading="lazy"></p>
<p>Many companies will also have a system design interview to assess what level to hire you for. If you’re aiming for mid-to-senior level roles, you’ll need to devote more time to this area.</p>
<p>I found the best resources to be <a target="_blank" href="https://www.educative.io/collection/5668639101419520/5649050225344512?authorName=Design%20Gurus">Grokking the System Design Interview</a> and reading various blogs on specific topics. Here are a few blogs I’d recommend:</p>
<ul>
<li><p><a target="_blank" href="https://www.allthingsdistributed.com/2018/06/purpose-built-databases-in-aws.html">All Things Distributed</a></p>
</li>
<li><p><a target="_blank" href="http://highscalability.com/">High Scalability</a></p>
</li>
<li><p><a target="_blank" href="http://blog.gainlo.co/index.php/2017/03/24/chapter-5-system-design-interviews-part-complete-guide-google-interview-preparation/">Gainlo</a></p>
</li>
<li><p><a target="_blank" href="https://medium.com/baseds">BaseDS</a></p>
</li>
</ul>
<p>Another very common step is to complete a take home challenge. The variety of these challenges can make it hard to prepare for, but there are some common topics. Several that I saw were:</p>
<ul>
<li><p>Build a RESTful API that handles several provided cURL requests</p>
</li>
<li><p>Build a CLI app that stores inputs (like albums, artists, and release year) and allows users to retrieve them</p>
</li>
<li><p>Build a game using React/Rails (ex: Tic-Tac-Toe, Blackjack, Minesweeper)</p>
</li>
<li><p>Given a spec and example of the finished product, create a web page that is as close to pixel perfect to the example as possible.</p>
</li>
</ul>
<p>The upside is that you have more time to complete them in the comfort of your own home, and there are lots of opportunities to impress by writing a comprehensive test suite, identifying &amp; addressing edge cases, and finding extra touches to add.</p>
<p>Over my job hunt, I typically spent Monday-Thursday applying to companies, doing outreach, and solving LeetCode challenges or studying system design. I reserved Friday-Saturday to practice building a take home project. Here are some to consider:</p>
<ul>
<li><p><a target="_blank" href="https://x-team.com/blog/how-to-create-a-ruby-api-with-sinatra/">https://x-team.com/blog/how-to-create-a-ruby-api-with-sinatra/</a></p>
</li>
<li><p><a target="_blank" href="https://www.discoverdev.io/blog/series/js30/">https://www.discoverdev.io/blog/series/js30/</a></p>
</li>
<li><p><a target="_blank" href="https://daveceddia.com/react-practice-projects/">https://daveceddia.com/react-practice-projects/</a></p>
</li>
<li><p><a target="_blank" href="https://medium.freecodecamp.org/how-to-build-a-react-js-chat-app-in-10-minutes-c9233794642b">https://medium.freecodecamp.org/how-to-build-a-react-js-chat-app-in-10-minutes-c9233794642b</a></p>
</li>
<li><p><a target="_blank" href="https://codeburst.io/writing-a-crud-app-with-node-js-and-mongodb-e0827cbbdafb">https://codeburst.io/writing-a-crud-app-with-node-js-and-mongodb-e0827cbbdafb</a></p>
</li>
<li><p><a target="_blank" href="https://codeburst.io/learning-react-js-by-building-a-minesweeper-game-ced9d41560ed">https://codeburst.io/learning-react-js-by-building-a-minesweeper-game-ced9d41560ed</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/karan/Projects">https://github.com/karan/Projects</a></p>
</li>
</ul>
<p>To prepare for live coding challenges, I used <a target="_blank" href="https://www.pramp.com/#/">Pramp</a> for mock interviews 3–4 times a week, which improved my performances by leaps and bounds.</p>
<p>I’ve written before on this topic in <a target="_blank" href="https://medium.com/launch-school/why-you-need-an-interview-script-b86e18d0200a">Why You Need an Interview Script</a>, but essentially when under pressure our mental abilities can suffer due to the feeling of being evaluated. The best way to combat this issue is to have mock interviews to recreate the experience until we’ve adjusted to it. Having a problem solving process also really helped to give me a leg up, and the best one that I’ve found is <a target="_blank" href="https://medium.com/launch-school/solving-coding-problems-with-pedac-29141331f93f">PEDAC</a>.</p>
<h3 id="heading-know-what-youre-looking-for-in-a-role-amp-company">Know what you’re looking for in a role &amp; company</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*4yMpTIs2F_svLXmDhgndbw.jpeg" alt="Image" width="1200" height="800" loading="lazy"></p>
<p><em>Photo by</em> <a target="_blank" href="https://unsplash.com/photos/k-xKzowQRn8?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"><em>Unsplash</em></a></p>
<p>With all that said, it’s important to take the time and consider exactly what you’re looking. Do you have a strong preference between backend, frontend, or full stack positions? How big of a company do you want to join? Which industries interest you? And in which direction do you want to grow your career?</p>
<p>Your answers to these questions can have a dramatic effect on which companies you choose to interview with. As software developers, we’re lucky to have no shortage of jobs and companies looking to hire, but it’s important to remember these points:</p>
<ol>
<li><p>There is a large variety of roles and areas of work to choose from, and you should consider which areas of software development you want to specialize in.</p>
</li>
<li><p>You should try to find a role and company that you’ll be happy to work in for several years. My personal opinion is that it’s important to build your experience, credibility, and professional network as an engineer and it’s best to work 1–2 years minimum in each role, rather than job hopping every 6 months — 1 year.</p>
</li>
<li><p>Just as there are a lot of good jobs in software, there are also a lot of bad jobs that you want to avoid. Not every job will have you work on mature, experienced teams building ambitious, challenging projects. There are jobs in which you could mainly handle tedious tasks, clean up legacy code, or simply minor UI components day-in &amp; day-out.</p>
</li>
</ol>
<p>So take the time to think about what you want and list the things that you look for in your dream job. For myself, I wanted a role that focused mainly on backend development with the opportunity to:</p>
<ul>
<li><p>Learn a compiled language like Go.</p>
</li>
<li><p>Work on distributed systems and possibly microservices.</p>
</li>
<li><p>Join an experienced team of engineers to learn from.</p>
</li>
<li><p>Have the ability to work remotely from time-to-time.</p>
</li>
<li><p>Work at a company that values diversity and inclusion.</p>
</li>
<li><p>Have benefits toward continued education.</p>
</li>
</ul>
<p>I aggressively sought out companies that offered most of them and didn’t spend time applying to those that didn’t. While not every company would have everything I was looking for, I knew that I would be happier with the end result than if I just mass applied everywhere.</p>
<p>A side benefit was that by targeting the specifics of my next role, I was able to focus my studies on relevant topics that allowed me to improve with every interview, which I feel gave me the needed edge to land my role at DigitalOcean.</p>
<h3 id="heading-manage-the-interview-cycle">Manage the interview cycle</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*z_8tiXSzygrOwlWXC0wxUw.jpeg" alt="Image" width="1200" height="801" loading="lazy"></p>
<p><em>Photo by</em> <a target="_blank" href="https://unsplash.com/photos/bwki71ap-y8?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"><em>Unsplash</em></a></p>
<p>The interview process for software development is grueling, and the potential for burn out is very high. Typically, the process can comprise of 3–5 steps, or even more, like so:</p>
<ul>
<li><p>Initial phone screen with HR or a recruiter</p>
</li>
<li><p>Phone call with a company engineer or hiring manager</p>
</li>
<li><p>Live code challenge with a company engineer</p>
</li>
<li><p>Take home project</p>
</li>
<li><p>Onsite at the company</p>
</li>
<li><p>Potential offer extended</p>
</li>
</ul>
<p>Exhausting, right? And every company is different, with some having only 1–2 interviews before the onsite and others taking months!</p>
<p>From my job hunt, I experienced a cycle that repeated itself. First, I would have initial phone screens with multiple companies. These would then lead to code challenges, take home projects, or technical phone screens. After several of these steps and opportunities getting filtered out, any onsites would get clustered into the same week or two.</p>
<p>Since the intensity of these stages increased the further I went in the process, I had less time for new applications due to increased studying, culminating with my onsites which had me studying full-time without sending fresh applications. If no suitable offers were extended, then I would start again with fresh applications and the cycle would start over.</p>
<p>Here are some tips when going through this cycle:</p>
<ul>
<li><p>Try to keep your application activity high throughout the cycle. It’s important to keep applying and doing outreach in order to fill your interview funnel with new opportunities.</p>
</li>
<li><p>Have a daily goal of applications and outreach to complete. My daily goal for Monday-Thursday was to submit at least 5 applications (often with cover letters) and reach out to 5 engineers for coffee or to ask about open positions.</p>
</li>
<li><p>Think critically about what to expect in each interview. You may get some details in your initial phone screen about the interview process, but always ask for more info in order to prepare.</p>
</li>
<li><p>If you have a call with a CTO, know that it’s common for them to ask you technical questions regarding your resume as well as behavioral questions.</p>
</li>
<li><p>Don’t schedule onsites on back-to-back days. They are by far the most exhausting steps and need more preparation. Always give yourself at least one day of rest in-between onsites to recharge, review topics, and mentally prepare.</p>
</li>
</ul>
<h3 id="heading-avoiding-burnout-through-the-process">Avoiding burnout through the process</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*3QVuXfNawq8dGKfkXbs3eA.gif" alt="Image" width="380" height="220" loading="lazy"></p>
<p>At this point, I want to address the importance of avoiding burn out during the job hunt. With the sheer number of interviews to complete and associated stress, it can easily feel overwhelming at times.</p>
<p>Don’t overwork yourself by studying &amp; coding for 6+ hours a day on top of interviews, and dedicate time each week to disconnect and recharge. It’ll help you maintain your energy &amp; focus as you steadily ramp up the intensity of later stage interviews.</p>
<p>At most, I studied 4 hours a day and prioritized deep work as described in Cal Newport’s <a target="_blank" href="https://www.amazon.com/Deep-Work-Focused-Success-Distracted/dp/1455586692">Deep Work</a>, which is where you focus intensely for a period of time on a task that is more difficult than what you’re used to without any distractions.</p>
<p>This meant solving algorithm problems or practicing projects that were harder than what I had already completed. This made sure that I kept improving my skills, while also identifying where I struggled and needed to study more.</p>
<p>And no matter how busy my week was, I always took at least one day off to relax and recharge for upcoming interviews.</p>
<h3 id="heading-in-the-end"><strong>In the end…</strong></h3>
<p>I’m extremely happy with the results of my job hunt and feel that the approaches I detailed above worked well for me. For those of you out job hunting now, I hope that this article proves helpful to you. I also recommend reading the following article, which I found very helpful for my job hunt:</p>
<p><a target="_blank" href="https://hackernoon.com/what-it-took-to-land-my-dream-software-engineering-job-17c01240266b">What it took to land my dream software engineering job — Sun-Li Beatte</a>ay</p>
<p>Good luck to everyone out there job hunting, keep it up!</p>
<p>Please let me know what you think in the comments! I’d love to hear more about your job hunt experiences and what has worked for you.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ A guide to teaching yourself to code (and getting a job!) ]]>
                </title>
                <description>
                    <![CDATA[ By Nicole Archambault Avoid what you don’t need; learn and practice what you do Like most people, I had no plans whatsoever to teach myself to code. The decision came when I lost my Customer Service job in 2015. The transition came as organically as... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/a-guide-to-teaching-yourself-to-code-and-getting-a-job-db7908dfb12e/</link>
                <guid isPermaLink="false">66c342b7ccd54aa295e92c74</guid>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sun, 31 Mar 2019 22:12:24 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*iA75C6m8p12rG24V2fgm4w.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Nicole Archambault</p>
<h4 id="heading-avoid-what-you-dont-need-learn-and-practice-what-you-do">Avoid what you don’t need; learn and practice what you do</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*iA75C6m8p12rG24V2fgm4w.jpeg" alt="Image" width="800" height="384" loading="lazy"></p>
<p>Like most people, I had no plans whatsoever to teach myself to code. The decision came when I lost my Customer Service job in 2015.</p>
<p>The transition came as organically as falling in love with a soulmate. We were old loves—I had tried to make it work in college, but the timing wasn’t right. Not to say it was easy! But, it was so much easier with so much emotion to drive the experience.</p>
<p>I got my first job in tech in about 10 months after I started teaching myself web development, after an incredible amount of work.</p>
<p><strong>And please believe me when I tell you that if I can do it… you can, too.</strong></p>
<p>I’m quite sure there are lots of guides out there on this topic—how to teach yourself to code and get your first coding job. But this one is written by me, so it’s different. I think you’ll appreciate my perspectives. :)</p>
<p>Now, I think it goes without saying that condensing the entire process down to 5 steps is over-simplifying. I’m going to give you the general sense of what to do. You have a couple of options for filling in the gaps, and honestly, you should do both!</p>
<p><strong>Option 1</strong>: Lean on your communities for support<br><strong>Option 2</strong>: Get some dedicated help and guidance</p>
<p>Both are actually my specialty! I’m a passionate community builder. I understand the importance of seeing and hearing from people who are trying to do what you’re aiming to do.</p>
<p><strong>Option 1</strong> is an important part of your growth as a developer. You’ll need a network of people. This industry is actually particularly awesome, and a ton of fun. We grow along with the tech—and each other. We see each other at conferences. We participate in weekly Twitter chats. It’s dope.</p>
<p><strong>Option 2</strong> has some barriers to access. Essentially, it involves having someone—ideally an experienced coach with a deep understanding of your situation and goals—take your hand, get to know you, explore your dreams with you, and plan out your journey from where you are, to where you want to be. Then, you delve into the skills with an actual map and pathway to your destination. At that point, the hard work is yours and yours alone.</p>
<p>I LOVE working one-on-one with newbie coders, but of course, with the level of attention and expertise required… it’s not free. Most of us do what we can to support newbie coders via blog posts, podcast episodes, books, and more—but some of us are willing to give more of our time and presence than others! As such, Option 2 is an investment in yourself.</p>
<p>So, this is indeed an over-simplified, but still a pretty thorough overview of the process of teaching yourself to code, and then getting your first dev job!</p>
<h3 id="heading-step-1-figure-out-what-the-hell-youre-doing">Step 1: Figure out what the hell you’re doing</h3>
<p>I created an <a target="_blank" href="http://resources.lavieencode.net/10things">entire 14-page guide</a> to this really early part of the journey because it’s the most easily-overlooked part. It’s also why a lot of people sputter out—they simply didn’t do their initial homework.</p>
<p>You can download that guide, called “10 Things You Need to Know BEFORE Learning to Code”, here:</p>
<p><a target="_blank" href="https://resources.lavieencode.net/10things/"><strong>Thinking about learning to code?</strong></a><br><a target="_blank" href="https://resources.lavieencode.net/10things/">_Considering learning to code and changing careers? Before you take the plunge, find out what the industry isn't…_resources.lavieencode.net</a></p>
<p><em>First, <strong>why</strong> do you want to do this?</em></p>
<p>Have you been dreaming about coding since you were a little kid? Or maybe you just heard that coding is the future, which makes sense to you since technology is growing so quickly, so you’d like to get on the train. Regardless of your reason, you’ll need to establish that early on. It will be what pushes you forward when things get really challenging.</p>
<p>You’ll need to <strong>create a budget</strong> for yourself, which I know sucks because I, too, hate budgets. If you’re changing careers, you need to be sure you’ll be able to make your transition with as little stress as possible. Coding is tough enough as it is… do your due diligence not to make it harder on yourself.</p>
<p><strong>Is there even a web development industry where you live?</strong> If so, tap into it, and start talking to folks. Attend Meetups. Get to know people who do something similar to what you want to do.</p>
<p>Ask questions about companies hiring in the area. Do people like their dev careers? What are their salaries like?</p>
<p>If there isn’t a lively dev industry in your local area, you’ll need to get creative. Remote jobs could be an option if that’s something you’re open to. Alternatively, if you have the resources and the flexibility, relocating to a new city could be an exciting change alongside your new career.</p>
<p><strong>The entire point of Step 1 is to ensure that if you’re looking for a job, you’re not just jumping into things without scouting the territory first.</strong></p>
<p>If you jump in, you may find yourself feeling unprepared and stressed out when bills come due, unexpected events come up, and generally speaking… life happens.</p>
<h3 id="heading-step-2-choose-a-job-title-and-work-backward">Step 2: Choose a job title, and work backward</h3>
<p>Alright, so I approach this differently than a lot of people out there. When people start learning to code, one of the biggest questions I hear is “what should I learn?” (also, “where should I learn it?”).</p>
<p>Keep in mind, you’re not even coding yet by this point. Or maybe you’re just poking around, learning the basics, but you’re not actually building projects. You’re still laying the foundation, and learning about your tools and the purpose behind them. This is a super important phase!</p>
<p>With all those tools out there though… how do you know which are going to align for an actual job title?</p>
<p>Wouldn’t it suck to learn a bunch of fairly unrelated skills and language to a basic level, and then realize they don’t actually get you a job? Or that you’ll need to flesh just a few of them out with additional learning, in order to even be competitive for jobs in your area?</p>
<p>Yeah… that’s what ya girl did.</p>
<h3 id="heading-quick-relevant-side-story"><strong>Quick, relevant side story</strong></h3>
<p>I learned HTML and then added on CSS. I kinda hated CSS at first, but we worked it out and we cool now. So far so good, yeah?</p>
<p>Then, I got to JavaScript. Basic tools like variables and even loops and some basic data structures, I was fine with. But, in general… things started getting tough for me.</p>
<p>I have a non-verbal learning disability. It’s kinda funny that wasn’t diagnosed until <em>after</em> I struggled through gaining the required skills to get that first job 10 months in. My struggles made so much more sense.</p>
<p>At this point, algorithms scared the crap out of me. freeCodeCamp’s algorithms were super challenging. A lot of my past learning trauma came up. I cried a bunch out of frustration when I simply couldn’t contextualize a mental model for my neuroatypical brain to “make it click”.</p>
<p>In a panic, I went off the rails. Or perhaps “on” the rails, as I started learning Ruby. Got to the same point. Panicked again.</p>
<p>Switched to PHP and WordPress. Actually, I really liked them both and primarily use them nowadays along JavaScript. But, I got to that same freaking point, and finally basically collapsed in exhaustion. <em>What the hell was wrong with me?</em></p>
<p>I took a break around the time I wrote <a target="_blank" href="https://medium.com/la-vie-en-code/why-i-m-scaling-back-on-learning-to-code-and-ramping-up-on-learning-problem-solving-6461807ed248">this article</a> because I had had an existential crisis, wondering if I was even fit for this:</p>
<p><a target="_blank" href="https://medium.com/la-vie-en-code/why-i-m-scaling-back-on-learning-to-code-and-ramping-up-on-learning-problem-solving-6461807ed248"><strong>Why I’m scaling back on learning to code… and ramping up on learning Problem Solving</strong></a><br><a target="_blank" href="https://medium.com/la-vie-en-code/why-i-m-scaling-back-on-learning-to-code-and-ramping-up-on-learning-problem-solving-6461807ed248">_Wow, it’s been almost a month since I’ve posted! I can’t believe time is flying by so quickly. I have a point to this…_medium.com</a></p>
<p>That story kind of serves as a cautionary tale, to show what can potentially happen if you do things out of order, or without an initial structure. You gotta be able to build these skills <em>for</em> a job if you <em>want</em> a job.</p>
<p><strong>So here’s my question:</strong> why not just take the guesswork out, and figure out what kind of work you’d like to do <em>first</em>?</p>
<p>And of course, this is going to change over time! We grow and change not only as developers but as human beings over time. We learn more about ourselves, and we want to change up our goals. But starting with some kind of compass direction REALLY helps.</p>
<p>How do you figure this out? You’ll want to take a really deep inventory of your dreams, passions, and existing skills. Often, it helps to evaluate this with the help of someone else (ahem, like me). We have the skills and talents we bring to the table that other people don’t… and that we ourselves often overlook.</p>
<p>Look at what’s available in your area. Search on job search sites like <a target="_blank" href="http://www.indeed.com">Indeed</a>. Ask in local online fora.</p>
<p>But the important part here is to pay attention to the <strong>skills</strong> that are listed: <strong>both tech and interpersonal.</strong></p>
<p><strong>Yes, interpersonal</strong>. We have enough problems with a lack of interpersonal skills like effective communication, empathy, compassion, and inclusion. Don’t come here bringing more.</p>
<p>But those coding skills are going to give you guidance and a path to your destination so that if you change your goals, you at least know what you’re deviating <em>from</em> and <em>to</em>.</p>
<h3 id="heading-step-3-build-your-skills">Step 3: Build your skills</h3>
<p>By this point, you have a good sense of your local development industry, and you’ve done your research on job titles. You have an idea of what kinds of skills you’ll need to build on your way to your first dev job.</p>
<p>Now, it’s time to build your skills.</p>
<p>It’s important to note that you’ll be doing this alongside Step 4, and alongside anything else, you may be doing (we want to keep those things limited). You always need to be learning and building your skills <em>while</em> also building projects with them.</p>
<p><strong>I generally recommend that web developers start with the front-end</strong> since all roads lead to the user’s experience. But this really varies based on those initial goals. See where it was helpful to identify them first?</p>
<p>For example, your starting point will be different if your goal is to work with data. Perhaps your goal is to learn, say, Python, since Python is natively very efficient with data management. You’ll naturally lay out your skills-building journey differently depending on your end goals.</p>
<p>The important part here is that no matter where you’re headed, you have a roadmap. You want to avoid getting caught up learning things you don’t need because they will get in the way of you getting a job ASAP.</p>
<p>You should have a list of resources that you know to work for you. Knowing how you best absorb information is absolutely integral to this part. Don’t waste time with books if you learn best from videos. Again, time is of the essence, so you need not just to learn but learn <em>intelligently, efficiently, and effectively.</em></p>
<p>Spend a good amount of time on this section. You’re adding tools to your toolbox, and you’ll be using them every day once you start working.</p>
<h3 id="heading-step-4-build-your-portfolio-and-resume">Step 4: Build your portfolio and resume</h3>
<p>Remember, Step 4 is happening alongside your skills building. You’re learning daily, and applying what you learn. And of course, there are a couple of really important parts here that I find coding students overlook. So let me hit on those real quick!</p>
<h4 id="heading-hot-tip-1-projects-get-you-the-edge-as-a-self-taught-coder">Hot Tip™️ #1: Projects get you The Edge™️ as a self-taught coder</h4>
<p>You don’t have the long resume dating back to your Computer Science major at MIT. Neither do I. But, like… woe is us?</p>
<p><em>Nah.</em></p>
<p>As a self-taught coder without the CV to back up your skills, you’re going to need to show whatcha got. So, even though you <em>will</em> be focusing on your resume as well, <strong>you REALLY need to put time into that portfolio</strong>. If nothing else, your resume will grow along with your portfolio as you add skills!</p>
<h4 id="heading-hot-tip-2-you-dont-need-a-ton-of-projects">Hot Tip™️ #2: You don’t need a ton of projects!</h4>
<p>First, you don’t need a ton of projects. I think a lot of newbies get overwhelmed at the thought of having to build tons of projects in order to show what they know.</p>
<p>This is why we’re aligning those skills toward the actual job description. <strong>If you build even ONE project but maintain it <em>intelligently</em>—you’re going to be <em>leagues</em> ahead of your peers.</strong></p>
<p>Ok, so you created one project, you’ve been posting some commits on GitHub, and you’re already feeling you need to jump onto the next one. Hold it right there, padawan.</p>
<p>Did you make the <em>absolute most</em> out of the project? Because you’re learning skills toward a job, they’ll probably come together as a stack. And you can more than likely apply <em>many</em> of your newly learned skills to the same practice.</p>
<p>Let’s say you’re working toward becoming a front-end web developer. You just built your first website.</p>
<p><em>Can you turn a website into a web app, so maybe users can log in?</em></p>
<p><em>If you didn’t build your page mobile-first (you should have!), how about refactor it as mobile first?</em></p>
<p>Take the time to look at your projects as not only an asset but a glimpse into the inner workings of your brain. This is INCREDIBLY important to hiring managers. They want to know how you think, so they can determine if it brings something valuable to their company and team.</p>
<p>So, to piggyback off Hot Tip™ ️#2…</p>
<h4 id="heading-hot-tip-3-become-a-storyteller-not-just-a-coder">Hot Tip™️ #3: Become a storyteller, not just a coder</h4>
<p>What better way to show people the inner workings of your brain than to document your journey?</p>
<p>One of the most slept-on resources for getting a job is… drum roll…</p>
<p><strong>…your README.txt file.</strong></p>
<p>This shouldn’t just be where you tell people how to run your program. This is where you should be telling hiring managers:</p>
<ul>
<li>Why you added that feature</li>
<li>Why you abandoned adding that other feature and removed it</li>
<li>Your next plans for expanding</li>
<li>What you’d like to see in terms of feedback</li>
<li>What you learned at each step</li>
<li>What you feel proud of, and what you could’ve done better</li>
</ul>
<p>Why are we ashamed of writing our stories? We don’t have time for that we need to get you a job!</p>
<p>Make it funny, even. Make it epic. Your journey is epic.</p>
<p>But yeah, leverage your README.txt file, and you’ll seriously be so much more attractive to the people checking out your portfolio and considering you for employment.</p>
<h3 id="heading-step-5-apply-for-those-jobs">Step 5: Apply for those jobs!</h3>
<p>There’s SO much to unpack in this step, it’s just not possible to cover it all in a single post! ? So, I’ll go with just dropping a bunch of value bombs on all y’all.</p>
<h4 id="heading-hot-tip-1-just-apply-already">Hot Tip™️ #1: Just apply already</h4>
<p>One of the most frequent questions I get is “when should I start applying for jobs”? My response is something along the lines of “yesterday”.</p>
<p>Seriously. Go ahead, apply. The worst they can tell you is “no”.</p>
<p>So, here’s the thing about applying for jobs as a newbie self-taught coder. You want to do it right, and really demonstrate:</p>
<ul>
<li>Your willingness to learn</li>
<li>Your growth so far</li>
<li>Your enthusiasm for the industry (and specifically, company!)</li>
</ul>
<p>When you communicate with hiring managers, you’re going to want to be honest with <strong>where you are</strong>, while showing <strong>what you’ve done.</strong> Those two components will put you on the radar. You’re being vulnerable, and you’re still retaining some control over your perceived image.</p>
<p><strong>Another important thing to remember: when you apply to a company, it’s not a one-shot deal.</strong> Many newbies make the mistake of thinking it is.</p>
<p>Ok, so let’s say you’re rejected for an interview. Now, you have a window to ask for feedback. If they respond, that’s a really good company. ??</p>
<p>If you really like the company, and they know you’re self-taught (they’ll know from your resume anyway, so just be transparent), tell them that you’d like to grow your skills in their direction and re-apply in the future.</p>
<p><em>Boom.</em> You just formed a connection with hiring managers and showed how determined you are to improve your skills in order to meet their requirements.</p>
<h4 id="heading-hot-tip-2-you-need-to-develop-solid-tech-interview-skills">Hot Tip™️ #2: You need to develop solid tech interview skills</h4>
<p>Alongside building your portfolio, you’ll need to grow those interview skills. But not just any interview skills—tech isn’t like every other industry out there. We’re <em>edgy.</em> We like you to prove what you know.</p>
<p>This is especially important for self-taught coders. You’re going to need to know how to do things like:</p>
<ul>
<li>Explain what different tech concepts are</li>
<li>Solve algorithmic challenges—while explaining your approach</li>
<li>Write out your steps to the solution</li>
<li>Read your interviewers</li>
<li>Do a bit of a dance to maintain control over the interview (this is my specialty haha)</li>
</ul>
<p>There are lots of resources out there for this, like Gayle Laakmann McDowell’s “<a target="_blank" href="https://amzn.to/2U7LKdE">Cracking the Coding Interview</a>”. Plus, it doubles as a blunt weapon.</p>
<p><a target="_blank" href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=as_li_ss_tl?crid=3VNR0I7JXT1OI&amp;keywords=cracking+the+coding+interview&amp;qid=1554067858&amp;s=gateway&amp;sprefix=cracking+the,aps,140&amp;sr=8-2&amp;linkCode=ll1&amp;tag=lavienco0c-20&amp;linkId=0c27bcb51cb127bf34afe5f4c3ef0752&amp;language=en_US"><strong>Cracking the Coding Interview: 189 Programming Questions and Solutions</strong></a><br><a target="_blank" href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=as_li_ss_tl?crid=3VNR0I7JXT1OI&amp;keywords=cracking+the+coding+interview&amp;qid=1554067858&amp;s=gateway&amp;sprefix=cracking+the,aps,140&amp;sr=8-2&amp;linkCode=ll1&amp;tag=lavienco0c-20&amp;linkId=0c27bcb51cb127bf34afe5f4c3ef0752&amp;language=en_US">_I am not a recruiter. I am a software engineer. And as such, I know what it's like to be asked to whip up brilliant…_www.amazon.com</a></p>
<p>You’ll need to be yourself. They need to want to hire <em>you</em>. It’s hard to be yourself when you’re not sure what’s expected of you, but why get hired as someone you aren’t? That just sounds like fodder for a whole lot of Imposter Syndrome.</p>
<h3 id="heading-by-this-point">By this point</h3>
<p>By this point, you have a growing toolbox of skills.</p>
<p>You’re learning every day. You’re building projects, but making the most out of them instead of just ditching them and moving onto the next thing. You’re telling a story with your GitHub README.txt.</p>
<p><strong>But most importantly, you have an idea of where you’re going</strong>. That internal compass, alongside a supportive community (like #CodeNewbie!) is going to be what saves you when you get lost.</p>
<p>Build on, grow, and gain confidence in yourself. You’re a total warrior, and you can do this! ??</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ My path from software engineering to product management ]]>
                </title>
                <description>
                    <![CDATA[ By Sari Harrison And some advice on how to do it yourself _Photo by [Unsplash](https://unsplash.com/photos/aoN3HWLbhdI?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" rel="noopener" target="_blank" title="">Burst on <a href="http... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/my-path-from-software-engineering-to-product-management-3ea8c5ca36e7/</link>
                <guid isPermaLink="false">66c35bd398047dbdb4839f09</guid>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Product Management ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 26 Mar 2019 21:26:09 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*r2RfR8j5WGBfL4yiLcu7_w.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Sari Harrison</p>
<h4 id="heading-and-some-advice-on-how-to-do-it-yourself">And some advice on how to do it yourself</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/h-iivGYFzN10MIy2PDwsGju1QFwpWMrpDilf" alt="Image" width="800" height="533" loading="lazy">
_Photo by [Unsplash](https://unsplash.com/photos/aoN3HWLbhdI?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" rel="noopener" target="_blank" title=""&gt;Burst on &lt;a href="https://unsplash.com/search/photos/fork-in-the-road?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" rel="noopener" target="<em>blank" title=")</em></p>
<p>I am often asked how to make the move to product management. By software engineers, project managers, product marketing managers, data scientists, people in QA… I wonder if they know <a target="_blank" href="https://productcoalition.com/5-reasons-not-to-be-a-pm-2b6e57bc8aba">what they are asking for</a>.</p>
<p>Here’s how it happened for me.</p>
<h4 id="heading-love-at-first-program">Love at first program</h4>
<p>My father bought the family a computer when I was 12. It came with a BASIC programming manual and I dove right into everyone’s first program — Hello World! Then moved onto copying the code for the “Sorry!” game from the manual, finding and fixing a bunch of bugs.</p>
<p>As a kid, I always loved doing puzzles, and programming was like solving puzzles to make the computer do what I wanted. I was instantly hooked and I decided that I was going to major in computer science. Yes, at 12.</p>
<p>I look back at that and marvel a bit. So decisive… Such great listening to my intuition… Why can’t I do that all the time ?? I’ve only experienced that kind of clarity a few times in my life. Another one being the move to PM. But I’m jumping ahead.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/QcumNnyimviUtuclqI2cynmfZn0cUBSX9RKh" alt="Image" width="384" height="384" loading="lazy"></p>
<h4 id="heading-apple-round-1">Apple Round 1</h4>
<p>After college, I landed my dream job as a software engineer at Apple, back in the days of John Sculley. I worked on the Apple Internet Router under <a target="_blank" href="https://en.wikipedia.org/wiki/Alan_B._Oppenheimer">Alan Oppenheimer</a>, who literally wrote the book on Apple’s networking stack.</p>
<p>I was practically the only female engineer on the team. The guy that was setting up my phone asked me if I was “supporting” Alan. Took me a few minutes to realize he thought I was Alan’s new admin. But again, I digress…</p>
<p>I worked at Apple for 8.5 years in round 1 (we’ll save round 2 for another time). I had 4 CEO’s. After John Sculley, there was Michael Spindler, Gil Amelio, and then the return of Steve Jobs.</p>
<p>When Steve came back, he laid off huge parts of the workforce and canceled many projects, including the one I was working on. I didn’t manage to get a severance package though, which at the time, we all considered the better option (what did we know?).</p>
<p>I continued on at Apple for a few more years, delivering the first version of the Apple Keychain and the first ever Internet API suite (Subwoofer). The iMac launched. I spoke at WWDC 3 times. I was successful by most definitions, including my own.</p>
<h4 id="heading-total-quality-management-tqm">Total Quality Management (TQM)</h4>
<p>Apple didn’t have product management back then (or now, for that matter). There was a very lightly staffed product marketing team that hypothetically wrote “Market Requirements Documents” (MRDs). But if I ever saw one it was done after we had written the engineering specs and added ~0 value.</p>
<p>Fortunately, I was born a first principles thinker. <a target="_blank" href="https://startwithwhy.com/">Simon Sinek</a> was probably still in grade school, but I was starting with why anyway. My need to figure out the right thing to do next and having no one to guide me, lead me to something called TQM.</p>
<p>There was a TQM consultant floating around Apple working with other teams that I got wind of. And I had him come teach it to the routing team.</p>
<p>As it was taught to me, TQM was basically design thinking but solely focused on technology. And to be honest, there are elements of it that are above and beyond design thinking (sorry IDEO). In particular, the focus on having the whole team develop empathy for the customer, as opposed to just the designers.</p>
<p>So I was off and running doing customer visits and gaining product insight through empathy. Back in 1995. This lead me to my first product idea — the Apple/IP Gateway. It was a big success until IP took over most existing networks and AppleTalk was deprecated.</p>
<p>And it wouldn’t have come about without customer empathy. Especially since this was a B2B product. Our customers didn’t “ask” for it. I just saw the problems they had first hand and that tunneling IP through AppleTalk would help.</p>
<h4 id="heading-directly-responsible-individual-dri">Directly Responsible Individual (DRI)</h4>
<p>After my time in routing, I moved onto the Cyberdog team which was developing a suite of Internet apps. FTP, Telnet, Gopher, SMTP, and HTML … I’m guessing many of you need to look some of those up ?. We did all this with a team of about 25 or so and I was one of the engineering managers.</p>
<p>After our first release, I was anointed “DRI” of Cyberdog. This concept is unique to Apple and is why there is still no product management there to speak of. The DRI is usually an engineering manager and includes both product ownership and running the engineering team creating the product.</p>
<p>It is a great gig if the team is reasonably small. I loved it. Except for the minor detail that I still had to write code.</p>
<p>I liked writing code well enough, don’t get me wrong. But it required me to be completely focused, which is not always possible in a fast-paced environment. And I much preferred the rest of my job.</p>
<p>I got pretty cranky sometimes. I remember the feeling when my primary tester came to my door when I was trying to figure out a super tough bug. It would take all my energy not to scream “leave me alone — I’m working!”. In hindsight, this was really good data ?.</p>
<p>All in all, I was a decent coder. Better at iterating on someone else’s code than starting from scratch. But I was a great DRI. I loved making tough prioritization calls. I loved user research. I loved driving the team forward, cutting through the ambiguity. I even loved writing specs.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/72fXXbkCYX5hvsY2JMW8IBoqQEQ5UaI74XRo" alt="Image" width="450" height="360" loading="lazy"></p>
<h4 id="heading-microsoft-program-management">Microsoft Program Management</h4>
<p>As the DRI of Subwoofer (first ever Internet API suite), I went to Microsoft one day to see if we might want to do some code sharing with their Mac Internet Explorer team.</p>
<p>I sat down in one of their conference rooms and in comes this guy who introduces himself as the program manager. I’m thinking “uh… can I talk to someone technical, please? Where’s the dev manager?”</p>
<p>But it turned out he was technical and understood the business. Interesting, I thought… what is this role exactly?</p>
<p>Side note for those that haven’t worked at Microsoft. Program management is product management. The discipline started there when other tech companies had product marketing and product management as a single person. Microsoft was the first to split them up. The first to have someone completely focused on what we should build, why, and a little bit of how. And they call it “program management”.</p>
<p>In 2001, I got a call from a friend who used to be at Apple with me and whose company (WebTV) had been bought by Microsoft. “Sari,” he said, “we need program managers here and I thought of you.”</p>
<p>He knew, before I did, that I was a PM. Even though we had both spent most of our careers at Apple where they didn’t exist.</p>
<p>I joined the team (leaving a ton of Apple stock behind, whoops…). My friend left for Google shortly thereafter. But I had found my calling from a discipline perspective and never looked back.</p>
<h4 id="heading-final-thoughts-and-some-advice">Final Thoughts and Some Advice</h4>
<p>My story is one of someone who is a PM at heart and found her way to it organically. So my first question for you is exactly that:</p>
<blockquote>
<p>Are you a PM at heart?</p>
</blockquote>
<p>Look hard at why you want to be a PM. It’s hard to understand what the role is if you aren’t already doing it, so how do you know? Why are you drawn to it? Read some of my other <a target="_blank" href="https://medium.com/@sariharrison">blogs</a>. Are you sure?</p>
<blockquote>
<p>Are you doing the job already? Without the title?</p>
</blockquote>
<p>If you are in an engineering, project, program, or design role today and you don’t have a PM, who is doing the work of the PM? The work — defining the product, driving things forward, being the catalyst for hard decisions getting made — has to get done. By someone.</p>
<p>If it’s you, and it’s your favorite part of your job, then that’s a good sign it’s the right role for you. It’s also how you can pitch yourself in an interview.</p>
<blockquote>
<p>Try it where you are.</p>
</blockquote>
<p>If you do have a PM, ask them if you can help in some way. Most PMs are going to jump at the chance because they are overwhelmed with work. Yes, you’ll have to do it in addition to your day job. Sorry ?‍♀️.</p>
<p>Making the switch in your current organization is what I recommend, if at all possible. You already know the product and the technology and that is a tremendous help.</p>
<p>Let your PM leader know you are interested. Find out what they look for. Ask for ideas for how you can practice the skills required or prove you have them.</p>
<blockquote>
<p>Take a class.</p>
</blockquote>
<p>Get some training. There are a bunch of product management classes you can take. I’m not going to recommend any particular one. Ask around. The main thing a class will help with is getting you exposed to what the role is and give you some vocabulary. And show hiring managers that you care enough to devote time and energy. It will also extend your network.</p>
<p>Speaking of network… What I don’t think helps all that much is “networking”. What I mean by that is attending networking events, meetups, or conferences. The relationships you start there may help you in a couple of years if you nurture them. But they won’t help anytime soon.</p>
<blockquote>
<p>Use your network.</p>
</blockquote>
<p>I do think your <em>existing</em> network can help. That’s how I landed my first PM role without really even intending to. Someone thinking of you as a great option is the best way to get any job, including PM. So let your existing network know you want to make the switch. And no, I don’t know a short cut to building a good network ?.</p>
<h4 id="heading-i-sincerely-hope-you-find-your-way-to-being-a-pm-and-love-it-as-much-as-i-do-good-luck">I sincerely hope you find your way to being a PM and love it as much as I do. Good luck!</h4>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to avoid these 7 mistakes I made as a Junior Developer ]]>
                </title>
                <description>
                    <![CDATA[ Beginning your career as a junior developer can be scary. There will be many unknown challenges, things to learn, and difficult choices to make. And sometimes, we get these choices wrong. It’s only natural, and we shouldn’t beat ourselves up when it ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-avoid-these-7-mistakes-i-made-as-a-junior-developer-a7f26ce0f7ed/</link>
                <guid isPermaLink="false">66c8c8e435adc35234e1f4ca</guid>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Junior developer  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Chris Blakely ]]>
                </dc:creator>
                <pubDate>Mon, 25 Mar 2019 21:13:42 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/0*c7djDqc-mTOweLhT.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Beginning your career as a junior developer can be scary. There will be many unknown challenges, things to learn, and difficult choices to make. And sometimes, we get these choices wrong. It’s only natural, and we shouldn’t beat ourselves up when it happens.</p>
<p>What we should do though, is learn from this. As a senior developer, I’ve made my fair share of mistakes. Here are the 7 big mistakes I made when I was starting out as a junior developer, and how to avoid them.</p>
<h3 id="heading-taking-the-first-job-that-comes-along">Taking the first job that comes along</h3>
<p>If you’re teaching yourself to code, or coming to the end of your university degree, getting your first job will be one of your main goals. It’s the light at the end of a long tunnel.</p>
<p>And getting a job is not easy. There are more people than ever trying to get junior developer jobs. <a target="_blank" href="https://www.chrisblakely.dev/how-to-write-an-awesome-junior-developer-resume-in-a-few-simple-steps/">You need to write a killer CV/Resume</a>, make it through many rounds of interviews, and the process can take forever.</p>
<p>Which is why it’s understandable how tempting it can be to jump on any job offer you get with both hands.</p>
<p>Yet, this can be a bad move. My first job was far from ideal, from a learning and enjoyment perspective. The developers had a “meh, it’ll do attitude” and often did things half-heartedly. There was a culture of blame, and I was often required to cut corners to meet tight deadlines. Worst of all, I wasn’t learning anything.</p>
<p>I ignored the warning signs in interviews because I was blindsided by the opportunity of getting a job. Any concerns I had were thrown out the window when I received the <em>offer with a</em> <em>nice salary</em> to boot.</p>
<p>Big mistake.</p>
<p>Your first job is important. It gives you a taste of being a true developer, and the experience and mentorship you receive will set you up for the rest of your career. Which is why you should thoroughly do your research on the role and the company before accepting any job offer. The last thing you want is a bad experience or bad mentors!</p>
<p>So, before applying or accepting any job offer:</p>
<h4 id="heading-research-the-company">Research the company</h4>
<p>Search for the company on <a target="_blank" href="https://www.glassdoor.co.uk/">Glassdoor</a>, the internet, their website, and read the reviews. This will give you a good feel for if the company is suited to your goals and needs.</p>
<h4 id="heading-ask-people-you-know">Ask people you know</h4>
<p>If anyone in your network has worked there or knows anyone who works there, have a chat with them. Find out what they like, what they don’t like, and generally what their experience was.</p>
<h3 id="heading-ask-the-right-questions-in-the-interview">Ask the right questions in the interview</h3>
<p>The interview is the best chance you have to learn about the company, so make sure you come armed with a set of questions to ask the interviewer. A few things you can ask are:</p>
<ul>
<li>Ask about the development process (what methodologies do they follow? Do they do code reviews? branching strategies?)</li>
<li>Ask about testing (what sort of testing do they follow? do they have dedicated test engineers?)</li>
<li>What is the culture like (is it a relaxed environment? what is the support like for junior developers?)</li>
</ul>
<h3 id="heading-not-choosing-a-path">Not choosing a path</h3>
<p>No doubt the path to becoming a fully fledged developer can be a confusing one. There are many languages, frameworks, and tools available. A mistake I made at the beginning was <strong>trying to learn everything</strong>. Funnily enough, I ended up not learning very much.</p>
<p>One minute I would try and learn Java, then JQuery, then C#, and then C++ …</p>
<p>Instead of focusing solely on one language at a time, I was jumping between things depending on how I was feeling that day. And trust me, that is a very ineffective way to learn.</p>
<p>I would have gotten much better results and climbed through the ranks faster if I had chosen a <strong>path or set of technologies</strong>, and stuck to learning them. For example, if you are an aspiring front-end developer, learn JavaScript, learn CSS/HTML, and pick a framework. If you’re focused on the backend side of things, again, pick one language and learn it well. You do not need to know Python, Java, and C#!</p>
<p>So narrow your focus, choose your path, and create a plan to become a pro in your chosen path (<a target="_blank" href="https://www.chrisblakely.dev/the-10-minute-road-map-to-becoming-a-junior-full-stack-web-developer/">here’s a roadmap</a> that will help you map out your path).</p>
<h3 id="heading-being-too-fancy-when-writing-code">Being too “fancy” when writing code</h3>
<p>So you’re preparing a project to show the interviewers, or landed your first job and working on your first task. You are trying your best to impress. What’s the best way to do that? Show off this super fancy coding technique you learned to complete the task, right?</p>
<p>Wrong.</p>
<p>This is a major mistake I made and a mistake I see junior developers do too often. More often than not junior developers will try and reinvent the wheel, or use some complicated solution in a bid to try and impress.</p>
<p>The best approach to writing code is the K.I.S.S principle (“<strong><em>keep it simple</em></strong>, <strong><em>stupid</em></strong>”). By keeping things simple, you’ll reap the benefits of <strong><em>easy to read, maintainable code</em></strong> (the next developer coming along after you will appreciate it!).</p>
<h3 id="heading-theres-more-to-life-than-code-and-work">There’s more to life than code and work</h3>
<p>An early bad habit I ran into was not learning to switch off. I would often bring my laptop home with me at the end of the day. I would sit for hours trying to complete a task or bug that could have <strong>waited until the next day</strong>. This unsurprisingly, left me feeling burnt out and stressed.</p>
<p>Part of the reason I did was this because I felt an urge to complete everything as soon as possible. Whereas, in reality, I should have realized that work is an ongoing process, and it can more often than not wait until the next working day. It’s important to switch off and remember the other things in life — friends, family, hobbies and having fun. Of course, if you like to stay up until the early hours writing code, by all means! But when it is not enjoyable, consider stopping and doing something else.</p>
<p>There is always tomorrow!</p>
<h3 id="heading-not-saying-i-dont-know-enough">Not saying “I don’t know” enough</h3>
<p>It’s easy to get stuck on a problem or task you are trying to complete, it happens all the time, even to the most senior developers. A mistake I made whenever I was a junior developer was not saying “I don’t know” enough. If management asked me a question I wasn’t sure about I would bluff an answer instead of saying <strong>“I don’t know”.</strong></p>
<p>I felt if I said “I don’t know” people would think <strong>I didn’t know what I was doing</strong>. The reality is that this is not the case. Nobody knows everything. So if you’re asking a question and you don’t know the answer, say that. The benefits of this are:</p>
<ul>
<li>You’re being honest and not misleading the person who is asking the question</li>
<li>You’ll learn something new when it’s explained to you</li>
<li>You’ll gain respect for saying you don’t know something. Not everyone is capable of admitting they don’t know something.</li>
</ul>
<h3 id="heading-trying-to-progress-too-quickly">Trying to progress too quickly</h3>
<p>I’m sure you’ve heard the saying, “you have to walk before you can run”. Never does this saying have more relevance than in the field of web development. When you start your first job as a junior developer, you’ll be eager to hit the ground running, and get your hands on nice big coding tasks. You’ll even be thinking of how to get a nice promotion to the next level!</p>
<p>Whilst ambition is good, the reality is that these sort of things will not come straight away for a junior developer. At the start of your career, you will more than likely get the smaller, easier tasks and bugs to work on. These might not be the most exciting things in the world to work on, but it’s necessary. It allows you to put one foot into the codebase and get familiar with the process. Secondly, it allows your team and managers to gauge how you cope with working as part of the team, and where your skills lay.</p>
<p>I made the mistake of getting frustrated at these smaller tasks, and I let this frustration get in the way of my work. Have patience, perform every task you get to the best of your ability, and the more exciting work will come!</p>
<h3 id="heading-not-getting-involved-in-the-community-amp-building-a-network">Not getting involved in the community &amp; building a network</h3>
<p>The development community is great. The community is always willing to help, provide feedback, and can even help with motivation. Being a developer is tough, and can sometimes take its toll. As a junior developer, the tough times would have been easier if I had got involved in the community earlier.</p>
<p>Getting involved is also a great way to learn. You can contribute to open source projects, see how other’s write code, and see how developers collaborate on projects together. These are all skills you can bring to your day job and will make you a better developer in the long run.</p>
<p>Find communities that interest you — freeCodeCamp, CodeNewbies, 100DaysOfCode are some good ones — and get involved! You can also get involved in local meetups in your home town or city. Check out meetup.com for this.</p>
<p>This also lets you <strong>build a network.</strong> A network is basically a bunch of people you know in your industry. Why is a network important? Let’s say you are looking to move into another job. By reaching out to your network, someone may be able to recommend a specific role, or even refer you to a company. This gives you a solid advantage going into the interview, as you’ll have someone to vouch for you, and will no longer be another “name in the pile of resumes”.</p>
<p>Thanks for reading!</p>
<p>To get the latest guides and courses for junior developers straight to your inbox, make sure to join the mailing list at <a target="_blank" href="https://www.chrisblakely.dev/#signup">www.chrisblakely.dev</a></p>
<p><em>Originally published at <a target="_blank" href="https://www.chrisblakely.dev/7-mistakes-i-made-as-a-junior-developer">www.chrisblakely.dev</a> on March 25, 2019.</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to hire the right way: An engineer’s perspective on tech recruiting ]]>
                </title>
                <description>
                    <![CDATA[ By Rina Artstain I’m an engineer, but I also have an MBA and for this post I’ll be wearing that hat. I was seriously considering buying an actual hat with “MBA” printed on it, but some good people talked me out of it, so unfortunately it’s a metaphor... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/hiring-right-an-engineers-perspective-on-tech-recruiting-7ee187ded22d/</link>
                <guid isPermaLink="false">66c34c84a124e2df05195f56</guid>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ hiring ]]>
                    </category>
                
                    <category>
                        <![CDATA[ jobs ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Software Engineering ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 22 Mar 2019 14:25:15 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*v8u6OVWMaM1b3Dl9VeqIvA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Rina Artstain</p>
<p>I’m an engineer, but I also have an MBA and for this post I’ll be wearing that hat. I was seriously considering buying an actual hat with “MBA” printed on it, but some good people talked me out of it, so unfortunately it’s a metaphorical hat instead of a real one.</p>
<p>I often see engineers complain about recruitment processes: They are long, they seem totally irrelevant to the job, everything is stupid. We just don’t get it. Unfortunately, we’re probably right — some employers don’t have any idea what they’re doing, but does it really have to be that way?</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*v8u6OVWMaM1b3Dl9VeqIvA.jpeg" alt="Image" width="600" height="591" loading="lazy"></p>
<p>One of the very best courses I took during my MBA was a course about recruitment processes and the research behind them. It left a lasting impression on me and affected my perspective on recruitment processes when I was hiring and as a candidate. When I hear these rants, I often try to explain the rational behind a good hiring process, and I think this is insight which can be useful for engineers and recruiters, which is why I’m writing this post.</p>
<h3 id="heading-hiring-is-hard-mistakes-are-expensive-we-have-no-idea-what-were-doing">Hiring is hard. Mistakes are expensive. We have no idea what we’re doing.</h3>
<p>Of course <strong>we</strong> are excellent at it. It’s always someone else who has no idea what they’re doing.</p>
<h3 id="heading-so-what-can-we-do">So, What Can We Do?</h3>
<p>First, let’s look at some common tools you have at your disposal, describe them and check how good they actually are, based on the latest academic research in the field:</p>
<blockquote>
<p>The validity numbers given here are “predictive validity”. This means that the validity of the result on a specific test is the correlation with success on the job. A 0 validity score means there is no correlation and the test is worthless (you might as well toss a coin), 1 would mean the test perfectly predicts success on the job.</p>
</blockquote>
<p><strong>Intelligence Tests:</strong> IQ tests, SATs etc.<br><strong>Validity:</strong> 0.51<br>Even if you don’t ask for the scores on these tests directly, you usually try to get them by proxy by checking the school they went to and their GPA. I know this seems unfair to many candidates who are excellent engineers even though they didn’t do very well at higher education (or didn’t go at all, i.e. bootcamps etc.) but it is a quick and cheap way of getting through a lot of CVs.</p>
<p><strong>Work Sample Tests</strong>: Requires you complete a task related directly to the job.<br><strong>Validity:</strong> 0.54<br>When done well and at home, this saves time for everyone . It also allows the candidate to display their best work with a minimal amount of pressure. However, the time it takes is often underestimated, and if it’s done at home candidates may “miss” something and get stuck without answers, while potential employers are missing valuable signals.</p>
<p>I’ve seen many engineers who seem to think that work samples are THE BEST AND ONLY way to really show their worth. For the life of me, I don’t get it. Many work sample tests are just a way for the employer to get you to put in time with close to no cost for them. As a candidate I really don’t see how they’re better than a coding interview — the task is either just as synthetic and unrepresentative of the actual work, or too complicated and time consuming.</p>
<p><strong>Employment Interview:</strong> I’m sure I don’t have to explain what an interview is.<br><strong>Validity (Structured):</strong> 0.51<br><strong>Validity (Unstructured):</strong> 0.36<br>Ah, we’re finally getting to something here. What’s the difference between a “structured” interview and an “unstructured” interview?<br>Well, a structured interview has repeatable questions and clear and objective criteria for answers. An unstructured interview, ummm, doesn’t. Ultimately, an unstructured interview comes down to a “gut feeling” about the candidate. I’ve often felt thankful for having clear and objective criteria specified in advance, because it’s so easy to skew the interview result according to your first (entirely biased) impression of someone.</p>
<p><strong>Job Knowledge Tests:</strong> Direct questions on the subject matter.<br><strong>Validity:</strong> 0.48<br>Usually this is carried out by giving the candidate a questionnaire asking them domain knowledge specific questions. Things like “How does web routing work in technology stack A”, “What would happen if you tried to assign this value to a string in technology stack B” etc.</p>
<p>Not bad so far. Now I’m getting to the “good stuff”:</p>
<p><strong>Assessment Center:</strong> When you pay a whole lot of money to send candidates to spend their day doing group dynamics with a bunch of strangers.<br>V<strong>alidity:</strong> 0.37<br>Can you tell I think these are stupid? And not only me, their validity is relatively low and their repeatability (i.e. getting the same score on repeat tests) is also extremely low. If you’re recruiting — don’t do this, please. If you’re a candidate and you have the privilege of refusing — just say no.</p>
<p><strong>Reference Checks:</strong> Asking past employers about the candidate.<br><strong>Validity:</strong> 0.26<br>I know many employers insist on reference checks. But their validity is not so great and they should be used with caution.</p>
<p><strong>Graphology:</strong> Sending a writing sample to a hand writing ״specialist״ who can tell if you’re a good match for the job. Usually used for integrity testing.<br><strong>Validity:</strong> 0.02<br>Graphology is NOT a good recruitment tool. DO NOT use it. Have I stressed that enough?</p>
<h3 id="heading-the-coding-interview">The coding interview</h3>
<p>Even though I already know these statistics, it still hit me hard while writing this post: even the best tests have only 0.51–0.54 validity, and that is far from amazing. Is this best we can do? What can we do with the tools we have to get better results?</p>
<p>Enter the dreaded “coding interview”. Whether done on a whiteboard or an online editor, it allows employers to pack a work sample, structured interview, and job knowledge test into a single session. By giving many such coding interviews, conducted by several different people, you can achieve better results, improve reliability and reduce bias (“gut feeling”). That’s why recruitment processes are so long and exhausting (for everyone involved).</p>
<p>I know I don’t have you convinced yet, but I’ll talk a bit more about how to assess the quality of this process later on.</p>
<p>Ok then, let’s see how it’s done.</p>
<h3 id="heading-is-this-a-good-question">Is this a good question?</h3>
<p>You are given three containers.</p>
<ul>
<li>One box contains all white balls, one all black balls, and one a mix of black and white balls.</li>
<li>Each box is labeled, but all the labels are wrong.</li>
</ul>
<p>How many balls would you need to pull out to determine which box is which?</p>
<h3 id="heading-what-about-this-one">What about this one?</h3>
<p>The count-and-say sequence is the sequence of integers beginning as follows:</p>
<p><code>1, 11, 21, 1211, 111221, ...</code></p>
<p>1 is read off as <strong>one 1</strong> or 11.</p>
<p>11 is read off as <strong>two 1s</strong> or 21.</p>
<p>21 is read off as <strong>one 2, then one 1</strong> or 1211.</p>
<p>Given an integer n, generate the nth sequence.</p>
<h3 id="heading-or-this-question">Or this question?</h3>
<p>Are you pregnant or are you planning to become pregnant in the next year?</p>
<h3 id="heading-youre-wrong">You’re wrong.</h3>
<p>It doesn’t matter if you answered “yes” or “no”.</p>
<p>Questions are neither good nor bad.</p>
<p>Now, I’m not recommending asking someone if she is pregnant, because that’s illegal and usually quite irrelevant. But if the job is in a factory with dangerous chemicals and hard physical labor, that question might actually be an important question to ask!</p>
<p>Questions should be the <strong>last thing you do</strong> when you build your process.</p>
<h3 id="heading-first-ask-the-right-questions">First, ask the right questions</h3>
<ul>
<li>What is the <strong>actual</strong> job definition?</li>
<li>Which technical skills does one <strong>need</strong> in order to perform the job well?</li>
<li>Which soft skills and personality traits do <strong>you</strong> value as an organization?</li>
<li>How much time, effort and money are <strong>you</strong> willing to spend in order to find the right person?</li>
<li>How much time and effort will the <strong>candidate</strong> be willing to spend in order to pass your process?</li>
</ul>
<p>Only after you have the answers to these questions can you begin to create a concrete process. You can’t copy the answers to these questions from another organization. You have to figure them out for yourselves.</p>
<h3 id="heading-create-the-right-process">Create the right process</h3>
<ul>
<li>Decide what your screening parameters are and screen ruthlessly. Do not waste your or your candidates’ time.</li>
<li>Use structured interviews for technical and for soft skills interviews.</li>
<li>If you feel the <strong>candidate will be willing</strong> and it saves you <strong>a lot of time an effort</strong>, you can also use a work sample.</li>
<li>Call references and perform background checks only as needed.</li>
</ul>
<h3 id="heading-measure-refine-repeat">Measure, refine, repeat</h3>
<p>Every time I mention the validity of some process or other I’m asked how the validity was measured. I’ve actually read the articles and I can tell you the methods they used, but to be honest — it doesn’t really matter. What matters is what works for your organization. You may find that the “coding interview” doesn’t match your values or doesn’t give you the signals you need to decide who to hire. You may find your candidates love doing long work samples in the office and it allows you to get to know them better.</p>
<p>The point is that once you have your process in place, you must make sure it is working!</p>
<ul>
<li>How many candidates who passed your initial screening made it through the interview process?</li>
<li>How many candidates who passed the entire process accepted the offer?</li>
<li>How long do employees stay with you?</li>
<li>How are their performance reviews?</li>
</ul>
<p>Gather your data and refine your process accordingly. This is a continuous challenge!</p>
<h3 id="heading-avoiding-bias">Avoiding bias</h3>
<p>Now you’ve built a process and have statistics on the candidates hired. How can you make sure you’re not testing for “rich white male” instead of “good programmer”? How do you verify you’re not hiring “people like us” instead of checking actual “culture fit”?</p>
<blockquote>
<p>My personal pet peeve is open source contribution or other “after hour” projects as a <strong>requirement</strong>. If you’re an excellent programmer but have other hobbies, or if you god forbid have a family and actually want to spend time with them — that’s it, you’re out. That, to me, is an example of screening on irrelevant traits.</p>
</blockquote>
<p>Unfortunately, some common quick fixes don’t seem to work. Implicit bias training doesn’t (usually) affect outcomes, it often makes things worse. Diverse interviewers do not necessarily make less biased decisions either, as they often show the same biases as anyone else.</p>
<p>You should remember that this is an entirely subconscious effect — you don’t have to be overtly racist or a bad person to be biased. It’s a natural part of how our brain works, so it’s up to the process to help us fight our biases actively.</p>
<p>The best way to tackle this issue is to add diversity measures and use the “measure, refine, repeat” cycle to check how you’re doing.</p>
<p>If you measure diversity and refine your process accordingly — you’re going to find where the problems are and take appropriate actions. If it’s a real pipeline issue — read <a target="_blank" href="https://hackernoon.com/how-to-attract-more-women-and-not-the-way-you-think-372203f5a7d7">Moran Weber’s excellent article</a>. If it’s not really a pipeline issue, look at how you treat diverse CVs, how well they pass your process, how often they accept your offers, etc.</p>
<h3 id="heading-aside-integrity"><strong>Aside: Integrity</strong></h3>
<p>This is a bit off topic, but it’s just too good to skip. You could skip it anyway, I won’t hold it against you.</p>
<p>I mentioned graphology as a bit of a joke, it’s validity is so low that it’s an absolute waste of money. So why do some employers still use it? You’d be surprised: to some of them it’s a way for someone else to decide what they feel they can’t! But some of them actually believe it’s accurate, how can that be?</p>
<p>Let me tell you a story: When I was taking this course, during one of the classes we were asked to give a writing sample. When the next class started, we each got a graphological assessment of our personality and were asked to rate how accurate it was. Most of the class graded it 4 or 5 for accuracy. Turns out we all got the same analysis… How could we be fooled like that?</p>
<p>This is called the <a target="_blank" href="https://en.m.wikipedia.org/wiki/Barnum_effect">Barnum effect</a>, and basically what it means is that when we read a generic text like astrology or graphology, we will believe the parts that are true and dismiss/forget the parts that are wrong! The final impression we’re left with is that the text was very accurate.</p>
<p>Turns out the best way to measure integrity is by asking directly! There are pen &amp; paper tests with a series of questions about integrity. The irony is that dishonest people believe they are normal people in a dishonest world, so they have no problem telling the truth! They will say “sure, I take boxes of pens home with me” or “why shouldn’t I lie about being sick?”, and expose themselves as less than worthy of trust.</p>
<p>If you are recruiting, I hope this gave you some insight into how to build a good process. If you’re a candidate, I hope this helped you understand what’s broken in recruiting and what actually works. For me — I’ll finally have a ready made answer for all the frustrated candidates out there. Good luck!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Working in Tech: Advice from Black Women to Black Women ]]>
                </title>
                <description>
                    <![CDATA[ By Vivianne Castillo Over the past few months I’ve had quite a few inquiries from young black women who are starting their careers in tech. They’ve been asking for advice related to working in the industry, navigating through corporate, and flourishi... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/working-in-tech-advice-from-black-women-to-black-women-d1319e7899aa/</link>
                <guid isPermaLink="false">66c3678e21ae2d74bb700a21</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Diversity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                    <category>
                        <![CDATA[ women in tech ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 21 Mar 2019 18:31:51 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*Q9DLDgC5ZtmoK5_Y7DVs2Q.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Vivianne Castillo</p>
<p>Over the past few months I’ve had quite a few inquiries from young black women who are starting their careers in tech. They’ve been asking for advice related to working in the industry, navigating through corporate, and flourishing in the workplace.</p>
<p>Out of the belief that black women can learn from each other and can support each other in our professional aspirations, I reached out to black women in tech and asked them three questions:</p>
<p><strong>(1)</strong> If you could go back in time to the beginning of your career in tech and give yourself a piece of advice, what would you say?</p>
<p><strong>(2)</strong> What’s one piece of advice you would give to black women entering the tech industry?</p>
<p><strong>(3)</strong> If you could change one thing about your current work place to make it a better experience for black women, what would it be?</p>
<p>The advice in this piece comes from black women who work in design, research, advertising, engineering, IT, and product/program management; they work across major cities in the U.S. and most respondents were 25 to 45 years old.</p>
<p>This is their advice.</p>
<h3 id="heading-if-you-could-go-back-in-time-to-the-beginning-of-your-career-in-tech-and-give-yourself-a-piece-of-advice-what-would-you-say">If you could go back in time to the beginning of your career in tech and give yourself a piece of advice, what would you say?</h3>
<p><em>Themes: don’t be fearful, believe in yourself, secure the bag, be vocal about your aspirations, seek out wisdom and support.</em></p>
<p>“People will sometimes be trash towards you. They’ll tell you that you don’t know enough, or that your knowledge isn’t technical enough. Don’t listen to them. They’re going on some impossible standard that even they themselves could not fulfill. You simply loving technology is enough.”</p>
<p>“Just go for it! Stop making excuses for reasons not to go after something you really want.”</p>
<p>“Build a network of other black women in tech who have been in the industry. You’ll need them during difficult and discouraging times at work. More importantly, they’ll be able to give you advice on how to navigate corporate life, especially because you’ll find yourself in spaces where (more times than not) you’ll be one of the only black women there.”</p>
<p>“Prioritize self-care in your hustle. Don’t let relationships fall to the wayside just because you’re busy. Find the time and make the time for those close to you and prioritize your well-being.”</p>
<p>“I would say that even though the road aheads looks lonely, you are not alone. I would say to lean on the women who you have known and seen pave the way ahead of you, both inside and outside of the tech industry, and don’t be afraid that you will be a ‘bother’ by asking for help and admitting you are having a hard time. My greatest advice would be to extend grace and pride to myself for having the courage to move outside of a comfort zone to pursue a path that was not yet fully determined, but would ultimately lead me to swim in the depths of my own possibility and to not fear or doubt those depths.”</p>
<p>“Be more confident. Take the steps that will foster trust in your knowledge, expertise, and skills. For example, thoroughly prepare before each meeting, regardless of the meeting’s level of importance, reading key documents, annotating the documents, etc.. Confidence is nothing more than preparation. Build a reputation of being on top of your stuff.”</p>
<p>“You are the main character in your life, it’s your world, enjoy your journey, indulge in your passions, love yourself fiercely, you’ll make it.”</p>
<p>“Go for the money and also take heed of companies’ reputations. Seek out others’ insights about what the company is like to work at before accepting an offer, as well as meet your team.”</p>
<p>“Don’t be afraid to articulate what your interests and career goals are and stick to them. Don’t be afraid to counter offer.”</p>
<p>“Have faith in yourself. You forging your own way is a strength, not a weakness. I pivoted from working in the non-profit sector with a non-technical education and I felt so much like a fish out of water in Silicon Valley. However, as I gained more experience as a designer I realized that my background was an asset that set me apart.”</p>
<p>“Start to advocate for yourself earlier, you are your own best cheerleader.”</p>
<h3 id="heading-whats-one-piece-of-advice-you-would-give-to-black-women-entering-the-tech-industry">What’s one piece of advice you would give to black women entering the tech industry?</h3>
<p>_Themes: sponsors &gt; mentors, take risks, don’t give up on your career aspirations, be confident in what you have to offer, your thoughts and ideas have val_ue.</p>
<p>“Getting a sponsor is more important than a mentor. A sponsor is someone who can speak to the quality of your work/work ethic and will go to bat for your during performance reviews or in landing your next project/gig. In essence, they are willing to risk their social &amp; professional capital in order to increase yours. That is not the same as a mentor. A mentor’s only risk and expenditure is their time.”</p>
<p>“If a job looks interesting, apply for it. Ignore the urge to fit 100% of the qualifications. Studies show that men only look at and fulfill maybe 25% of them. Imagine a woman who has 75% applying for the same job. You’d be a shoe-in.”</p>
<p>“Have confidence that your perspective, no matter how different, is worth being heard. Be bold in sharing the ways you think and experience things differently, because it could have a strong impact on the direction of a product or business that may not have had diverse perspectives without you. Know that your voice is of value, even if there is no one else that supports you or if there are others who try to tell you otherwise. Often when you lean into those moments and speak up, you will find that there are others who have felt the same but have felt as though they didn’t have the space or confidence to say it.”</p>
<p>“Network, you’ll realize later how important connections are.”</p>
<p>“Don’t stay at a company or team if you don’t like it or them, there is someone else willing to pay you more and be happy.”</p>
<p>“Write down your vision and make a plan. Find trusty mentors and sponsors that you can meet with for sound meaningful feedback.”</p>
<p>“Don’t be fooled into thinking that all ‘mainstream’ women will be your sponsor or allies in the workplace. I have been surprised by the people who have gone to bat for me or defended my reputation when things go wrong (which they inevitably will). Many of those people have included white men on my team. In fact, white men have been equally — if not more — supportive of me than white women.”</p>
<p>“In the majority of work team environments you will be the only black female. Be intentional in your decisions, speak up and never be afraid to make mistakes. That is how you will learn. Also, always have a goal that is targeted towards career growth that you are actively working towards.”</p>
<p>“Don’t give up. We need your thoughts options and ideas. Also relationships matter so get ready to network to help you get in and keep networking to move up.”</p>
<p>“Build together. Ask for help. Seek community wherever you can to support you. Even if that just means joining a Slack group for WoC.”</p>
<p>“Be confident in your value and skills others might doubt, but never doubt yourself — you are unlimited. Haters are immature.”</p>
<h3 id="heading-if-you-could-change-one-thing-about-your-current-work-place-to-make-it-a-better-experience-for-black-women-what-would-it-be">If you could change one thing about your current work place to make it a better experience for black women, what would it be?</h3>
<p><em>Themes: increase representation by hiring more black women, safety to acknowledge white privilege and racism, white co-workers leading the conversation on diversity &amp; inclusion.</em></p>
<p>“I would have encouraged black women even more than ever to apply for positions they think would be out of their realm. We need a lot of black women in management. And to stop looking for mentors after a certain point and start looking for sponsors. You need someone to drop your name in the decision room when the time comes. Start building those early (and never think you DON’T deserve the accolades).”</p>
<p>“MORE BLACK WOMEN! The worlds need you.”</p>
<p>“I’m the only black woman in our software company of (10000+ employees, Italian-based company). I’ve asked HR to improve our cultural diversity training as it’s affecting my comfortability at work (e.g. comments about hair, people trying to use ‘slang’ with me, assuming I’m ‘aggressive’ because I’m tall, black, and played basketball, being asked why I don’t make friends or eat with anyone when everyone groups together based on nationalities/cultures/race).”</p>
<p>“More black women. I work at a large, well-known tech company and even though we have several office buildings, I’m the ONLY black woman in my building. It can feel really lonely and like I always have to be crushing it in order to prove that I belong here.”</p>
<p>“To have white people own their whiteness and racist ideologies so we can have courageous conversations about race and why in 2019, I am the first African American to obtain promotion and tenure in my department. Also, why no one in the department wants to acknowledge it.”</p>
<p>“More of us! There is so few black women in design-tech jobs.”</p>
<p>“Provide more education on white privilege and white feminism. As the only black woman in my building, I find it difficult to join in conversations that my white women co-workers are having about equality because, well, the only perspective they’re talking about is what it means to be a woman. Whereas for me, it’s about also being a <em>black</em> woman. It’s a privilege to only see your gender as being a barrier to equality and not have to take into account your ethnicity and/or race.”</p>
<p>“I work in a remote and fully-distributed team that seems resistant to meeting in person. To me, I see this as a negative because relationship building happens in-person. No amount of Slack messages or video conferencing can replace in-person networking. For remote workers, have more opportunities for building relationships in order to foster social bonding and team trust.”</p>
<p>“Hire more of us! Be intentional and transparent about your hiring process when it is time for the team to grow and don’t leave inclusion out of the discussion when seeking candidates.”</p>
<p>“Just one thing? Unconscious bias training for management.”</p>
<p>“I would create more visibility of the black female leaders here … I would still like to have a solid network or space for black women specifically to lean into.”</p>
<p>“Please stop forcing black women into being the Diversity &amp; Inclusion Champion. We’re tired and shouldn’t need to take on the responsibility to educating you on privilege, racism, and your own bias. No, we don’t want to talk about this all the time. I often feel like I have to talk about Diversity and Inclusion because no one else in the office is championing it or even discussing it. And as the only black women, that’s discouraging AF.”</p>
<p>“More internal groups targeted to mentoring and advancing career growth for women of color in the company.”</p>
<p>“I don’t have any other black women on my team. It would be nice to have more people that looked like me in the office.”</p>
<p>If you liked what you read, please increase the chances of this piece being read by others by sharing it on social media! Thanks!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Here’s what I did when I wanted to give up as a junior developer ]]>
                </title>
                <description>
                    <![CDATA[ Coding is hard. Really hard. There are times when you’ll think “this is amazing! I love this!” But you’ll also have the not so amazing times. The times when you are staring at the same error for days or stuck trying to understand a new concept. You m... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/heres-what-i-did-when-i-wanted-to-give-up-as-a-junior-developer-af41d5aa2edd/</link>
                <guid isPermaLink="false">66c8c8e135adc35234e1f4c8</guid>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Junior developer  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Chris Blakely ]]>
                </dc:creator>
                <pubDate>Fri, 15 Mar 2019 15:12:28 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/0*rzibxEUX_IO3PJBl.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Coding is hard. Really hard. There are times when you’ll think “this is amazing! I love this!”</p>
<p>But you’ll also have the not so amazing times. The times when you are staring at the same error for days or stuck trying to understand a new concept. You may be thinking, “I am just not cut out for this. Why am I trying?”</p>
<p>So what do you do if you feel yourself wanting to give up? I’ve got some tips for you, but first, here’s my story about when I almost gave up, and what I did about it…</p>
<p><strong>Note</strong>: You can skip straight to the <a target="_blank" href="https://medium.com/p/af41d5aa2edd#53aa">tips</a>: <strong>Take a step back, and realize it’s normal.</strong></p>
<p><em><em>Lights dim &amp; dramatic intro music plays</em></em></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/VoEwhCM8brTti2-kppgJ-p38vcrydtRWJYgS" alt="Image" width="730" height="404" loading="lazy">
<em>Disclaimer: The following story took place not that long ago and within the current galaxy</em></p>
<p>When I first started programming as part of my Computer Science course, I felt super lost. People will say you’re not supposed to know much when you’re just starting out, but I really struggled in the beginning.</p>
<p>I just couldn’t grasp any coding concepts:</p>
<p><strong>Abstraction:</strong> <em>The idea of focusing on the ideas, rather than, the implementations</em>… “OK Yoda, what does that mean?”</p>
<p><strong>Interfaces:</strong> “Ah! I know this one! That's the thing the user uses to interact with the…oh wait”</p>
<p><strong>Functions and Objects:</strong> “Not overly sure how many of these things I need or when I need them. So I’ll just use one for now” <strong><em>creates monolith file called MyClass.js</em></strong></p>
<p><strong>Arrays:</strong> “Arrays hold things. Got it. But only one type of thing. OK, fair enough I guess. Oooh look, you can make a 2D array…an array of arrays. EASY! I’m ready to start this assignment”:</p>
<p><em>Assignment: The following code is a 3D array, which is an array of arrays of arrays, containing random numbers. Iterate over the array and print the prime numbers and the frequency in which they appear, in order. Consider time complexity.</em></p>
<p>“…hmm…”</p>
<p><strong><em>leaves the building</em></strong></p>
<p>And don’t get me started on data structures and algorithms…</p>
<p>I wasn’t sure why I was so far behind in my course.</p>
<p>Was it that I just wasn’t cut out for coding?</p>
<p>Was it the quality of my course and lecturers?</p>
<p>Was it the copious amounts of beer and partying I did in my first few weeks of university (Nah, it couldn’t have been that).</p>
<p>After a few years of struggling and scraping by, I still couldn’t code the simplest apps. The final straw was being told by one particular company that <em>I should consider another field</em> when I was interviewing for an internship.</p>
<p>This was the lowest point for me, and I was tempted to give up and drop out. But technology was my passion, I wanted to become a developer more than anything. I was in my final year of university, and I decided enough was enough.</p>
<p>I sat down, opened my laptop, put on some AC/DC, and started <strong>practicing</strong>.</p>
<p>I would practice day in and day out. On coding websites, on my own small projects, following tutorials, if there was a way to practice code, I was doing it. When I wasn’t writing code, I was reading about code. I read other peoples code. I read about the people who wrote good code.</p>
<p>Slowly but surely, it started to <em>click.</em> All the concepts I didn’t understand were slowly coming to me. And like a phoenix from the ashes (or, something more computer related and less dramatic), I graduated and landed my first junior developer role.</p>
<p>After many years of experience, learning, and mistakes (those stories are for another day!) I’ve progressed past the junior developer stage. I’m currently working at a startup leading the product development. I’m also mentoring developers more junior than myself, and loving every minute of it.</p>
<p>I am now on a mission to pass my knowledge to junior developers all over the world. To show that anyone can crack their way into the world of web development with some hard work, and some dedication.</p>
<p>Hopefully, I haven’t bored you too much — still with me? Good, let’s get onto the tips to try when you’re feeling a tad defeated.</p>
<h3 id="heading-take-a-step-back-and-realize-its-normal">Take a step back, and realize it’s normal</h3>
<p>The first thing to do before you throw in the towel on your web development career is to realize that it’s perfectly natural to feel overwhelmed at times. The best way to do this is to step away from the code for a while. Go for a walk, read a book or watch TV. Basically, take a break and relax for a bit. If you need to take a few days off, that’s perfectly fine as well.</p>
<p>When you return, hopefully, you’ll feel a bit more refreshed and fired up to go again! If not, here’s a few more things you can try.</p>
<h3 id="heading-have-patience">Have patience</h3>
<p>I don’t think this is stated enough, but patience is super important for developers of all levels. When learning to code, it can be frustrating to not understand something, especially if you’ve been looking at it for hours.</p>
<p>But the next time you feel yourself getting frustrated at a bug and error, remember the “step back” approach from the previous point and try telling yourself:</p>
<p>“OK this sucks, but getting frustrated won’t help anything. I’ll take a break and come back with fresh eyes and try again”.</p>
<p>You’ll be surprised how much this will help.</p>
<h3 id="heading-celebrate-the-wins-when-you-get-them">Celebrate the wins when you get them</h3>
<p>A lot of junior developers I’ve met can be quite hard on themselves and fail to properly acknowledge their accomplishments.</p>
<p>“I finally got this button working on my app but it took all day!”</p>
<p>So? The point is it now works! Huzzah!</p>
<p>It’s important to celebrate the wins when you get them. Whether you are trying to get your first HTML page working or trying to create your own complex web app, whenever you get something working, celebrate it.</p>
<p>Scream “SUCCESS” at the top of your voice, jump around the room, dance with the neighbors. OK, that’s probably a bit much (I didn’t do any of that, I swear…) but you get the idea. By celebrating the wins, you’re acknowledging your accomplishments, filling yourself with joy, and motivating yourself to keep going for more wins.</p>
<h3 id="heading-set-smaller-definable-goals">Set smaller, definable goals</h3>
<p>It’s easy to sit down and say “OK, my goal is to learn how to code”. This is a great goal to have, but it’s a difficult one to measure. When have you finished learning how to code? Is it when you have created your first website? When you have created your first large app? When you’ve got your first job?</p>
<p>However, what if you said, “Today I am going to learn what the arrow syntax is in JavaScript and ES6”? You have a clear definable goal, which is easy to measure, and you guessed it — gives you a win to celebrate once you’ve reached it.</p>
<p>By creating and reaching smaller goals more often, you’ll feel like you’re making progress.</p>
<h3 id="heading-keep-a-journal-of-your-progress">Keep a journal of your progress</h3>
<p>Even if you set your own goals, it can be difficult to remember everything. You may have started with the intention of completing one thing, and got sidetracked and ended up learning or doing something else (this happens to me all the time!).</p>
<p>A good way to keep track of your progress is to write everything down in a journal. At the start of your week, day or whatever it may be, write down the goal you plan to achieve. When you’ve met that goal, write it down, along with any notes that spring to mind that you want to remember. Didn’t meet the goal? No problem, write down why — whether it be distractions, doing something else that seemed more interesting, needed a break, and so on.</p>
<p>If you’re ever feeling defeated, look into your journal of wins — you’ll be surprised at how far you have come!</p>
<h3 id="heading-look-back-at-your-early-projects">Look back at your early projects</h3>
<p>Another great approach to seeing how far you have come is to look at your early code exercises and projects. This is your paper trail of progression, whether it was your very first HTML page, your first “Hello World” app or your first TODO app.</p>
<p>You might look back and think, “Oh I remember that it took me forever to figure out how to add those check-boxes! Now I can do it with my eyes closed”.</p>
<p>So put everything you do onto GitHub, or keep it saved on your computer. No matter how small it is, it was a part of your journey, and it’s important to remember.</p>
<h3 id="heading-join-the-community">Join the community</h3>
<p>There is no better community than the web development community. From the open source software to the free resources to learning to code, it really is great to be a part of.</p>
<p>I wish I had gotten involved with the community earlier — it would have made the difficult parts of my web development journey a lot easier.</p>
<p>Why? Because of the support. There are many great communities from <a target="_blank" href="https://www.freecodecamp.org/">freeCodeCamp</a> and <a target="_blank" href="https://www.codenewbie.org/">CodeNewbie</a>, to Subreddit and Twitter groups that are built to support fellow coders.</p>
<p>I highly recommend getting involved in these communities. Share what you’re doing, see what other people are doing, and get involved in the discussions. It’s a great motivator when you get a few likes, thanks or replies to a post you’ve made.</p>
<h3 id="heading-work-hard-and-dont-give-up">Work hard, and don’t give up</h3>
<p>As I said in the beginning, coding is hard. Continue to put in the work, celebrate the wins when you get them, and don’t give up. It’ll be worth it in the end! In the words of Nelson Mandela:</p>
<blockquote>
<p><em>Everything seems impossible before its done.</em></p>
</blockquote>
<p><em>Thanks for reading!</em></p>
<p>I’m currently creating a bunch of guides, articles, and video courses to help you along your journey into web development. If you would like to be a part of it, make sure to join the mailing list over at <a target="_blank" href="https://www.chrisblakely.dev/#sign-up">chrisblakely.dev</a>!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Books that Junior Developers should read ]]>
                </title>
                <description>
                    <![CDATA[ By Khalil Stemmler These books “are basically cheat codes” for leveling up your skills and knowledge as a developer. Whether you’re a new developer or you’re fairly experienced as a programmer, you’ll come to realize that the amount of time you’ve wo... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/9-books-for-junior-developers-in-2019-e41fc7ecc586/</link>
                <guid isPermaLink="false">66d45f633dce891ac3a96808</guid>
                
                    <category>
                        <![CDATA[ books ]]>
                    </category>
                
                    <category>
                        <![CDATA[ careers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Junior developer  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 13 Mar 2019 13:23:21 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*saCtF1gMCsRietI_i9mYwQ.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Khalil Stemmler</p>
<h4 id="heading-these-books-are-basically-cheat-codes-for-leveling-up-your-skills-and-knowledge-as-a-developer">These books “are basically cheat codes” for leveling up your skills and knowledge as a developer.</h4>
<p>Whether you’re a new developer or you’re fairly experienced as a programmer, you’ll come to realize that the amount of time you’ve worked at a job isn’t the best way to determine your skill and knowledge as a programmer (I know, tell that to the recruiters ?).</p>
<p>What you do in your spare time and how you choose to take learning into your own hands is what’s going to ultimately determine your success in this industry. That’s why it’s so important for us as developers to adopt a growth mindset.</p>
<p>There are some excellent ways to learn and improve as a developer. Some of those ways are pair-programming, online courses, meetups, work experience, building projects and finding a mentor.</p>
<p>One of my personal favorite ways to learn is to crack open a well-written book and try to absorb something from those who have distilled years of knowledge and insight into a permanent artifact.</p>
<p>Here are my personal recommendations that I think all developers (especially junior ones) should read at some point. These books are all highly regarded by professionals in our industry and have the potential to leave a profound impact on the quality of your work and your speed of development &amp; learning.</p>
<p>Some of them stray from the technical details and focus more on giving you practical rules about what it means to be a good developer on the interpersonal and professional level.</p>
<blockquote>
<p><strong><em>Disclosure:</em></strong> <em>Some of the links below are affiliate links. But, I’ve only added those books that I personally feel are useful for a junior dev.</em></p>
</blockquote>
<h3 id="heading-1-clean-code"><strong>1. Clean Code</strong></h3>
<p><a target="_blank" href="https://www.amazon.ca/gp/product/0132350882/ref=as_li_tl?ie=UTF8&amp;tag=stemmlerjs09-20&amp;camp=15121&amp;creative=330641&amp;linkCode=as2&amp;creativeASIN=0132350882&amp;linkId=63a7fb47960db0590eabb58edf25aee5">by Robert C. Martin (Uncle Bob)</a></p>
<p>After you overcome the basic challenges of development and get comfortable figuring out how to write code to solve problems, it’d be a good idea to take a look at this book. It turns out that making the code work the first time is actually the easy part. The hard part is making your code read well so that others are able to understand it and change it in the future.</p>
<p>Remember the last time you had to read code like this?</p>
<pre><code class="lang-js"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">calculateIt</span> (<span class="hljs-params">a, b</span>) </span>{
 <span class="hljs-keyword">if</span> (a.delta &lt; b.element.x) {
   <span class="hljs-keyword">var</span> x = b.element.x;
   <span class="hljs-keyword">return</span> x - b.delta.x
 } <span class="hljs-keyword">else</span> {
   <span class="hljs-keyword">var</span> y = b.next.y;
   <span class="hljs-keyword">var</span> h = b.element.y * <span class="hljs-number">2</span>;
   <span class="hljs-keyword">return</span> y - h
 }
}
</code></pre>
<p>Who knows what it really does. Code like this might work, but the moment we need to change it, we have to hope the author of the code is still in the company and pray that they are somehow able to decipher what they wrote potentially years ago.</p>
<p>When careful attention isn’t taken to write code that’s readable and maintainable, we end up with pockets of code like this that everyone is afraid to touch, and if it ever breaks, we’re in trouble.</p>
<p>Uncle Bob’s “Clean Code” teaches you how to identify what clean code looks like compared to bad code, and it teaches you how to transform it into good code. A task like this sounds trivial to most, but you’d be surprised at how turning a just a few clean software design principles into habits can help you write much more professional and scalable code.</p>
<p>We’re software craftspeople, you know. Building a house is not much different than building an application in principle. We need to pay attention to the details or else it can all become very expensive to fix in the future if not done right first time.</p>
<h3 id="heading-2-the-clean-coder">2. The Clean Coder</h3>
<p><a target="_blank" href="https://www.amazon.ca/gp/product/0137081073/ref=as_li_tl?ie=UTF8&amp;tag=stemmlerjs09-20&amp;camp=15121&amp;creative=330641&amp;linkCode=as2&amp;creativeASIN=0137081073&amp;linkId=c172b446308df330b348e0db03e30168">by Robert C. Martin (Uncle Bob)</a></p>
<p>This book is not necessarily a technical book as it is a book for teaching you how to be a professional in this industry. Professionals are those who, when faced with challenges, uncertainty and pressure, will continue to treat creating software as a craft and will be determined to adhere to their professional values.</p>
<p>The Clean Coder is full of practical advice on estimation, refactoring, testing, dealing with conflict, schedules, avoiding burnout, and much more. Trusted advice from someone who has spent decades doing this stuff.</p>
<p>One of the best things it teaches, is how to have integrity as a developer, when to say “No” and how to say it.</p>
<p>A book about professionalism.</p>
<h3 id="heading-3-refactoring">3. Refactoring</h3>
<p><a target="_blank" href="https://www.amazon.ca/gp/product/0134757599/ref=as_li_tl?ie=UTF8&amp;tag=stemmlerjs09-20&amp;camp=15121&amp;creative=330641&amp;linkCode=as2&amp;creativeASIN=0134757599&amp;linkId=cd665cc1a6483955a2d51dd2d1a576d1">by Martin Fowler</a></p>
<p>Martin Fowler is one of my favorite authors. The first reason is that he’s hilarious. His approach to writing software books is unmistakably “Fowler”. The other reason is that he’s incredibly good at explaining complex topics, and doing so very simply, in a way that doesn’t fatigue you as a reader.</p>
<p>Refactoring is a book that the creator of Ruby on Rails once said that you should “read before you write another line of code”. Fowler guides you through refactoring a simple application, introducing you to a number of techniques that he’s accumulated and cataloged over his years of consulting.</p>
<p>Fowler shows you how to flip between coding and refactoring, how often you should be committing your code and when you should be writing your tests. Highly recommended. The latest version of this book was updated to present the examples in JavaScript, which was an added plus for me since it’s my favorite language.</p>
<h3 id="heading-4-design-patterns-elements-of-reusable-object-oriented-software">4. Design Patterns: Elements of Reusable Object-Oriented Software</h3>
<p><a target="_blank" href="https://www.amazon.ca/gp/product/0134757599/ref=as_li_tl?ie=UTF8&amp;tag=stemmlerjs09-20&amp;camp=15121&amp;creative=330641&amp;linkCode=as2&amp;creativeASIN=0134757599&amp;linkId=cd665cc1a6483955a2d51dd2d1a576d1">by Erich Gamma, Richard Helm, Ralph Johnson, &amp; John Vlissides</a></p>
<p>This is the seminal book on Design Patterns. What are design patterns, you ask? Design Patterns are well-known solutions to commonly occurring problems in software development. If you’re familiar with the patterns, you’ll find that you’ll be able to greatly reduce the amount of time it takes you to put forth the solutions to those problems.</p>
<p>Having a good awareness of design patterns also allows you to communicate your solutions effectively with other developers.</p>
<blockquote>
<p><em>“Yeah, I just used a Facade overtop of whichever database Adapter gets loaded from the Strategy.”</em>  </p>
<p><em>“Ahh! Gotcha.”</em></p>
</blockquote>
<p>Yeah, it’s an older book. But it’s still one of the best for reference. If you’d like something on this topic that’s a bit more recent and friendly, I’d also recommend the good “Head First Design Patterns: A Brain-Friendly Guide” by Eric Freeman.</p>
<h3 id="heading-5-domain-driven-design-tackling-complexity-in-the-heart-of-software">5. Domain-Driven Design: Tackling Complexity in the Heart of Software</h3>
<p><a target="_blank" href="https://www.amazon.ca/gp/product/0321125215/ref=as_li_tl?ie=UTF8&amp;tag=stemmlerjs09-20&amp;camp=15121&amp;creative=330641&amp;linkCode=as2&amp;creativeASIN=0321125215&amp;linkId=c16807ab5ed838159eb3a89a339459a6">by Eric Evans</a></p>
<p>In order for large code bases to continue to scale, we need to logically split up code into different parts. The idea is to partition your code in a way such that it would be possible for separate teams to work on those parts of your system without affecting anyone else.</p>
<p>The underlying concept that enables moving your code base in this direction is Domain-Driven Design (DDD). It’s an approach to software development where we model the problems that exist in the “problem domain” (the real world) to a number of solution domains.</p>
<p>DDD is incredibly important when a code base gets sufficiently large. Large enterprise companies employ DDD in order to assign teams to parts of the company’s code base.</p>
<p>Eric Evan’s coined the term “Ubiquitous Language”, which is the term for building a common, all-encompassing language between the developers, the domain experts and any other users or actors in the domain. By using this Ubiquitous Language, it ensures that the most important domain concepts are well understood and get modeled in the software.</p>
<p>The book is a little more technical and challenging than the others, but if you get familiar with these concepts, you’ll be very well off in understanding how today’s largest companies keep their code bases manageable and scalable.</p>
<h3 id="heading-update-april-17th-2019"><strong>Update: April 17th, 2019</strong></h3>
<p>I’ve thought about this recommendation a little bit. Introduction to the DDD world is, in my opinion, extremely beneficial for Junior Developers. I believe this to be true because DDD places importance on familiarity with <strong>software architecture</strong>, <strong>design</strong> <strong>principles</strong> and <strong>design patterns</strong>. It’s a great way to practically introduce yourself to a higher level of programming.</p>
<p>That said, DDD is a large and challenging topic. For some readers, this book (the seminal <em>“blue book”</em>) by Eric Evans might be better treated as a reference. It was Eric Evans who wrote the first book on DDD.</p>
<p>However, I just recently finished reading <a target="_blank" href="https://www.amazon.ca/gp/product/0134434420/ref=as_li_tl?ie=UTF8&amp;camp=15121&amp;creative=330641&amp;creativeASIN=0134434420&amp;linkCode=as2&amp;tag=stemmlerjs09-20&amp;linkId=a783087421f92bcb1952c4f4fae2112f">DDD Distilled</a> by Vaughn Vernon. It’s a really short and sweet intro to DDD, written in order to address the fact that most books on DDD are huge in size.</p>
<p>Definitely try DDD Distilled instead. I think this book would be a lot better for most developers in order to get ramped up on the DDD essentials first. For more practical details on how to implement the concepts, refer back to “<a target="_blank" href="https://www.amazon.ca/gp/product/0321125215/ref=as_li_tl?ie=UTF8&amp;tag=stemmlerjs09-20&amp;camp=15121&amp;creative=330641&amp;linkCode=as2&amp;creativeASIN=0321125215&amp;linkId=521ea5470496a6c68831718b074489eb">the blue book</a>” and “<a target="_blank" href="https://www.amazon.ca/gp/product/0321834577/ref=as_li_tl?ie=UTF8&amp;tag=stemmlerjs09-20&amp;camp=15121&amp;creative=330641&amp;linkCode=as2&amp;creativeASIN=0321834577&amp;linkId=e5acbe0b630c48120491d54298adc2c1">the red book</a>”.</p>
<h3 id="heading-6-soft-skills-the-software-developers-life-manual">6. Soft Skills: The Software Developer’s Life Manual</h3>
<p><a target="_blank" href="https://www.amazon.ca/gp/product/1617292397/ref=as_li_tl?ie=UTF8&amp;tag=stemmlerjs09-20&amp;camp=15121&amp;creative=330641&amp;linkCode=as2&amp;creativeASIN=1617292397&amp;linkId=d1e4c3b453d124d01e886aab876c8ff9">by John Sonmez</a></p>
<p>We should strive to stay well-balanced as a software developer. Unfortunately, being well-balanced is not a trait that most people affiliate with software developers. The truth is, it’s incredibly important to invest in your learning, health and overall well-being as a developer.</p>
<p>“Soft skills” is about the important stuff that matters outside of actually coding, like productivity, career goals and personal finance. Sonmez also goes into investing, how he retired at 33, fitness hacking tips and maintaining relationships - things rarely addressed in the programming community.</p>
<p>It’s written in such a way that you can jump into the book at whichever chapter you think is most relevant to you today.</p>
<h3 id="heading-7-clean-architecture">7. Clean Architecture</h3>
<p><a target="_blank" href="https://www.amazon.ca/gp/product/0134494164/ref=as_li_tl?ie=UTF8&amp;tag=stemmlerjs09-20&amp;camp=15121&amp;creative=330641&amp;linkCode=as2&amp;creativeASIN=0134494164&amp;linkId=32995f69d0747d8723d42ffdda296878">by Robert C. Martin (Uncle Bob)</a></p>
<p>What? Uncle Bob writes good books, ok?</p>
<p>In school, there’s a lot of focus on algorithms and less focus on software design principles. I think it’s kind of unfortunate because in reality, you don’t encounter that many algorithm challenges too often. Instead, it’s more common that you’ll be faced with the challenge of structuring your code in a way that’s modular, flexible, readable and will allow you to add new features quickly when requirements change.</p>
<p>Clean Architecture is about the essential software design principles and patterns that you’ll be able to use in order to face these challenges.</p>
<p>Some of the best takeaways from this book are the cost of dependencies, stable vs. non-stable code and the SOLID principles: a way to write code so that it’s more understandable, flexible and maintainable.</p>
<p>Other aspects of this book that were incredibly useful were concepts of “screaming architecture” and “packaging by component” which are opinions on how to organize your modules so that it practically <strong><em>screams</em></strong> to the reader exactly what the project is all about.</p>
<p>This book goes well hand-in-hand with Domain-Driven Design, which is enabled through the use of a “Layered Architecture” or as Uncle Bob calls it, “The Clean Architecture” (also known as Ports and Adapters). A great book for anyone who wants to up their architecture chops and learn how to effectively design a system at a high level, and do the dance of dependencies at the detail level.</p>
<h3 id="heading-8-the-effective-engineer">8. The Effective Engineer</h3>
<p><a target="_blank" href="https://www.amazon.ca/gp/product/0996128107/ref=as_li_tl?ie=UTF8&amp;tag=stemmlerjs09-20&amp;camp=15121&amp;creative=330641&amp;linkCode=as2&amp;creativeASIN=0996128107&amp;linkId=c26139ec47911c60569dc5851da21d06">by Edmond Lau</a></p>
<p>Time is our single most valuable asset in life, and we should aim to be more efficient with it. It’s easy to get bogged down and spend a lot of time fixing bugs and wasting effort. Doing repeated work. Bleh. The Effective Engineer is all about getting more done in less time and removing repeated work.</p>
<p>We can mitigate wasted time and effort on repetitive tasks through a framework called “leverage”.</p>
<p>Leverage helps you identify the activities that you can do that produce the most disproportionate results- per unit of time invested. It’s a framework that can apply to anything, whether that be how you learn, how you code, how you debug… anything!</p>
<h3 id="heading-9-the-pragmatic-programmer">9. The Pragmatic Programmer</h3>
<p><a target="_blank" href="https://www.amazon.ca/gp/product/020161622X/ref=as_li_tl?ie=UTF8&amp;camp=15121&amp;creative=330641&amp;creativeASIN=020161622X&amp;linkCode=as2&amp;tag=stemmlerjs09-20&amp;linkId=005803be38be1c9a5d5b8c01afb049f3">by Andrew Hunt &amp; David Thomas</a></p>
<p>Praised for being easy to follow and understand, The Pragmatic Programmer is a book that should be on the desktop of developers of all levels. Andrew and David are programmers that not only spent many years doing what they do, but paying attention to what they were doing <strong>as they were doing it</strong>, and then <strong>trying to determine if they could do that better</strong>.</p>
<p>What came out of their years of introspection was this book, which introduces a number of essential programmer philosophies to follow throughout your career, like “programmers should have a “do it once, or automate” philosophy”.</p>
<p>It includes simple yet detailed advice that you should carry with you in the back of your mind before you write another line of code or start a new project.</p>
<h3 id="heading-final-words">Final Words</h3>
<p>Books really are some of the best tools to improve your knowledge and skills as a new programmer or Junior Developer. Books tend to have a really high return on investment; did you know you can make a lot of money programming? ?</p>
<p>These are just a few of the best books out there right now in 2019! None of them are really new, but that’s because programming has maintained the same general philosophies and best practices for years. As a professor I once had to say, “<strong>you can make a lot of money in this industry, you just have to read the damn manual</strong>”.</p>
<p>Have you read any of these books? What did you think? Any books not on this list that you think newer developers would really benefit from reading? Let us know in the comments!</p>
<h3 id="heading-additional-resources">Additional Resources</h3>
<p>Here’s a list of some really excellent articles that cover some of the topics from these books. If you don’t quite have the time to invest in fully blown books right now, familiarizing yourself with these concepts might assist you in your journey to become a better developer!</p>
<p><strong>Surviving Your First Junior Developer Job [Guide]</strong> ??<br><a target="_blank" href="https://univjobs.ca/blog/developer-guides/ultimate-guide-for-first-junior-developer-job-success/">https://univjobs.ca/blog/developer-guides/ultimate-guide-for-first-junior-developer-job-success/</a></p>
<p><strong>Refactoring.guru</strong><br><a target="_blank" href="https://refactoring.guru/">https://refactoring.guru/</a></p>
<p><strong>SOLID Design Principles</strong><br><a target="_blank" href="https://stackify.com/solid-design-principles/">https://stackify.com/solid-design-principles/</a></p>
<p><strong>DRY (Don’t Repeat Yourself)</strong><br><a target="_blank" href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself">https://en.wikipedia.org/wiki/Don%27t_repeat_yourself</a></p>
<p><strong>NodeJS and Good Practices</strong><br><a target="_blank" href="https://blog.codeminer42.com/nodejs-and-good-practices-354e7d76362">https://blog.codeminer42.com/nodejs-and-good-practices-354e7d76362</a></p>
<p><strong>Implementing the SOLID and the onion architecture in Node.js</strong><br><a target="_blank" href="https://dev.to/remojansen/implementing-the-onion-architecture-in-nodejs-with-typescript-and-inversifyjs-10ad">https://dev.to/remojansen/implementing-the-onion-architecture-in-nodejs-with-typescript-and-inversifyjs-10ad</a></p>
<p><strong>Better Software Design with Clean Architecture</strong><br><a target="_blank" href="https://fullstackmark.com/post/11/better-software-design-with-clean-architecture">https://fullstackmark.com/post/11/better-software-design-with-clean-architecture</a></p>
<p><strong>The Clean Architecture</strong><br><a target="_blank" href="http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html">http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html</a></p>
<h4 id="heading-my-upcoming-free-resource-an-introduction-to-software-architecture-and-design-principles-with-nodejs-and-typescript"><strong>My upcoming free resource, an introduction to software architecture and design principles with Node.js and TypeScript</strong></h4>
<p><a target="_blank" href="https://khalilstemmler.com/resources/solid-nodejs-architecture">https://khalilstemmler.com/resources/solid-nodejs-architecture</a></p>
<p>Keep growing, and have fun while you’re at it!</p>
<hr>
<p>If you’re a Canadian student or recent-grad looking for entry-level developer opportunities or co-ops/internships, you should check out our platform, <a target="_blank" href="http://bit.ly/2HQ1g6y">Univjobs</a>. We only post jobs specifically for students and recent-grads.</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
