<?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[ Job Hunting - 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[ Job Hunting - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 23 May 2026 22:20:57 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/job-hunting/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Get a Developer Job ]]>
                </title>
                <description>
                    <![CDATA[ The demand for skilled software developers continues to grow. However, for many self-taught developers, the path to securing a job in this competitive field can seem daunting. We just published a course on the freeCodeCamp.org YouTube channel that is... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-get-a-developer-job/</link>
                <guid isPermaLink="false">66b2031e27569435a9255ac0</guid>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ youtube ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Beau Carnes ]]>
                </dc:creator>
                <pubDate>Thu, 18 Jan 2024 17:58:03 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/01/job.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>The demand for skilled software developers continues to grow. However, for many self-taught developers, the path to securing a job in this competitive field can seem daunting.</p>
<p>We just published a course on the freeCodeCamp.org YouTube channel that is designed to guide aspiring software engineers through the job-hunting process.</p>
<p>Lane Wagner developed this course. Lane is a senior back-end engineer who has worked as a hiring manager and head of engineering. He is the founder and lead instructor of Boot.dev.</p>
<p>The course is full of insights and practical steps for those looking for a programming job. Here's a snapshot of what the course covers:</p>
<p><strong>Strategy</strong>: The course begins by setting the right mindset for job searching. It provides strategies and tips on how to approach the job market with confidence and clarity.</p>
<p><strong>Projects</strong>: The second module focuses on honing and refining portfolio projects. This is crucial for demonstrating your skills and creativity to potential employers.</p>
<p><strong>GitHub Profile</strong>: A standout GitHub profile is a must in today’s tech job market. This section guides you through optimizing your GitHub presence, ensuring that your coding prowess shines through.</p>
<p><strong>LinkedIn Profile</strong>: Your LinkedIn profile often serves as your first impression. This module helps you curate a profile that truly reflects your professional brand and attracts the right kind of attention.</p>
<p><strong>Resume</strong>: Perhaps one of the most critical tools in your job search arsenal, the course teaches how to craft a resume that stands out and avoids common pitfalls that could lead to it being overlooked.</p>
<p><strong>Applying</strong>: This part of the course delves into the intricacies of the application process, offering insights into how to effectively get your resume in front of the right people.</p>
<p><strong>Networking</strong>: Networking is key in the tech industry. Learn how to navigate local meetups and events to build valuable connections that could open doors to new opportunities.</p>
<p><strong>Interviewing</strong>: Interviews can be tricky. This module prepares you for common interviewing scenarios, helping you avoid mistakes and make a lasting impression.</p>
<p><strong>Relocation</strong>: Finally, the course touches on the often-overlooked aspect of job searching – relocation. Understand the pros and cons, and how to make an informed decision if a job opportunity in a new location arises.</p>
<p>Whether you're completely new to the field or looking to make your next big career move, this course will give you the knowledge and tools needed to navigate the tech job market.</p>
<p>Watch the full course on <a target="_blank" href="https://www.youtube.com/watch?v=6nz8GXjxiHg">the freeCodeCamp.org YouTube channel</a> (4-hour watch).</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/6nz8GXjxiHg" 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>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Career Mistakes to Avoid as a Developer ]]>
                </title>
                <description>
                    <![CDATA[ What does the word career mean to you? To me, it is a roller coaster journey during which we find opportunities, progress, and growth in life. The journey involves learning objectives, work, and other personal and professional aspects. A promising ca... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/career-mistakes-to-avoid-as-a-dev/</link>
                <guid isPermaLink="false">66bdffcdeb957b90783c1c69</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Tapas Adhikary ]]>
                </dc:creator>
                <pubDate>Wed, 22 Nov 2023 00:04:22 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/11/Career-Mistakes-2.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>What does the word <code>career</code> mean to you? To me, it is a roller coaster journey during which we find opportunities, progress, and growth in life. The journey involves learning objectives, work, and other personal and professional aspects.</p>
<p>A promising career is one where you enjoy most (if not all) of your daily work. You see your personal, professional, and financial growth and gradually define what success means to you. </p>
<p>A lousy career is just the opposite. It may pay your bills, but you need more work satisfaction, and measuring your progress and growth becomes hard.</p>
<p>Several factors define a career: promising versus lousy, good versus bad, and successful versus failed. A few of them we can not control – but, we can avoid some career mistakes to build a better career path.</p>
<p>I have spent more than 18 years in Software Engineering and have seen a lot of ups and downs, including in my own career and those of my colleagues. In this article, I will discuss ten career mistakes you should avoid. </p>
<p>Usually, I <a target="_blank" href="https://www.freecodecamp.org/news/author/tapas/">share knowledge</a> on technical topics like JavaScript, web development, React, Node, Next.js, and so on. But this time, let's connect on essential tips for our Career Development.</p>
<p>If you like to learn from video content as well, this article is also available as a video tutorial here: 🙂</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/uiVmFwbVfzU" 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-a-few-things-before-we-start">A Few Things Before We Start</h2>
<p>You may or may not agree with all the points. That's fine with me, because what I'm planning to share here is based on my own experiences. </p>
<p>You may strongly agree or disagree with my conclusions, but if there are any additional points that you think I still need to include, please let me know. You can contact me on the social handles I mention at the end of this article.</p>
<p>Also, this article is not only meant for working professionals. All these mistakes we will discuss are relevant for everyone, including students, people seeking jobs, or anyone getting ready for tomorrow in the software industry or any industry.</p>
<p>All set? Let's get started.</p>
<h2 id="heading-1-you-dont-set-realistic-goals">1. You Don't Set Realistic Goals</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Goal.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>One of the biggest mistakes most of us make in our careers is not having a goal. What exactly is a goal? It is something like a target. </p>
<p>Let's take an example. Let's say you're going shopping to buy something. You usually have a list of items that you want to get. You don't randomly pick things and come home and feel like, "Oh, it was a complete waste of time and money". So, if that list is your shopping goal, why not have something like this for your career?</p>
<p>Usually, we have a lot of short-term goals, for example,</p>
<ul>
<li>I have to fix this bug today.</li>
<li>I have to build this project this week.</li>
<li>I have to get a promotion this year.</li>
</ul>
<p>These are great goals to have. But we need to have long-term goals as well. Like, what do you want to be in the long-term in your career. How do you plan every steps to achieve that goal?</p>
<p>Say you are in mechanical engineering, but your heart is in software engineering (mechanical engineering is excellent – I'm just taking this as an example). In that case, you should have a goal for the next few years to translate yourself into a software developer and try to seek more roles more opportunities in the software industry.</p>
<p>I can tell you my story, as I think it'll help give you some perspective. I set myself a long term career goal to transition from my regular multi-national corporation job and start my career full time as an independent teacher and content creator. It took me four years to realize it, but without that goal it would have been impossible for me to chase my passion.</p>
<p>You may ask, will I be able to fulfill all the goals in my life? Well, maybe not. Still, it's important to have some and prioritize the most important ones. That way, even if you can't achieve some, you may identify a few more new goals along the way. </p>
<p>You may have a different way of going about it. But, if you don't have a starting point, you do not have anything to work toward and chase. Your career may become stagnant.</p>
<p>If you don't have any career goals for yourself right now, take some time to come up with a couple realistic goals. Here's some advice on <a target="_blank" href="https://www.freecodecamp.org/news/how-to-set-smart-goals-you-can-achieve/">how to set SMART goals you can actually achieve</a>.</p>
<h2 id="heading-2-you-fail-to-recognize-your-potential">2. You Fail to Recognize Your Potential</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Potential.png" alt="Image" width="600" height="400" loading="lazy"></p>
<blockquote>
<p><strong>Human potential</strong> is the capacity for humans to <strong>improve</strong> themselves through <strong>studying</strong>, <strong>training</strong>, and <strong>practice</strong>, to reach the limit of their ability to develop <strong>aptitudes</strong> and <strong>skills</strong>. – Definition of Human Potential from Wikipedia.</p>
</blockquote>
<p>For us, the software developers, is about improving ourselves through practice, training, and study to reach the heights of our ability. But many of us do not know our potential at the start our careers. We figure it out gradually, and when we become aware of it, this helps us improve our careers. </p>
<p>When you know your potential, someone else will not dictate how to shape your career. Instead, you will be able to identify what would be good for you based on your strengths and where you need to bridge the gaps. </p>
<p>But you may ask, "How do I know my potential?". That's where having a goal and working towards it helps. Say you have a goal of mastering machine learning and data science to have a career as a data scientist. As you work towards this goal, you will find the areas where you excel, and other areas where you need to work especially hard. You figure out your potential as you work towards this goal.</p>
<p>Also, try not to settle for unimportant things. Constantly challenge yourself to produce better and more significant outcomes. When you do so, you discover your true potential in a much better way.</p>
<h2 id="heading-3-you-dont-take-the-time-to-network">3. You Don't Take the Time to Network</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Networking.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Hey, we're gonna talk about something other than computer networking here. We will focus on human-to-human networking. We are going to talk about socializing. But why?</p>
<p>Networking or socializing with like-minded people, talking to them, and getting inspired by their work are as important as learning to code in programming. You might be a great programmer and fantastic coder. But suppose you do it in a silo. In that case, no one knows you or what you're capable of, so you will most likely lose out on more significant opportunities in your career.</p>
<p>When you socialize and network with others in the tech space, you may find a meaningful community to join. You'll be able to discuss important topics with like-minded people who have interests similar to yours – and this can help you multiply your growth by many times.</p>
<p>This is one mistake I made in my career for several years, as I was unaware of its vast potential. Be active on platforms like LinkedIn, follow people you'd like to connect with on tech Twitter (now X), and make authentic connections with them. Spending mindful time on these platforms, and at in-person events as you're able, can really help boost your career.</p>
<p>Check out the <code>You Miss Out on Learning Opportunities</code> section below for some real-life tips on how to reach out and connect with people. </p>
<h2 id="heading-4-you-waste-your-precious-time">4. You Waste Your Precious Time</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Wasting-Time.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>"Wasting time" means not effectively utilizing your time. Would you agree that time is precious? Using and managing your time properly will help your career and life in general.</p>
<p>To clarify, watching a movie, going out with your friends and family, participating in festive activities, and so are not wasting time. You need these to balance out the time you spend working. </p>
<p>Rather, I'm more concerned about the tasks you may have to perform that take away from your "focus time" at work.</p>
<p>Let me walk you through a few situations:</p>
<p>You are working on a task, and here comes some notifications on your phone. You pause whatever you are doing and jump on your phone to see what's happening on that side of the world. The notification may take you 10-15 seconds to read, but you then spend 10 minutes browsing the phone. </p>
<p>This is a habit many of us have built in recent times. And then when you get back to your work, your brain has to recalculate and bring you back to the topic at hand – where you were, and what you were doing – and get you started with the task gain. This context switching is costly, and the same amount of focus may not be possible.</p>
<p>The best way of tackle a situation like this is,</p>
<ul>
<li>Switch off the phone's internet while you're working if you do not need it. You can switch it on when you take breaks, maybe at lunch time.</li>
<li>You can also set your phone in "Do Not Disturb" mode while your work needs your utmost attention. Just make sure you add some of your family and friend's contacts as emergency contacts so that only a limited set of people can reach out to you during those times in case of any emergencies.</li>
</ul>
<p>Let's talk about another situation. Suppose you need to prepare and send a design doc to a senior dev for review. But instead, you spend time on something low priority or some little luxury that delayed preparing the doc. You keep postponing until it's become an urgent thing that you'll have to do within a limited time. </p>
<p>This act of delaying something knowingly is called <code>procrastination</code>, an ultimate way to kill time. There are some well-known and proven methods to tackle procrastination.</p>
<ul>
<li>The first step is to realize and admit to yourself that you procrastinate.</li>
<li>Then list out your distractors. This list may vary from person to person. Remove these distractors. It could be your phone, TV, novels, anything.</li>
<li>Break down your deliverables into smaller tasks. Achieve them one by one and give yourself a pat on your back once you've finished each small task.</li>
<li>Take small breaks and come back to the point where you left off on your task to continue with a fresh brain.</li>
</ul>
<p>Instead of finding yourself in these types of situations, use your time wisely. If you have to get something done, get it done. When you're procrastinating, something that depends on one task may also get delayed, creating a cycle of time waste, frustrations, and complicated situations.</p>
<h2 id="heading-5-you-neglect-upskilling">5. You Neglect Upskilling</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Upskill.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><code>Upskilling</code> means getting better at your current skill or acquiring relevant new skills. It is essential to upskill at any and all stages of your career. </p>
<p>One of the common mistakes we make is that we stop upskilling after a few years in our professional life. We get used to the projects, domains, technologies, and environments that create a comfort zone around us. Upskilling is always about coming out of that comfort zone.</p>
<p>Here are a few common excuses we give to ourselves when it comes to upskilling:</p>
<ul>
<li>I already have a lot of work at the office or assignments in university.</li>
<li>I need to have a personal life.</li>
<li>I am happy with whatever I know now, and my work only demands so much.</li>
<li>There is so much to learn and it is never ending (sigh!).</li>
</ul>
<p>But you really don't need that much time in a week to up-skill. You just need to have a plan and to stay consistent in executing it. Set just 1 hour aside in your day. Fork it out from any non-urgent activities and plan your learning schedule in that one hour.</p>
<p>In this one hour, here are some things you can do:</p>
<ul>
<li>Assess the gaps, weaknesses, and strengths in your technical and non technical abilities.</li>
<li>List them out in a place where you can easily get back to them and make modifications.</li>
<li>Prioritize them based on your current needs and near future goals.</li>
<li>Time-box each of the items so that you can get something tangible within a specified duration. For example, you want to do a certification on cloud computing within a month, or the Responsive Web Design course from freeCodeCamp over the next few weeks, and so on.</li>
<li>Start working on these defined tasks. You may find many resources on internet. Glance over them to create an index of resources that you can understand easily and relate to well. </li>
<li>Read and watch tutorials, but also practice hard.</li>
<li>Finally, recognize your progress.</li>
</ul>
<p>You may ask, is that one hour really enough? And I will tell you – it works like magic if you keep it up. Upskilling is not a race or sprint. It needs time, consistency, and perseverance to get from the one end to other.</p>
<p>Have you heard about the power of tiny gains?</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/image-21.png" alt="Image" width="600" height="400" loading="lazy">
<em>Credit: James Clear</em></p>
<p>It is a strategy of being just 1% better every day. If you continue to do that for a year, you get almost 38% better at the end of the year. Being 1% worse does the opposite. The strategy was represented in mathematical graphs by James Clear in explanation of <a target="_blank" href="https://jamesclear.com/continuous-improvement">Continuous improvements and how it works</a>.</p>
<p>Upskilling can also help you out a lot if you're preparing for the job search. The way the tech industry is moving, we may not be able to avoid layoffs – but we can be better prepared to get our next job faster. And that becomes much more attainable when you stay relevant and continue learning new things. </p>
<h2 id="heading-6-you-dont-ask-for-what-you-want">6. You Don't Ask for What You Want</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Don-t-ask-Don-t-Get.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Let me start by sharing an experience of mine. Back in the early 2000s when I was a fresher, I had to attend a meeting with some of the project leads and the manager. We were discussing how to modernize our product with HTML5 features. </p>
<p>I was aware of HTML5, and every time a discussion point was raised, I thought of adding to it, but I didn't. I thought of asking some valuable questions, but I didn't. I felt that in order to ask something in a meeting, I needed a lot of guts! I was wrong. </p>
<p>Oftentimes in your career journey, if you do not ask, you simply won't get what you want or deserve. If someone has some knowledge and you lack it, ask about it. If you have a questiona bout something, ask before you commit to the work. Ask about your promotion, a salary hike, career growth, and anything that is related to your career. There is no such thing as a silly question when it comes to your career growth.</p>
<h2 id="heading-7-you-only-focus-on-the-money">7. You Only Focus on the Money</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Money-honey.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Come on, money is important. But is it the only important thing, especially in the context of switching jobs or working towards your career goals? No, certainly not. </p>
<p>When you plan to switch jobs, you also need to look into other factors like work culture, the amount of time you need to spend at the office working, whether it's going to be more stressful compared to the compensation you'll be getting, and so on.</p>
<p>I would certainly look into the following factors along with the compensation (the money part) to make an informed decision about my job switching:</p>
<ul>
<li>What will be my technical growth and learning opportunities?</li>
<li>What will the work environment be like? Remote/Work From Office/Hybrid? How will that impact me?</li>
<li>What skills (both tech and soft) will I be able to learn in the new position?</li>
<li>What kind of employee benefits will I get compared to my current organization?</li>
<li>Will my work-life balance be impacted positively?</li>
<li>What are the company's vision, culture, and values?</li>
</ul>
<p>Then when you're considering the salary, be careful and make sure you understand the breakdown. What percentage of the CTC comes from any bonus? Is it inclusive or exclusive of CTC? How does the bonus payout happen? If the company doesn't do well in a fiscal year, will you get paid less? Are there stock options or other benefits they pay out instead of cash? All this matters.</p>
<p>The mistake people often make is that they see only the <code>money</code> figure as the most important part of a job offer. Make sure you talk to someone from the company, do your research, and learn about what else they're offering as we mentioned above. </p>
<h2 id="heading-8-you-neglect-work-life-balance">8. You Neglect Work-Life Balance</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Work-Life.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Another mistake you might make is not balancing your work and life. The last thing you want is to <code>burn out</code> at the cost of things you love the most, like your friends, family, and long-term career.</p>
<p>We must learn to prioritize things, and this includes both work and personal life. Your priority list for the day should not have only work related items. While it's important to ship a bug fix, it is also essential to accompany your kids to their soccer games or school plays, or make time to go on a date with your partner, or do something nice for yourself.</p>
<p>Do not be afraid to say "No". At the same time, don't be arrogant when you accept or decline tasks. This is important to keep a healthy work-life balance. When you already have plenty on your plate, trying to accommodate more or do more will only spill over and negatively affect your work-life balance. </p>
<p>So say no when you need to, communicate your intentions ahead of time when possible, and proactively ask for what tasks you'd like to work on when your plate has room for more.</p>
<p>For a long time in my career, I attended meetings late at night to match the timezones of my customers and other colleagues. Then, slowly, it started affecting my health and productivity. </p>
<p>When I thought about it more carefully, I discovered a couple of things. First, I realized that I didn't have to attend all the meetings, and that I could request that they take place in my clients' evenings sometimes. That way we'd both be taking turns compromising. And it worked. </p>
<p>At times, our habits drive us towards the work-life imbalance. For example, staying late at office while the same work can wait till the next morning is a classic example of a habit that may lead to health issues and frustrations in a long run. </p>
<p>We all need to find a way to sustain both work and life. So plan ahead, and stick to your schedule as much as possible. There might be exceptions where you have to give one thing priority above another – but do not allow the exception to become the norm.</p>
<h2 id="heading-9-you-miss-out-on-learning-opportunities">9. You Miss Out on Learning Opportunities</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/GOAT.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you have the opportunity to learn from a person who specializes in a particular field, grab it. If you use social media platforms like LinkedIn and X/Twitter wisely, it can lead you to the people who share great insights about subjects you're interested in.</p>
<p>A quick tip for you:</p>
<p>When you send someone a connection request on LinkedIn/X, take some time to introduce yourself. Things that you can mention briefly:</p>
<ul>
<li>What did you find unique about the person you want to connect to?</li>
<li>A bit about yourself, introducing some of your uniqueness, too.</li>
<li>Why do you want to connect?</li>
</ul>
<p>Build authentic connections to get the best out of it. Then once you're connected, here are a few things you can do:</p>
<ul>
<li>Show interest in their posts.</li>
<li>Engage with discussions by commenting or sharing posts.</li>
<li>Repost with your thoughts</li>
<li>Exchange ideas, or even build things together!</li>
</ul>
<p>A strong social connection may help you in getting information faster. You may learn about a new release of a library/framework/product, how an industry is moving, how certain technologies might impact your work, and so on.</p>
<p>Apart from learning a lot, you may also get to know about job openings, hirings, and references. After all, companies have also started recruiting talent from social media pages.</p>
<p>Also, being part of a forum like the <a target="_blank" href="https://forum.freecodecamp.org/">freeCodeCamp forum</a> can be helpful for networking and learning as well. It is also a place for you to share solutions to a problem, talk about what you've learned, and make yourself visible gradually.</p>
<p>When we learn from someone, we not only come to understand what they've achieved or how they did it, but we also learn about the struggles, failures, and how they made the turnaround. Learning from someone else's experience can help accelerate your career journey. Don't make the mistake of living in a silo and missing out on these opportunities.</p>
<h2 id="heading-10-you-cant-see-the-bigger-picture">10. You Can't See the Bigger Picture</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Big-Picture.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>By <code>Big Picture</code>(or Bigger Picture), I mean understanding and developing a wider perspective on your career as a whole. It is about your ability to consider and assess many different aspects of a situation, rather than focusing on just the minute details.</p>
<p>As developers, we're supposed to implement features, do bug fixes, maintain code, and deliver quality software to our end-users. That's great! </p>
<p>But, we need to think beyond the individual tasks assigned to us. Our understanding of the overall project goals, the user acceptance criteria, delivery mechanisms, and perspectives of other engineers is key. And so is judging the impact of our work, as it will help us get the big picture of a project.</p>
<p>Suppose your product manager wants your team to build user interfaces that also cater to the needs of specially-abled and visually challenged users. In this case, you and your team members must see the bigger picture around <code>Accessibility</code>. </p>
<p>If your designer doesn't define the site's colors accordingly, or the developers do not implement keyboard accessibility along with ARIA roles and attributes, then they're missing the bigger picture. </p>
<p>Another example could be over-optimizing performance while your users do not care about it. Your users may be waiting to get a feature ASAP so it can help them achieve their business goals. But by addressing unnecessary optimizations, you may be delaying that release and missing crucial deadlines.</p>
<p>Missing the bigger picture may lead to a lack of synergy in your organization. It can also result in software products that need multiple iterations to meet customer needs because those needs weren't understood at the beginning. This can cause you to miss deadlines and do more work, and can greatly increase the cost to your client.</p>
<p>Along with understanding "what" tasks you need to perform, also ask "why" your tasks are important and how they will impact the rest of the project or other people's work. </p>
<p>Irrespective of what you build, how big or small it is, how glorified or dull is the outcome, you need to know the impact of it on end users and your internal customers (like product/project managers, quality assurance team, documentation team, whoever). </p>
<p>Once you look at the bigger picture and act accordingly, your margin of error reduces automatically.</p>
<h2 id="heading-some-more-advice-and-wrapping-up">Some More Advice and Wrapping Up</h2>
<p>I wanted to share all this career advice with you because I have been on the other side and learned the hard way. Before I move on to write my next article or record my next video, one more quick tip for you: make sure you work to build up your finances.</p>
<p>Financial independence brings peace and the mental stability to think wildly about things you want to pursue in your career. But getting to the point of financial stability is not an overnight thing. You need to plan, save, and invest wisely such that your money grows faster than your age.</p>
<p>I am not a finance expert, but I relied on some good ones and took their suggestions early on. If you have the opportunity and mindset to build your finances for the future, the time is now. </p>
<p>That's all for now. I hope you found this article informative and insightful. I regularly publish meaningful posts on my <a target="_blank" href="https://blog.greenroots.info/">GreenRoots Blog</a>, you may find them helpful, too.</p>
<p>Let's connect.</p>
<ul>
<li>I am an educator on my YouTube channel, <code>tapaScript</code>. Please <a target="_blank" href="https://www.youtube.com/tapasadhikary?sub_confirmation=1">SUBSCRIBE</a> to the channel if you want to learn JavaScript, ReactJS, Next.js, Node.js, Git, and all about Web Development in the fundamental way.</li>
<li><a target="_blank" href="https://twitter.com/tapasadhikary">Follow me on X (Twitter</a>) or <a target="_blank" href="https://www.linkedin.com/in/tapasadhikary/">LinkedIn</a> if you don't want to miss the daily dose of Web Development and Programming Tips.</li>
<li>Find all my public speaking talks <a target="_blank" href="https://www.tapasadhikary.com/talks">here</a>.</li>
<li>Check out and follow my Open Source work on <a target="_blank" href="https://github.com/atapas">GitHub</a>.</li>
</ul>
<p>See you soon with my next article. Until then, please take care of yourself, and stay happy.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Build an Online Résumé on AWS Using S3, Route 53, CloudFront, and ACM ]]>
                </title>
                <description>
                    <![CDATA[ By Amber Israelsen If you're new to AWS, you can probably appreciate the sense of overwhelm that comes from trying to understand all the different services (seriously, like, hundreds of them). What are they all for, and how do they work together?  An... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/aws-project-build-a-resume/</link>
                <guid isPermaLink="false">66d45d9737bd2215d1e24574</guid>
                
                    <category>
                        <![CDATA[ AWS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Cloud Computing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ projects ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 08 Nov 2023 00:38:02 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/11/thumbnail-final-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Amber Israelsen</p>
<p>If you're new to AWS, you can probably appreciate the sense of overwhelm that comes from trying to understand all the different services (seriously, like, <em>hundreds</em> of them). What are they all for, and how do they work together? </p>
<p>And then once you've conquered some basic skills, the next challenge is how to demonstrate those skills to a potential employer. What kind of a project can you highlight on your résumé or CV, without breaking the bank?</p>
<p>In this hands-on tutorial, you'll get help with both of those things by building your <em>actual</em> résumé/CV on AWS, by following these steps:</p>
<ul>
<li>Write code for your résumé using HTML, CSS and JavaScript</li>
<li>Upload your files to a Simple Storage Service (S3) bucket that you configure for static website hosting, with public access</li>
<li>Use Route 53 to set up a custom domain for your résumé</li>
<li>Set up a TLS/SSL certificate with AWS Certificate Manager (ACM)</li>
<li>Create a CloudFront distribution (that points to the files in S3) where you can apply the certificate.</li>
</ul>
<p>Here's what we'll build:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Completed-resume-with-callouts-1-2.png" alt="Image" width="600" height="400" loading="lazy">
<em>Sample resume on AWS, using S3, CloudFront, Certificate Manager and Route 53</em></p>
<p>By the end of this tutorial, you'll have more than just an online résumé. You'll have a real-world project that you can use to dazzle your friends, family, network, and potential employers.</p>
<p>For a live walk-through of the project, check out this video:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/NiCZSdWucZE" 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-table-of-contents">Table of Contents</h2>
<ul>
<li><a class="post-section-overview" href="#heading-what-you-need-to-follow-along">What you need to follow along</a></li>
<li><a class="post-section-overview" href="#heading-but-first-what-will-this-cost">But first, what will this cost?</a></li>
<li><a class="post-section-overview" href="#create-the-code-html-css-javascript-for-your-resume">Create the code (HTML, CSS, JavaScript) for your résumé</a></li>
<li><a class="post-section-overview" href="#heading-create-an-s3-bucket-and-configure-it-for-static-website-hosting-and-public-access">Create an S3 bucket and configure it for static website hosting and public access</a></li>
<li><a class="post-section-overview" href="#heading-domain-name-option-1-register-a-new-domain-name-with-route-53">Domain name option 1: Register a new domain name with Route 53</a></li>
<li><a class="post-section-overview" href="#heading-domain-name-option-2-use-a-domain-name-from-a-third-party-provider">Domain name option 2: Use a domain name from a third-party provider</a></li>
<li><a class="post-section-overview" href="#heading-create-an-a-record-with-an-alias-to-point-to-the-s3-website">Create an A Record with an alias to point to the S3 website</a></li>
<li><a class="post-section-overview" href="#heading-create-a-public-tlsssl-certificate-using-aws-certificate-manager">Create a public TLS/SSL certificate using AWS Certificate Manager</a></li>
<li><a class="post-section-overview" href="#heading-create-a-cloudfront-distribution">Create a CloudFront distribution</a></li>
<li><a class="post-section-overview" href="#heading-update-route-53-to-point-to-the-cloudfront-distribution">Update Route 53 to point to the CloudFront distribution</a></li>
<li><a class="post-section-overview" href="#heading-behold-the-final-result">Behold the final result</a></li>
<li><a class="post-section-overview" href="#heading-important-delete-your-resources">IMPORTANT! Delete your resources</a></li>
<li><a class="post-section-overview" href="#heading-wrapping-up">Wrapping up</a></li>
</ul>
<h2 id="heading-what-you-need-to-follow-along">What You Need to Follow Along</h2>
<p>To successfully complete this tutorial, you'll need the following:</p>
<ul>
<li><strong>An AWS account</strong>: You can <a target="_blank" href="https://portal.aws.amazon.com/billing/signup">set one up for free</a> (though it does require a credit card for validation).</li>
<li><strong>Basic experience</strong>: Having some basic AWS experience will make the tutorial easier, but you should still be able to follow along if you're a total newbie.</li>
<li><strong>Appropriate permissions</strong>: I'd suggest logging in as an IAM user with administrator privileges, or using your root account (though I'm obliged to say that working in your root account day-to-day is not recommended/not a best practice).</li>
</ul>
<h2 id="heading-but-first-what-will-this-cost">But First, What Will This Cost?</h2>
<p>Before we get too far along, let's break down the different services and what they'll cost. </p>
<p>If you want to delete everything after the tutorial, be sure to see that section towards the end of this article. I'd also recommend <a target="_blank" href="https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-create.html">setting up an AWS Budget</a> so you can put a limit on spending and be notified if you're going to exceed it (no surprise bills, please!).</p>
<ul>
<li><strong>S3</strong>: Used to host website files. If you're still in the <a target="_blank" href="https://aws.amazon.com/free">AWS Free Tier</a>, there should be no cost. Outside of the Free Tier, the cost should be minimal, as in cents.</li>
<li><strong>Route 53</strong>: If you decide to purchase a domain name through Route 53 (optional – you can also "bring your own" domain name from another provider), it will cost $10+. You'll also need a hosted zone, which will run you 50 cents per month. And Route 53 queries (when someone visits your domain) will cost 40 cents per million queries.</li>
<li><strong>AWS Certificate Manager</strong>: A TLS/SSL certificate through ACM is free.</li>
<li><strong>CloudFront</strong>: Inside the Free Tier, there is no cost. Outside of the Free Tier, it will depend on traffic, but for our purposes, it will likely only cost cents. See the <a target="_blank" href="https://aws.amazon.com/cloudfront/pricing/?nc=sn&amp;loc=3">full pricing page</a> for more info.</li>
</ul>
<h2 id="heading-create-the-code-html-css-javascript-for-your-resume">Create the Code (HTML, CSS, JavaScript) for Your Résumé</h2>
<p>This section is where you can let your creativity (and your coding skills) fly. Nothing here is specific to AWS – it's just good ol' web development.</p>
<p>You'll eventually be using an S3 bucket to host your résumé files (HTML, CSS and JavaScript). S3 can only host a static website, meaning you can't include anything that requires server-side code. But front-end stuff all day long.</p>
<p>I won't be too prescriptive for the code you use here – this is <em>your</em> résumé, after all. But you'll want to highlight the "usual" résumé things: employment history, education, skills/certifications, and maybe things like honors/awards or hobbies to make you seem more human.</p>
<p>If you want to list skills of HTML, CSS and JavaScript on your résumé, you'll ideally want to code this part by hand (wink, no ChatGPT help!), but you're also welcome to use my code below as a starting point.</p>
<h3 id="heading-indexhtml-file">index.html file</h3>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>Online Resume - Your Name<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"styles.css"</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">header</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"headshot.jpg"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Headshot"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"headshot"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">h1</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"name"</span>&gt;</span>Name<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"contactInfo"</span>&gt;</span>Location | Email<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">header</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">section</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"employmentHistory"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span>Employment History<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"timeline"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span> <span class="hljs-comment">&lt;!-- Placeholder for the JavaScript array --&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">section</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">section</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"education"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span>Education<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">ul</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span>Degree | University (Year)<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span>Degree | University (Year)<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
                <span class="hljs-comment">&lt;!-- Add more list items as needed --&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">section</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">section</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"skills"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span>Skills/Certifications<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">ul</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span>Skill 1<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span>Skill 2<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span>Skill 3<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span>Skill 4<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
                <span class="hljs-comment">&lt;!-- Add more list items as needed --&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">section</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"script.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<h3 id="heading-stylescss-file">styles.css file</h3>
<pre><code class="lang-css"><span class="hljs-comment">/* Base reset for padding and margin for all elements */</span>
* {
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">0</span>;
    <span class="hljs-attribute">margin</span>: <span class="hljs-number">0</span>;
    <span class="hljs-attribute">box-sizing</span>: border-box;
}

<span class="hljs-comment">/* Body styling */</span>
<span class="hljs-selector-tag">body</span> {
    <span class="hljs-attribute">font-family</span>: <span class="hljs-string">'Arial'</span>, sans-serif;
    <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.6</span>;
    <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#f4f4f4</span>;
}

<span class="hljs-comment">/* Container for centering the content */</span>
<span class="hljs-selector-class">.container</span> {
    <span class="hljs-attribute">width</span>: <span class="hljs-number">80%</span>;
    <span class="hljs-attribute">margin</span>: auto;
    <span class="hljs-attribute">overflow</span>: hidden;
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">20px</span>;
}

<span class="hljs-comment">/* Header styling */</span>
<span class="hljs-selector-tag">header</span> {
    <span class="hljs-attribute">background</span>: <span class="hljs-number">#333</span>;
    <span class="hljs-attribute">color</span>: <span class="hljs-number">#fff</span>;
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">20px</span>;
    <span class="hljs-attribute">text-align</span>: center;
}

<span class="hljs-comment">/* Header image and name styling */</span>
<span class="hljs-selector-class">.headshot</span> {
    <span class="hljs-attribute">width</span>: <span class="hljs-number">150px</span>;
    <span class="hljs-attribute">height</span>: <span class="hljs-number">150px</span>;
    <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">50%</span>;
    <span class="hljs-attribute">display</span>: block;
    <span class="hljs-attribute">margin</span>: <span class="hljs-number">20px</span> auto;
}

<span class="hljs-selector-tag">header</span> <span class="hljs-selector-tag">h1</span> {
    <span class="hljs-attribute">margin-bottom</span>: <span class="hljs-number">10px</span>;
}

<span class="hljs-comment">/* Contact information styling */</span>
<span class="hljs-selector-id">#contactInfo</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1.1em</span>;
    <span class="hljs-attribute">margin-bottom</span>: <span class="hljs-number">20px</span>;
    <span class="hljs-attribute">color</span>: <span class="hljs-number">#fff</span>; 
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">15px</span>;
}


<span class="hljs-comment">/* Section styling for employment, education, and skills */</span>
<span class="hljs-selector-tag">section</span> {
    <span class="hljs-attribute">background</span>: <span class="hljs-number">#fff</span>;
    <span class="hljs-attribute">margin</span>: <span class="hljs-number">20px</span> <span class="hljs-number">0</span>;
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">15px</span>;
    <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">8px</span>;
    <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">0</span> <span class="hljs-number">2px</span> <span class="hljs-number">4px</span> <span class="hljs-built_in">rgba</span>(<span class="hljs-number">0</span>,<span class="hljs-number">0</span>,<span class="hljs-number">0</span>,<span class="hljs-number">0.1</span>);
}

<span class="hljs-selector-tag">section</span> <span class="hljs-selector-tag">h2</span> {
    <span class="hljs-attribute">margin-bottom</span>: <span class="hljs-number">10px</span>;
}

<span class="hljs-comment">/* Timeline styling */</span>
<span class="hljs-selector-id">#timeline</span> <span class="hljs-selector-class">.entry</span> {
    <span class="hljs-attribute">border-left</span>: <span class="hljs-number">3px</span> solid <span class="hljs-number">#333</span>;
    <span class="hljs-attribute">margin-bottom</span>: <span class="hljs-number">5px</span>;
    <span class="hljs-attribute">cursor</span>: pointer;
}

<span class="hljs-selector-id">#timeline</span> <span class="hljs-selector-class">.entry-header</span> {
    <span class="hljs-attribute">background</span>: <span class="hljs-number">#e2e2e2</span>;
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">10px</span>;
    <span class="hljs-attribute">margin-left</span>: -<span class="hljs-number">3px</span>; 
}

<span class="hljs-selector-id">#timeline</span> <span class="hljs-selector-class">.entry-header</span><span class="hljs-selector-pseudo">:hover</span> {
    <span class="hljs-attribute">background</span>: <span class="hljs-number">#ccc</span>; 
    <span class="hljs-attribute">color</span>: <span class="hljs-number">#333</span>; 
}

<span class="hljs-comment">/* Style for the job description content */</span>
<span class="hljs-selector-id">#timeline</span> <span class="hljs-selector-class">.entry-content</span> <span class="hljs-selector-tag">p</span> {
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">5px</span> <span class="hljs-number">10px</span>;
    <span class="hljs-attribute">background</span>: <span class="hljs-number">#f9f9f9</span>;
    <span class="hljs-attribute">border-left</span>: <span class="hljs-number">3px</span> solid <span class="hljs-number">#333</span>;
    <span class="hljs-attribute">display</span>: block; 
}

<span class="hljs-comment">/* List styling for education and skills */</span>
<span class="hljs-selector-tag">section</span> <span class="hljs-selector-tag">ul</span> {
    <span class="hljs-attribute">list-style</span>: inside square;
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">0</span> <span class="hljs-number">20px</span>;
}

<span class="hljs-selector-tag">section</span> <span class="hljs-selector-tag">ul</span> <span class="hljs-selector-tag">li</span> {
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">2px</span> <span class="hljs-number">0</span>;
}

<span class="hljs-comment">/* Adjustments for active class */</span>
<span class="hljs-selector-class">.entry</span><span class="hljs-selector-class">.active</span> <span class="hljs-selector-class">.entry-header</span> {
    <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#e2e2e2</span>; 
    <span class="hljs-attribute">color</span>: <span class="hljs-number">#333</span>; 
}

<span class="hljs-selector-class">.entry</span><span class="hljs-selector-class">.active</span> <span class="hljs-selector-class">.entry-content</span> {
    <span class="hljs-attribute">display</span>: block; 
}

<span class="hljs-comment">/* Visual cue for clickable items */</span>
<span class="hljs-selector-class">.entry</span> <span class="hljs-selector-class">.entry-header</span><span class="hljs-selector-pseudo">:after</span> {
    <span class="hljs-attribute">content</span>: <span class="hljs-string">' (click to expand)'</span>;
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">0.8em</span>;
    <span class="hljs-attribute">color</span>: <span class="hljs-number">#666</span>;
}

<span class="hljs-selector-class">.entry</span><span class="hljs-selector-class">.active</span> <span class="hljs-selector-class">.entry-header</span><span class="hljs-selector-pseudo">:after</span> {
    <span class="hljs-attribute">content</span>: <span class="hljs-string">' (click to collapse)'</span>;
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">0.8em</span>;
    <span class="hljs-attribute">color</span>: <span class="hljs-number">#666</span>; 
}
</code></pre>
<h3 id="heading-scriptjs-file">script.js file</h3>
<pre><code class="lang-javascript"><span class="hljs-comment">// Used on the résumé to make the employment history interactive (each job is clickable)</span>
<span class="hljs-built_in">document</span>.addEventListener(<span class="hljs-string">'DOMContentLoaded'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{
    <span class="hljs-comment">// Placeholder array with employment history data</span>
    <span class="hljs-keyword">const</span> employmentHistory = [
        { <span class="hljs-attr">id</span>: <span class="hljs-number">1</span>, <span class="hljs-attr">title</span>: <span class="hljs-string">'Job Title'</span>, <span class="hljs-attr">company</span>: <span class="hljs-string">'Company Name'</span>, <span class="hljs-attr">years</span>: <span class="hljs-string">'Year - Year'</span>, <span class="hljs-attr">description</span>: <span class="hljs-string">'Description of what you did'</span> },
        { <span class="hljs-attr">id</span>: <span class="hljs-number">2</span>, <span class="hljs-attr">title</span>: <span class="hljs-string">'Job Title'</span>, <span class="hljs-attr">company</span>: <span class="hljs-string">'Company Name'</span>, <span class="hljs-attr">years</span>: <span class="hljs-string">'Year - Year'</span>, <span class="hljs-attr">description</span>: <span class="hljs-string">'Description of what you did'</span> },
        { <span class="hljs-attr">id</span>: <span class="hljs-number">3</span>, <span class="hljs-attr">title</span>: <span class="hljs-string">'Job Title'</span>, <span class="hljs-attr">company</span>: <span class="hljs-string">'Company Name'</span>, <span class="hljs-attr">years</span>: <span class="hljs-string">'Year - Year'</span>, <span class="hljs-attr">description</span>: <span class="hljs-string">'Description of what you did'</span> }
        <span class="hljs-comment">// Add more entries as needed</span>
    ];

    <span class="hljs-keyword">const</span> timeline = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'timeline'</span>);

    <span class="hljs-comment">// Create timeline entries</span>
    employmentHistory.forEach(<span class="hljs-function"><span class="hljs-params">job</span> =&gt;</span> {
        <span class="hljs-comment">// Entry container for job</span>
        <span class="hljs-keyword">const</span> entry = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">'div'</span>);
        entry.className = <span class="hljs-string">'entry'</span>;
        entry.id = <span class="hljs-string">'entry-'</span> + job.id;

        <span class="hljs-comment">// Title header for job</span>
        <span class="hljs-keyword">const</span> header = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">'div'</span>);
        header.className = <span class="hljs-string">'entry-header'</span>;
        header.innerText = job.title;

        <span class="hljs-comment">// Content container for job, initially hidden</span>
        <span class="hljs-keyword">const</span> content = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">'div'</span>);
        content.className = <span class="hljs-string">'entry-content'</span>;
        content.innerHTML = <span class="hljs-string">`&lt;strong&gt;Company:&lt;/strong&gt; <span class="hljs-subst">${job.company}</span>&lt;br&gt;
                             &lt;strong&gt;Years:&lt;/strong&gt; <span class="hljs-subst">${job.years}</span>&lt;br&gt;
                             &lt;p&gt;<span class="hljs-subst">${job.description}</span>&lt;/p&gt;`</span>;
        content.style.display = <span class="hljs-string">'none'</span>;

        <span class="hljs-comment">// Append header and content to the entry</span>
        entry.appendChild(header);
        entry.appendChild(content);

        <span class="hljs-comment">// Event listener to toggle content visibility</span>
        header.addEventListener(<span class="hljs-string">'click'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{
            <span class="hljs-comment">// Check if the clicked header's content is currently shown</span>
            <span class="hljs-keyword">const</span> isContentShown = content.style.display === <span class="hljs-string">'block'</span>;
            <span class="hljs-comment">// Hide all open contents</span>
            <span class="hljs-built_in">document</span>.querySelectorAll(<span class="hljs-string">'.entry-content'</span>).forEach(<span class="hljs-function"><span class="hljs-params">el</span> =&gt;</span> {
                el.style.display = <span class="hljs-string">'none'</span>; <span class="hljs-comment">// Hide content</span>
            });
            <span class="hljs-comment">// Deactivate all headers</span>
            <span class="hljs-built_in">document</span>.querySelectorAll(<span class="hljs-string">'.entry'</span>).forEach(<span class="hljs-function"><span class="hljs-params">el</span> =&gt;</span> {
                el.classList.remove(<span class="hljs-string">'active'</span>); <span class="hljs-comment">// Remove active class</span>
            });

            <span class="hljs-keyword">if</span> (!isContentShown) {
                <span class="hljs-comment">// If it was not shown before, display it</span>
                content.style.display = <span class="hljs-string">'block'</span>;
                entry.classList.add(<span class="hljs-string">'active'</span>);
            } <span class="hljs-comment">// If it was shown, it will be hidden as part of the above loop</span>
        });

        timeline.appendChild(entry);
    });
});
</code></pre>
<h2 id="heading-create-an-s3-bucket-and-configure-it-for-static-website-hosting-and-public-access">Create an S3 Bucket and Configure it for Static Website Hosting and Public Access</h2>
<p>Now that you have your three code files (plus don't forget a "headshot.jpg" to display your smiling face), you need somewhere to put them.  </p>
<p>In AWS, S3 is a great option for inexpensive object (read: files) storage. And if you're only using client-side code like you are, then you can configure S3 for static website hosting.</p>
<h3 id="heading-create-an-s3-bucket">Create an S3 bucket</h3>
<p>In the <a target="_blank" href="https://console.aws.amazon.com/">AWS Management Console</a>, navigate to <strong>S3</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Navigate-to-S3.png" alt="Image" width="600" height="400" loading="lazy">
<em>Navigate to S3</em></p>
<p>Click <strong>Create bucket</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Create-an-S3-bucket.png" alt="Image" width="600" height="400" loading="lazy">
<em>Create a new bucket</em></p>
<p>Enter the details for your bucket.</p>
<ul>
<li><strong>Bucket name</strong>: <strong>IMPORTANT</strong>! If you plan to use a custom domain for your résumé, then this bucket name should match the domain name exactly. For example, I'll be using "amberaws.com" so my bucket name needs to be "amberaws.com". If you use a different name, you'll run into trouble when you get to the Route 53 part of the tutorial.</li>
<li><strong>AWS Region</strong>: You can choose any region you'd like, but I'd recommend going with the one closest to you. </li>
<li><strong>Object Ownership</strong>: Leave the default of <strong>ACLs disabled (recommended)</strong>.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Bucket-details-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Enter bucket name, region, and object ownership</em></p>
<p>Scrolling down, <strong>deselect</strong> the setting for <strong>Block <em>all</em> public access</strong>. <strong>NOTE</strong>: In most scenarios, this is not recommended, as you'll see from the warning you receive when you disable it. But because you're creating a public résumé that you DO want to be open to the world, then disabling this is appropriate.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Block-all-public-access-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Deselect the option to block all public access, then acknowledge the setting</em></p>
<p>Use the defaults for the rest of the bucket settings and then click <strong>Create bucket</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Bucket-defaults-and-create.png" alt="Image" width="600" height="400" loading="lazy">
<em>Select defaults for the rest of the bucket settings, then create bucket</em></p>
<p>Now you have an empty bucket, but it's not quite ready for primetime in terms of website hosting. You'll need to make a couple more updates.</p>
<h3 id="heading-enable-static-website-hosting">Enable static website hosting</h3>
<p>For S3 to be able to serve your files up as a website, you'll need to enable that on the bucket.</p>
<p>Click into the bucket you just created and go to the <strong>Properties</strong> tab.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Properties-tab.png" alt="Image" width="600" height="400" loading="lazy">
<em>Navigate to the Properties tab for the bucket</em></p>
<p>Scroll <em>all the way</em> down to the bottom of the page, and in the <strong>Static website hosting</strong> section, click <strong>Edit</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Static-website-hosting-edit.png" alt="Image" width="600" height="400" loading="lazy">
<em>Edit the static website hosting setting</em></p>
<p>Select <strong>Enable</strong>. This will open additional options.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Enable-static-website-hosting.png" alt="Image" width="600" height="400" loading="lazy">
<em>Enable static website hosting</em></p>
<p>For the <strong>Index document</strong>, enter <strong>index.html</strong>. This specifies the default home page for the site (your HTML code for your résumé). Then click <strong>Save changes</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Static-website-hosting-index-page.png" alt="Image" width="600" height="400" loading="lazy">
<em>Specify the default home page (index.html) and save changes</em></p>
<h3 id="heading-add-a-bucket-policy-to-allow-the-contents-of-the-bucket-to-be-publicly-accessible">Add a bucket policy to allow the contents of the bucket to be publicly accessible</h3>
<p>When you created the bucket, you said you <em>didn't</em> want to block all public access. But even with that setting, the default behavior of S3 is to "deny" everything. So if you don't explicitly say that people <em>can</em> access the files in your bucket, they won't be able to. You'll grant read permissions with a bucket policy.</p>
<p>At the top of the page, click the <strong>Permissions</strong> tab.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Permissions-tab.png" alt="Image" width="600" height="400" loading="lazy">
<em>Click the Permissions tab of the bucket</em></p>
<p>Scroll down to the <strong>Bucket policy</strong> section, and click <strong>Edit</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Edit-bucket-policy.png" alt="Image" width="600" height="400" loading="lazy">
<em>Edit the bucket policy</em></p>
<p>Copy the following bucket policy (JSON code).</p>
<pre><code class="lang-json">{
    <span class="hljs-attr">"Version"</span>: <span class="hljs-string">"2012-10-17"</span>,
    <span class="hljs-attr">"Statement"</span>: [
        {
            <span class="hljs-attr">"Sid"</span>: <span class="hljs-string">"PublicReadGetObject"</span>,
            <span class="hljs-attr">"Effect"</span>: <span class="hljs-string">"Allow"</span>,
            <span class="hljs-attr">"Principal"</span>: <span class="hljs-string">"*"</span>,
            <span class="hljs-attr">"Action"</span>: [
                <span class="hljs-string">"s3:GetObject"</span>
            ],
            <span class="hljs-attr">"Resource"</span>: [
                <span class="hljs-string">"arn:aws:s3:::Bucket-Name/*"</span>
            ]
        }
    ]
}
</code></pre>
<p>Paste the code into the Policy section in the AWS console. This policy says to "Allow" everyone (the Principal of "<em>") to take the action of "GetObject" (basically "read") on all files in your bucket ("Bucket-Name/</em>").</p>
<p><strong>IMPORTANT</strong>: Update "Bucket-Name" with the name of your bucket. Then click <strong>Save changes</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Bucket-policy-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Paste the JSON code for the bucket policy, updating "Bucket-Name" to your own</em></p>
<p>You've now got a bucket that's configured for static website hosting, and you've applied a policy that will let people access the site. Now it's time to add your impressive code files that you created earlier.</p>
<p>On the top of the page, click the <strong>Objects</strong> tab.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Objects-tab.png" alt="Image" width="600" height="400" loading="lazy">
<em>Click the Objects tab on the bucket</em></p>
<p>Click the <strong>Upload</strong> button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Upload-files.png" alt="Image" width="600" height="400" loading="lazy">
<em>Click the Upload button to upload your code files</em></p>
<p>Drag and drop your four files to the browser.  This should include <strong>index.html</strong>, <strong>styles.css</strong>, <strong>script.js</strong> and <strong>headshot.jpg</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Drag-and-drop-files.png" alt="Image" width="600" height="400" loading="lazy">
<em>Drag and drop your four files (code and headshot.jpg)</em></p>
<p>After the files have uploaded and all four display in the <strong>Files and folders</strong> section, click the <strong>Upload</strong> button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Upload-files-2.png" alt="Image" width="600" height="400" loading="lazy">
<em>Upload the files</em></p>
<p>Now it's time to test that your résumé loads. To do this, you'll need to get the S3 bucket website endpoint.</p>
<p>Navigate to the <strong>Properties</strong> tab of the bucket.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Properties-tab-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Navigate to the Properties tab</em></p>
<p>Scroll <em>all the way</em> down to the bottom of the page, to the <strong>Static website hosting</strong> section. Click on the <strong>Bucket website endpoint</strong> link (it will open in a new tab).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Website-endpoint-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Click the bucket website endpoint to view your resume (in a new tab)</em></p>
<p>If everything worked, you should see your handiwork displayed in the browser.  Yay!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Website-test-1-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>It works! Your resume being served up by S3.</em></p>
<p>Congrats on getting your résumé hosted in S3 with public access! But as impressive as it is, it would be even <em>more</em> impressive if it were using a custom domain. Currently, it's using the S3 website URL, formatted as [bucketname].s3-website-[regionname].amazonaws.com. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/S3-bucket-URL.png" alt="Image" width="600" height="400" loading="lazy">
<em>The resume would be much cooler with its own custom domain name</em></p>
<p>Let's work on the domain name next, using Route 53, which is Amazon's domain name and DNS service.</p>
<h2 id="heading-domain-name-option-1-register-a-new-domain-name-with-route-53">Domain Name Option 1: Register a New Domain Name with Route 53</h2>
<p>If you don't already have a domain name, then you can register one with AWS, using Route 53. (If you already have a domain name with another provider, I'll give you some general guidance on using that in the next section.)</p>
<p>Navigate to <strong>Route 53</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Navigate-to-Route-53.png" alt="Image" width="600" height="400" loading="lazy">
<em>Navigate to Route 53</em></p>
<p>On the Route 53 Dashboard, simply <strong>enter the domain name</strong> you're interested in, then click <strong>Check</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Check-domain-name-availability-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Check availability of a domain name</em></p>
<p>If the domain name is available, you'll be able to <strong>Select</strong> it (and if it's not available, you'll see some alternate names). Selecting it will add it to your cart, take you through a checkout process, and then the charge will show up on your AWS bill.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Select-available-domain.png" alt="Image" width="600" height="400" loading="lazy">
<em>Select the available domain or choose alternatives</em></p>
<p>After you purchase the domain, it will automatically create a <strong>hosted zone</strong> for you. You can think of a hosted domain as a container for records and rules that control how traffic is routed.  </p>
<p>A public hosted zone (which you'll be working with) controls traffic from the internet. A private hosted zone controls traffic internal to an AWS Virtual Private Cloud (VPC).</p>
<p>You can view your hosted zones by clicking on <strong>Hosted zones</strong> on the left navigation, then click into the zone that matches the domain name you purchased ("amberaws.com" in my case).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Hosted-zones.png" alt="Image" width="600" height="400" loading="lazy">
<em>Select the hosted zone for your domain name</em></p>
<h2 id="heading-domain-name-option-2-use-a-domain-name-from-a-third-party-provider">Domain Name Option 2: Use a Domain Name from a Third-Party Provider</h2>
<p>So, you already have a domain name from somewhere else, like GoDaddy, Namecheap, Google Domains or the like. It's totally possible to use Route 53 as your DNS service (which has a lot of benefits, and is easy to integrate with other AWS services), while still keeping the domain name with your other provider.</p>
<p>The details of each registrar are slightly different, so I'll give some general guidance here. Also know that propagation of DNS changes will take longer with an external provider, and if things go wrong, you'll probably need to work with them directly. But I'll get you started!</p>
<h3 id="heading-create-a-hosted-zone-and-get-your-name-servers">Create a hosted zone and get your name servers</h3>
<p>Even if you aren't using a domain name from Route 53, you'll still need a hosted zone (again, this holds the records and rules that control how traffic is routed). </p>
<p>Click on <strong>Hosted zones</strong> on the left navigation, then click <strong>Create hosted zone</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Create-a-hosted-zone-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Create a hosted zone for your external domain name</em></p>
<p>Enter the <strong>domain name</strong> from the third-party provider, select <strong>Public hosted zone</strong>, then click <strong>Create hosted zone</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Created-hosted-zone-details.png" alt="Image" width="600" height="400" loading="lazy">
<em>Fill in the details for the public hosted zone</em></p>
<p>Once your public hosted zone is created, you'll see four <strong>name servers</strong> listed. Make a note of these.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Name-servers.png" alt="Image" width="600" height="400" loading="lazy">
<em>Make a note of your name servers so you can enter them with the third-party provider</em></p>
<p>Next, go to the DNS settings for your current domain provider. Find your name server settings, and replace them with the name servers from Route 53.</p>
<p>For more specifics, here are guides from some of the more popular domain name providers:</p>
<ul>
<li><a target="_blank" href="https://uk.godaddy.com/help/edit-my-domain-nameservers-664">GoDaddy</a></li>
<li><a target="_blank" href="https://www.namecheap.com/support/knowledgebase/article.aspx/767/10/how-to-change-dns-for-a-domain/">Namecheap</a></li>
<li><a target="_blank" href="https://support.google.com/domains/answer/3290309?hl=en">Google Domains</a></li>
<li><a target="_blank" href="https://www.hostgator.com/help/article/how-do-i-change-my-dns-or-name-servers">Hostgator</a></li>
</ul>
<p>After you've made the updates on the third-party site, and changes have propagated, you should be good to follow along with the rest of this article.</p>
<h2 id="heading-create-an-a-record-with-an-alias-to-point-to-the-s3-website">Create an A Record with an Alias to Point to the S3 Website</h2>
<p>Now that you have a public hosted zone, you need to create a record that says how traffic should be routed when someone goes to your domain name.</p>
<p>Click into your hosted zone, and then click <strong>Create record</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Create-record.png" alt="Image" width="600" height="400" loading="lazy">
<em>Create a new record</em></p>
<p><strong>NOTE</strong>: If you get the "wizard" view below, click <strong>Switch to quick create</strong>.  (If you don't see this "tile" view, then you're already in quick create mode.)</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Switch-to-quick-create.png" alt="Image" width="600" height="400" loading="lazy">
<em>Switch to quick create view</em></p>
<p>Fill out the details for the record.</p>
<ul>
<li><strong>Record name</strong>: Leave the subdomain blank, and just go with the root domain (like "amberaws.com").</li>
<li><strong>Record type</strong>: A</li>
<li><strong>Alias</strong>: Toggle this on. An alias lets you route to AWS resources like S3, CloudFront, Elastic Beanstalk and so on.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Record-details-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Fill in the domain, record type and then toggle Alias to on</em></p>
<p>Now fill in the details of where to route traffic. You can type into these dropdowns to filter the values.</p>
<ul>
<li><strong>Alias to S3 website endpoint</strong></li>
<li><strong>Your region</strong> (I'm using US West (Oregon))</li>
<li>The final dropdown should automatically populate with <strong>your S3 website</strong>. <strong>NOTE</strong>: If nothing shows up here, it's likely because you didn't name your bucket the same as your domain name. D'oh! You'll need to recreate the bucket with the exact name of your domain.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Route-traffic-to.png" alt="Image" width="600" height="400" loading="lazy">
<em>Fill in the details for traffic routing</em></p>
<p>For <strong>Routing policy</strong>, select <strong>Simple routing.</strong> For <strong>Evaluate target health</strong>, leave the default of <strong>Yes</strong>, then click <strong>Create records</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Create-record-details-2.png" alt="Image" width="600" height="400" loading="lazy">
<em>Choose routing policy, target health, and then create record</em></p>
<p>It can take up to 60 seconds for your changes to take effect. You can view the status of propagation by clicking on the handy <strong>View status</strong> on top of the page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/View-DNS-status.png" alt="Image" width="600" height="400" loading="lazy">
<em>View the propagation status of your changes</em></p>
<p>After the <strong>Status</strong> changes from PENDING to <strong>INSYNC</strong>, then you should be good to test out your changes.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Status-of-INSYNC.png" alt="Image" width="600" height="400" loading="lazy">
<em>Make sure the status says INSYNC before testing things out</em></p>
<p>Now let's test!  If everything worked, then when you <strong>type your domain name into a browser</strong> (like amberaws.com), Route 53 should direct you to the S3 website, which means you should see your (awesome) résumé.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Test-domain-name-1-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>It works! Your domain name should now display your resume.</em></p>
<p>Congratulations! You've made a ton of progress. The last piece is to get a secure connection (HTTPS, with a TLS/SSL certificate) working so you can get rid of that pesky "Not secure" message from your browser.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Test-domain-name-cert.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Let's tackle that piece next, using AWS Certificate Manager.</p>
<h2 id="heading-create-a-public-tlsssl-certificate-using-aws-certificate-manager">Create a Public TLS/SSL Certificate using AWS Certificate Manager</h2>
<p>If you need a refresher on certificates, these help ensure a secure connection between users and the server they're making a request to.  </p>
<p>If I'm sending bank information across the internet, for example, I want to know that it's going to a server that's reputable, and that the connection is encrypted. And even for something as "simple" as a résumé, a secure connection will give viewers confidence that they haven't ended up on a sketchy website.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Certificates.png" alt="Image" width="600" height="400" loading="lazy">
<em>Why we need certificates</em></p>
<p>In AWS land, certificates are created and managed in AWS Certificate Manager (ACM). (You can also import existing certificates from another authority if you have them.)</p>
<p>Navigate to <strong>Certificate Manager</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Navigate-to-ACM.png" alt="Image" width="600" height="400" loading="lazy">
<em>Navigate to Certificate Manager</em></p>
<p><strong>IMPORTANT!</strong>  For this section, you need to switch your region to <strong>us-east-1 (N. Virginia)</strong>. If you create a certificate in another region, you won't be able to use it with CloudFront (where you'll eventually end up).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/us-east-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Change region to us-east-1 (N. Virginia)</em></p>
<p>From the Certificate Manager landing page, click <strong>Request a certificate</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Request-a-certificate.png" alt="Image" width="600" height="400" loading="lazy">
<em>Request a certificate</em></p>
<p>Select <strong>Request a public certificate</strong> and then click <strong>Next</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Request-public-certificate.png" alt="Image" width="600" height="400" loading="lazy">
<em>Select a public certificate and then click next</em></p>
<p>Enter your <strong>domain name</strong> (like "amberaws.com"), leave the rest of the options as defaults, then click <strong>Request</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Details-of-certificate.png" alt="Image" width="600" height="400" loading="lazy">
<em>Enter your domain name and then request</em></p>
<p>The request was successful, but it will have a "pending validation" status until you validate DNS. Click <strong>View certificate</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/View-certificate.png" alt="Image" width="600" height="400" loading="lazy">
<em>View the certificate to take additional actions</em></p>
<p>Before a certificate can be issued, Amazon needs to confirm that you own this domain and that you're able to modify DNS settings (in Route 53). To start this process, click <strong>Create records in Route 53</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Create-records-in-Route-53.png" alt="Image" width="600" height="400" loading="lazy">
<em>Create records in Route 53 to validate DNS</em></p>
<p>There are various filters applied to this next screen, checking for validation status and whether your domain is found in Route 53. From here, you can click <strong>Create records</strong>, which will actually – wait for it – create a record in Route 53 for you.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Create-records-from-ACM.png" alt="Image" width="600" height="400" loading="lazy">
<em>Create records, which will create a CNAME record in Route 53</em></p>
<p>If the record creation was successful, you should see a message to that effect.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Success-DNS-record.png" alt="Image" width="600" height="400" loading="lazy">
<em>Successfully created a record in Route 53 to validate DNS</em></p>
<p>The record was created in Route 53. So navigate to <strong>Route 53</strong>, to <strong>your hosted zone</strong> you were working in earlier. You should see a new <strong>CNAME record</strong> that was created from Certificate Manager.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/CNAME-record-in-Route-53.png" alt="Image" width="600" height="400" loading="lazy">
<em>View the new CNAME record in Route 53</em></p>
<p>Great! You have a TLS/SSL certificate, but what do you do with it now?</p>
<p>Your website files are currently hosted in S3, but unfortunately, you can't use a certificate on an S3 bucket.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/No-cert-on-S3.png" alt="Image" width="600" height="400" loading="lazy">
<em>Certificates don't work with S3</em></p>
<p>What you need instead is a CloudFront distribution that points to the S3 bucket. And then the certificate is applied to the CloudFront distribution.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Cert-on-CloudFront.png" alt="Image" width="600" height="400" loading="lazy">
<em>CloudFront is the solution!</em></p>
<p>You know what that means, right? It means we need to head off to CloudFront next!</p>
<h2 id="heading-create-a-cloudfront-distribution">Create a CloudFront Distribution</h2>
<p>CloudFront is Amazon's content delivery network, or CDN. It's used to get content to users faster by caching it at "edge locations" around the world. This works great for things like videos and images, making them faster to load.  </p>
<p>For your simple résumé, because the files are so small, you won't notice much of a performance difference. But it <em>is</em> the way you'll be able to apply the TLS/SSL certificate you created in the last section.</p>
<p>Navigate to <strong>CloudFront</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Navigate-to-CloudFront.png" alt="Image" width="600" height="400" loading="lazy">
<em>Navigate to CloudFront</em></p>
<p>On the CloudFront home page, click <strong>Create a CloudFront distribution</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Create-a-CloudFront-distribution.png" alt="Image" width="600" height="400" loading="lazy">
<em>Create a CloudFront distribution</em></p>
<p>The origin domain is where your website files live, which is in S3. If you type in <strong>S3</strong> to filter, it should pull up your bucket.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Origin-domain.png" alt="Image" width="600" height="400" loading="lazy">
<em>Filter by S3 to find your bucket as the domain origin</em></p>
<p>But wait! You get a message about using the website endpoint rather than the bucket endpoint. Yes, that's what you want! Click <strong>Use website endpoint</strong>, and AWS will update the endpoint for you.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Website-endpoint-not-bucket-endpoint.png" alt="Image" width="600" height="400" loading="lazy">
<em>Use the website endpoint, not the bucket endpoint</em></p>
<p>There are gobs of settings on the rest of this page, but you only need to update a few of them.</p>
<p>Scroll down to the <strong>Default cache behavior section</strong>, then under <strong>Viewer</strong>, select <strong>Redirect HTTP to HTTPS</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Redirect-HTTP-to-HTTPS.png" alt="Image" width="600" height="400" loading="lazy">
<em>Redirect HTTP to HTTPS</em></p>
<p>Scroll down to <strong>Web Application Firewall (WAF)</strong> and select <strong>Do not enable security protections</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/WAF.png" alt="Image" width="600" height="400" loading="lazy">
<em>Do not enable WAF</em></p>
<p>In the next section, <strong>Settings</strong>:</p>
<ul>
<li>For <strong>Alternate domain name (CNAME)</strong>, enter your domain name (like "amberaws.com").</li>
<li>For <strong>Custom SSL certificate</strong>, select the certificate you set up earlier. <strong>NOTE</strong>: if you set it up in a region other than us-east-1 (N. Virginia), it won't show up here. D'oh! You'll need to recreate it in us-east-1.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Settings-for-CloudFront.png" alt="Image" width="600" height="400" loading="lazy">
<em>Enter an alternate domain name and the custom SSL certificate</em></p>
<p>Scroll to the bottom of the page.</p>
<p>For <strong>Default root object</strong>, enter <strong>index.html</strong> (your default home page) and then click <strong>Create distribution</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Index-and-create-distribution.png" alt="Image" width="600" height="400" loading="lazy">
<em>Set the default root object as index.html and then create distribution</em></p>
<p>It will take several minutes for the CloudFront distribution to finish deploying (even if it says "Successfully created" at the top of the page). You'll know it's done when the <strong>Last modified</strong> value shows a date and time.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Last-modified.png" alt="Image" width="600" height="400" loading="lazy">
<em>The deployment is done when a date/time appear in "Last modified"</em></p>
<p>To test that everything is working with CloudFront and the TLS/SSL certificate, copy the <strong>Distribution domain name</strong>. Open a new tab in the browser and navigate to that address. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Distribution-domain-name.png" alt="Image" width="600" height="400" loading="lazy">
<em>Copy the distribution domain name and open it in a new tab</em></p>
<p>If everything worked, you should now see the all-important padlock icon in your browser, indicating that you're on a secure connection using the certificate set up through Certificate Manager.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/CloudFront-cert.png" alt="Image" width="600" height="400" loading="lazy">
<em>The TLS/SSL certificate is working with CloudFront!</em></p>
<p>Awesome! But before you get excited thinking we're done, remember that you ultimately want to go to your custom domain name to load the résumé, not to this lengthy CloudFront distribution domain name.</p>
<h2 id="heading-update-route-53-to-point-to-the-cloudfront-distribution">Update Route 53 to Point to the CloudFront Distribution</h2>
<p>At the moment, the A Record in Route 53 is pointing to the S3 bucket, like this...</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Current-setup.png" alt="Image" width="600" height="400" loading="lazy">
<em>Route 53 currently points to the S3 bucket</em></p>
<p>Instead, we want Route 53 to point to the CloudFront distribution, which then points to S3, like this...</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/What-we-want.png" alt="Image" width="600" height="400" loading="lazy">
<em>Route 53 should point to CloudFront, which then points to S3</em></p>
<p>Navigate back to <strong>Route 53</strong>, to the <strong>hosted zone</strong> you've been working with.  <strong>Select the A Record</strong>, then on the right of the screen, click <strong>Edit record</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Edit-A-record.png" alt="Image" width="600" height="400" loading="lazy">
<em>Edit the Route 53 A Record</em></p>
<p>Instead of routing traffic to S3, update the three dropdowns to point to your CloudFront distribution.</p>
<ul>
<li><strong>Alias to CloudFront distribution</strong> </li>
<li><strong>US East (N. Virginia)</strong> (this option is selected for you and grayed out)</li>
<li><strong>Choose your distribution</strong> (it should automatically populate in the third dropdown)</li>
</ul>
<p>Click <strong>Save</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Edit-A-record-details.png" alt="Image" width="600" height="400" loading="lazy">
<em>Update the A Record to route traffic to CloudFront</em></p>
<h2 id="heading-behold-the-final-result">Behold the Final Result</h2>
<p>And now the moment of truth: if everything worked, you should be able to navigate to your custom domain name and have it load your résumé on a secure connection.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Final-resume.png" alt="Image" width="600" height="400" loading="lazy">
<em>Final résumé loading on a custom domain name over a secure connection</em></p>
<p>And VOILÀ! It works.</p>
<p>The résumé files (coming from S3 via CloudFront) load on the custom domain name (from Route 53) over a secure connection using the TLS/SSL certificate (from Certificate Manager). Nice work.</p>
<p>Here's what you've built:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Final-diagram.png" alt="Image" width="600" height="400" loading="lazy">
<em>A diagram of the final project</em></p>
<h2 id="heading-important-delete-your-resources">IMPORTANT! Delete Your Resources</h2>
<p>At the beginning of the article, I covered the costs for the services. If you choose to leave them running, it shouldn't cost you a fortune (unless, of course, your résumé goes viral and you're suddenly paying for a ton of Route 53 and CloudFront traffic...maybe a good problem?).  </p>
<p>But definitely set up an <a target="_blank" href="https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-create.html">AWS Budget</a> to be notified when charges reach a certain threshold.</p>
<p>For those of you who want to delete everything you built, let's do that now.</p>
<h3 id="heading-disable-and-delete-the-cloudfront-distribution">Disable and delete the CloudFront distribution</h3>
<p>Navigate to <strong>CloudFront</strong> and select your distribution. Before you can delete it, you first have to <strong>Disable</strong> it. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Disable-CloudFront-distribution-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Disable the CloudFront distribution</em></p>
<p>This will take several minutes to complete, and it has to finish before you can delete some other things. So let it run. When it's done, you should see a date and time in the <strong>Last modified</strong> column.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/CloudFront-disabled.png" alt="Image" width="600" height="400" loading="lazy">
<em>Ensure the CloudFront distribution is disabled</em></p>
<p>Once the distribution is disabled, select it and then click <strong>Delete</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Delete-CloudFront-distribution.png" alt="Image" width="600" height="400" loading="lazy">
<em>Delete the CloudFront distribution</em></p>
<h3 id="heading-delete-records-from-the-route-53-hosted-zone">Delete records from the Route 53 hosted zone</h3>
<p>Navigate to <strong>Route 53</strong> and the hosted zone you've been working in. Records won't cost any money, but if you don't plan to use them, it's a good idea to delete them to avoid confusion in the future.</p>
<p>Select the <strong>A Record</strong> and the <strong>CNAME Record</strong> and then click <strong>Delete records</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Delete-Route-53-records.png" alt="Image" width="600" height="400" loading="lazy">
<em>Delete the A Record and CNAME Record from Route 53</em></p>
<h3 id="heading-delete-the-hosted-zone-optional">Delete the hosted zone (optional)</h3>
<p>You can also choose to delete your hosted zone in Route 53, but if you do, your domain might become unavailable on the internet.  </p>
<p>If you plan to use your domain name at some point in the future, I'd recommend keeping the hosted zone (I've chosen to keep mine).  <strong>Keeping the zone will cost you 50 cents per month.</strong></p>
<p>But if you'd like to go ahead with deletion, just <strong>select the hosted zone</strong> and click <strong>Delete</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Delete-hosted-zone.png" alt="Image" width="600" height="400" loading="lazy">
<em>Delete the Route 53 hosted zone</em></p>
<p>Confirm that you've completed the actions in this warning message, type "<strong>delete</strong>," and then click <strong>Delete</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Delete-hosted-zone-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Confirm deletion of the Route 53 hosted zone</em></p>
<h3 id="heading-delete-the-certificate-from-certificate-manager">Delete the certificate from Certificate Manager</h3>
<p>Navigate to <strong>Certificate Manager</strong>. Select <strong>the certificate</strong> you created, then click <strong>Delete</strong>. (If the CloudFront distribution hasn't been disabled yet, you'll get an error on this step saying the resource is still in use.)</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Delete-certificate.png" alt="Image" width="600" height="400" loading="lazy">
<em>Delete the certificate from Certificate Manager</em></p>
<h3 id="heading-empty-the-s3-bucket-and-then-delete-it">Empty the S3 bucket and then delete it</h3>
<p>Navigate to <strong>S3</strong>, to the list of all your buckets. Select the bucket and then click <strong>Delete</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Delete-bucket.png" alt="Image" width="600" height="400" loading="lazy">
<em>Delete the S3 bucket</em></p>
<p>Before you can delete a bucket, you must first delete the files in it. AWS provides a handy link to do that. Click the link to <strong>empty bucket configuration</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Empty-bucket.png" alt="Image" width="600" height="400" loading="lazy">
<em>Empty files from the S3 bucket</em></p>
<p>Confirm that you want to permanently delete the files (you do) by typing "<strong>permanently delete</strong>" and then clicking <strong>Empty</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Permanently-delete.png" alt="Image" width="600" height="400" loading="lazy">
<em>Confirm deletion of files</em></p>
<p>Now that the bucket is empty, you can delete it.  And in the success message at the top of the screen, there's a convenient link to do so. Click <strong>delete bucket configuration</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Delete-bucket-configuration.png" alt="Image" width="600" height="400" loading="lazy">
<em>Delete the S3 bucket</em></p>
<p>Confirm this action by typing in the <strong>name of your bucket</strong>, then clicking <strong>Delete bucket</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/Delete-bucket-final.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>And that's it! The resources have been deleted, and you shouldn't incur any additional charges.</p>
<h2 id="heading-wrapping-up">Wrapping up</h2>
<p>Congratulations on making it all the way to the end! I hope you were able to successfully build out a résumé, and at the same time cement some of your AWS skills for the future. Feel free to share it with the world, and best of luck in your job search.</p>
<p>_For more tutorials on AWS and other tech, head to <a target="_blank" href="https://www.youtube.com/playlist?list=PLwyXYwu8kL0wg9R_VMeXy0JiK5_c70IrV">Tiny Technical Tutorials</a> on YouTube._</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ LinkedIn Profile Optimization – A Web Developer's Guide to Attract Opportunity ]]>
                </title>
                <description>
                    <![CDATA[ As a web developer, an optimized LinkedIn profile can bring numerous opportunities directly to you. After implementing invaluable optimization advice from industry experts who reviewed my profile, I now receive a steady flow of enticing prospects in ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/linkedin-profile-optimization/</link>
                <guid isPermaLink="false">66bc4c0b099736fc91bcbef9</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ LinkedIn ]]>
                    </category>
                
                    <category>
                        <![CDATA[ optimization ]]>
                    </category>
                
                    <category>
                        <![CDATA[ recruitment ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Michael Larocca ]]>
                </dc:creator>
                <pubDate>Tue, 03 Oct 2023 08:32:42 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/10/FFC-01-NEW.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>As a web developer, an optimized LinkedIn profile can bring numerous opportunities directly to you. After implementing invaluable optimization advice from industry experts who reviewed my profile, I now receive a steady flow of enticing prospects in my inbox.</p>
<p>In this article, I'll share the insights I've gained to help you optimize your profile so that you can achieve similar success.</p>
<p>Hello, my name is Michael. Like many others, I am a self-taught web developer on a journey to transition from my current career into the tech industry. </p>
<p>Although I haven't finished learning front-end web development, I am already earning side income by writing articles and providing code reviews. How did I accomplish this? One of the ways is through an optimized LinkedIn profile, which helps bring monetary opportunities directly to me.</p>
<p>In this article, I will share with you what I learned from having my LinkedIn profile reviewed by employees from LinkedIn and Microsoft, recruiters, and a tech celebrity during livestream events. 📺</p>
<h2 id="heading-why-should-you-optimize-your-linkedin-profile">Why should you optimize your LinkedIn profile?</h2>
<p>Having a LinkedIn profile in today's industry is arguably just as important as having a resume/CV. </p>
<p>By optimizing your LinkedIn profile, you will not only stand out from the crowd of other web developers but also help attract recruiters, hiring managers, and additional opportunities directly to you. 💸</p>
<h2 id="heading-how-you-should-treat-linkedin">How you should treat LinkedIn</h2>
<p>Unlike other platforms, LinkedIn is a professional work-related platform, and it should be treated as such. Refrain from posting personal social content, your opinions on controversial subjects, and anything else that may hinder your reputation. </p>
<p>You have a right to voice your opinions, but you should consider posting them on other social media platforms. It is not in your best interest for potential hiring managers to dismiss you from employment opportunities simply by judging you based on your posted content. 😬</p>
<h2 id="heading-linkedin-profile-sections">LinkedIn Profile Sections</h2>
<p>To optimize your LinkedIn profile, I will guide you through each of the following LinkedIn profile sections:</p>
<ul>
<li><a class="post-section-overview" href="#heading-how-to-optimize-your-linkedin-profile-picture-and-banner">How to Optimize your LinkedIn Profile Picture and Banner</a></li>
<li><a class="post-section-overview" href="#heading-open-to-work-banner">Open to Work Banner</a></li>
<li><a class="post-section-overview" href="#heading-headline-section">Headline Section</a></li>
<li><a class="post-section-overview" href="#heading-location-setting">Location Setting</a></li>
<li><a class="post-section-overview" href="#heading-featured-section">Featured Section</a></li>
<li><a class="post-section-overview" href="#heading-activity-section">Activity Section</a></li>
<li><a class="post-section-overview" href="#heading-summary-about-section">Summary (About) Section</a></li>
<li><a class="post-section-overview" href="#heading-experience-section">Experience Section</a></li>
<li><a class="post-section-overview" href="#heading-education-section">Education Section</a></li>
<li><a class="post-section-overview" href="#heading-licenses-and-certifications-section">Licenses and Certifications Section</a></li>
<li><a class="post-section-overview" href="#heading-projects-section">Projects Section</a></li>
<li><a class="post-section-overview" href="#heading-skills-and-endorsements-section">Skills and Endorsements Section</a></li>
<li><a class="post-section-overview" href="#heading-recommendations-section">Recommendations Section</a></li>
<li><a class="post-section-overview" href="#heading-honors-amp-awards-accomplishments-section">Honors &amp; Rewards (Accomplishments) Section</a></li>
<li><a class="post-section-overview" href="#heading-creator-mode">Creator Mode</a></li>
</ul>
<p><strong>Additional tips:</strong></p>
<ol>
<li><a class="post-section-overview" href="#heading-1-post-external-links-in-the-comments">Post external links in the comments</a></li>
<li><a class="post-section-overview" href="#heading-2-change-the-default-profile-url-to-your-name">Change the default profile URL to your name</a></li>
<li><a class="post-section-overview" href="#heading-3-separate-profile-for-separate-languages">Separate Profile for separate languages</a></li>
<li><a class="post-section-overview" href="#heading-4-linkedin-learning">LinkedIn Learning</a></li>
<li><a class="post-section-overview" href="#heading-5-linkedin-skill-assessments">LinkedIn Skill Assessments</a></li>
</ol>
<p>💡 <strong>Tip:</strong> Did you know many recruiters are not programmers? Keep this in mind to better optimize your LinkedIn profile.</p>
<h2 id="heading-how-to-optimize-your-linkedin-profile-picture-and-banner">How to Optimize your LinkedIn Profile Picture and Banner</h2>
<p>In this section, you'll learn how to optimize your profile picture and banner on LinkedIn to make your profile look more professional. </p>
<h3 id="heading-how-to-optimize-your-profile-picture">How to Optimize your Profile Picture</h3>
<p>Your profile picture is easy, so we'll start with that. Since the absence of a picture or an avatar in its place may be perceived as a red flag to hiring managers, use a real picture of yourself (don't be shy). 😏</p>
<p>Use a close-up picture of yourself in professional clothing, as you would in an interview, from the shoulder area up, and a professional-looking or blank background.</p>
<h3 id="heading-how-to-optimize-your-banner-image">How to Optimize your Banner Image</h3>
<p>For your banner, your goal is to convey a clear picture of your desired job role.</p>
<p>When creating a custom banner, here are things to consider:</p>
<ul>
<li>The banner image should reflect your desired job role, not contradict it.</li>
<li>Other people viewing your profile may not be programmers.</li>
<li>Everyone will not recognize tech icons without the corresponding names.</li>
<li>Add contact information as an alternative method to be reached.</li>
<li>Incorporate a hobby to spark conversation.</li>
</ul>
<h4 id="heading-banner-image">Banner Image</h4>
<p>An unintentional mistake I made was to use on my blog's logo as a banner, which included the word "self-taught" in big letters. Danny Thompson brought to my attention during a livestream review that it wasn't in my best interest to broadcast that I am a self-taught developer, as it can be seen as a red flag to hiring managers. </p>
<p>Other banner image mistakes include unrelated tech images such as nature scenery or having no banner at all. Remember, you want your banner to reflect your desired job role.</p>
<p>Another thing to remember is that other people viewing your profile may not be programmers, so including icons alone without corresponding names, such as HTML, CSS, JavaScript, and React logos, may not be recognized by everyone.</p>
<h4 id="heading-adding-contact-information">Adding contact information</h4>
<p>Another thing I learned while having my profile reviewed is that recruiters have a limited number of monthly LinkedIn InMail credits available to reach out to potential candidates. So, adding your contact information to your banner, such as your website, email, and phone number, creates an alternative means of reaching you without having to utilize their InMail credits.</p>
<h4 id="heading-conversation-starter">Conversation starter</h4>
<p>This will not be for everyone, but it is definitely worth mentioning. Recruiter Taylor Desseyn told us of a developer who incorporated his time as a sound engineer for the Backstreet Boys in his LinkedIn banner. This caught the attention of a recruiter who contacted the developer due to their music industry experience, ultimately securing them a tech job. So, if you have a personal, non-tech-related experience or hobby that could potentially spark a conversation, consider including it.</p>
<p>💡 <strong>Tip:</strong> Recruiters have a limited number of InMail credits, which they use to reach out to potential candidates. Providing your contact information in your LinkedIn banner provides an alternative method for others to get in touch with you.</p>
<h3 id="heading-open-to-work-banner">Open to Work Banner</h3>
<p>If you are feeling brave, you can display an "OPEN TO WORK" banner that proudly displays your availability to everyone. </p>
<p>However, since this is a delicate topic, and everyone's situation varies, there is an option that allows you to maintain the privacy of your open-to-work status. There will not be a displayed banner, but recruiters will know you are available to work. 🤫</p>
<p>To set the "Open to Work" banner on LinkedIn, follow these steps:</p>
<ol>
<li>Log in to your LinkedIn account and navigate to "Edit job preferences."</li>
<li>Fill in the fields, such as job titles, location types, start date, and employment types.</li>
<li>Now, for visibility, choose whether to share your open-to-work status with all LinkedIn members or only with recruiters. Selecting the first option will display the "Open to Work" banner on your profile picture, while the second option keeps it private.</li>
<li>Click "Save" to apply the changes.</li>
</ol>
<p><strong>Note:</strong> Please proceed with caution when selecting your open-to-work status, regardless of whether you choose to display the banner or not, as LinkedIn has a disclaimer stating they cannot guarantee complete privacy. Use this feature at your own risk.</p>
<h3 id="heading-headline-section">Headline Section</h3>
<p>In your headline section, briefly describe yourself by adding keywords that match the job role you seek and your skill sets. In my case, I entered "Technical Writer | Front-End Web Developer | React | JavaScript | CSS | HTML | Scrimba Code Reviewer." </p>
<p>Of course, you can get more descriptive and tell a little about yourself, but the main goal is to provide specific keywords.</p>
<p>The reason for including keywords related to your skills and desired job role in your headline ensures that you appear in relevant search results of recruiters and employers.</p>
<h3 id="heading-location-setting">Location Setting</h3>
<p>For my LinkedIn location setting, I initially set it to Brooklyn, New York, which is where I am based. When LinkedIn employee Austin Henline reviewed my profile, he explained that setting my profile to Brooklyn limits the searches I appeared to just Brooklyn.</p>
<p>By modifying my LinkedIn location from Brooklyn to the New York City Metropolitan Area, which includes Brooklyn, I substantially expanded the range of job searches in which I appear.</p>
<p>To optimize your LinkedIn location setting most effectively, select the broadest range that encompasses the specific location where you live or desire to work.</p>
<h4 id="heading-how-to-change-the-location-setting-on-linkedin">How to change the location setting on LinkedIn:</h4>
<ol>
<li>Click on your profile picture or the "Me" icon at the top of the LinkedIn homepage.</li>
<li>Click "View Profile" to access your profile page.</li>
<li>In the "Intro" section, click the pencil icon to edit your information.</li>
<li>In the "Location" field, enter the desired location or select from the suggested options.</li>
<li>Click "Save" to apply the changes.</li>
</ol>
<p>💡 <strong>Tip:</strong> Optimize your LinkedIn location setting by choosing an area that covers a broad radius, ensuring your profile appears in more job searches.</p>
<h3 id="heading-featured-section">Featured Section</h3>
<p>The <strong>Featured</strong> section is the place to proudly display your achievements, awards, best original projects (not direct copies of tutorial projects), and similar content to showcase yourself in the spotlight. This section is arranged horizontally, scrolls like a carousel, and enables you to rearrange and pin your most recent content to the beginning/top.</p>
<p>Examples of content to feature include:</p>
<ul>
<li>Testimonials received</li>
<li>Awards or recognitions received</li>
<li>Published articles or blog posts</li>
<li>Appearances (such as Livestream events)</li>
<li>Presentations or conference talks</li>
</ul>
<p>Keep in mind that others viewing your work might not be developers, so be sure to provide clear descriptions and context for each featured item, including the technologies used if applicable (such as React, Tailwind, JavaScript, and so on).</p>
<p>You can optimize your Featured section by including all relevant materials that demonstrate your skills and experience. Additionally, include content that you believe will effectively grab the attention of recruiters and hiring managers.</p>
<p>I display all of my colorful article thumbnails with external links to each, in the Featured section, transforming it into a visually appealing scrolling magazine rack. 📰</p>
<p>💡 <strong>Tip:</strong> Showcase your best content in the Featured section to capture the attention of recruiters and hiring managers, and remember to update it frequently.</p>
<h3 id="heading-activity-section">Activity Section</h3>
<p>It's vital for you to keep your LinkedIn profile active because a profile without activity will display a "hasn't posted lately" message in the <strong>Activity</strong> section. Recruiters and hiring managers are hesitant to reach out to profiles without activity because they are uncertain whether their attempts to make contact will be successful.</p>
<p>You can keep your profile active by:</p>
<ul>
<li><strong>Creating posts:</strong> Share updates, articles, or insights to showcase your expertise and engage with your network.</li>
<li><strong>Leaving comments on posts:</strong> Interact with others by providing valuable feedback, asking questions, or sharing your thoughts on their content.</li>
<li><strong>Sharing posts:</strong> Amplify the reach of interesting content with your network, helping spread valuable insights and knowledge.</li>
<li><strong>Attending LinkedIn Livestream events</strong>: Participate in live video events hosted by industry experts, companies, or influencers to learn, network, and engage with others (Taylor Desseyn has great ones).</li>
<li><strong>Publishing articles:</strong> Write long-form content on LinkedIn to demonstrate your knowledge, share your experience, and establish yourself as a thought leader in your field.</li>
</ul>
<p>Having an active profile will increase your visibility to recruiters and hiring managers, and since they know you frequently use the platform, they will not be hesitant to reach out to make contact with you.</p>
<p>💡 <strong>Tip:</strong> Keep your profile active to avoid the "hasn't posted lately" message in the Activity section, which may discourage recruiters and hiring managers from attempting to contact you.</p>
<h3 id="heading-summary-about-section">Summary (About) Section</h3>
<p>Everyone seems to have various opinions about what to put in your <strong>About</strong> section. From what I gathered through my profile reviews and research of LinkedIn documentation, the overall idea is to craft it like an elevator pitch.</p>
<p>So, what is an elevator pitch? An elevator pitch is a short speech briefly describing your background, skills, goals, and unique value, typically around 30 seconds to 1 minute (the length of time spent in an elevator with someone).</p>
<p>If you alternatively prefer a more detailed approach to crafting your About section, I recommend following the guidance of LinkedIn employee, Austin Henline. He advises providing five paragraphs that contain the following:</p>
<ol>
<li><strong>A hook:</strong> A captivating opening statement that grabs the reader's attention.</li>
<li><strong>Your past:</strong> A brief overview of your previous experiences and accomplishments.</li>
<li><strong>Your present:</strong> A description of your current role, responsibilities, and ongoing projects.</li>
<li><strong>Your future:</strong> A statement outlining your career goals and aspirations.</li>
<li><strong>Your skills:</strong> A list of your relevant technical and soft skills showcasing your expertise.</li>
</ol>
<p>To further optimize your <strong>About</strong> section and make it more visible in search results of potential employers, be sure to incorporate plenty of relevant keywords, as this section is also keyword-searchable. You can incorporate web developer keywords such as HTML, CSS, JavaScript, React, responsive design, UX/UI design, accessibility, performance optimization, etc.</p>
<h4 id="heading-the-mistakes-i-made">The Mistakes I made</h4>
<p>To further improve your LinkedIn About section, consider the constructive feedback I received from recruiter Molly-May Gallagher. Enhance your LinkedIn summary by clearly stating desired work, highlighting key technical skills, focusing on relevant experiences, detailing current role technologies, and removing unrelated information for a concise, impactful summary.</p>
<p>Also, be sure to clarify your desired job roles to avoid confusion. Alishah Novin from Microsoft pointed out that listing multiple roles, like technical writing and front-end development, as I did, can make your true passion unclear, leading to potential missed opportunities.</p>
<p>💡 <strong>Tip:</strong> Include keywords relevant to your industry and desired job role in your About section to increase search results visibility.</p>
<h3 id="heading-experience-section">Experience Section</h3>
<p>To best optimize the Experience section of your LinkedIn profile, list your experiences relevant to the job roles you are currently seeking (not all of your unrelated tech roles). For each experience listed, be sure to include details for each, including company name, duration, and a brief description of your responsibilities and achievements.</p>
<p>For example, I will share a tech-related experience I included. Since I work part-time remotely as a paid code reviewer for Scrimba, in addition to a detailed description of the job role, I added the following keyword searchable skills: React, JavaScript, CSS, HTML, and Teaching. I also linked to a playlist of my recorded code reviews so that others can see a demonstration of my skills.</p>
<p>💡 <strong>Tip:</strong> If you are currently in college or recently graduated and lack work experience, you can highlight your volunteer experience, club experiences, and projects in your profiles Experience section.</p>
<h3 id="heading-education-section">Education Section</h3>
<p>In the <strong>Education</strong> section, list the degrees and diplomas you have earned, along with the schools, colleges, or universities you have attended. You also have the opportunity to include any additional relevant information, such as participation in activities, societies, or honors you have received.</p>
<p>To best optimize the Education section, emphasize relevant coursework, highlight achievements, and explain the impact of education on your career trajectory as it relates to computer programming.</p>
<p>💡 <strong>Tip:</strong> If you have a time gap between jobs due to a career transition or break, you can create a positive spin on it by adding supplemental work experience such as completing Bootcamps, earning certificates, studying, and freelancing.</p>
<h3 id="heading-licenses-and-certifications-section">Licenses and Certifications Section</h3>
<p>This section lets you showcase your professional certifications, licenses, and achievements. As a web developer, I'm sure you have completed many online courses that issued certificates from schools such as freeCodeCamp, Scrimba, Sololearn, and similar. You can add each of your earned certificates in this section and link to them (I have my linked certificates stored on GitHub).</p>
<p>To add a certification, go to your LinkedIn profile, click "Add profile section," select "Licenses &amp; certifications," and enter the required details such as certification name, issuing organization, issue date, expiration date, and associated credential ID.</p>
<h3 id="heading-projects-section">Projects Section</h3>
<p>As a developer, you are definitely going to want to utilize this elusive yet extremely valuable LinkedIn feature, the <strong>Projects</strong> section. I wasn't even aware this section existed until LinkedIn employee Austin Henline revealed it during a YouTube Livestream.</p>
<p>The Projects section allows you to showcase your work, giving you an opportunity to demonstrate your skills and expertise. For each project, be sure to include a brief description and the technologies used _(<em>remember, not all recruiters and hiring managers are programmers</em>)_. You can also provide a link to the deployed project or repository, which allows others to view it.</p>
<p>I decided to showcase my deployed Tetris project. I followed freeCodeCamp's game tutorial, taught by Ania Kubow, and took it to the next level by adding styling, sounds and music, a scoring system, and more. </p>
<p>When users click on the link to the deployed project directly within the LinkedIn app, they are instantly mesmerized as they suddenly take control of the falling tetrominoes trying to clear completed solid rows. My hope is that they become momentarily lost in the game, and when it ends, they click back to my profile and think, "We have to hire this guy!"</p>
<p>To access the LinkedIn Projects section and add projects:</p>
<ol>
<li>Click on "Add profile section".</li>
<li>Click on "Recommended".</li>
<li>Choose "Add projects".</li>
<li>Fill in the project details, such as the project name, description, and date.</li>
<li>You can add your top 5 skills used in this project.</li>
<li>You can add media such as images, documents, sites, or presentations</li>
<li>Click "Save" to add the project to your profile.</li>
</ol>
<p>💡 <strong>Tip:</strong> To best optimize your LinkedIn profile, include unique projects in your Projects section that will captivate and draw the interest of recruiters and hiring managers.</p>
<h3 id="heading-skills-and-endorsements-section">Skills and Endorsements Section</h3>
<p>The <strong>Skills</strong> section enables you to showcase your abilities, such as HTML, CSS, and JavaScript and allows others to endorse each skill mentioned.</p>
<p>Be sure to add skills that are most relevant to the job roles you are seeking, and prioritize obtaining endorsements for them. The more endorsements you accumulate, the more credible you and your profile appear to potential employers.</p>
<h3 id="heading-recommendations-section">Recommendations Section</h3>
<p>Be sure to utilize the <strong>Recommendations</strong> section of your profile by asking others you have worked with to provide them. Just like receiving endorsements for your skills, having recommendations will also help increase your credibility and will make your profile more appealing to recruiters and hiring managers.</p>
<p>You can also write and provide recommendations for fellow LinkedIn members in your network.</p>
<h3 id="heading-honors-amp-awards-accomplishments-section">Honors &amp; Awards (Accomplishments) Section</h3>
<p>In your LinkedIn profile's <strong>Honors &amp; awards</strong> section, you can showcase your achievements, awards, and recognitions. Be sure to add ( and earn ) relevant honors and awards, as this section demonstrates additional credibility to potential employers, further optimizing your LinkedIn profile.</p>
<p>Honors &amp; awards may include:</p>
<ul>
<li>Coding competition awards</li>
<li>Scholarships and grants</li>
<li>Community leadership roles</li>
<li>Technical writing achievements</li>
<li>Speaking achievements</li>
<li>Mentorship roles</li>
</ul>
<h3 id="heading-creator-mode">Creator Mode</h3>
<p>If you are a content creator, turning on LinkedIn <strong>Creator mode</strong> provides additional tools such as a "Follow" button, analytics, profile topics, and a set of creator tools that you can use to optimize your LinkedIn profile further.</p>
<h4 id="heading-follow-button">Follow button</h4>
<p>The Follow button provides LinkedIn members with an alternative option to connect with you. Once you surpass five hundred connections, a "500+ connections" displays, whereas there is no limit to the number of displayed followers.</p>
<h4 id="heading-analytics">Analytics</h4>
<p>Analytics includes your post impressions, profile views, followers, and your search appearances. You will gain insights into your content's performance by selecting date ranges from a week to a year and choosing from a list of demographics. This information will help you clearly understand who is engaging with your content, allowing you to make informed decisions about your content strategy.</p>
<h4 id="heading-profile-topics">Profile topics</h4>
<p>Creator mode allows you to showcase five "Profile Topics" that highlight your expertise, making it simpler for audiences to understand your focus, enhancing credibility, and attracting a targeted audience.</p>
<p>Creator tools include:</p>
<ul>
<li><strong>Collaborative articles:</strong> Jointly written articles by multiple authors on LinkedIn.</li>
<li><strong>LinkedIn Live:</strong> Real-time video streaming feature on LinkedIn for engaging audiences.</li>
<li><strong>Audio Event:</strong> Virtual audio-based discussions or presentations on LinkedIn.</li>
<li><strong>Newsletters:</strong> Periodic publications sent to subscribers, sharing updates and insights.</li>
<li><strong>Follow link:</strong> Button on LinkedIn profiles for users to follow and receive content updates.</li>
</ul>
<p>The collaborative article is a new feature where the LinkedIn team creates an AI article, and invites select members to participate by adding their valuable insights. </p>
<p>As an active LinkedIn member, I was recognized and invited to participate. As I continue to add value to these collaborative articles, I currently have a "Top Writing Voice" badge displayed. However, I hold this badge for a minimum of 60 days, and if LinkedIn members stop finding my insights valuable, they will take the badge away. (No pressure, right? 😅)</p>
<p>At this time, collaborative articles are by invitation only, but they mentioned LinkedIn members who engage with them by liking or reacting to them will be considered.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/09/linkedIn.png" alt="Image" width="600" height="400" loading="lazy">
<em>Attribution: LinkedIn logo by LinkedIn Corporation, used under fair use for informational purposes.</em></p>
<h3 id="heading-additional-tips">Additional tips</h3>
<p>In this section, I included a few additional LinkedIn tips I have learned that are worth sharing with you.</p>
<p>They include:</p>
<h4 id="heading-1-post-external-links-in-the-comments">1. Post external links in the comments</h4>
<p>When sharing content that is located on other platforms using links, do not put the link directly in your LinkedIn post. Instead, add external links in the comments of your LinkedIn post. This tip came from a LinkedIn employee who explained that doing this significantly improves your post's reach/performance on the platform.</p>
<h4 id="heading-2-change-the-default-profile-url-to-your-name">2. Change the default profile URL to your name</h4>
<p>For a more professional URL, you have the option to change the default one created to your name. My original URL was "<a target="_blank" href="https://www.linkedin.com/in/michael-larocca-9315a3202/">https://www.linkedin.com/in/michael-larocca-9315a3202/</a>". I have since changed it to "<a target="_blank" href="https://www.linkedin.com/in/michaeljudelarocca">https://www.linkedin.com/in/michaeljudelarocca</a>"</p>
<p>Here are the steps to changing your profile URL:</p>
<ul>
<li>Click on your profile picture or the "Me" icon at the top of the LinkedIn homepage.</li>
<li>Click "View Profile" to access your profile page.</li>
<li>In the "Intro" section, click the pencil icon to edit your information.</li>
<li>Scroll down to "Edit public profile &amp; URL" on the top right and click it.</li>
<li>On the new page, under "Edit your custom URL," click the pencil icon next to your current URL.</li>
<li>Enter your desired custom URL and click "Save" to apply the changes.</li>
</ul>
<h4 id="heading-3-separate-profile-for-separate-languages">3. Separate Profile for separate languages</h4>
<p>If you speak more than one language, you may be filling out your profile multilingually. Doing so will quickly deplete your allotted character limit for each section and may cause confusion for others viewing your profile. </p>
<p>As an alternative, you can create separate profiles for each language. Maintaining a profile for each language provides the advantage of personalizing them to attract diverse job opportunities in their respective languages.</p>
<p>Here are steps to add a profile in another language (desktop/laptop version only):</p>
<ul>
<li>On the top right, click on "ME."</li>
<li>Then click on "View Profile."</li>
<li>Finally, on the right, click on "Add profile in another language."</li>
</ul>
<h4 id="heading-4-linkedin-learning">4. LinkedIn Learning</h4>
<p>With a premium membership, you can access LinkedIn Learning, an online educational platform offering a wide range of courses. Upon completing these courses, you will receive LinkedIn Learning certificates, which optimize your LinkedIn profile by displaying your skills and professional development to prospective employers and connections. </p>
<p>You can take advantage of a free trial period to explore the platform by signing up for a one-month LinkedIn Premium membership. _(<em>You can take LinkedIn Learning courses from Dylan Israel, a successful graduate of freeCodeCamp and a LinkedIn Learning instructor.</em>)_</p>
<h4 id="heading-5-linkedin-skill-assessments">5. LinkedIn Skill Assessments</h4>
<p>Skill Assessments are FREE tests offered by LinkedIn to evaluate your proficiency in various skills. A corresponding badge will be added on your profile when you pass a Skill Assessment test. If you fail the test, no worries! You are allowed to retake them after three months.</p>
<p>LinkedIn advertises that candidates who complete Skill Assessments are 30% more likely to get hired, so they are definitely worth trying to attain. Programming LinkedIn skill assessments you may be interested in include HTML, CSS, JavaScript, React.js, Angular, jQuery, and Vue.js.</p>
<p>To get an idea of what taking these tests are like, you can watch Kyle Cook's (Web Dev Simplified) recorded Livestream YouTube videos taking them.</p>
<p>Kyle Cook (Web Dev Simplified) LinkedIn Skill Assessments:</p>
<ul>
<li><a target="_blank" href="https://www.youtube.com/watch?v=R5KH_vwcQ48&amp;t=14s">LinkedIn HTML Quiz</a></li>
<li><a target="_blank" href="https://www.youtube.com/watch?v=4iXKlZCYd2s">LinkedIn CSS Quiz</a></li>
<li><a target="_blank" href="https://www.youtube.com/watch?v=V__irponAuA">LinkedIn JavaScript Quiz</a></li>
<li><a target="_blank" href="https://www.youtube.com/watch?v=0va5IF2xu0s">LinkedIn React Quiz</a></li>
</ul>
<h3 id="heading-special-thanks">Special thanks</h3>
<p>Special thanks to Scrimba and the industry experts who reviewed my LinkedIn profile and provided valuable, constructive criticism, which enabled me to optimize it, resulting in a continual flow of opportunities coming directly to me:</p>
<ul>
<li><a target="_blank" href="https://www.linkedin.com/in/dthompsondev/">Danny Thompson</a> - Tech Celebrity!</li>
<li><a target="_blank" href="https://www.linkedin.com/in/austinhenline/">Austin Henline</a> - LinkedIn</li>
<li><a target="_blank" href="https://www.linkedin.com/in/taylordesseyn/">Taylor Desseyn</a> - Recruiter</li>
<li><a target="_blank" href="https://www.linkedin.com/in/alishahnovin/">Alishah Novin</a> - Microsoft</li>
<li><a target="_blank" href="https://www.linkedin.com/in/molly-may-gallagher/">Molly-May Gallagher</a> - Recruiter</li>
<li><a target="_blank" href="https://www.youtube.com/@CodewithLeanne/videos">Leanne Rybintsev</a> - <a target="_blank" href="https://scrimba.com/">Scrimba</a> Livestream host</li>
</ul>
<h3 id="heading-conclusion">Conclusion</h3>
<p>As a web developer, having a LinkedIn profile is equally important as having a resume. Creating and optimizing a LinkedIn profile will help you stand out from the competition, draw the attention of recruiters and hiring managers, and attract a wealth of opportunities directly to you.</p>
<p>Once you have created and optimized your LinkedIn profile, you must stay active on the platform, as inactivity can be seen as a red flag for recruiters and hiring managers. You can stay active by interacting with posts through creation, commenting, and sharing them. You can also attend and participate in LinkedIn Livestream events to keep your account active.</p>
<p>Remember, LinkedIn is a professional platform and should be treated accordingly. Refrain from posting, commenting, or engaging in any form of communication that could potentially damage your reputation.</p>
<p>You can further enhance your LinkedIn profile by increasing your credibility. Make sure to include your honors and awards, consider taking LinkedIn Skill Assessments and courses, and ask for endorsements and recommendations from your network. Also, be on the lookout for new features you can take part in to boost your credibility, such as collaboration articles that award exclusive badges.</p>
<p>Most importantly, don't just take my word for it: regularly update your profile, discover what works best for you, and also observe how others have effectively optimized their LinkedIn profiles. If you or someone else has further optimization tips that I haven't covered, please share them so that we can all have the best-optimized profiles, leading to daily opportunities coming directly to each of us.</p>
<h3 id="heading-other-articles-ive-written-related-to-linkedin">Other articles I've written related to LinkedIn</h3>
<ul>
<li><a target="_blank" href="https://selftaughttxg.com/2022/10-22/LinkedIn-AustinHenline/">LinkedIn Profile Optimization With Austin Henline</a></li>
<li><a target="_blank" href="https://selftaughttxg.com/2023/08-23/revamp-your-resume-and-linkedin-profile-expert-tips-to-get-noticed-and-hired/">Revamp Your Resume and LinkedIn Profile: Expert Tips to Get Noticed and Hired</a></li>
<li><a target="_blank" href="https://selftaughttxg.com/2021/05-21/LinkedInReviewWithDannyThompson/">LinkedIn Review with Danny Thompson</a></li>
<li><a target="_blank" href="https://selftaughttxg.com/2021/03-21/LinkedIn-Profile-Review/">Create a LinkedIn profile that gets noticed by tech recruiters</a></li>
<li><a target="_blank" href="https://scrimba.com/articles/linkedin-for-developers/">How to use LinkedIn as a developer to get a job in tech</a></li>
</ul>
<p>Let's connect! I'm active on <a target="_blank" href="https://www.linkedin.com/in/michaeljudelarocca/">LinkedIn</a> and <a target="_blank" href="https://twitter.com/MikeJudeLarocca">Twitter</a>.</p>
<p><img src="https://uploads-ssl.webflow.com/5f21f5bb63183fc595ff8426/649b64bfb2d7d7f783c83e48_Logo-White-Slogan-e33c0614b0d4934fac45d58883ebb935.jpeg" alt="selftaughttxg logo" width="2649" height="680" loading="lazy"></p>
<h6 id="heading-you-can-read-all-of-my-articles-on-selftaughttxgcomhttpselftaughttxgcom"><strong>You can read all of my articles on <a target="_blank" href="http://selftaughttxg.com">selftaughttxg.com</a></strong></h6>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Find a Remote Developer Job ]]>
                </title>
                <description>
                    <![CDATA[ By George Field As the world continues to adapt to the new normal of remote work, the demand for remote developers has never been higher. Companies are now realizing the benefits of hiring remote workers, including cost savings and access to a wider ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-get-a-remote-developer-job/</link>
                <guid isPermaLink="false">66d45edbc7632f8bfbf1e426</guid>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ remote work ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 30 Jan 2023 22:09:18 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/01/pexels-ekaterina-bolovtsova-4049459.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By George Field</p>
<p>As the world continues to adapt to the new normal of remote work, the demand for remote developers has never been higher.</p>
<p>Companies are now realizing the benefits of hiring remote workers, including cost savings and access to a wider pool of talent.</p>
<p>If you're looking for a remote developer job, here are some tips to help you land your dream remote developer job.</p>
<p>I have been working remotely as a developer for many years now. In this article I'll share my experiences and advice with you so you can take advantage of the latest remote work trend.</p>
<h2 id="heading-focus-on-networking">Focus on Networking</h2>
<p>Network, network, network. Networking is key to finding any job, and remote developer jobs are no exception.</p>
<p>Join online communities, attend virtual events, and reach out to people in your network to let them know you're looking for a remote developer job.</p>
<p><img src="https://images.unsplash.com/photo-1550177977-ad69e8f3cae0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDZ8fG5ldHdvcmtpbmd8ZW58MHx8fHwxNjc0ODI4ODMy&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Image" width="2000" height="1333" loading="lazy"></p>
<p><em>Photo by</em> <a target="_blank" href="https://unsplash.com/@soyhivan"><em>Unsplash</em></a></p>
<p>I have done this countless times throughout my carer. Attending meet ups has brought me great success, and helped me get my latest developer role as a Software Engineer at a remote blockchain start-up. I even got to go to Italy for an off site meet up (where I enjoyed lots of good food and drink).</p>
<p>If you have a limited network, I can't stress enough the value in reaching out to start up founders on platforms such as LinkedIn. It is literally there for the purpose of professional networking, yet hardly any developers I have met use it for this.</p>
<h3 id="heading-key-networking-takeaways">Key Networking Takeaways</h3>
<ul>
<li><p>Networking can significantly increase your chances of finding a remote developer job.</p>
</li>
<li><p>Use platforms such as <a target="_blank" href="https://linkedin.com">LinkedIn</a> and <a target="_blank" href="https://www.freecodecamp.org/news/p/c530823c-388f-4daa-a9e8-fe14b0ba404d/meetup.com">meetup.com</a> to start out on your networking journey.</p>
</li>
</ul>
<h2 id="heading-brush-up-on-your-skills">Brush Up on Your Skills</h2>
<p>As with any job – and even more so with tech – staying current with the latest technologies and trends is essential to landing a remote developer job.</p>
<p>Consider taking online courses or earning certifications to demonstrate your commitment to staying up-to-date.</p>
<p><img src="https://images.unsplash.com/photo-1546410531-bb4caa6b424d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDF8fHNraWxsc3xlbnwwfHx8fDE2NzQ4Mjg0MjM&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Love to Learn | Instagram: @timmossholder" width="2000" height="1333" loading="lazy"></p>
<p><em>Photo by [Unsplash](https://unsplash.com/@timmossholder?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit"&gt;Tim Mossholder / &lt;a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit)</em></p>
<p>It can also benefit you if you add some projects to your portfolio that utilise the skills you learn along the way. You can use these to sell yourself when it comes to interviews.</p>
<p>For example, I have built out a few projects lately that use Prisma, which is becoming a popular ORM for working with Postgres and NodeJS. I used the projects to sell myself during interviews and highlighted how I can use it, what I learned, and how I can add value to the company that is interviewing me immediately.</p>
<p>To find out what the latest tech trends are, note down the most common requirements in job descriptions. Go through a few interviews and see what they want to talk about, then simply adapt once you discover what those in-demand skills are.</p>
<p>This is helpful, because while there are a lot of cool technologies out there, many of them might not be helpful when it comes to getting a job. Most companies primarily use tried-and-true solutions that have been around a while. Even when they do use new tools, it's rarer.</p>
<p>By learning these key new skills, not only will it benefit you immediately but it will show any company looking to hire you that you have a desire to learn and constantly improve. This is something that will seriously help your chances of securing a remote position as a software engineer / developer.</p>
<h3 id="heading-key-skills-takeaways">Key Skills Takeaways</h3>
<ul>
<li><p>Learning the most in-demand tools and technologies and keeping up to date will significantly enhance your chances of getting a remote developer job.</p>
</li>
<li><p>Create projects that you can use to sell yourself and talk about. This is so valuable when it comes to showcasing the value that you can bring to a company.</p>
</li>
</ul>
<h2 id="heading-customize-your-resume-and-cover-letter">Customize Your Résumé and Cover Letter</h2>
<p>When applying for remote developer jobs, it's important to tailor your résumé and cover letter to the specific job and company you're applying to. Make sure to highlight any relevant experience you have and how it makes you a good fit for the position.</p>
<p><img src="https://images.unsplash.com/photo-1565688534245-05d6b5be184a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDF8fHJlc3VtZXxlbnwwfHx8fDE2NzQ4Mjk2NTc&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Image" width="2000" height="1334" loading="lazy"></p>
<p><em>Photo by [Unsplash](https://unsplash.com/pt-br/@vantaymedia?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit"&gt;Van Tay Media / &lt;a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit)</em></p>
<p>To customize your résumé and cover letter, you should first research the company and position you are applying for. Look at the job description and requirements, and make sure that your résumé and cover letter highlight your relevant skills and experiences that match what the company is looking for.</p>
<p>Additionally, use language and terminology that is specific to the industry or field you are applying for. You may also consider including specific examples or accomplishments that demonstrate your qualifications for the position.</p>
<p>For example, if you are applying for a remote job at Stripe, you need to go and do some research on the tech stack, values, basic info, vision and mission of Stripe. Really get to understand the company you are applying for as this will come across in your résumé and cover letter.</p>
<p>Aside from this, think about what the person reading your résumé is looking for. Not only do they want to see your skills, values, and carer highlights but they also are going to be looking at how hiring you will mitigate the risks that come with hiring engineers.</p>
<p>Recruiting talent is expensive for a company, so as a result they want to know that hiring you is not going to be a big risk. So make sure that you present the relevant details in your résumé / cover letter.</p>
<p>Finally, think about the core aspects of remote work and how soft skills such as communication, ability to work independently, and honesty are of huge value. Try to demonstrate these traits during interviews.</p>
<h3 id="heading-key-resume-and-cover-letter-takeaways">Key Résumé and Cover Letter Takeaways</h3>
<ul>
<li><p>Tailor your résumé and cover letter for both remote work and the company you are applying to.</p>
</li>
<li><p>Highlight points and skills that will help the employer see how hiring you will be a low risk investment.</p>
</li>
<li><p>Cover how you can add value straight away.</p>
</li>
</ul>
<h2 id="heading-use-developer-focused-job-boards">Use Developer-Focused Job Boards</h2>
<p>Job boards are a great way to find remote jobs. But most of them out there are tailored to a broader audience, so sometimes they can make it harder to filter out jobs you don't want.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/Group-14.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Not only this, but the competition is higher. Instead, using niche job boards for developers is a great way to lower the completion you will be facing but also find incredible opportunities at the same time.</p>
<p>I personally use a variety of different job boards to help me find roles. Here is a quick list of the job boards I use and recommend:</p>
<ol>
<li><p><a target="_blank" href="https://devremote.io/">Devremote</a> (Every type of developer job)</p>
</li>
<li><p><a target="_blank" href="http://web3.career/">Web3.career</a> (Web 3 specific)</p>
</li>
<li><p><a target="_blank" href="http://4dayweek.io/">4dayweek.io</a> (In the name, four days a week jobs)</p>
</li>
<li><p><a target="_blank" href="https://www.remotefrontendjobs.com/">remotefrontendjobs</a> (Frontend only jobs)</p>
</li>
<li><p><a target="_blank" href="https://rubyonremote.com/">RubyOnRemote</a> (Ruby jobs)</p>
</li>
<li><p><a target="_blank" href="https://jobsinjs.com/">jobsinjs</a> (JavaScript jobs)</p>
</li>
</ol>
<p>All of these job boards are awesome and I love using them.</p>
<p>Quick tip here - I recommend finding the jobs using these job boards, then searching for the company on LinkedIn and contacting the CTO / People in charge of recruitment. This can help you get yourself ahead of everyone else. I do it all the time and it works really well, as very few people do this kind of thing.</p>
<h3 id="heading-key-job-board-takeaways">Key Job Board Takeaways</h3>
<ul>
<li><p>Use niche job boards with a developer focus. They provide much better opportunities and have filters that are aimed at engineers/developers.</p>
</li>
<li><p>Reach out to people in charge of recruitment via LinkedIn.</p>
</li>
</ul>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Utilising the ideas in this article has helped me land many interviews and job offers from remote-first tech companies over the last four years. I would recommend them to anybody who is serious about getting a remote developer position.</p>
<p>Don't get me wrong, getting a remote developer job can be challenging. But given the way the world is heading and the eagerness of companies to cut costs where possible, remote work is here to stay. That is welcome news for us developers who now have more opportunities than ever to build a flexible and awesome life.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ The Most Popular Coding Challenge Websites ]]>
                </title>
                <description>
                    <![CDATA[ If you want to improve your analytical skills, there's no better way to do that than solving problems.  If you are a programmer, then this is something you should do for yourself. Programmers need to deal with all sorts of problems almost every day. ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-most-popular-coding-challenge-websites/</link>
                <guid isPermaLink="false">66b90316941d2f900bad52aa</guid>
                
                    <category>
                        <![CDATA[ coding challenge ]]>
                    </category>
                
                    <category>
                        <![CDATA[ interview questions ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Interviewing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Md. Fahim Bin Amin ]]>
                </dc:creator>
                <pubDate>Wed, 15 Jun 2022 22:23:18 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/06/fCC-Banner.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you want to improve your analytical skills, there's no better way to do that than solving problems. </p>
<p>If you are a programmer, then this is something you should do for yourself. Programmers need to deal with all sorts of problems almost every day. </p>
<p>Most importantly, solving problems in an efficient manner can make you much more productive. And solving challenging problems helps us do that.</p>
<h2 id="heading-you-can-watch-this-complete-video-on-youtube-as-well-if-you-like">You can watch this complete video on YouTube as well if you like 🎥</h2>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/45wrQ-RAefI" 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-why-should-you-develop-your-problem-solving-skills">Why Should You Develop Your Problem-Solving Skills?</h2>
<p>These days, technology is developing rapidly, and we are seeing some amazing changes and improvements almost every day. </p>
<p>Whenever we talk about technology, a buzzword appears in our mind – and that is coding or programming. Now, coding/programming isn't just about solving different kinds of problems using different programming languages, but it's a large part of what you'll do as a developer.</p>
<p>The fields of Web development, Machine Learning, Artificial Intelligence, Augmented Reality, App Development, and many others require strong problem-solving skills. </p>
<p>There are many popular websites that help you do that by providing various types of problems where you need to apply your analytical and mathematical skills to solve each problem using programming languages.</p>
<p>I am going to provide you with a list of coding challenge websites that will help you become more advanced day by day. </p>
<p>Keep in mind that these websites are useful for everybody, whether you are new to coding challenges or you are a professional programmer and so on.</p>
<h1 id="heading-contents">Contents</h1>
<ol>
<li><a class="post-section-overview" href="#heading-1-beecrowd-formerly-uri-1">beecrowd</a></li>
<li><a class="post-section-overview" href="#heading-2-hackerrank-2">HackerRank</a></li>
<li><a class="post-section-overview" href="#heading-3-codeforces-1">Codeforces</a></li>
<li><a class="post-section-overview" href="#heading-4-leetcode-1">LeetCode</a></li>
<li><a class="post-section-overview" href="#heading-5-kaggle-1">Kaggle</a></li>
<li><a class="post-section-overview" href="#heading-6-codechef-1">CodeChef</a></li>
<li><a class="post-section-overview" href="#heading-7-atcoder-1">AtCoder</a></li>
<li><a class="post-section-overview" href="#heading-8-topcoder">Topcoder</a></li>
<li><a class="post-section-overview" href="#heading-9-coderbyte">Coderbyte</a></li>
<li><a class="post-section-overview" href="#heading-10-project-euler">Project Euler</a></li>
<li><a class="post-section-overview" href="#heading-11-codewars">Codewars</a></li>
<li><a class="post-section-overview" href="#heading-12-spoj">SPOJ</a></li>
<li><a class="post-section-overview" href="#heading-13-codingame">CodinGame</a></li>
<li><a class="post-section-overview" href="#heading-14-geeksforgeeks-popularly-known-as-gfg-1">GeeksforGeeks</a></li>
<li><a class="post-section-overview" href="#heading-15-toph">Toph</a></li>
<li><a class="post-section-overview" href="#heading-16-lightoj-1">LightOJ</a></li>
<li><a class="post-section-overview" href="#heading-17-exercism">Exercism</a></li>
<li><a class="post-section-overview" href="#heading-18-online-judge-commonly-known-as-uva">Online Judge</a></li>
<li><a class="post-section-overview" href="#heading-19-hackerearth">HackerEarth</a></li>
<li><a class="post-section-overview" href="#heading-20-code-jam-googles-coding-competitions-1">Code Jam - Google's Coding Competitions</a></li>
<li><a class="post-section-overview" href="#heading-21-icpc-international-collegiate-programming-contest-1">ICPC</a></li>
</ol>
<h1 id="heading-best-coding-challenge-websites">Best Coding Challenge Websites</h1>
<h2 id="heading-1-beecrowdhttpswwwbeecrowdcombrjudgeenlogin-formerly-uri">1. <a target="_blank" href="https://www.beecrowd.com.br/judge/en/login">beecrowd</a> (Formerly URI)</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/zwnoz97xawck4unafkbz.png" alt="beecrowd banner" width="600" height="400" loading="lazy"></p>
<p>beecrowd is perfect for those who have just started solving coding challenges and are looking for a beginner-friendly website. It used to be named <strong>URI</strong>, so there is a chance that you are already familiar with this site as URI.</p>
<p>If you want to solve problems in a specific category, then you're in luck as this website also offers that.</p>
<figure>
  <img src="https://www.freecodecamp.org/news/content/images/2022/07/chodi765ql8li7b9yia6-resized.jpeg" class="kg-image" alt="A dropdown showing the different challenge categories on beercrowd" width="600" height="400" loading="lazy">
</figure>

<p>Here is an image of a <strong>Strings</strong> problem set. You can also filter the problems by the ID (#), name (NAME), Subject (SUBJECT), solved (SOLVED), and so on. Beginners like these features very much.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/2afljp6rrtm1c4co62vr.png" alt="2afljp6rrtm1c4co62vr" width="600" height="400" loading="lazy"></p>
<p>On this website, you can also take part in different programming contests, and check your global ranking, country-wide ranking, and university-wide ranking.</p>
<p>Also, you can check your progress, how many days have passed after signing up, how many problems you have solved, how many points you have got, and more.</p>
<p>You will also get a nice profile page that looks beautiful as well. 😊 I used to practice solving problems on this website when I was just starting out my CP (Competitive Programming) journey. Not to mention, I got the 3rd position among 1250 students back then at my university. 🎉 </p>
<p>You can also check out my <a target="_blank" href="https://www.beecrowd.com.br/judge/en/profile/436965">beecrowd profile here</a>.</p>
<h2 id="heading-2-hackerrankhttpswwwhackerrankcom">2. <a target="_blank" href="https://www.hackerrank.com/">HackerRank</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/wla1ho0uoz9xuvp5iuwi.png" alt="wla1ho0uoz9xuvp5iuwi" width="600" height="400" loading="lazy"></p>
<p>HackerRank is one of the most popular coding practice websites out there. This is a nice platform for everyone, especially beginners. </p>
<p>The website looks nice and polished, and the users who come here the first time don't struggle when navigating throughout the website, so that is definitely a positive thing here.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/wr0o61pq2ngfwil3ys9d.png" alt="Login page" width="600" height="400" loading="lazy"></p>
<p>HackerRank offers different portals for companies and developers. If you are learning to solve problems, then you will choose the <strong>For Developers</strong> section.</p>
<p>If you want to learn any specific topics or programming languages, then this website is the perfect place to get started in that. You can prepare yourself by topics. You can also take their certification exam and stand out from the crowd. I have already passed their Python (Basic) certification exam.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/k3j4sfp9tovx9ifphf0a.png" alt="Prep" width="600" height="400" loading="lazy"></p>
<p>You can also choose preparation kits from there, and prepare yourself before your interview if you want. Moreover, you can take part in programming contests.</p>
<p>Here, you will also get a nice personal profile page. You can check out my profile from HackerRank <a target="_blank" href="https://www.hackerrank.com/FahimFBA">here</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/sfp2rcqtx9b4fs8wv3m8.png" alt="My HackerRank profile" width="600" height="400" loading="lazy"></p>
<h2 id="heading-3-codeforceshttpscodeforcescom">3. <a target="_blank" href="https://codeforces.com/">Codeforces</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/8wtc4xnpohe9yr6j2eij.png" alt="Codeforces Banner" width="600" height="400" loading="lazy"></p>
<p>Codeforces is one of the most used and well-known coding challenge and practice websites in the world, and it is sponsored by Telegram. Especially if you know about CP (Competitive Programming), then there is a high chance you have heard a lot about this website.</p>
<p>Although the website might look a little bit different to newcomers, you won't need much time to get used to it. You can train yourself by solving problems of different categories, difficulty levels, and so on. </p>
<p>Competitive programmers have ranks based on their successful results in programming contests. If you have heard about the <strong>RED</strong> coder / <strong>PURPLE</strong> coder, etc, then it is definitely from Codeforces.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/17fansawmwowcvhyc639.png" alt="Codeforces Ranking System" width="600" height="400" loading="lazy"></p>
<p>You can get the idea of the ranking system on Codeforces from the image above. For more details, you can check out <a target="_blank" href="https://codeforces.com/blog/entry/68288">this blog entry</a>.</p>
<p>Codeforces arranges contests regularly each week, and they are categorized into div 1, div 2, div 3 and div 4. They also arrange global round and educational round contests. You can get the timeline of the contests directly from <a target="_blank" href="https://codeforces.com/contests">here</a>.</p>
<p>Codeforces also provides a nice user profile on their website. You can check mine <a target="_blank" href="https://codeforces.com/profile/FahimFBA">here</a> as well.</p>
<h2 id="heading-4-leetcodehttpsleetcodecom">4. <a target="_blank" href="https://leetcode.com/">LeetCode</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/jk9l09bi3ku5d0op2x7j.png" alt="Leetcode banner" width="600" height="400" loading="lazy"></p>
<p>If you are familiar with the <strong>FAANG</strong> (Facebook, Apple, Amazon, Netflix, Google) buzzword, then you should definitely know about this website! If you want to practice for your coding interview for the big giant tech companies like FAANG, then they all do <strong>leetcoding</strong>.</p>
<p>You might think that I have made a typo in the above paragraph. No, I didn't. LeetCode has become this popular among people who target FAANG and those who are working on their problem solving skills. Taking part in contests on LeetCode has become common, and people call it leetcoding! </p>
<p>Here, you can solve a lot of problems, and filter the problems by the lists, difficulty levels, status, and tags.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/tphf8k817fbz0vsge9d3.png" alt="LeetCode ProblemSet1" width="600" height="400" loading="lazy"></p>
<p>You can also choose problems regarding Arrays, Strings, Hash Tables, Dynamic Programming, and many other categories.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/0y0ov1fxzvxwiv5bglri.png" alt="LeetCode ProblemSet2" width="600" height="400" loading="lazy"></p>
<p>As I mentioned above, you can also take part in programming contests. The only thing that makes LeetCode different is that it is based on Algorithm practice. Yeah, LeetCode is not like any other coding website, because it focuses on algorithm practice alone. </p>
<p>You do not need to provide the full code for solving a problem here, you just need to crack the solution by providing a valid algorithm using any popular language that can solve the problem.</p>
<p>You also get to see how your code performs among others, how much space and time it takes, and so on. </p>
<p>Most importantly, LeetCode has an amazing discussion group where people talk about their problems, solutions, how to improve their algorithms, how to improve the efficiency of their code, and so on. This is one of the most powerful features of LeetCode.</p>
<p>One sad part about LeetCode is that you will not get every feature for free! Yeah, it's true. You have to pay for it monthly or yearly to unlock all its features. There are a lot of problems you will find locked on the website. You can not unlock them if you do not purchase the premium plan.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/tvww5ogj3eq5qw23ss8m.png" alt="LeetCode pricing" width="600" height="400" loading="lazy"></p>
<p>If you are just starting your algorithm journey on LeetCode, then actually you don't need to worry about their premium plans as the free version will be more than enough for you. </p>
<p>Later, if you want to become more serious, then paying for their premium subscription will be a big deal actually as you'll get a ton more features. This is very much helpful, and includes things like top interview questions, top FAANG questions, video explanations, and more.</p>
<p>You also get a nice profile page on LeetCode. You can check out mine <a target="_blank" href="https://leetcode.com/FBA/">here</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/7rv0yyw75le21sndymru.png" alt="My LeetCode profile" width="600" height="400" loading="lazy"></p>
<h2 id="heading-5-kagglehttpswwwkagglecom">5. <a target="_blank" href="https://www.kaggle.com/">Kaggle</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/28oqgu17gaiczlsv0k2t.png" alt="Kaggle banner" width="600" height="400" loading="lazy"></p>
<p>I was pretty confused before writing this section, as Kaggle is not a typical website for coding practice. This website is basically for Data Science, and it's one of the most popular websites out there for this. </p>
<blockquote>
<p>Kaggle is an online community platform for data scientists and machine learning enthusiasts. </p>
<p>It is a popular crowd-sourced platform to attract, nurture, train, and challenge Data Science and Machine Learning enthusiasts from all around the world to come together and solve numerous Data Science, Predictive Analytics, and Machine Learning problems.</p>
</blockquote>
<p>So if you are interested in Data Science, then you should check this website. Here you can check others' notebooks, submit your notebook, join in the contests, improve datasets, and so on.</p>
<blockquote>
<p>Kaggle allows users to collaborate with other users, find and publish datasets, use GPU integrated notebooks, and compete with other data scientists to solve data science challenges.</p>
</blockquote>
<p>Also, if you are interested in data science, but don't know where to start, then don't worry! Kaggle has got you covered. You can check their <a target="_blank" href="https://www.kaggle.com/learn">learning section</a> where they have many free courses which will teach you a lot of stuff from the beginning.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/b2jgodslps0qrx6txu59.png" alt="kaggle free courses" width="600" height="400" loading="lazy"></p>
<p>✨ BONUS: If you want to learn more then I'd suggest that you complete the <a target="_blank" href="https://www.youtube.com/playlist?list=PLWKjhJtqVAblQe2CCWqV4Zy3LY01Z8aF1">data science playlist</a> from freeCodeCamp's YouTube channel.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/voyp7nxuepo7azxw6syk.png" alt="fcc courses" width="600" height="400" loading="lazy"></p>
<p>Kaggle also provides rankings and a nice user profile. You can check out my profile <a target="_blank" href="https://www.kaggle.com/mdfahimbinamin">here</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/lqcwsixdumi4bxc670s9.png" alt="FBA kaggle" width="600" height="400" loading="lazy"></p>
<h2 id="heading-6-codechefhttpswwwcodechefcom">6. <a target="_blank" href="https://www.codechef.com/">CodeChef</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/8ma2hdum4nd1eo8zmjek.png" alt="CodeChef banner image" width="600" height="400" loading="lazy"></p>
<p>CodeChef is another popular Indian website like <a class="post-section-overview" href="#heading-2-hackerrank-2">HackerRank</a> where you can solve a lot of problems, take part in contests, and so on.</p>
<p>You can filter the problems based on different categories and solve them using any of the most popular programming languages. </p>
<p>They also have a learning section on their website where you can learn how to solve problems in a systematic way. This is super helpful, especially for beginners.</p>
<p>In their learning section, you can choose self-learning, mentored learning, and doubt support. Some of them are free of charge, but in some courses, you have to pay before you can start them.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/qyfzttpt7eq78zdqkdt9.png" alt="mentor price" width="600" height="400" loading="lazy"></p>
<p>This website also provides user ranking including the global ranking and country-wide ranking. They also provide a user profile on their website. You can check out mine <a target="_blank" href="https://www.codechef.com/users/fahimfba">here</a> although I am not active on most of the websites right now. 😅</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/vhq0agb1ijtdbsj3s7gu.png" alt="codechef fba" width="600" height="400" loading="lazy"></p>
<h2 id="heading-7-atcoderhttpsatcoderjp">7. <a target="_blank" href="https://atcoder.jp/">AtCoder</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/rqsw6hjecf5fqpqoxowp.png" alt="AtCoder banner image" width="600" height="400" loading="lazy"></p>
<blockquote>
<p>AtCoder is a programming contest website based in Japan. Makoto Soejima (rng_58) who is one of the former admins and problem writers from Topcoder is a founding member of AtCoder.</p>
</blockquote>
<p>On this website, you can take part in different programming contests. They held regular programming contests on Saturdays and Sundays. Also, you can solve problems from previously held programming contests. </p>
<p>I have seen a lot of people regularly participate in the programming contests and solve problems previously used in the contests regularly by solving problems on AtCoder. I also tried that for a while to check the efficiency, and truth to be told, it was really effective.</p>
<p>Here you can also check the global ranking. Here you will also get your own profile page where you and others can see your global ranking and so on.</p>
<h2 id="heading-8-topcoderhttpswwwtopcodercom">8. <a target="_blank" href="https://www.topcoder.com/">Topcoder</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/89rcnewgpzfxbsb37inz.png" alt="Topcoder banner image" width="600" height="400" loading="lazy"></p>
<blockquote>
<p>Topcoder (formerly TopCoder) is a crowdsourcing company with an open global community of designers, developers, data scientists, and competitive programmers. Topcoder pays community members for their work on the projects and sells community services to corporate, mid-size, and small-business clients.</p>
</blockquote>
<p>Here you can earn, learn, and do a lot more in their MVP program. For earning, you can participate in five different tracks, become a copilot, become a reviewer, and also get a freelance contract gig through <a target="_blank" href="https://www.topcoder.com/community/member-programs/gigs">Topcoder Gig Work</a>.</p>
<p>Personally, I feel this website is a little bit overwhelming for beginners. You can get more details in the YouTube videos I have made for you.</p>
<h2 id="heading-9-coderbytehttpscoderbytecom">9. <a target="_blank" href="https://coderbyte.com/">Coderbyte</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/5vm2yrbrsuhfi6lvsc1c.png" alt="Coderbyte banner image" width="600" height="400" loading="lazy"></p>
<p>Coderbyte has a huge collection of problems that you can solve. They also offer a challenging library, starter courses, interview kits, career resources and so on. </p>
<p>To get all the features, you need to buy a subscription plan from them. I personally liked their interview kit a lot.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/qnrvl8ja8rqwb6zun4e0.png" alt="Interview kits" width="600" height="400" loading="lazy"></p>
<p>Here you will also get a personal profile page.</p>
<h2 id="heading-10-project-eulerhttpsprojecteulernet">10. <a target="_blank" href="https://projecteuler.net/">Project Euler</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/howuvtc16ehu8lqbw520.png" alt="Project Euler banner image" width="600" height="400" loading="lazy"></p>
<blockquote>
<p>Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve.</p>
</blockquote>
<p>Project Euler is a great website for solving mathematical challenging problems. But solving a problem on this website requires more than just simple mathematical knowledge. </p>
<p>If you want to solve mathematical problems in a more analytical way, then this website will come in handy.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/94mguaui3nj6s7pcw942.png" alt="Problem set" width="600" height="400" loading="lazy"></p>
<h2 id="heading-11-codewarshttpswwwcodewarscom">11. <a target="_blank" href="https://www.codewars.com/">Codewars</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/ygf3uzjmuiycbu34fv5l.png" alt="Codewars banner image" width="600" height="400" loading="lazy"></p>
<p>Codewars is a coding challenge website for people of all programming levels. It claims to have a community of over 3 million developers. </p>
<p>One of the biggest benefits of this website is that it is highly focused on algorithms like LeetCode. Moreover, if your goal is to get very good at writing clean and efficient programs, then this website can be a great asset to you.</p>
<p>In Codewars, you will see <strong>Kata</strong> and <strong>Kyu</strong> a lot. </p>
<blockquote>
<p>Kyu (or Kyū) indicates the number of degrees away from master level (Dan). This is why they count downward. Once you reach master level, we count upward. Black belts in martial arts are Dan level.</p>
<p>On Codewars, kata are code challenges focused on improving skill and technique. Some train programming fundamentals, while others focus on complex problem solving. Others are puzzles meant to test your creative problem solving, while others are based on real world coding scenarios.</p>
</blockquote>
<p>If you want to know more about how the ranking system works on Codewars, then simply check their docs <a target="_blank" href="https://docs.codewars.com/gamification/ranks/">here</a>.</p>
<p>On Codewars you will also get a nice profile page like <a target="_blank" href="https://www.codewars.com/users/FBA">mine</a>. Keep in mind that I haven't solved that much on this website; therefore my profile page would seem empty. 😅</p>
<p>Additionally, I find their <a target="_blank" href="https://www.codewars.com/users/leaderboard">leaderboard page</a> quite amusing.</p>
<h2 id="heading-12-spojhttpswwwspojcom">12. <a target="_blank" href="https://www.spoj.com/">SPOJ</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/4awf6fpql913onx0111u.png" alt="SPOJ banner image" width="600" height="400" loading="lazy"></p>
<p>SPOJ is a website that contains huge problems for solving. It claims to have 315,000 registered users and over 20,000 problems.</p>
<p>According to GFG,</p>
<blockquote>
<p>You can start solving problems with maximum submission and follow or check the submission of good coders here. Once you solved around 50-70 problems and build some confidence, you can participate in different contests.</p>
</blockquote>
<p>Their problem set is also quite amusing.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/tm5g46f3qie8kr9aizwk.png" alt="SPOJ problem set" width="600" height="400" loading="lazy"></p>
<p>You will also get a nice user profile page here which you can use to showcase your problem solve skills.</p>
<h2 id="heading-13-codingamehttpswwwcodingamecom">13. <a target="_blank" href="https://www.codingame.com/">CodinGame</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/ybatrql4wgi7l45v0j57.png" alt="CodinGame banner image" width="600" height="400" loading="lazy"></p>
<p>In CodinGame, you can improve your coding skills with fun exercises in more than 25 programming languages. </p>
<p>It is a good website for intermediate and advanced software engineers to have fun while continuing to keep their skills sharp. Also, the challenges are gamified and the multiplayer access means that users can challenge friends and coworkers.</p>
<h2 id="heading-14-geeksforgeekshttpswwwgeeksforgeeksorg-popularly-known-as-gfg">14. <a target="_blank" href="https://www.geeksforgeeks.org/">GeeksforGeeks</a> (Popularly known as GFG)</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/wo3e2tzi15abavql5c9w.png" alt="GeeksforGeeks banner Image" width="600" height="400" loading="lazy"></p>
<p>You might wonder why I am including GFG in this article as it only provides algorithms, tutorials, and so on. </p>
<p>Well, that's not all they offer. Yes, GFG is pretty popular for its tutorials, algorithms, and so on, but they also provide a nice problem-solving platform <a target="_blank" href="https://practice.geeksforgeeks.org/">here</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/m8g6z50xvemt64t4pwvw.png" alt="practice GFG" width="600" height="400" loading="lazy"></p>
<p>You can also filter the problems as you see fit for yourself.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/iyajkn39wvqiqzpk52ba.png" alt="GFG filter" width="600" height="400" loading="lazy"></p>
<p>You will also get your profile page where you can show your progress in problem solving on the GFG website.</p>
<h2 id="heading-15-tophhttpstophco">15. <a target="_blank" href="https://toph.co/">Toph</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/5x4jgisa0oeaso2h2lu4.png" alt="Toph banner image" width="600" height="400" loading="lazy"></p>
<p>Competitive programmers participate in programming contests and solve many problems on this website. This website is kind of special to the Bangladeshi people as the Bangladeshi universities arrange many programming contests through it.</p>
<p>You can solve problems in different categories on this website, and they also offer you a nice profile page. They also provide rankings based on your performance in the programming contests.</p>
<p>If you are a complete beginner in problem solving, then this website can help you a lot in starting your problem solving journey.</p>
<h2 id="heading-16-lightojhttpslightojcom">16. <a target="_blank" href="https://lightoj.com/">LightOJ</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/anla94vgv2zsjw4a4woy.png" alt="LightOJ banner image" width="600" height="400" loading="lazy"></p>
<p>In LightOJ, you can solve a lot of categorized problems. It is highly based on solving algorithmic problems. Their problems are categorized as below:</p>
<ul>
<li>LightOJ Volumes</li>
<li>Warm-Up</li>
<li>Advanced Search Techniques</li>
<li>Database</li>
<li>Data Structures</li>
<li>Divide And Conquer</li>
<li>Dynamic Programming</li>
<li>Fast Fourier Transform</li>
<li>Flow/Matching</li>
<li>Game Theory</li>
<li>Geometry</li>
<li>Graph Theory</li>
<li>Greedy</li>
<li>Math</li>
<li>Matrix</li>
<li>Parsing/Grammar</li>
<li>Recursion/Branch and Bound</li>
<li>String</li>
</ul>
<p>They also provide you with a nice profile page where you can see your activities. It might seem odd, but sometimes I find this website better than LeetCode in some cases. Moreover, everything you do on this website is completely free of cost!</p>
<h2 id="heading-17-exercismhttpsexercismorg">17. <a target="_blank" href="https://exercism.org/">Exercism</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/mik6ovwsb4vsej25gtfg.png" alt="Exercism banner image" width="600" height="400" loading="lazy"></p>
<p>You can develop your programming fluency in 57 different programming languages with their unique blend of learning, practice and mentoring. </p>
<p>Exercism is completely free of cost, and it's built by people like us. You can also contribute or donate to them to support their amazing service for free.</p>
<p>They also provide a very nice user profile page which also shows everything you have done on their website, starting from publishing to maintaining.</p>
<p>On their <a target="_blank" href="https://exercism.org/tracks">tracks</a> page, you will get a list of 57 different programming languages where you can start your practice. </p>
<p>Solving problems on their website seems super fun to me. I really liked the way they manage their website.</p>
<h2 id="heading-18-online-judgehttpsonlinejudgeorg-commonly-known-as-uva">18. <a target="_blank" href="https://onlinejudge.org/">Online Judge</a> (Commonly known as UVa)</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/fat4pnmszr5xo5yqus73.png" alt="Online Judge banner image" width="600" height="400" loading="lazy"></p>
<p>This is one of the oldest websites out there for solving programming-related problems. I still find it to be a very hard website for beginners. The UI and navigation of the website are also very old. </p>
<p>All of the questions come with a PDF here. You need to download the PDF file of the problem if you want to solve problems as they do not offer a direct preview of the questions.</p>
<p>They have a lot of problemsets on their <a target="_blank" href="https://onlinejudge.org/index.php?option=com_onlinejudge&amp;Itemid=8">website</a>. I still find a lot of users using this website nowadays. Therefore, I mentioned it here.</p>
<h2 id="heading-19-hackerearthhttpswwwhackerearthcom">19. <a target="_blank" href="https://www.hackerearth.com/">HackerEarth</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/xm0bhrc4ephex78tddj5.png" alt="HackerEarth banner image" width="600" height="400" loading="lazy"></p>
<blockquote>
<p>HackerEarth is an Indian software company headquartered in San Francisco, US, that provides enterprise software that helps organisations with their technical hiring needs. HackerEarth is used by organizations for technical skill assessment and remote video interviewing.</p>
</blockquote>
<p>You can practice your problem solving skills from their <a target="_blank" href="https://www.hackerearth.com/practice/">practice</a> page. Also, you can participate in programming challenges and hackathons from their <a target="_blank" href="https://www.hackerearth.com/challenges/">challenges</a> page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/fj62qgttmbqgatvcbdzt.png" alt="HackerEarth challenges page" width="600" height="400" loading="lazy"></p>
<p>Their <a target="_blank" href="https://www.hackerearth.com/practice/interviews/">interview prep</a> section is quite amazing. You can take part in the mock assessments for the Adobe Coding Test, Facebook Coding Test, and Amazon Coding Test.</p>
<p>They also provide a nice user profile for everyone.</p>
<h2 id="heading-20-code-jam-googles-coding-competitionshttpscodingcompetitionswithgooglecomcodejam">20. <a target="_blank" href="https://codingcompetitions.withgoogle.com/codejam">Code Jam - Google's Coding Competitions</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/m8l89xfpsqt1yak0d94c.png" alt="Code Jam banner image" width="600" height="400" loading="lazy"></p>
<blockquote>
<p>Google Code Jam is an international programming competition hosted and administered by Google. The competition began in 2003. The competition consists of a set of algorithmic problems which must be solved in a fixed amount of time.</p>
</blockquote>
<p>If you are interested in taking part in the Code Jam contests, then their <a target="_blank" href="https://codingcompetitions.withgoogle.com/codejam/archive">archive section</a> is full of amazing resources for you where you can get the earlier questions and practice them. </p>
<p>They also offer a lot of prize money in their contests. An example can be:</p>
<blockquote>
<p>Out of thousands of participants, only the top 25 will head to the World Finals to compete for the title of World Champion and cash prizes of up to $15,000. And there will be plenty of other prizes to go around — the top 1,000 competitors will win an exclusive Code Jam 2022 t-shirt.</p>
</blockquote>
<h2 id="heading-21-icpchttpsicpcglobal-international-collegiate-programming-contest">21. <a target="_blank" href="https://icpc.global/">ICPC</a> - International Collegiate Programming Contest</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/m8w6ezori7cpgiytzxmi.png" alt="ICPC banner image" width="600" height="400" loading="lazy"></p>
<p>ICPC is one of the most prestigious programming contests in the world.</p>
<blockquote>
<p>The International Collegiate Programming Contest, known as the ICPC, is an annual multi-tiered competitive programming competition among the universities of the world.</p>
</blockquote>
<p>Who is eligible for ICPC?</p>
<blockquote>
<p>ACM/ICPC is a team-based competition with certain requirements to the participants: only post-secondary students and first-year post-graduate students no older than 24 are eligible; each team consists of three members. One can participate in the finals no more than twice and in the regionals no more than five times.</p>
</blockquote>
<h1 id="heading-personal-opinion">Personal Opinion</h1>
<p>If you are a complete beginner, then start with <a class="post-section-overview" href="#1beecrowdformerlyuri">beecrowd</a>. If you want to start problem solving along with learning a specific programming language, then start with <a class="post-section-overview" href="#heading-2-hackerrank-2">HackerRank</a>. </p>
<p>After solving almost 50+ problems on beecrowd or HackerRank, start solving problems on <a class="post-section-overview" href="#heading-3-codeforces-1">Codeforces</a>. The first time, you won't be able to do that well in the programming contests on Codeforces, and that is completely okay – it is natural. You just need to try regularly. The questions might seem pretty hard to you, but it'll become easier day by day after solving problems continuously. </p>
<p>You can participate in <a class="post-section-overview" href="#7atcoder">AtCoder</a> the day you start solving problems on Codeforces. You can also try <a class="post-section-overview" href="#heading-6-codechef-1">CodeChef</a>, but I find Codeforces is enough in this case. </p>
<p>This will prepare you for the <a class="post-section-overview" href="#21icpcinternationalcollegiateprogrammingcontest">ICPC</a> and <a class="post-section-overview" href="#heading-20-code-jam-googles-coding-competitions-1">Code Jam</a>. Don't forget to solve the earlier questions on Code Jam.</p>
<p>If you want to gain expertise in Data Science, then simply go for <a class="post-section-overview" href="#heading-5-kaggle-1">Kaggle</a>.</p>
<p>If you want to gain expertise in Algorithms, then <a class="post-section-overview" href="#4leetcode">LeetCode</a>, and <a class="post-section-overview" href="#16lightoj">LightOJ</a> are your only places. <a class="post-section-overview" href="#heading-14-geeksforgeeks-popularly-known-as-gfg-1">GeeksforGeeoks</a> will also help you in this aspect. </p>
<p>For LeetCode, get some help from <a target="_blank" href="https://twitter.com/nicholaswwhite">Nick White</a>. His <a target="_blank" href="https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-">LeetCode Solution</a> playlist has 189 videos as of today, and you will learn a lot from him, trust me! </p>
<p>Another good resource is <a target="_blank" href="https://neetcode.io/">Neetcode</a> where you can get curated problems and their solutions from LeetCode. The official <a target="_blank" href="https://www.youtube.com/c/NeetCode/featured">YouTube channel of Neetcode</a> is also a great channel.</p>
<h1 id="heading-additional-websites">Additional Websites</h1>
<p>You might find the websites below useful too!</p>
<h2 id="heading-stopstalkhttpswwwstopstalkcom">⭐ <a target="_blank" href="https://www.stopstalk.com/">StopStalk</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/6ixwem6zdmrn6bw29d32.png" alt="StopStalk banner image" width="600" height="400" loading="lazy"></p>
<p>This website retrieves your friends' recent submissions from various competitive websites (Such as Codeforces, SPOJ, HackerRank, Timus, and so on) and shows all of them in one place. You can check my StopStalk profile from <a target="_blank" href="https://www.stopstalk.com/user/profile/FBA">here</a>.</p>
<h2 id="heading-codersrankhttpscodersrankio">⭐ <a target="_blank" href="https://codersrank.io/">CodersRank</a></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/83l29mbplkwx2pf535bi.png" alt="CodersRank banner image" width="600" height="400" loading="lazy"></p>
<p>This is a platform made to help developers in job-seeking and professional growth. Here, your CodersRank profile serves as a proven track record of your coding knowledge. </p>
<p>You have to connect your private and public repositories here from GitHub to generate your true CodersRank profile. You can also check my CodersRank profile from <a target="_blank" href="https://profile.codersrank.io/user/fahimfba/">here</a>.</p>
<h1 id="heading-conclusion">Conclusion</h1>
<p>Thanks for reading the entire article. If it helps you then you can also check out other articles of mine at <a target="_blank" href="https://www.freecodecamp.org/news/author/fahimbinamin/">freeCodeCamp</a>.</p>
<p>If you want to get in touch with me, then you can do so using <a target="_blank" href="https://twitter.com/Fahim_FBA">Twitter</a>, <a target="_blank" href="https://www.linkedin.com/in/fahimfba/">LinkedIn</a>, and <a target="_blank" href="https://github.com/FahimFBA">GitHub</a>. </p>
<p>You can also <a target="_blank" href="https://www.youtube.com/@FahimAmin?sub_confirmation=1">SUBSCRIBE to my YouTube channel</a> (Code With FahimFBA) if you want to learn various kinds of programming languages with a lot of practical examples regularly.</p>
<p>If you want to check out my highlights, then you can do so at my <a target="_blank" href="https://www.polywork.com/fahimbinamin">Polywork timeline</a>.</p>
<p>You can also <a target="_blank" href="https://fahimbinamin.com/">visit my website</a> to learn more about me and what I'm working on.</p>
<p>Thanks a bunch!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ In-Demand Tech Skills for 2022 –Lessons Learned from Candidate Data from 191 Countries ]]>
                </title>
                <description>
                    <![CDATA[ By Jakub Kubrynski A popular Chinese proverb says: “The best time to plant a tree was 20 years ago. The second best time is now.”  The same applies to acquiring new tech skills. No matter if you’re a junior developer or a seasoned software engineer, ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/in-demand-tech-skills-devskiller-report/</link>
                <guid isPermaLink="false">66d45f31246e57ac83a2c771</guid>
                
                    <category>
                        <![CDATA[ Career Change ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Career development  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ jobs ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 09 Jun 2022 19:47:31 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/06/image_processing20220203-2863084-peyey.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Jakub Kubrynski</p>
<p>A popular Chinese proverb says: “The best time to plant a tree was 20 years ago. The second best time is now.” </p>
<p>The same applies to acquiring new tech skills. No matter if you’re a junior developer or a seasoned software engineer, there is always something you can work on and improve.</p>
<p>But how do you choose this “something” that might help you advance your career in the IT industry? With plenty of online courses and new IT skill sets demanded by employers, you can easily get dizzy.</p>
<p>Don't worry – DevSkiller is coming to the rescue with data-backed insights based on the findings from the <a target="_blank" href="https://go.devskiller.com/it-skills-2022-freecodecamp">2022 edition of our Top IT Skills Report</a>. We’ve arrived at these insights by analyzing thousands of coding tests sent to candidates from 191 countries through our TalentScore tech screening solution by companies recruiting for IT-related positions.</p>
<p>Based on our proprietary data, we’ve compiled a set of useful tips on what to learn. This is based on what job you hope to get in the future.</p>
<p>Choose wisely and remember that the IT industry is waiting not only for seasoned developers but also for greenhorns. As the data from the DevSkiller platform show, around 40% of technical test invitations are for junior developer roles.</p>
<h2 id="heading-if-you-want-to-grow-together-with-the-market">If you want to grow together with the market</h2>
<p>You've likely heard that “data is the new oil”. But only a handful of the big tech companies have figured out how to extract this "oil" and process it in order to be able to fuel their businesses. </p>
<p>This has brought about the accelerating demand on the job market for data-related roles like data scientists, data analysts, or data engineers. </p>
<p>If the thought of organizing random numbers in a set of structured tables or charts positively tickles your mind, a data-related role might be the right fit for you.</p>
<p>Just keep in mind that the market of data-related positions is not as structured as the dashboards you might be expected to create. As the market develops and gets more mature, you might be expected to learn new skills which we can’t even imagine right now. </p>
<p>Having said that, the reward for this flexibility and eagerness to learn may be huge. </p>
<p>According to the insights from the latest edition of the DevSkiller report, data science tops the ranking of in-demand IT skills of the future. The popularity of recruitment tasks from this area grew in 2021 by 295% on a yearly basis.</p>
<p><img src="https://lh3.googleusercontent.com/MxzOQZg3cN_y9QHHXOXMQSIU2eslvUSyhMncdESDYByw_WLaYnU3I4rx7FYEcDvvjTnPvmXPfbhkErW8hRXk4wDd31_gUj_A2K_v6xnd4tZh3mVRzGRdJxxDhwGgMT6N2Bof183XMFVxueeSuw" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-if-you-want-to-enter-the-it-job-market-asap">If you want to enter the IT job market ASAP</h2>
<p>Another big thing as far as in-demand IT skills of the future go is Python. But this demand isn't the only advantage when it comes to your choice of programming language to learn. </p>
<p>The data we compiled for our Top IT Skills Report show that Python – with a 54% ratio of test invites for junior roles – was the most sought-after technology among developers beginning their careers in the IT industry.</p>
<p>Given the fact that Python is relatively easy to learn in comparison to other programming languages, it might be a perfect choice to speed up your entrance to the IT job market. Just remember that the fastest way is not always the most satisfying one.</p>
<p><img src="https://lh5.googleusercontent.com/D78kYpR1xUFZOrg0OdW-d6kis0UYjZzV6R1qI6u_8qvOW2CHei9AWQ0NBU3Diny0lcQmyCTCZ_J5AsYSVlFeo7zavBmfuLfzHRS2gTx-PpohtwwVsBF4AYKhWjOb8YHkSmkYT_0ngExl4tneGQ" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-if-you-want-to-work-in-a-big-company">If you want to work in a big company</h2>
<p>Trying to find your place on the job market may be compared to driving a car. Some people like to drive fast and reach their destination quickly, but others prefer to move forward slowly but securely. </p>
<p>If you’re in the latter group, you should consider learning one of the most mature and popular programming languages like Java or SQL. This can help you land a job in one of the large corporations. This may be not as exciting as working for a cool ever-pivoting startup, but it'll provide you with a certain level of stability and security you might find appealing.</p>
<p>As the data compiled from the <a target="_blank" href="https://devskiller.com/talentscore/">DevSkiller TalentScore</a> show us, both Java and SQL are in the top of the ranking of IT skills sought after by hiring companies. Each of those languages was seen in 19% of coding test invites sent by tech recruiters via our platform.</p>
<p><img src="https://lh5.googleusercontent.com/90WZ7oiNvVALyzh32lv6GDcm9PKpZrvzhVFXtgXdT7SnzbByKeJmjZWbmU61RB3Zty1DAqnMofGAsdj4woygT6vZiuOFZqNIFi9bCd7VTgxeJ6Je8dcM-GKAeOz3fx-fCgNRMDiitU34JStnQg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>It's worth mentioning that there seems to be a shortage of those skills on the market. From the insights in our report, Java and SQL developers wait the longest to complete their coding tests in comparison to specialists with other tech skills.</p>
<p>One of the reasons behind this trend is that the recruitment pool is shallow and companies are competing for the same limited set of candidates.</p>
<p>In 2021, the average time to submit a Java coding test by a recruited candidate amounted to 4 days and 11 hours while in the case of SQL it was 3 days and 6 hours. The industry average for all languages in 2021 was 2 days and 16 hours.</p>
<p><img src="https://lh6.googleusercontent.com/PbXG_DIjtEIajlpioeo5JBnj93CaPjzq9kTe3OoadVGUNssaNeqLf4zh11uLE8zn9rnRQoh27igqFXGd8svl6tZ6hgbxUDG7SJNXcYZOMS55aFqC7QsFlMqVSgzV6Kx5OZVVe5MEhoBj9Yg2iQ" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-if-you-want-to-unleash-your-creativity">If you want to unleash your creativity</h2>
<p>Do you consider yourself to be a creative person who cares not only about how things work but also how they look? If that’s the case, you should consider pursuing a career as a front-end developer. </p>
<p>Maybe you won’t enjoy as much artistic freedom as a graphic designer, but rest assured that if you supplement your bias towards aesthetics with the practical coding skills, you’ll find a job you enjoy.</p>
<p>If that sounds appealing to you, remember that the front-end development is not just about HTML or any single language anymore. You’ll probably need to be able to surf across at least a couple of technologies during any given project. </p>
<p>Through the findings from our report, the 5 most commonly paired IT skills tested by recruiting companies nowadays are JavaScript and HTML, JavaScript and TypeScript, JavaScript and CSS, JavaScript and Angular, and CSS and HTML.</p>
<p><img src="https://lh6.googleusercontent.com/TqfBkys1ZT5NsTqNrM3O_gGLbtqGD6o32Towlclu_fUzL9IEl6fnn4HJtowpdXkZoI2PyBJgDRZdFtn3kENALYpOzLInddRxIsZ9oiVp96Ub4HOfK7v3MDfn2keK0Ofze79CpN4cgE_b-Zjpxg" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-if-you-dont-want-to-code-or-only-a-little-bit">If you don’t want to code (or only a little bit)</h2>
<p>Given the rising popularity of low-code/no-code platforms and tools, you no longer have to become a full blown software engineer in order to land a job in the IT.</p>
<p>Sure, in this industry, you will always be expected to possess a certain level of computer literacy and understand the key concepts of software development. But you no longer have to actually code in order to be an attractive candidate for employers.</p>
<p>The rising popularity of low-code/no-code is reflected in the dynamic growth of the number of tests checking the skills related to Salesforce available on DevSkiller TalentScore. Since 2020, it has grown by a whooping 1300% in response to the needs of our customers, that is hiring companies. </p>
<p>And keep in mind that Salesforce is just one of plenty low-code/no-code platforms used by your potential employers.</p>
<h2 id="heading-if-you-want-to-help-others-enter-the-it-industry">If you want to help others enter the IT industry</h2>
<p>Last but not least, maybe after careful consideration of your skills and preferences, you’ll decide that you’re more of a people person, and solving technical problems on a daily basis is not for you. Or you might be burned out in your current role and would like to try something new. </p>
<p>Don’t worry, the IT industry is not only about 0s and 1s and there are a number of options available for you to land your dream job that don’t require learning coding skills.</p>
<p>One of them is related to helping others find a well-suited job – that is, becoming a tech recruiter. </p>
<p>If this sounds like a good fit, you can start developing in this direction by acquiring the industry-recognized <a target="_blank" href="https://devskiller.com/devskiller-tech-recruitment-certification-course/">DevSkiller Tech Recruitment Certification</a>. Even though it may not look very difficult at first glance, our data show that only 61% of users pass our certification exam in the first attempt.</p>
<h2 id="heading-the-digital-skills-gap-is-working-to-your-advantage">The digital skills gap is working to your advantage</h2>
<p>As software has been eating the world for quite some time now, the IT industry has become one of the main drivers of job opportunity growth in the global economy.</p>
<p>In the European Union alone the gap between the supply and demand of IT specialist has been estimated at <a target="_blank" href="http://ec.europa.eu/newsroom/document.cfm?doc_id=45188">a minimum of 500,000 vacancies</a>. And this doesn't include all of the IT-related roles like tech recruiters and other positions that require at least some level of digital skills.</p>
<p>So if you're hesitant whether your upskilling or reskilling efforts will pay you off, the answer is: yes. The probability that you'll get a raise or move to a better paid job is close to 100%. The worst-case scenario? You'll simply find joy in learning something new.</p>
<p>Coding is fun, after all.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Get Ready for a Job in Tech – Tips for Beginners ]]>
                </title>
                <description>
                    <![CDATA[ A few months back, I was invited to talk to a group of engineering students of a renowned college in India. I was supposed to interact with them, motivate them, and finally tell them, "What does the industry (the "job" world) look like?", "How can yo... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-get-ready-for-a-job-in-tech/</link>
                <guid isPermaLink="false">66bdffdc8c9c9099893ce78c</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Career development  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Tapas Adhikary ]]>
                </dc:creator>
                <pubDate>Thu, 14 Apr 2022 17:05:57 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/04/1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>A few months back, I was invited to talk to a group of engineering students of a renowned college in India. I was supposed to interact with them, motivate them, and finally tell them, "What does the industry (the "job" world) look like?", "How can you get ready for it?"</p>
<p>After spending 15+ years developing software, releasing products, managing teams, clients, and expectations, I had a bagful of thoughts to share with the younger generation. </p>
<p>Fortunately, I was able to summarize everything in eight high-level points without making my audience bored with it.</p>
<p>I will share those points in this article to help you better prepare for the upcoming opportunities and challenges. All the points mentioned in the article apply to everyone, irrespective of their current experience in the industry. </p>
<p>Wherever I mention the term "industry" in this article, I mean the "Software Industry" as my experience relates directly to it. Happy reading!</p>
<h2 id="heading-there-are-three-types-of-people-in-the-industry">There are Three Types of People in the Industry</h2>
<p>We can categorize people working in the software industry into three major groups.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/2.png" alt="Image" width="600" height="400" loading="lazy"></p>
<ul>
<li><strong>Following</strong>: People who need career guidance and a path defined to accomplish their career goals. They are seeking feedback and validation from people already doing the required things to grow in the industry.</li>
<li><strong>Doing</strong>: This set of people is already doing things needed to grow in the industry. They stay <code>relevant</code> to the latest and greatest things out there. They sharpen their <code>skills</code> periodically and help their followers grow by sharing knowledge and information. There are fewer people in this category than in the <code>Following</code> category.</li>
<li><strong>Doing + What's Next?:</strong> This set of folks are not only doing things but also creating specialities for the future. They cultivate visions of  <code>what's next?</code> and work towards it with a lot of <code>passion</code>. Their efforts don't necessarily have to result in some extraordinary output, but they keep trying. Again, fewer people are in this category than we discussed previously in the <code>Doing</code> category.</li>
</ul>
<p>Please note that these categories don't determine who is senior or junior in the industry or the organization. Instead, these categories exist in all job grades, levels, and work functions.</p>
<p>Also, the exciting thing is that a single person can play their part in all three categories based on situation, skill, and context. </p>
<p>For example, Ms X is <code>doing</code> an excellent in web development technologies, solving problems, and creating tools to help things in the future. She is now starting her blogging journey to share her knowledge widely. She is learning from the technology blogging community by <code>following</code> established bloggers.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/ladder.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>So how do we make sure that we constantly build our presence in these categories and move the needle to get into the <code>Doing</code> and <code>Doing+ What's Next</code> phases?</p>
<h2 id="heading-8-tips-to-help-you-advance-your-coding-career">8 Tips to Help You Advance Your Coding Career</h2>
<p>Yes, I want to summarize my tips into eight crucial points to focus on. You may be doing some or all of these already or haven't started on them. Either way is fine, and I hope it encourages you to step up further from here.</p>
<h2 id="heading-1-build-habits">1. Build Habits</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/4.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Our <code>habits</code> drive us in our life. We build many of them unknowingly, and we have to build some consciously. </p>
<p>A good habit helps you develop the right attitude towards solving problems, handling challenging situations, and making better decisions. It helps you set rational targets and get close to them. People with good habits are organized, thoughtful, approachable, and have a positive mindset.</p>
<p>So what are some of the good habits? There are plenty, and here are some basic ones.</p>
<ul>
<li>Reading</li>
<li>Writing, taking notes</li>
<li>Physical exercise</li>
<li>Setting a schedule</li>
<li>Getting organized</li>
<li>Saving money</li>
<li>Learning</li>
</ul>
<p>Build habits, good ones. It will set the stage for you to decide between good and bad, short term and long term, dos vs don'ts, and right vs wrong.</p>
<p>But, how do we build good habits? Well, I can write a few articles on this topic alone, but I'll emphasize these points for now:</p>
<ul>
<li>Find a habit and a reason why you want to build it. What's the end goal?</li>
<li>Find a trigger for it. A trigger motivates you to start and pushes you to stay on it. For example, listening to music could trigger starting physical exercise.</li>
<li>Plan for it knowing your limitations and all the chances you have of failing.</li>
<li>If you failed to sustain the habit, think about what went wrong. Do you need it? Readjust, replan and start again.</li>
</ul>
<h2 id="heading-2-find-your-passion">2. Find Your Passion</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/5.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Your <code>passion</code> keeps you going and helps you live a motivated professional and personal life. Passion is an "individual" thing that may impact many people in your circles. You can be passionate about technology, health, writing – anything that you love to do constantly.</p>
<p>However, one piece of advice I got early in my career was, "don't follow your passion blindly". The passion should be linked with your goals, career, and work. It is essential to find the difference between a hobby and a passion. You may have a hobby unrelated to your career, but your passion should relate to it.</p>
<p>It is essential to identify your passion, fuel it with a lot of practice, and renew it from time to time.</p>
<h2 id="heading-3-connect-with-people">3. Connect with People</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/6.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><code>Social networking</code> for developers and the <code>developer communities</code> are influential in building your career. You get to meet like-minded people, find role models, get opportunities to collaborate, learn, and find jobs.</p>
<p>Whether you are a student, a fresher, or a veteran professional, social networking for developers is undoubtedly a great option to consider. The platforms like <a target="_blank" href="https://twitter.com/">Twitter</a>, <a target="_blank" href="https://linkedin.com/">LinkedIn</a>, <a target="_blank" href="http://showwcase.com">Showwcase</a>, and <a target="_blank" href="https://polywork.com/">Polywork</a> are great ones to check out. You can connect with people of interest, learn from them, and contribute.</p>
<p>Learning and sharing is a wonderful cycle that builds knowledge. It grows when we come out of silos and learn in public. Also, learning from the experience of others will accelerate our growth. So, connect.</p>
<h2 id="heading-4-stay-curious">4. Stay Curious</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/7.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><code>Curiosity</code> is the desire to learn something new. Stay curious and be open to learning. Curiosity brings questions and doubts to mind. The fun is in finding the answers. </p>
<p>So, please ask questions when you have doubts, don't be shy thinking about whether it is a silly question, what people will think, and so on.</p>
<p>Staying curious will help you find how things work under the hood. There are many benefits of knowing the internals of things when it comes to programming. So, stay curious, and keep exploring.</p>
<h2 id="heading-5-develop-side-hustles">5. Develop Side Hustles</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/8.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Here comes my favourite point, <code>Side Hustles</code>. When you build a habit of doing things, fuel your passion directed towards the career goal, look to learn new things, and connect with people, you have an ocean of opportunities for side hustles. </p>
<p>But wait, what are side hustles, and why are they needed? Don't we have enough things to do already? Yes, very practical questions. Let's get to them one by one.</p>
<p>Side hustles are anything you do outside of your regular job to earn knowledge, reputation, money, and growth. There are various form of side hustles like,</p>
<ul>
<li>Contributing to the open-source projects</li>
<li>Writing articles on a blog</li>
<li>Mentoring</li>
<li>Teaching</li>
<li>Freelancing</li>
<li>Community Building</li>
<li>Releasing books, e-books</li>
<li>Speaking at conferences</li>
<li>Creating video content...and many more</li>
</ul>
<p>Now all these need time, and of course, you might have something called a "primary" job to take care of. However, most of the above don't need a massive amount of time or dedication. Also, all of these can be the by-product of your "primary" job. </p>
<p>Let's take a few examples:</p>
<ul>
<li>Have you solved a technical problem at work? Write about it as an article. Create a video explaining the steps and upload it on YouTube. Share about it on StackOverflow, the Showwcase community, Twitter, and LinkedIn.</li>
<li>Do you have expertise in specific areas and have taken many notes on problem-solving? Move them to a doc and release them as an e-book. Don't worry about who will make use of them. There is always a great demand for quality content.</li>
<li>Do you love to teach? Spend 1 hour over weekends interacting with people interested in your areas of expertise. Speak about the topic at a conference.</li>
</ul>
<p>It is the right thing to do if you can manage side hustles without burnout. I have captured some of my personal experience doing <a target="_blank" href="https://blog.greenroots.info/why-do-you-need-to-do-side-projects-as-a-developer">side projects as a developer here</a>.</p>
<h2 id="heading-6-dont-neglect-soft-skills">6. Don't Neglect Soft Skills</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/9.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><code>Soft skills</code> are all about how humans interact with other human beings at work, in personal life, anywhere in the world, and in any possible modes (physically, remotely, virtually). Unlike technical skills, soft skills are less about learning and more about realizing.</p>
<p>Here are a few soft skills that need special attention,</p>
<ul>
<li>Patience</li>
<li>Empathy</li>
<li>Problem solving</li>
<li>Communication (not just the spoken or written language – it includes body language, confidence, resolving conflicts, and more)</li>
<li>Teamwork</li>
<li>Owning up to your mistakes or accountability</li>
<li>Time management - we will talk about it in a while.</li>
</ul>
<p>Some classes and courses teach you many of these soft skills. But you need to work on closing the gap yoursef and improve upon these skills gradually.</p>
<h2 id="heading-7-manage-your-time">7. Manage Your Time</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/10.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Let me start with a confession. I'm still learning how to manage time, but the good news is that I'm getting better at it. </p>
<p>Each of us has 24 hours in a day. So we need to manage all our activities in that duration. However, the problem comes with too many things to fit in that duration.</p>
<p>Here are some practices (principles too) I've been following and seeing good results.</p>
<ul>
<li>Everything is not crucial to us every day. The tricky part is that we assume that something is essential until we give enough thought to it.</li>
<li>So, we need to think and prioritize. It also includes regular activities like sleeping, exercise, eating food on time, health, family care, and so on.</li>
<li>Do not focus on things that are of lower priority priority or can wait for the next day or week.</li>
<li>Do not multi-task. It only increases stress and reduces productivity in the long run. Take up a task, focus on it in a time-boxed manner, complete it, and then get to the next one.</li>
<li>Take breaks between task switches. Rejuvenate and energize yourself.</li>
<li>If something is taking more time than anticipated, accept that it happens. You may not meet your time management plan every day.</li>
</ul>
<p>I hope these pointers help you with enough thought processes to start managing time better.</p>
<h2 id="heading-8-find-a-mentor">8. Find a Mentor</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/11.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Do yourself a favour. Find a good mentor. Learning from someone's knowledge and experience is immensely beneficial. So let's understand who a mentor can be, what their role is, and how we can benefit as mentees.</p>
<p>A <code>mentor</code> is a person who provides guidance and advice to you to make your aspirations a reality. It could be for career-building, learning a new area, understanding the business processes, and many more. </p>
<p>A mentor may help share experiences and resources, provide motivation, and set and track individual and project goals. A mentor can also be a teacher, but in most cases, teaching focuses on "how," and mentoring focuses on "why". </p>
<p>A <code>mentee</code> is a person who is being mentored, guided, and advised by a mentor. A mentee approaches a mentor with aspirations, ambition, and desire. The mentor guides the mentee to help them achieve their goals. </p>
<p>The mentee drives it to success with the mentor's help in a mentoring program. The mentee decides how much help and guidance they need to achieve the mentorship goal.</p>
<p>A mentor and mentee relationship should be beyond just the technology and project knowledge sharing. It is also about understanding each other's emotional space to achieve the mentoring goals.</p>
<p>Now the most crucial part is <code>finding a good mentor</code>. Several platforms offer mentorship. There are some great mentors creating values for many aspiring people. You can always try your luck and find the best connection. I feel it is more authentic if you find someone from your network or community circle whom you know personally. That may even work out much better.</p>
<h2 id="heading-in-summary">In Summary</h2>
<p>To summarize, focus on these points with all the pointers we have discussed in this article:</p>
<ul>
<li>Build good habits.</li>
<li>Find your passion carefully.</li>
<li>Connect with like-minded people and build your network.</li>
<li>Stay curious, and keep learning.</li>
<li>Use side hustles to grow.</li>
<li>Soft skills are essential.</li>
<li>Learn to manage your time.</li>
<li>Find a mentor.</li>
</ul>
<h2 id="heading-before-we-end">Before We End...</h2>
<p>I hope you found this article insightful and that it helps you to prepare better in your career. If you want to discuss further or just want to have a career chat, you can ping me with a DM on <a target="_blank" href="https://twitter.com/tapasadhikary">Twitter</a> or <a target="_blank" href="https://www.linkedin.com/in/tapasadhikary/">LinkedIn</a>.</p>
<p>Let's connect. I share my learnings on JavaScript, Web Development, Career, and Blogging on these platforms as well:</p>
<ul>
<li><a target="_blank" href="https://www.youtube.com/tapasadhikary?sub_confirmation=1">Subscribe to my YouTube Channel</a></li>
<li><a target="_blank" href="https://twitter.com/tapasadhikary">Follow me on Twitter</a></li>
<li><a target="_blank" href="https://github.com/atapas">Side projects on GitHub</a></li>
<li><a target="_blank" href="https://www.linkedin.com/in/tapasadhikary/">Connect on LinkedIn</a></li>
</ul>
<p>See you soon with my next article. Until then, please take care of yourself, and stay happy.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Python Project Ideas to Improve Your Résumé ]]>
                </title>
                <description>
                    <![CDATA[ Every project is an opportunity to learn – to figure out problems and challenges, and to invent and reinvent.  And as a developer, working on projects can improve not only your skills but also your résumé – which can increase your chances of getting ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/python-project-ideas-to-improve-your-resume/</link>
                <guid isPermaLink="false">66b8dbf7b16665d8febd7f51</guid>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ projects ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                    <category>
                        <![CDATA[ resume ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Hillary Nyakundi ]]>
                </dc:creator>
                <pubDate>Tue, 08 Mar 2022 23:34:04 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/02/Creative-Business-Template-Presentation.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Every project is an opportunity to learn – to figure out problems and challenges, and to invent and reinvent. </p>
<p>And as a developer, working on projects can improve not only your skills but also your résumé – which can increase your chances of getting that dream job.</p>
<p>Have you ever come across a job description that requires candidates to have a certain numbers of years of experience? I have – actually almost every job advert that I come across. These job descriptions can lower your self-esteem and make you feel underqualified, especially if you're a fresh graduate or just learning to code.</p>
<p>So, what happens when you don't have any work experience in the tech industry and you want to apply for a job? Well, the answer is simple – your portfolio is everything. You just have to use your past projects (and maybe build some new ones) to help you stand out.</p>
<p>In this guide, we will go through how to use experience from your projects to help you with your job applications. Our focus will be on some of the major Python projects that can help boost your résumé in a job environment.</p>
<h2 id="heading-why-build-projects-in-python">Why Build Projects in Python?</h2>
<p>You can use Python in many ways, including software and web development, machine learning, data analytics, and more. Knowing Python is a valuable skill for a coder. But if you're new to coding, it can be difficult to demonstrate your expertise on a résumé when you are applying for jobs. </p>
<p>Completing Python projects that you can clearly describe and that a hiring manager can look at is a great way to showcase your skills</p>
<p>If you aren’t sure how to write a résumé or your résumé needs a complete revamp, there are multiple resources online to help you out:</p>
<ul>
<li>Here's a handy <a target="_blank" href="https://www.jobseeker.com/en/resume">resume template</a> where you can easily input your details and add your Python projects as you complete them</li>
<li>Here's a guide on <a target="_blank" href="https://www.freecodecamp.org/news/how-to-write-a-resume-with-example/">How to Write a Résumé – Practical Guide with Example Résumé</a> </li>
</ul>
<p>Now, here are some ideas for Python projects that you can showcase on your résumé.</p>
<h2 id="heading-python-project-ideas">Python Project Ideas</h2>
<h2 id="heading-1-server-status-checker">1. Server Status Checker</h2>
<p>A server status checker is a script that will let you monitor if your server is active and running. It can show you how much downtime your server has had and give you regular updates of its performance. It'll also send immediate alerts when server is down. </p>
<p>Some of the tools that come in handy when developing such a script include:</p>
<ul>
<li>Socket - helps with connection to different servers.</li>
<li>SSL - required for wrapping the socket connection.</li>
<li>Date &amp; Time - Check what time server is active or went down.</li>
<li>smtplib - Send email alerts when the server is down.</li>
<li>Pickle - Saves the history of the server perfomance. </li>
</ul>
<p>To give you an idea how to get started with such a project, <a target="_blank" href="https://github.com/larymak/Python-project-Scripts/tree/main/ServerChecker">here's</a> some info to get you started.</p>
<h2 id="heading-2-url-shortener">2. URL Shortener</h2>
<p>A URL shortener is a program that takes long URLs and converts them into shorter ones that users can easily remember. Some of the the most common sites offering such services include Bit.ly and Cuttly.</p>
<p>This is a functional, useful tool that a hiring manager can easily test out in order to verify your Python skills such as use of APIs. </p>
<p>Although there are many such tools out there already, you can build one that offers a specific feature like customizable short URLs. </p>
<p>Almost everyone has come across a long, clunky URL that isn’t user-friendly or easy to remember, so creating a URL shortener shows that you can identify common problems and engineer a solution.</p>
<p>To help you get started with the idea and concept check out this repo <a target="_blank" href="https://github.com/larymak/Python-project-Scripts/tree/main/CONVERSION%20SCRIPTS/ShortenLinks">here</a>.</p>
<h2 id="heading-3-content-aggregator">3. Content Aggregator</h2>
<p>This is a tool that gathers information such as articles, social media posts, videos, images and so on. Then it displays all that information under one page. This means that users don’t have to manually search each website for what they are looking for.</p>
<p>Creating one is another good way to showcase how you can use your Python expertise to create a useful tool. Content aggregators can be used for many purposes, but they essentially search large swaths of the internet to find specific pieces of information.  </p>
<p>You could develop a general content aggregator or a more specialized one. For example, you might create a weather aggregator that pulls weather data from several of the top sources in your region to present a comprehensive weather report. </p>
<p>Working on a project like this you should be comforatble with concepts like:</p>
<ul>
<li>Python Basics</li>
<li>How to make use of virtual environments</li>
<li>Django fundamentals</li>
<li>Basics of HTML, CSS and JS</li>
</ul>
<h2 id="heading-4-desktop-assistant">4. Desktop Assistant</h2>
<p>When speaking about an assistant, think about Alexa, Siri and Google's virtual assistant. Lately there have been a rise in development of smart assistants, take a look at your favorite website chances are very high it has a bot that answers common question asked regularly.</p>
<p>Some common tasks that can be handled in your local machine with the help of an assistant include:</p>
<ul>
<li>Open and close any application on your system. </li>
<li>Search anything on Google, Youtube, Wikipedia and so on</li>
<li>Get weather updates for any location asked.</li>
<li>Tell current time &amp; date</li>
<li>Give calendar reminders on upcoming events. </li>
<li>Send email through voice commands. </li>
<li>Play or Stop music in our system. </li>
<li>Solve any algebraic and mathematical problems. </li>
<li>Restart, Sleep or Shut Down the system.</li>
</ul>
<p>In order to build a desktop assistant, you might need some modules to help out. Some of the key ones include: Pyttsx3, Speech Recognition, Twilio, Subprocesses, Wikipedia, and a web browser.</p>
<p>A desktop assistant can perform a single task or a variety of tasks, depending on the complexity of your coding. The more advanced your assistant is, the more impressive it will be to potential employers.</p>
<p>Speaking from experience, this can be a really amazing project to work on. Although I wasn't able to explore more functionalities, check out my idea for a <a target="_blank" href="https://github.com/larymak/VirtualAssistant">Desktop Assistant</a> and implement more by adding your own ideas for features.</p>
<h2 id="heading-5-task-automator">5. Task Automator</h2>
<p>A task automator can be similar to a desktop assistant. But it can also be more specialized for specific tasks. To give an idea of how developers utilize Pytho,n here are some of the most common automations:</p>
<ul>
<li>Performing automated market tasks</li>
<li>Sending out, replying to, and sorting emails</li>
<li>Filling out PDFs and Excel files</li>
<li>Converting images, renaming files</li>
<li>Performing math equations</li>
<li>Calculating exchange rates</li>
</ul>
<p>You can use Python to do alot of more tasks, too – just think of the tasks you do on daily basis, not only on your computer but at home too. You just have to figure out the correct tools you’ll need, and how to write and run the script.</p>
<p>When we talk of tools, since Python is an open-source language, it means we have a ton of tools at our disposal, as well as many libraries and frameworks to help us get started. Some great tools that can help you out include:</p>
<ul>
<li>Selenium</li>
<li>Beautiful Soup</li>
<li>SMTPlib</li>
</ul>
<p>A good resource to help out in the automation journey is the amazing book on how to <a target="_blank" href="https://automatetheboringstuff.com/">Automate the Boring Stuff with Python</a>. It is a practical guide on how to use various programming tools.</p>
<p>Again, the more unique and advanced your task automator is, the more impressive it will be.</p>
<h2 id="heading-6-games-or-apps">6. Games or Apps</h2>
<p>Python has many libraries available to help you build games, as well as cross-platform libraries for creating Android and iOS apps. Some of the common game library include Pygame, Pyglet, Panda3D, Pykyra, Ursina Engine, and many more.</p>
<p>Both games and apps can range from very simple to highly sophisticated, and creating either one can be a great way to display your personality, creativity, and Python skills.</p>
<p>If you want to be able to develop projects on this scope, you will need to make use of some Python modules and libraries. The most common ones include:</p>
<ul>
<li>Kivy - It is the most evaluated module for developing mobile applications using Python.</li>
<li>Game development modules like <em>Pygame, PyKyra, Pyglet, PyOpenGL</em> and others.</li>
</ul>
<p>Some skills you will be able to demonstrate after building this project include: mobile app programming and development, UI/UX, &amp; API</p>
<p>To help you get started with this idea, here is a link to some of the most common games developed with python: <a target="_blank" href="https://github.com/larymak/Python-project-Scripts/tree/main/GAMES">Python Games</a>.</p>
<h2 id="heading-7-algorithmic-trader">7. Algorithmic Trader</h2>
<p>Algorithmic or Algo traders can not only showcase your Python skills, but they can also make you money - if you write a good script, that is. </p>
<p>This is a more advanced project that will likely not be suitable for beginner coders. You’ll need to write a script that analyzes past and present stock values, and uses machine learning to predict future values. </p>
<p>Then, your trader will automatically buy or sell shares based on those predictions.</p>
<p>In order to work on such a project, getting comfortable with Python and some of it's major topics like Data Structures and Object-Oriented Programming will be necessity. Also knowing how to use external libraries like Pandas, NumPy, and SciPy will be helpful. </p>
<p>To help you get started with this knowledge, check out this course, <a target="_blank" href="https://www.freecodecamp.org/news/algorithmic-trading-using-python-course/">Algorithmic Trading Using Python</a> (and it includes some sample repos as well.</p>
<h2 id="heading-8-sudoku-solver">8. Sudoku Solver</h2>
<p>A sudoku solver is another project that’s easy for a hiring manager to see and test. While of course the intent of sudoku puzzles is for users to solve them with brainpower, an automated sudoku solver demonstrates your thorough command of Python.</p>
<p>To work on this particular kind of project, being comfortable working with Python algorithms is really essential. These include: </p>
<ul>
<li>list comprehension</li>
<li>recursion</li>
<li>indexing and how to make use of loops. </li>
</ul>
<h2 id="heading-9-file-manager">9. File Manager</h2>
<p>Another good project idea is to code a file manager that renames or organizes files, archives unused files, or otherwise automates tedious file management tasks. </p>
<p>This type of project is fairly easy, and it can be a good way to get started in Python.</p>
<p>Working with files and documents can vary with different projects, so you can build different scripts, like: </p>
<ul>
<li>A script to <a target="_blank" href="https://github.com/larymak/Python-project-Scripts/tree/main/AUTOMATION/AutoMoveFiles">Auto Move Files</a>, </li>
<li>A script that will enable you to get <a target="_blank" href="https://github.com/larymak/Python-project-Scripts/tree/main/AUTOMATION/Getting%20Files%20and%20Folders%20sizes">folder/file sizes</a>,</li>
<li>A script to <a target="_blank" href="https://github.com/larymak/Python-project-Scripts/tree/main/AUTOMATION/Remove%20Duplicate%20Files%20in%20Folder">Delete duplicate files</a> </li>
</ul>
<p>To develop this kind of project, here are some of the modules you should know and keep in mind:</p>
<ul>
<li>Tkinter</li>
<li>Shutil</li>
<li>Os</li>
<li>easygui</li>
<li>Filedialog</li>
<li>Imageio</li>
</ul>
<p>So there are some ideas to get you started.</p>
<p>Below is a Twitter thread with more projects ideas that you can work on that will help boost your résumé:</p>
<div class="embed-wrapper">
        <blockquote class="twitter-tweet">
          <a href="https://twitter.com/larymak1/status/1495642792340692994"></a>
        </blockquote>
        <script defer="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
<h2 id="heading-how-to-list-python-projects-on-your-resume">How To List Python Projects On Your Résumé</h2>
<p>Now that you’ve got some ideas for Python projects to add to your résumé, here’s how to actually list them effectively.</p>
<p>If you are a freelance developer or you are just getting started in the industry, you may find that it’s more effective to use a functional résumé rather than a chronological format. </p>
<p>Functional résumés are more focused on your specific skills and projects rather than your employment history. </p>
<p>To use a functional résumé, replace the work experience section with a projects section. You can break it up further into subsections if you have some professional projects as well as some personal projects. </p>
<p>Give each project a name, list the duration, and include technologies that you used to complete it. Under each entry, use bullet points to describe the project in more detail, outline your specific contributions, and summarize the purpose of the project.</p>
<p>If you have some professional experience as a coder but you also want to list your personal projects, you may wish to stick with a chronological résumé format that lists your work experience at the top, followed by your education, skills, and certifications. </p>
<p>Then, you can include a projects section later on in your résumé to highlight the Python projects that you’ve done outside of work.</p>
<p>You can also reinforce your Python expertise by mentioning it in your résumé summary or objective as well as in your skills section.</p>
<p>Here is a sample to show you how to present a résumé if you're a fresh graduate from school:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/Professional-Software-Engineer-Resume.png" alt="Professional-Software-Engineer-Resume" width="600" height="400" loading="lazy"></p>
<h2 id="heading-wrap-up">Wrap Up</h2>
<p>It is important to remember that a project will be more successful if it communicates what it is supposed to communicate. </p>
<p>Whenever you work on one give it your all dedication. If you found one of these project ideas interesting, feel free to give it a try and you'll have a nice new addition to your résumé.</p>
<p>I appreciate your time reading.
Enjoy Coding ❤.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Remote Work – How to Find Remote Working Jobs from Home ]]>
                </title>
                <description>
                    <![CDATA[ Remote work is becoming more common and more popular, as an increasing number of people want to have a flexible working schedule. There is no better time than now to find a remote job and to work from home. There are plenty of roles that can be done ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/remote-work-how-to-find-remote-working-jobs-from-home/</link>
                <guid isPermaLink="false">66b1e4ac0938e6258a76bbda</guid>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ remote work ]]>
                    </category>
                
                    <category>
                        <![CDATA[ remote-working ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dionysia Lemonaki ]]>
                </dc:creator>
                <pubDate>Wed, 16 Feb 2022 22:34:11 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/02/kornel-mahl-mV4GwTDD8Tw-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Remote work is becoming more common and more popular, as an increasing number of people want to have a flexible working schedule.</p>
<p>There is no better time than now to find a remote job and to work from home.</p>
<p>There are plenty of roles that can be done remotely, especially in the technology sector.</p>
<p>From product design and product management, to graphic design, marketing, sales and web development – web development jobs are one of the most popular and highly sought after roles.</p>
<p>In this article you'll see some of the ways you can find a remote <strong>developer</strong> role, when you're still early in your career.</p>
<p>We'll first go over how this shift towards remote work has occured in the last few years, as well as some of the pros and cons of working remotely.</p>
<p>Then, we'll see some strategies to help you land a remote developer role and some ways to stand out to future employers.</p>
<p>If you only want to just see some of the most popular remote job boards, skip to <a class="post-section-overview" href="#jobs">this part</a>.</p>
<h2 id="heading-the-shift-towards-remote-work">The Shift Towards Remote Work</h2>
<p>The Covid-19 pandemic took the world by surprise in the beginning of 2020.</p>
<p>As everything started to shut down, a lot of workers were required and encouraged to work from home, making many companies remote overnight.</p>
<p>It's safe to say that the pandemic completely changed working life. What initially was a forced pivot is turning out to be a new world and a new way of working which is likely here to stay.</p>
<p>People's relationship with work has started to change. The view on fixed work spaces and workers needing to gather under the same office roof – something that has been considered the norm since the Industrial Revolution – has started to change.</p>
<p>With electronic means of communication such as e-mail and chat services widely available, along with communication platforms and shared documents, there doesn't seem to be an urgent need for many types of workers to be in the same building anymore.</p>
<p>Many people are now also reconsidering the idea of clocking in and out of work at set, fixed days and hours and becoming more aware of their time and what matters the most to them.  After all, some may be more productive during the weekends and get more done on those days, instead of solely during a strict Monday to Friday and 9 - 5 schedule.</p>
<h2 id="heading-the-pros-and-cons-of-remote-work">The Pros and Cons of Remote Work</h2>
<p>The Pros and Cons of remote work are relative to every individual.</p>
<p>But in general, some <strong>pros</strong> of working remote that benefit both the companies and the people working at the companies, are the following:</p>
<ul>
<li>Flexible working schedules and locations typically increase productivity and performance. </li>
<li>The above point leads to employees having more autonomy and independence which in turn leads to a happier workforce. Employees that feel trusted by their employers and have that level of freedom are more content with their jobs, efficient with their time, and more motivated to get their work done.</li>
<li>Remote work allows you to travel and work from any part of the globe and become a digital nomad, making your own work schedule. When working in tech specifically, all you need is a good internet connection, a laptop, and good skills.</li>
<li>With remote work you also place emphasis on producing quality work where you are highly focused on the task for a set amount of time that works for you. In a 9 - 5 job the bulk of the work for the day may be finished before 5 o'clock, but you'll still need to remain at the office and possibly not be as productive as you were during the remaining time. </li>
<li>Office space is expensive, with companies paying thousands of dollars for office space every year per employee. Remote work would cut those costs, saving significant amounts of money.</li>
<li>Remote work also means that long commutes to get into office everyday are no longer needed. Commuting often means spending a lot of time stuck in traffic, spending money on gas, or using crowded public transportation systems everyday. People can spend a lot of time can commuting - it's not uncommon for commuters to spend more than two hours each day getting to the office and going back home. This is often a cause of major stress. Not commuting to and from work can save a significant amount of time and money.</li>
<li>With remote work, there is the opportunity to form distributed teams and  hire people from all around the globe. This is more representative of the world as it is. Having people with diverse perspectives and backgrounds, with each having a wealth of different experiences to draw from, would in turn result in creating better products and services.</li>
<li>With remote work you also get to spend more time with your family and loved ones.</li>
<li>"With great freedom comes great responsibility" is a phrase that stands true when it comes to remote work. Often remote workers have a greater connection to the company's mission, which leads to greater motivation and sense of purpose. If you are not aligned with the company's values and don't find the work rewarding, it may be tempting to not put in the effort when there is no one watching you like there is in a  9 - 5 traditional office job.</li>
</ul>
<p>There are also some potential <strong>cons</strong> of remote working:</p>
<ul>
<li>There are concerns around productivity. For example, a lack of a dedicated space and set up in your home where you can work comfortably and quietly could potentially lead to a decrease in productivity.</li>
<li>A lack of a good Wifi connection, Internt speed, and decent voice quality could lead to troubles in communication. When a connection is not consistent and there are frequent disconnections, it makes communicating with team members difficult. Similarly, having poor voice quality, a microphone that doesn't work properly, or a lot of background noise can be distraction for others and make communicating over meetings harder.</li>
<li>With remote work, some workers may be more prone than others to procrastination, getting easily distracted and managing their time efficiently. A good answer to that could be the <a target="_blank" href="https://en.wikipedia.org/wiki/Pomodoro_Technique">Pomodoro Technique</a> and time blocking tasks.</li>
<li>Remote working may prove challenging for workers that have family members to frequently tend to and who need their attention.</li>
<li>With remote work, work-life balance can be tricky at times. For this reason, some workers may enjoy the commute, the travelling to work and the removal from their home as they see it as a physical separation between work and social life. It can be a way to divide work from personal life and whatever issues are associated with that.</li>
<li>Another potential issue is the difficulty in making connections and networking. This can be a challenge especially for juniors and folks that are early in their careers, and not so much for senior staff members who have developed their network over the years. Offices can be a good place for networking, but there are plenty of online communities available now, with new ones being created frequently, that can help you form connections in the industry.</li>
<li>Differences in communication skills between team members can also be challenging. Communicating your thoughts in a clear and concice manner is sometimes tricky over email or a Zoom call. It can also be tough to break down problems, explain your thought process, and explain complex technical topics in simple words to technical and non-technical members of a team. And all this is necessary when working remotely. Remote work involves a lot of collaboration, so getting messages across clearly is vital, otherwise there will be frequent misunderstandings.</li>
</ul>
<h2 id="heading-how-to-appeal-to-remote-companies-as-a-developer">How to Appeal to Remote Companies as a Developer</h2>
<p>Not all jobs can be done remotely.</p>
<p>It's no surprise that tech companies are paving the way and leading this shift towards remote work.</p>
<p>That being said, these tech roles are highly skilled - they are what are known as "knowledge jobs".</p>
<p>Most companies ask for a couple of years of experience, but how do you get that experience when you have none and no one will hire you because you lack that vital experience?</p>
<p>It's like a chicken and egg problem, and this can be even more of a problem when applying for a remote position.</p>
<p>How do you showcase your skills in an affective way when you are still early on in your career?</p>
<p>Companies want to know that you have the skills required and that you are capable of doing the job.</p>
<p>Not only that, but getting a remote role involves a lot more competition. The talent pool for selecting candidates is larger than ever, compared to what it typically is for traditional office jobs.</p>
<p>There are many people applying from all over the world just for one single position, since there are a lot of people wanting to work remotely and have that flexible schedule.</p>
<p>Listed below are some of the things you can do that may help you stand out in your remote job search as an early career developer. </p>
<p>There is the aspect of luck that plays role in every job search, but these points can help showcase your skills to prospective employers when you don't have that much experience.</p>
<h3 id="heading-prep-your-github-account-for-the-job">Prep your GitHub Account for the Job</h3>
<p>Include projects that you are proud of and are the most excited about. </p>
<p>Also, by showcasing projects that are related to the position you are applying to, you can discuss the different challenges you faced, the problems that arose, how you went about solving those problems and what you learned overall.</p>
<p>Make sure that your projects are well documented by creating <a target="_blank" href="https://www.freecodecamp.org/news/how-to-write-a-good-readme-file/">README files</a> for each one. </p>
<p>This way you can document your thought process and intentions while also showcasing your written communication skills which are important when working in tech.</p>
<h3 id="heading-contribute-to-open-source">Contribute to Open Source</h3>
<p>Contributing to Open Source can be intimidating as a beginner, but it is worthwhile and does make a difference when applying to jobs. It's something that many employers appreciate.</p>
<p>You can start off by making small contributions. For example, you can correct grammar errors and typos and create sufficient documentation for projects that lack it.</p>
<p>This shows that you are able to communicate well and collaborate with other developers remotely and asynchronously to solve a problem. And all that is done in public.</p>
<p>A good place to start contributing is by checking out the <a target="_blank" href="https://github.com/freeCodeCamp/freeCodeCamp/issues">freeCodeCamp repository</a> for issues with the label "fist timers only".</p>
<p>Below are some resources to help you learn more about contributing to Open Source:</p>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/news/the-ultimate-guide-to-open-source/">The Ultimate Guide to Open Source</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/the-definitive-guide-to-contributing-to-open-source-900d5f9f2282/">The Definitive Guide to Contributing to Open Source</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/how-to-contribute-to-open-source-projects-beginners-guide/">How to Contribute to Open Source Projects – A Beginner's Guide</a></li>
</ul>
<h3 id="heading-create-a-personal-website">Create a Personal Website</h3>
<p>A personal website is your own personal corner on the Internet and a way to show the world – including potential employers – who you are on a more personal level.</p>
<p>Include some information about yourself and the projects you are most proud of. Make sure all links are working and there are no typos.</p>
<p>The important information that employers are looking for needs to stand out clearly and easily at first sight.</p>
<p>Include an up to date CV/résumé and a way to contact you - preferably a professional e-mail address.</p>
<p>Below are some resources to help you with creating a portfolio website:</p>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/news/how-to-create-a-portfolio-website-using-html-css-javascript-and-bootstrap/">Create a Portfolio Website Using HTML, CSS, JavaScript, and Bootstrap 5</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/how-to-build-a-developer-portfolio-website/">Build Your Own Developer Portfolio Website with HTML, CSS, and JavaScript</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/beginners-guide-to-creating-a-portfolio-website/">Create a Portfolio Website – A Beginner Developer's Guide</a></li>
</ul>
<h3 id="heading-learn-in-public">Learn in Public</h3>
<p>Learning in public and getting involved with the developer community can accelarate your career and help you make valuable connections.</p>
<p>It's a way to showcase that you have those communication skills that employers are looking for.</p>
<p>Whether it be blogging, writing about your coding journey, documenting what you are currently learning, or giving a talk at a local meetup, all help create your own sort of personal brand. People get an insight into who you are on a more personal level.</p>
<p>Including links of all the ways in which you are learning in public and engaging with the community shows a level of dedication and that you're serious about getting into tech.</p>
<p>You can share your findings, explain how you solved a specific problem in a blog post, or craft lists of helpful resources to share. These activities not only help you understand everything better, but will help others that are also learning.</p>
<p>Below are some resources to help you get started with technical writing:</p>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/news/writing-tips-software-developers/">Writing Tips for Software Developers – How to Become a Better Tech Writer</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/technical-writing-for-beginners/">Technical Writing for Beginners – An A-Z Guide to Tech Blogging Basics</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/how-to-become-a-technical-writer/">How to Become a Technical Writer</a></li>
</ul>
<h3 id="heading-gain-experience-working-remotely">Gain Experience Working Remotely</h3>
<p>Having prior experience working remotely will likely increase your chances of getting another remote job, compared to someone who doesn't have that experience and know-how.</p>
<p>It shows that you are productive in remote settings.</p>
<p>Even if you are working in a different field and are not a remote worker, but want to transition into a remote tech role, you can negotiate a hybrid role at your current company. You might be able to work remotely  1 - 2 days a week, and the rest of the week to work from the office.</p>
<h3 id="heading-gain-experience-working-as-a-developer">Gain Experience Working as a Developer</h3>
<p>If you want to get a remote developer job as your first tech job, it may be more difficult than getting an traditional office job. Getting your foot in the door as a junior is hard enough, without the remote aspect.</p>
<p>Although this is in no way impossible to achieve, it may be more realistic to have a couple of years of experience under your belt. This can make the possibility of working remotely more likely.</p>
<p>It's easier for intermediate and senior level developers to land a remote role, compared to those searching for their first job in tech.</p>
<p>Onboarding a junior member on the team remotely and training them can prove to be challenging. This is especially true when you don't have much direct supervision and mentorship and they end up spending a lot of time alone.</p>
<p>Focus on learning the skills needed and building them to the point where you can market yourself well and stand out from the crowd. The more well-developed your skills are, the higher the chances.</p>
<h3 id="heading-show-genuine-interest-in-the-remote-company-youre-applying-to">Show Genuine Interest in the Remote Company you're Applying to</h3>
<p>Taking the extra time and putting in that extra effort to craft a high-quality application will help you stand out. Make sure your application is tailored towards the company you're applying to and lay out what you have to offer and why you're the right fit.</p>
<p>Hiring managers can tell when you've copied and pasted your application to several other positions and when it's not tailored to that individual company.</p>
<p>So make sure you customize your application for the position and show that you've researched the company's website and/or blog to understand what they are doing and what their mission is. This will make a better impression and make you stand out more.</p>
<h2 id="heading-where-to-find-companies-that-hire-remotely">Where to Find Companies that Hire Remotely? <a></a></h2>
<p>There are plenty of remote job boards where you can browse through hundreds of job postings and apply to any you see fit.</p>
<p>This section showcases some of the most popular job boards that advertise remote-friendly positions.</p>
<p>To see a complete list of remote-friendly companies, <a target="_blank" href="https://github.com/remoteintech/remote-jobs">check out this comprehensive GitHub repository</a></p>
<h3 id="heading-remote-ok">Remote Ok</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-16-at-11.32.22-AM.png" alt="Screenshot-2022-02-16-at-11.32.22-AM" width="600" height="400" loading="lazy"></p>
<p>On <a target="_blank" href="https://remoteok.com/">Remote Ok</a> you will find different kind of jobs listed, such as product designer, product manager, copywriter and copy editor, to name a few.</p>
<p>The majority of jobs, though, are software development jobs.</p>
<p>The website consists of hundreds of job postings and it's updated daily.</p>
<p>It's easy to use, without needing to sign-up anywhere or upload a CV in order to submit an application.</p>
<p>You can just click on the search bar at the top of the page. When you do so, you'll see a dropdown menu with a filter for the different job categories you can choose from and the number of jobs available in each category.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-16-at-11.34.32-AM.png" alt="Screenshot-2022-02-16-at-11.34.32-AM" width="600" height="400" loading="lazy"></p>
<p>When you click on a link of a job posting, you'll see the full job description and then a button that says "Apply now".</p>
<p>When you click that button to apply for the job, you'll be redirected to the company's website.</p>
<p>This job board is more of a place to take a look at the different remote jobs that are available in the world. It's not meant for creating a profile of your own or submitting an application directly from the job board.</p>
<p>It's also one of the most impersonal job boards out there, since there is no information or a way to find out more about Remote Ok as a company, or a way to contact customer service.</p>
<h3 id="heading-remoteco">Remote.co</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-16-at-12.11.07-PM.png" alt="Screenshot-2022-02-16-at-12.11.07-PM" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://remote.co/remote-jobs/developer/">Remote.co</a> is another remote job board with all kind of jobs listings available. There are editing jobs, customer service and marketing jobs, and many more.</p>
<p>There is also a wide selection of jobs in front-end development, back-end development, and full-stack development.</p>
<p>In the search bar at the top of the page, enter the type of position you're searching for or the name of a company you want to work at.</p>
<p>You can also sign up to their newsletter to receive daily job alerts, but other than that you don't need to sign up anywhere is order to view jobs or apply to jobs.</p>
<p>When you apply for a job, you'll be redirected to the company's website to apply directly from there.</p>
<p>This remote job is more personable compared to Remote Ok, since it has more information about it and different resources available.</p>
<p>There are articles on remote work, remote worker's rights, and even different online courses you can take.</p>
<h3 id="heading-we-work-remotely">We Work Remotely</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-16-at-2.29.32-PM.png" alt="Screenshot-2022-02-16-at-2.29.32-PM" width="600" height="400" loading="lazy"></p>
<p>On <a target="_blank" href="https://weworkremotely.com/">We Work Remotely</a> you'll find lists of jobs in sales, marketing, software development and more.</p>
<p>There are jobs available in front-end development, back-end development, full-stack development, and in DevOps and Systems administration.</p>
<p>You can create an account by providing your email address and setting a password. This way you'll be notified about new job openings and specifically jobs that are tailored to your area of interest.</p>
<p>The site also provides advanced search filters, where you enter the job title, the region where you want to work, and the time zone you're in, as well as the job type you're looking for. From there you can choose either contract work or full-time work.</p>
<p>When you apply for a position you will be redirected to the company's website you're applying to.</p>
<h3 id="heading-remotive">Remotive</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-16-at-4.17.00-PM.png" alt="Screenshot-2022-02-16-at-4.17.00-PM" width="600" height="400" loading="lazy"></p>
<p>On <a target="_blank" href="https://remotive.io/">Remotive</a> there are a variety of different remote tech roles available.</p>
<p>There are listings for developer roles, customer support, customer service, sales, management, product design, product management, and more.</p>
<p>This job board is also focused on tech and there are filters available where you can view the different job categories available.</p>
<p>A new feature of theirs is the ability to hide the jobs that require applicants to be US-based and work remotely from a US timezone.</p>
<p>You can also use keywords, such as a specific skill or job title, to filter through all the different posts.</p>
<p>It also has a mailing list where you can receive daily job updates.</p>
<h3 id="heading-angellist">AngelList</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-16-at-4.31.37-PM.png" alt="Screenshot-2022-02-16-at-4.31.37-PM" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://angel.co/candidates/overview">AngelList</a> lists mostly tech startup jobs.</p>
<p>There, you can create your own profile where you'll be able to inlcude your skills and information about yourself.</p>
<p>You can also set your desired salary and the kind of culture you want a company to have.</p>
<p>Then, once your profile is set up you'll be able to apply to jobs directly from AngelList, without being redirected to the company's website.</p>
<p>Companies will be able to connect you with by finding you through your profile and contacting you.</p>
<p>There are advanced search filters, to filter through the different jobs available.</p>
<p>When browsing though jobs on AngelList, you can also view the salary and stock options of jobs.</p>
<h3 id="heading-stack-overflow">Stack Overflow</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screenshot-2022-02-16-at-4.44.59-PM.png" alt="Screenshot-2022-02-16-at-4.44.59-PM" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://stackoverflow.com/jobs/remote-developer-jobs">Stack Overflow Remote Developer Jobs</a> lists only developer roles that are done remotely.</p>
<p>It includes an advanced filter that helps you really tailor your search to best fit your needs and what you are looking for.</p>
<p>Here are some examples of what is available with the advanced filter:</p>
<ul>
<li>You can include up to ten tags of technologies you like working with and ten technologies you dislike working with.</li>
<li>You can include companies you like and companies you want to avoid and exclude from your job search.</li>
<li>You can include a minimum salary range you're expecting to get.</li>
<li>You can enter your level of seniority and experience.</li>
<li>You can select wether you require a visa sponsorship and want to relocate to a different country.</li>
<li>Also, you can select what job type you're looking for, whether it's contract work, a full time position, or an internship.</li>
</ul>
<p>You don't need to create a profile. When you apply for a position, you'll be redirected to the company's website.</p>
<h3 id="heading-linkedin-jobs">LinkedIn Jobs</h3>
<p>On <a target="_blank" href="https://www.linkedin.com/jobs/">LinkedIn</a> you get to create your own profile where you include your work history, highlight your skills, and write a headline that summarizes your achievements and past job experiences.</p>
<p>A good way to stand out is to share any articles you've written, and share other interesting and informative content.</p>
<p>LinkedIn is a way to connect directly with companies by reaching out to recruiters.</p>
<p>You can also let recruiters know you are available for hire. Specifially, you can inform them on what kind of postion you're looking for and whether you prefer to work remotely. </p>
<p>This is a feature you can add to your profile but it's private and is only visible to them.</p>
<p>Often if your profile is impressive, recruiters will reach out to you and direct message you.</p>
<p>Here are some resources for you to create a stand-out LinkedIn profile:</p>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/news/how-to-build-an-amazing-linkedin-profile-15-proven-tips/">How To Build An Amazing LinkedIn Profile 15+ Proven Tips</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/linkedin-handbook-get-your-first-dev-job/">How to Use LinkedIn to Get Your First Developer Job – A Step-by-Step Guide</a></li>
</ul>
<h2 id="heading-conclusion">Conclusion</h2>
<p>The work landscape is starting to change and remote work is increasing in popularity and demand.</p>
<p>In this article, you saw some ways to stand out to remote companies as an early career developer. </p>
<p>You also saw some of the most popular job boards that feature remote-friendly companies.</p>
<p>Thanks for reading and good luck with your remote job search!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Level Up Your Developer Portfolio ]]>
                </title>
                <description>
                    <![CDATA[ By Peter Lynch It's not a big secret that building a developer portfolio can greatly increase your chances of getting hired. Everyone tells you that. But, they don't always tell you what makes a good one. You see, many portfolios are generic and rath... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/level-up-developer-portfolio/</link>
                <guid isPermaLink="false">66d460898812486a37369d32</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Junior developer  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ portfolio ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 07 Feb 2022 18:38:59 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/02/level-up-portfolio-post.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Peter Lynch</p>
<p>It's not a big secret that building a developer portfolio can greatly increase your chances of getting hired.</p>
<p>Everyone tells you that. But, they don't always tell you what makes a good one.</p>
<p>You see, many portfolios are generic and rather uninspiring. If your portfolio looks just like everyone else's, then how can you expect it to stand out?</p>
<p>Well, it won't stand out. </p>
<p>But don't worry – I've been there. <a target="_blank" href="https://peter-lynch.netlify.app/index.html">My first portfolio</a> was bland, uninspiring, and had many of the not-to-do's I talk about in this post. </p>
<p>However, I'm an ex-marketer, turned developer, I know how to make something stand out. I've made ad campaigns that have skyrocketed sales and had people talking. I realized I needed to think like a marketer to make my portfolio stand out. </p>
<p>The good news is that the same principles can be applied to your portfolio to level it up. If you read this guide and implement the tips, you'll raise your portfolio above the sea of other junior developers trying to stand out.</p>
<p>Before we launch into the five tips to level up your portfolio, let's just make sure we are on the same page.</p>
<h2 id="heading-what-is-a-portfolio">What is a portfolio?</h2>
<p>A portfolio is a way for you to showcase who you are, what skills you have, and most importantly the work you've done.</p>
<p>As a developer, your portfolio is going to be in the form of a website. The main goal of this website is to showcase yourself and your work in the best way possible. </p>
<p>It needs to make you stand out and it needs to make employers think "Whoa! I'd like to work with this person". Ultimately it will need to show them that you could be awesome to work with so they are compelled find out more about you.</p>
<p>A portfolio should therefore include some standard elements. Below are the bare minimum elements your portfolio must include.</p>
<h2 id="heading-the-bare-minimum-of-a-portfolio">The bare minimum of a portfolio</h2>
<p>These are the non-negotiables of any developer portfolio:</p>
<ol>
<li>Responsive design (learn about how to do that <a target="_blank" href="https://www.freecodecamp.org/learn/responsive-web-design/">here</a>)</li>
<li>Projects showcasing your work</li>
<li>An "about me" section or somewhere people reading your site can learn about you</li>
<li>Your portfolio needs to be accessible</li>
<li>Your portfolio should have a custom domain. Buy a domain name – you can get them for less than $10. Don't send people to 39238834.netfily.com</li>
<li>A way for people to contact you, preferably your email</li>
</ol>
<p>If you have these six non-negotiables on your portfolio, you are off to a good start.</p>
<p>Now let's look at five ways you can level up your portfolio, starting with a non-obvious one.</p>
<h1 id="heading-five-things-you-can-do-to-level-up-your-developer-portfolio">Five things you can do to level up your developer portfolio</h1>
<h2 id="heading-1-know-your-target-audience">1. Know your target audience</h2>
<p>One area that can help level up your portfolio is knowing exactly what the purpose of your portfolio is. That is, who is this portfolio for?</p>
<p>If I asked you what the purpose of your portfolio was, does the output match that? Let's say, for example, the purpose of your portfolio is to land your first junior developer role. Then your portfolio is going to look very different from someone who is looking to be a freelance web developer.</p>
<p>Therefore the first thing you need to do is ask what is the purpose of your portfolio. Start broad and then try to refine it. Keeping with the junior developer role example, you could refine it down to a junior frontend developer specializing in React.</p>
<p>If you are a junior frontend developer, then your portfolio won't need things like the generic skill cards below.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/skills-card.png" alt="Three generic skills cards with headings cross-industry experience, full stack development and design focus." width="600" height="400" loading="lazy"></p>
<p>These cards are better suited for someone who is looking for freelance work. </p>
<p>When you know the purpose of your portfolio, you can better tailor the information to communicate why someone should help you achieve your purpose.</p>
<h2 id="heading-2-level-up-your-project-details">2. Level up your project details</h2>
<p>This is the most important section of your portfolio, and it is the one section I often see that is not well-executed.</p>
<p>If you browse something like <a target="_blank" href="https://www.reddit.com/r/webdev">r/webdev</a> and search "portfolio" let me tell you what you're going to see if you click 90% of those portfolios and look at projects. You're going to see a calculator app, a weather app, tic tac toe, a movie finder app, "insert big website" clone, and so on.</p>
<p>Now, don't get me wrong – these are useful projects for learning the skills they require. And people have spent time making them. The problem is that everyone builds the same stuff. You can often just follow along with a tutorial and create them without much thought.</p>
<p>There are two problems here.</p>
<p>The first is that you are not differentiating yourself. If I'm HR or the hiring manager why should I pick your calculator app over the other 30 in the inbox? Also, how can I trust that you built this thing yourself and that you didn't just copy/paste code from a tutorial?</p>
<p>The second is that most people just put the project in, link to the GitHub repo, and maybe a live demo. This doesn't tell the person who is potentially going to hire you a lot, and it doesn't give them much reason to employ you over everyone else who has done the same.</p>
<p>So then, how do you make your projects section stand out? Let's look at a few ways you could level up the projects section of your portfolio.</p>
<h3 id="heading-add-original-projects">Add original projects</h3>
<p>You don't have to reinvent the wheel or make the next great social media application. But it would be great if you tried to use a different API instead of the standard weather API.</p>
<p>You could for instance create a surf report app that is the same as a weather app but instead you are calling different endpoints. This shows me that you know how to call an API outside of a tutorial.</p>
<p>If you're not sure how to make your own original project then check out this guide on <a target="_blank" href="https://www.peterlunch.com/blog/how-to-plan-and-build-a-programming-project">how to plan and build a programming project for beginners</a>.</p>
<h3 id="heading-give-some-details-about-the-project">Give some details about the project</h3>
<p>The first problem is that many projects are unoriginal. The second is that most people don't give more than the basic details about the project.</p>
<p>What will make you stand out is giving some details about your project. When I say details, what I mean is give me a story about the project. The best portfolios I see tell me about the project don't just show it to me.</p>
<p>Try answering some of these questions.</p>
<ul>
<li>Why did you choose to build this project?</li>
<li>What challenged you when making this project?</li>
<li>What did you learn from making this project?</li>
<li>What learnings have you taken with you into other projects?</li>
<li>What would you do differently next time?</li>
<li>Did you get stuck at any point? How did you get unstuck?</li>
<li>What was your process for completing this project? Did you do wireframes, make a Trello board, or did you just get stuck into it?</li>
</ul>
<p>If you answer these questions and craft them into a few succinct paragraphs, I will now know a lot more about your abilities as a developer. I can see what interests you, how you overcome challenges, how you learn from those challenges, and what skill level you are.</p>
<p>You're already well on your way to standing out if you follow this tip.</p>
<h2 id="heading-3-remove-unnecessary-fluff-from-your-portfolio">3. Remove Unnecessary Fluff from Your Portfolio</h2>
<p>Sometimes the best thing you can do to improve your portfolio is to remove things.</p>
<p>You should remove things that add no value to your target audience and things that reduce your credibility.</p>
<p>Here is a list of things you to remove and why. </p>
<ol>
<li><strong>Step-by-step tutorial projects.</strong> These projects hurt your credibility. They are unoriginal, they don't show me what you can do. Rather, they show me that you can copy what someone else does.  </li>
<li><strong>Projects not related to development or the job you are trying to land.</strong> These just aren't relevant to your target audience. </li>
<li><strong>If one of your Projects is the portfolio itself.</strong> Why get rid of this? The reason is that they are on your portfolio now. They are interacting with the project. So save space for another project.</li>
<li><strong>Skill progress bars.</strong> While they look cool, they are bad. If you're a junior you probably know 10% JavaScript, would you want to represent that? What the heck does 80% CSS mean? <strong>If you remove one thing, please make it these.</strong></li>
<li><strong>If your portfolio is a carbon copy of someone else's portfolio – start over</strong>. It's not cool for starters. Plus, I want to see what you're capable of doing, not what you're capable of copying. It can come back to hurt you in the long run. </li>
</ol>
<h2 id="heading-4-give-your-about-me-some-personality">4. Give your about me some personality</h2>
<p>There is this song by Paul Kelly called "Every F$*#%) City" and the general idea of the song is that every city is the same. Well, I've seen a lot of portfolio's and a lot of them look the same.</p>
<p>The section that often comes off as the same is the about me section. Let's look at an example below.</p>
<p><em>"Hi, my name's Jonny Lucky, a Full-Stack Web Developer from Example Town. I love building websites that solve life's unique problems.</em></p>
<p><em>I work primarily with MongoDB, Express, React, Node, and GraphQL and have set up countless WordPress and Shopify websites. My previous career was as an IT Consultant, E-commerce Business Owner, and Digital Marketer. I also really enjoy tinkering with CSS.</em></p>
<p><em>In my spare time, I play video games and also work out."</em></p>
<p>Hello Jonny Lucky, or was it Lucy Lovely? I forgot because I'm the HR person and I've read 50 of these portfolios and they are all very similar.</p>
<p>If I were to change your name, town, and tech stack, many of these candidates would just become one.</p>
<p>To be fair, there are some personal touches like the that they "play video games and also workout". But, guess what? A lot of other applicants also enjoy these things.</p>
<p>Can you see the problem, if you have an about me section like the above? You won't stand out and you'll come across as a little stiff.</p>
<p>Your about me needs to be a little bit spicy, it needs to show your personality and experience. Because your personality is different from other people, so your about me section should be too.</p>
<p>Let's have a look at mine to give you an idea of what you should be shooting for. I've gotten a few compliments on it.</p>
<p><em>"I'm an ex-marketer who loves building things with code.</em></p>
<p><em>I first became enthralled with programming in 2015. I was in San Francisco with my brother in law and he was telling me about this thing called Python and how it could automate things. As a person who looks for efficiencies, I was hooked.</em></p>
<p><em>I jumped right into Python on my flight back to Australia. Soon, I was automating my own things. I made a bot to book classes at the gym, one to send weekly reports to my boss and I even made one to like my girlfriend's content on Instagram. Unfortunately, that is as far as it went. Shortly after, I got promoted. So, I had less time to learn and I let programming fall by the wayside.</em></p>
<p><em>But, then Covid hit and suddenly I had more time without my commute. So, I started learning again. Specifically, I learned web development, as I had things I wanted to build for myself.</em></p>
<p><em>After a few months of self-teaching, I knew this was what I wanted to do for my career. So, I signed up for the coder academy Bootcamp and put my heart and soul into it. I was coding every day, late into the night, and on weekends. Until I was ready to be unleashed on production code.</em></p>
<p><em>Since the boot camp, I have grown as a developer, working alongside senior developers who have helped me raise my standards for what's expected of any web application.</em></p>
<p><em>I'm now seeking a full-time role where I can contribute my skills both in coding and business to help a company achieve their goals."</em></p>
<p>As you can see my about me section is unique to me. I'd say there isn't another soul on the planet who could write the same about me section without telling some lies.</p>
<p>Now, your about me section doesn't have to be zany, it can be professional. But, and this is a key point... </p>
<blockquote>
<p><em>You need to make it interesting so the person reading it wants to continue reading it.</em></p>
</blockquote>
<p>To make your about me section interesting, you can try things like stories and anecdotes. Try and weave them in with the key points you want to get across.</p>
<p>Another way to think of it is, if you are invited in for an interview would your about me be interesting enough that the person interviewing you would say "hey, I loved that story about X on your portfolio"? If it can do that you're winning because you've opened up more dialogue.</p>
<p>In the end, you're trying to spark interest in the person looking at your portfolio.</p>
<p>Think about it like this. If HR has 50 applications to get through, they are only going to interview 5 of those people. </p>
<p>If your about me section is a bland generic version like the first one, they are likely to just skim through it and onto your next section. If nothing else on your portfolio stands out, then they'll move on to the next application until something does jump out at them. You want to grab their attention and make them shift you to the interview pile.</p>
<p>Since most portfolios are generic, it doesn't take much to stand out. If you have less experience than someone else but their portfolio is generic and yours isn't, I'd argue you are more likely to get picked for an interview. </p>
<p>Why? Because we like to work with people we like, and if you show that you're an interesting unique person, I'd probably like to at least find out more about you.</p>
<h2 id="heading-5-throw-some-sprinkles-on-it">5. Throw some Sprinkles on it</h2>
<p>One of the most important lessons I was taught early on in my coding Bootcamp was that you need the doughnut before the sprinkles.</p>
<p>Looking at this analogy in regards to your portfolio, the doughnut is all the other things I have listed above. You need the baseline requirements of a portfolio like solid projects, an interesting about me section, and responsive design.</p>
<p>The sprinkles should come after you have all the basics. So, if you followed the tips above you have the doughnut. Now, you can start to make your portfolio shine.</p>
<p>Add things that make a prospective employer go wow! You can add amazing animations like <a target="_blank" href="https://cherupil.com/">Christopher Cherupil</a>, cool transition effects like <a target="_blank" href="https://philippeneveu.com/">Philippe Neveu</a>, or dark mode like <a target="_blank" href="https://jhey.dev/">Jhey Tompkins</a>.</p>
<p>I added a <a target="_blank" href="https://www.peterlunch.com/blog/javascript-exit-intent-modal">Zelda-themed modal</a> to make sure a prospective employer grabbed my résumé before they left my old portfolio site. I just made sure I had the basics first.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/Screen-Shot-2022-02-06-at-11.51.25-am.png" alt="Contents of the Zelda exit intent modal I built for my resume." width="600" height="400" loading="lazy"></p>
<p>You can also go wild with your ideas, just make sure you execute them. You don't want unpolished sprinkles that could take away from your doughnut's main elements.</p>
<h2 id="heading-summary">Summary</h2>
<p>If you read this post and thought, oh man my portfolio is quite generic – don't fret. You now have 5 things you can do to level up your portfolio so that it moves from the "forgotten" pile to the "give this person an interview" pile.</p>
<p>I can frequently be found in portfolio advice threads on Reddit and Twitter trying to offer advice to people trying to break into the industry. </p>
<p>When you're done leveling up your portfolio, and you're looking for some feedback on it, make sure to Tweet it to me with a link to your site. </p>
<p>If you have a portfolio you're proud of or you're looking for feedback on it, <strong><a target="_blank" href="https://twitter.com/thelynchpinau">follow me on twitter</a></strong> and tweet the link to me so I can look over it and give you some feedback.   </p>
<p>If you have an awesome one I might even add it to my <a target="_blank" href="https://github.com/pin0S/portfolios-that-pop">portfolios that pop list</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Build Your Developer Résumé Without Job Experience ]]>
                </title>
                <description>
                    <![CDATA[ I have observed a fascinating phenomenon amongst folks applying for their first developer jobs.  The behavior seems consistent across college graduates, Bootcampers, and self-taught folks. When asking for a résumé review, they almost always get the a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/build-your-developer-resume-without-job-experience/</link>
                <guid isPermaLink="false">66c34678160da468ed76f169</guid>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ community ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                    <category>
                        <![CDATA[ resume ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 06 Oct 2021 15:29:13 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/10/5-hacks-first-dev-job-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>I have observed a fascinating phenomenon amongst folks applying for their first developer jobs. </p>
<p>The behavior seems consistent across college graduates, Bootcampers, and self-taught folks. When asking for a résumé review, they almost always get the answer "build more projects". </p>
<p>This is great advice, but you can do more to improve your odds. Better yet, you can do a few important things in parallel. </p>
<p>Here are some of the job-hunting hacks that really helped me, as a self-taught developer, land interviews throughout my career.</p>
<h2 id="heading-build-your-personal-brand">Build Your Personal Brand</h2>
<p>Difficulty: 3/5</p>
<p>I like to think of us developers as a business of one. At the start of our career, we are a tiny startup that no one has ever heard of. We don't yet have customers (or experiences), and people are reluctant to give us a chance.</p>
<p>However, just like the modern business world, it is getting increasingly harder to be successful and unknown. </p>
<p>Let's look at the example of Shopify, which seems to be more aware of the importance of personal brand within recent years. Their CEO, Tobi Lutke, has become more public recently, hosting AMAs as well as hanging out in social channels like Clubhouse. </p>
<p>As another example, Quincy, the founding teacher behind freeCodeCamp, is also an active personality on Twitter.</p>
<p>Just as founders are responsible for shaping the narrative of their respective companies, we as individual developers need to be aware of our own brand with our tiny business of one.</p>
<h3 id="heading-how-can-you-build-your-brand">How can you build your brand?</h3>
<p>I have seen a <a target="_blank" href="https://twitter.com/heybereket">13 year old with 30k followers on Twitter building 10 projects</a> within a year. We can all look at him in awe and stress about the importance of building your personal brand. </p>
<p>But finding your brand is a discovery process, and here are the things I have seen people successfully do:</p>
<ul>
<li>Build projects publicly and tweet about the journey (<a target="_blank" href="https://twitter.com/VirajCz">example</a>)</li>
<li>Interact and network with other developers on tech Twitter</li>
<li>Create a YouTube channel and share what you have learned (<a target="_blank" href="https://www.youtube.com/channel/UCHG7IJuST_BXJkne-0u0Xtw">channel example</a>)</li>
<li>Live stream yourself programming on Twitch</li>
</ul>
<p>So many people have made valuable connections and have been offered <a target="_blank" href="https://yurilee.hashnode.dev/i-got-25k-followers-and-a-job-at-hashnode-within-2-months-in-tech-twitter-my-advice">job positions</a> just by being active on social media. If you are just getting started in your tech career, having your personal brand can help tremendously. </p>
<p>You can use a link-in-bio service like Linktree to tie all your socials together. For developers, using your Twitter or blog is also common. Share it on social media, introduce yourself to recruiters, or link it when asking for referrals. </p>
<p>Having a personal brand is a strong indication of social proof, which leads people to trust you more, resulting in more opportunities.</p>
<h2 id="heading-share-your-knowledge-in-a-developer-community">Share Your Knowledge in a Developer Community</h2>
<p>Difficulty: 1/5</p>
<p>Another way to network within the developer community is to contribute meaningfully as an active member. </p>
<p>This is similar to our first point of building your personal brand. But we are no longer solely trying to promote ourselves. Instead, we are genuinely producing good content to educate and help our peers.</p>
<p>The advantage is that this is easier to get started. You don't need to go through the hassle of building your audience as most of the sites will lend you theirs. It is the easiest way to get your voice heard.</p>
<h3 id="heading-how-to-start-writing">How to start writing</h3>
<p>Here are some developer-focused publications that I have found:</p>
<ul>
<li><a target="_blank" href="https://dev.to">dev.to</a>: a blogging platform like Medium, but focused on developers</li>
<li><a target="_blank" href="https://daily.dev/">daily.dev</a>: a platform that curates other dev news</li>
<li><a target="_blank" href="https://freecodecamp.com">freeCodeCamp</a>: my favorite. numero uno.</li>
<li><a target="_blank" href="https://hackernoon.com/">hackernoon</a>: another big publication besides fCC</li>
<li><a target="_blank" href="https://hashnode.com">hashnode</a>: make your own dev blog. You need to build your audience, however.</li>
<li><a target="_blank" href="https://www.slip.so/">slip.so</a>: build a programming course. You need to build own audience, however.</li>
</ul>
<p>Writing makes your résumé stronger as you can dedicate a section of your résumé to your contributions. It can also kickstart your brand as you are positioning yourself as a domain expert. </p>
<p>Lastly, and perhaps the most important thing, is that it reinforces your own knowledge. By teaching others, you summarize the core concepts in your own words and test your own understanding.</p>
<h3 id="heading-how-to-start-contributing-to-forums">How to start contributing to forums</h3>
<p>Contributing and helping other developers on forums like Stack Overflow, Reddit, or the freeCodeCamp forum does not directly make your résumé better. </p>
<p>But, as a developer, you will most likely be working with a small team of other engineers, product managers, and designers. By helping others, you propel your team's success.  You can gain valuable communication, debugging, and leadership skills that will be useful throughout your career.</p>
<h2 id="heading-connect-directly-with-recruiters">Connect Directly with Recruiters</h2>
<p>Difficulty: 1.5/5</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Untitled_Artwork-25.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This is one of the most underrated hacks. Recruiters are very, very busy people. Way busier than we are as developers. </p>
<p>They are working between 3-40 open positions at any given time, and have to screen thousands of résumés per position. If yours does not stand out, you have to think of other ways to get through the door.</p>
<h3 id="heading-how-to-connect-with-recruiters">How to connect with recruiters</h3>
<p>You can skip the online application hell through cold-emailing, LinkedIn connections, or meeting companies directly to hand-deliver your résumé. </p>
<h4 id="heading-ia"> </h4>
<p>How to send a cold email to a recruiter</p>
<p>For cold-emailing, start by finding out the recruiter's email at x company. There are tutorials for this so I will skip through that. </p>
<p>You will then want to have a short-and-sweet email detailing the positions you want to be considered for, and what makes you stand out (hello personal brand).</p>
<p>Then, politely ask if they are interested in receiving your résumé. Be confident in your email. If they reply, then you know you have a good chance.</p>
<h4 id="heading-how-to-connect-with-a-recruiter-through-linkedin">How to connect with a recruiter through LinkedIn</h4>
<p>For LinkedIn, just send a connection request to recruiters working for x company. Send a short intro "I'm looking for frontend positions" on why you want to connect with them. </p>
<p>However, I have found the third method to be more direct, as you get to connect with recruiters in person.</p>
<h4 id="heading-how-to-connect-with-recruiters-at-career-fairs">How to connect with recruiters at career fairs</h4>
<p>The third method is to attend career fairs. This is by far my favorite method, and why I started making <a target="_blank" href="https://equia.io">equia.io</a>. </p>
<p>We organize career fairs where you can deliver your résumé directly to the recruiter, so you can skip through the online application hell. It is 100% free for people from all over the world. </p>
<p>The seats are limited as I have limited bandwidth with my full-time job. However, I encourage you to register so you receive emails for the next available events. </p>
<p>I will talk about connecting with recruiters at in-person events more in the final section.</p>
<h2 id="heading-contribute-to-open-source-projects">Contribute to Open Source Projects</h2>
<p>Difficulty: 4.5/5</p>
<p>This can be a hard one to get into as a beginner. But it is rewarding, as you develop a sense of community and belonging. Some of the best developers are working on open-source projects that we use every day (like freeCodeCamp).</p>
<h3 id="heading-how-to-get-involved-with-open-source">How to get involved with open source</h3>
<p>You can start by finding interesting open source projects on GitHub or other dev communities. You should then look at the open issues, make sure to read the contributor's guideline, and make your first contribution. </p>
<p><a target="_blank" href="https://www.freecodecamp.org/news/how-to-contribute-to-open-source-projects-beginners-guide/">Here's a helpful guide</a> that details how you can start contributing.</p>
<p>I am only going to recommend some of the bigger projects here. We all have different interests, so I encourage you to find your own.</p>
<ul>
<li><a target="_blank" href="https://github.com/freeCodeCamp">freeCodeCamp</a>: contribute to the curriculum, Chapter, or translate existing articles. I highly recommend that you check their Github out.</li>
<li><a target="_blank" href="https://github.com/strapi">Strapi</a>: I discovered the project a while ago and fell in love with it. It is harder to get started, but the community is welcoming and it is written in Javascript + Node.js, which hopefully you have learned in the freeCodeCamp curriculum. They are building a modern CMS (like WordPress).</li>
<li><a target="_blank" href="https://reactjs.org/docs/how-to-contribute.html">React</a>: We use it everywhere, so why not understand how it works and contribute to the most popular JavaScript framework? If you are interested, I highly recommend you reading <a target="_blank" href="https://pomb.us/build-your-own-react/">this article</a> about how you can make your own framework that works similarly to React</li>
</ul>
<p>If you ever get stuck, most projects have a community and a public forum where you can ask for help. </p>
<p>Contributing to open-source might be hard to get into, but it strengthens your résumé more than any other project. It demonstrates your ability to contribute to large codebases, collaborate with other engineers, and persist through hard-to-debug issues. </p>
<h2 id="heading-attend-live-career-fairs-and-workshops">Attend Live Career Fairs and Workshops</h2>
<p>Difficulty: 0.5/5</p>
<p>I can't stress the importance of making connections when you are getting started. If we go back to the analogy of us being a business of one, you have to start meeting customers somewhere. </p>
<h3 id="heading-what-events-to-attend-as-a-developer">What events to attend as a developer</h3>
<p>In the old days, you'd go to in-person meetups, career fairs, and conferences. However, the world has been disrupted by COVID. While I have no doubt these dark stay-at-home times will pass, we have to start looking elsewhere in the meantime.</p>
<h4 id="heading-attend-virtual-conferences">Attend virtual conferences</h4>
<p>Big gatherings are still mostly happening virtually. You can attend developer-focused events like <a target="_blank" href="https://nextjs.org/conf">Next Conf</a> and <a target="_blank" href="https://graphqlconf.org/">GraphQL conf</a>, hiring-oriented events like <a target="_blank" href="https://ghc.anitab.org/">GHC</a>, and business-centric events like <a target="_blank" href="https://www.startupgrind.com/">Startup Grind</a>. </p>
<p>You can meet high-profile speakers and like-minded developers. You can use sites like <a target="_blank" href="https://www.eventbrite.com/">Eventbrite</a> to discover what's happening.</p>
<h3 id="heading-attend-meetups">Attend meetups</h3>
<p>Smaller group sessions are the best way to meet new people. While you can always find local meetup groups on <a target="_blank" href="https://www.meetup.com/">meetup.com</a>, I have found that smaller, niche communities have better quality events. </p>
<p>Here are some websites where you can find virtual and local group sessions: <a target="_blank" href="https://www.indiehackers.com/meetups">Indie Hackers</a>, <a target="_blank" href="https://elpha.com/top">Elpha</a> (for women in tech), <a target="_blank" href="https://study-group-directory.freecodecamp.org/">freeCodeCamp study groups</a>.</p>
<h4 id="heading-go-to-hiring-fairs">Go to hiring fairs</h4>
<p>I briefly mentioned <a target="_blank" href="https://equia.io">equia.io</a>, where you can attend live career fairs and deliver your résumé directly to recruiters. We typically organize monthly hiring fairs, with presenters from top tech companies like Calendly, GoodRx, and Facebook. </p>
<p>You can meet the hiring manager directly in a small breakout room, get referrals, and directly deliver your résumé to the recruiter. The seats are limited, but by registering, you will be invited to the next available events.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/image-9.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://equia.io">equia.io</a>, virtual career fairs for developers</em></p>
<h2 id="heading-wrapping-up-how-do-you-market-yourself">Wrapping Up – How Do You Market Yourself?</h2>
<p>Let me say it again: as an aspiring developer, you are a business of one. A tiny startup that no one has ever heard of. </p>
<p>Companies are reluctant to give you a chance as you have not yet proven yourself. Named university graduates might benefit from existing internships or a strong alum network. But if you are from a non-traditional background, you have to work with what you have. </p>
<p>Whether it's through building a personal brand, writing for developer communities, networking with recruiters, contributing to open-source projects, or attending live career fairs, if you are persistent with your efforts you will get your first customer (or dev job).</p>
<p>I got my first internship by self-studying for 4 months and dropped out of college to get my first full-time job. I now have been in the industry for a while. </p>
<p>The world needs more builders, but some of the best ones are rejected during the résumé-screening phase due to factors like country of origin, college degree (or lack thereof), and lack of marketable experiences. This is why I am working on organizing live workshops and career fairs, free for everyone around the world.</p>
<p>I highly encourage you to join <a target="_blank" href="https://equia.io">equia.io</a>, and <a target="_blank" href="https://twitter.com/aly4alyssa">DM me on Twitter</a> for any feedback you might have. We can work together to give more opportunities to people around the world from non-traditional backgrounds.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Build Your Own Developer Portfolio Website with HTML, CSS, and JavaScript ]]>
                </title>
                <description>
                    <![CDATA[ Everyone needs websites and web applications these days. So there are many opportunities for you if you work as a web developer.  But if you want to get a web developer job, you'll need a good portfolio website to showcase your skills and experience.... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-build-a-developer-portfolio-website/</link>
                <guid isPermaLink="false">66adf0fbf452caf50fb1fdf0</guid>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ portfolio ]]>
                    </category>
                
                    <category>
                        <![CDATA[ projects ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Kolade Chris ]]>
                </dc:creator>
                <pubDate>Mon, 04 Oct 2021 20:59:10 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/09/responsive-web-design.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Everyone needs websites and web applications these days. So there are many opportunities for you if you work as a web developer. </p>
<p>But if you want to get a web developer job, you'll need a good portfolio website to showcase your skills and experience.</p>
<p>In this tutorial, I'll discuss some of the main reasons why you should make a portfolio website for yourself. Then, I'll walk you through how to build your own fully responsive portfolio website with HTML, CSS, and JavaScript.</p>
<h2 id="heading-table-of-content">Table of Content</h2>
<ul>
<li><a class="post-section-overview" href="#heading-what-is-a-developer-portfolio-website">What is a Developer Portfolio Website?</a></li>
<li><a class="post-section-overview" href="#heading-why-you-should-have-a-portfolio-website">Why you should have a Portfolio Website</a></li>
<li><a class="post-section-overview" href="#heading-portfolio-project-how-to-build-your-own-online-developer-portfolio">Portfolio Project – How to Build Your Own Online Developer Portfolio</a></li>
<li><a class="post-section-overview" href="#heading-the-project-folder-structure">The Project Folder Structure</a></li>
<li><a class="post-section-overview" href="#heading-the-basic-html-boilerplate">The Basic HTML Boilerplate</a></li>
<li><a class="post-section-overview" href="#heading-the-navbar-section">The Navbar Section</a></li>
<li><a class="post-section-overview" href="#heading-how-to-style-the-navbar">How to Style the Navbar</a></li>
<li><a class="post-section-overview" href="#heading-how-to-build-the-hero-section">How to Build the Hero Section</a></li>
<li><a class="post-section-overview" href="#heading-how-to-style-the-hero-section">How to Style the Hero Section</a></li>
<li><a class="post-section-overview" href="#heading-how-to-build-the-more-about-me-section">How to Build the More About Me Section</a></li>
<li><a class="post-section-overview" href="#heading-how-to-build-the-skills-section">How to Build the Skills Section</a></li>
<li><a class="post-section-overview" href="#heading-how-to-style-the-skills-section">How to Style the Skills Section</a></li>
<li><a class="post-section-overview" href="#heading-how-to-build-the-projects-section">How to Build the Projects Section</a></li>
<li><a class="post-section-overview" href="#heading-how-to-style-the-project-section">How to Style the Project Section</a></li>
<li><a class="post-section-overview" href="#heading-how-to-build-the-contact-section">How to Build the Contact Section</a></li>
<li><a class="post-section-overview" href="#heading-how-to-style-the-contact-section">How to Style the Contact Section</a></li>
<li><a class="post-section-overview" href="#heading-how-to-style-the-social-icons">How to Style the Social Icons</a></li>
<li><a class="post-section-overview" href="#heading-how-to-add-the-scroll-to-top-button">How to Add the Scroll to Top Button</a></li>
<li><a class="post-section-overview" href="#heading-the-html-for-the-scroll-to-top-button">The HTML for the Scroll to Top Button</a></li>
<li>H<a class="post-section-overview" href="#heading-how-to-style-the-scroll-to-top-icon">ow to Style the Scroll to Top Icon</a></li>
<li><a class="post-section-overview" href="#heading-how-to-make-your-portfolio-website-responsive">How to Make Your Portfolio Website Responsive</a></li>
<li><a class="post-section-overview" href="#heading-how-to-create-the-media-query-for-tablets-and-mobile-phones-max-width-720px">How to Create the Media Query for Tablets and Mobile Phones (max-width 720px)</a></li>
<li><a class="post-section-overview" href="#heading-how-to-build-the-hamburger-menu">How to Build the Hamburger Menu</a></li>
<li><a class="post-section-overview" href="#heading-the-javascript-for-the-hamburger-menu">The JavaScript for the Hamburger Menu</a></li>
<li><a class="post-section-overview" href="#heading-how-to-make-the-hero-section-responsive">How to Make the Hero Section Responsive</a></li>
<li><a class="post-section-overview" href="#heading-how-to-make-the-more-about-me-section-responsive">How to Make the More About Me Section Responsive</a></li>
<li><a class="post-section-overview" href="#heading-how-to-make-the-skills-section-responsive">How to Make the Skills Section Responsive</a></li>
<li><a class="post-section-overview" href="#heading-how-to-make-the-projects-section-responsive">How to Make the Projects Section Responsive</a></li>
<li><a class="post-section-overview" href="#heading-how-to-make-the-contact-form-responsive">How to Make the Contact Form Responsive</a></li>
<li><a class="post-section-overview" href="#heading-how-to-make-the-website-responsive-on-small-phones">How to Make the Website Responsive on Small Phones</a></li>
<li><a class="post-section-overview" href="#heading-conclusion">Conclusion</a></li>
</ul>
<h2 id="heading-what-is-a-developer-portfolio-website">What is a Developer Portfolio Website?</h2>
<p>A developer portfolio website provides relevant information to potential employers about your skills, experience, and projects you've worked on. </p>
<p>You can consider your portfolio website to be your online résumé.</p>
<h2 id="heading-why-you-should-have-a-portfolio-website">Why you should have a Portfolio Website</h2>
<h3 id="heading-1-a-portfolio-website-increases-your-online-presence">1. A Portfolio Website Increases Your Online Presence</h3>
<p>As a developer, you need an online presence. You can cultivate this online presence on social media platforms such as Twitter, Facebook, and Instagram.  But those are not entirely your own, as the moderators of those platforms have almost full control over your account.</p>
<p>With your own portfolio website, it's live on your own domain online. And people can easily find you when they search for your name on a search engine like Google, provided you put the right things in place when it comes to SEO.</p>
<h3 id="heading-2-a-portfolio-website-is-your-online-resume">2. A portfolio website is your online résumé</h3>
<p>Your portfolio website is like your online résumé. Potential clients and hiring managers can easily find you online and check out your previous projects and skills. </p>
<p>This also means that when anyone wants to give you an opportunity to work for them, and they ask for your previous projects, you just give them one link to your website (your portfolio). It not only has your projects but your skillset and information about your past experience as well.</p>
<h3 id="heading-3-a-portfolio-website-shows-evidence-of-expertise-in-your-field">3. A Portfolio Website Shows Evidence of Expertise in your Field</h3>
<p>Having (let alone building you own) portfolio website as a developer sends out a clear message that you're putting your skills into practice and that you know what you are doing. </p>
<p>A portfolio can also help build trust with clients because they have direct evidence of the quality of your work. </p>
<h2 id="heading-portfolio-project-how-to-build-your-own-online-developer-portfolio">Portfolio Project – How to Build Your Own Online Developer Portfolio</h2>
<p>You can make a cool portfolio website for yourself with HTML, CSS, and JavaScript. And that’s what we are going to do here. </p>
<p>I already did this some months ago and made it available to everyone as a free product on Gumroad, so I decided to create a tutorial on how I got it done.</p>
<p>This is the <a target="_blank" href="https://eager-williams-af0d00.netlify.app/?">live demo</a> of what we will be building.</p>
<p>To follow along with me, you can grab the starter files from <a target="_blank" href="https://github.com/Ksound22/developer-portfolio/tree/starter">Github</a>.</p>
<h3 id="heading-the-project-folder-structure">The Project Folder Structure</h3>
<p>To avoid confusion, I will be arranging the HTML, CSS, JavaScript, icons, and images of the project in their respective folders. </p>
<p>The HTML file goes in the root folder, and the image, icon, CSS, and JavaScript files will be in their separate subfolders in an asset folder. This is a common practice.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/ss1.png" alt="ss1" width="600" height="400" loading="lazy"></p>
<p>There is also a readme file containing all the tools I used in the project, with their respective links. It's available in the starter files.</p>
<h3 id="heading-the-basic-html-boilerplate">The Basic HTML Boilerplate</h3>
<p>Everyone has their preferences when coding out a whole project with HTML, CSS, and JavaScript. Some like to define the whole HTML boilerplate first and then the CSS later, but I like to do everything section by section. </p>
<p>So, I will be starting with the navbar section. But it’s good to show what the basic HTML boilerplate looks like first:</p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span> /&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">http-equiv</span>=<span class="hljs-string">"X-UA-Compatible"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"IE=edge"</span> /&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span> /&gt;</span>

    <span class="hljs-comment">&lt;!--CSS Styles --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"assets/css/styles.css"</span> /&gt;</span>

    <span class="hljs-comment">&lt;!-- Favicons --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span>
      <span class="hljs-attr">rel</span>=<span class="hljs-string">"apple-touch-icon"</span>
      <span class="hljs-attr">sizes</span>=<span class="hljs-string">"180x180"</span>
      <span class="hljs-attr">href</span>=<span class="hljs-string">"assets/icons/apple-touch-icon.png"</span>
    /&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span>
      <span class="hljs-attr">rel</span>=<span class="hljs-string">"icon"</span>
      <span class="hljs-attr">type</span>=<span class="hljs-string">"image/png"</span>
      <span class="hljs-attr">sizes</span>=<span class="hljs-string">"32x32"</span>
      <span class="hljs-attr">href</span>=<span class="hljs-string">"assets/icons/favicon-32x32.png"</span>
    /&gt;</span>

    <span class="hljs-comment">&lt;!-- Animate CSS CDN --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span>
      <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span>
      <span class="hljs-attr">href</span>=<span class="hljs-string">"https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"</span>
    /&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>Jane Doe | Web Developer<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-comment">&lt;!-- Navbar --&gt;</span>

    <span class="hljs-comment">&lt;!-- Hero Section --&gt;</span>

    <span class="hljs-comment">&lt;!-- More about --&gt;</span>

    <span class="hljs-comment">&lt;!-- Skills section --&gt;</span>

    <span class="hljs-comment">&lt;!-- Projects section --&gt;</span>

    <span class="hljs-comment">&lt;!-- Contact section --&gt;</span>

    <span class="hljs-comment">&lt;!-- Social accounts - Fixed to the right --&gt;</span>

    <span class="hljs-comment">&lt;!-- Scroll to top --&gt;</span>

    <span class="hljs-comment">&lt;!-- Footer section --&gt;</span>

    <span class="hljs-comment">&lt;!-- Website scripts --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/js/app.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>

    <span class="hljs-comment">&lt;!-- Ion icons scripts --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">script</span>
      <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>
      <span class="hljs-attr">src</span>=<span class="hljs-string">"https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"</span>
    &gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">script</span>
      <span class="hljs-attr">nomodule</span>
      <span class="hljs-attr">src</span>=<span class="hljs-string">"https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"</span>
    &gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>I have all the sections in the HTML commented out so you can follow along better. In the boilerplate there are also the CDNs for animate CSS (A CSS animation library), and Ionic icons, the icon library I chose for the project.</p>
<p>I have a favicon made through Favicon IO and linked it in the head section. Favicon is the little image that shows on a browser tab. </p>
<h3 id="heading-the-navbar-section">The Navbar Section</h3>
<p>The Navbar section contains the simple logo of <code>h1</code> text, and the nav menu:</p>
<pre><code class="lang-html"> <span class="hljs-tag">&lt;<span class="hljs-name">nav</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>JANE DOE<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navigation"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#about"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-link"</span>&gt;</span>About<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#skills"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-link"</span>&gt;</span>Skills<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#projects"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-link"</span>&gt;</span>Projects<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#contact"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-link"</span>&gt;</span>Contact<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"burger-menu"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"burger-menu"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">ion-icon</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"bars"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"menu-outline"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">ion-icon</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<p>If you are wondering what the button element represents, it’s the bars for toggling the nav menu on mobile (a hamburger menu). This will be hidden on desktop but shown on mobile.</p>
<p>I will also be linking the individual sections of the website to these nav items, so when the user clicks on any of the nav items, they are taken to the section that corresponds to the nav item they click. </p>
<p>That’s why I have the hyperlink reference (<code>href</code>) attributes set to <code>#about</code>, <code>#skills</code>, <code>#projects</code>, and <code>#contacts</code>, respectively. The individual section of the website will have these attributes as ids. </p>
<p>The navbar now looks like this: 
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss2.png" alt="ss2" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-style-the-navbar">How to Style the Navbar</h3>
<p>The navbar definitely needs some styling to make it look a bit nicer. </p>
<p>Before styling the navbar properly, I will be declaring some CSS variables to make things easier later. This is because, with CSS variables, it is easier to avoid redundancy and repetition in your CSS file. </p>
<p>The syntax for declaring CSS variables looks like this:</p>
<pre><code class="lang-css"><span class="hljs-selector-pseudo">:root</span> {
  <span class="hljs-attribute">--variable-name</span>: value;
}
</code></pre>
<p>To use the variable, you do this:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">selector</span> {
  <span class="hljs-attribute">property</span>: <span class="hljs-built_in">var</span>(--variable-name);
}
</code></pre>
<p>I will also import the Roboto font from Google, and declare some CSS resets to remove some default features such as margin and padding for elements, <code>text-decoration</code> for anchor tags, and <code>list-style-type</code> for lists.</p>
<pre><code class="lang-css"><span class="hljs-keyword">@import</span> url(<span class="hljs-string">"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,900;1,700&amp;display=swap"</span>);

<span class="hljs-comment">/* Variables */</span>
<span class="hljs-selector-pseudo">:root</span> {
  <span class="hljs-attribute">--font-family</span>: <span class="hljs-string">"Roboto"</span>, sans-serf;
  <span class="hljs-attribute">--normal-font</span>: <span class="hljs-number">400</span>;
  <span class="hljs-attribute">--bold-font</span>: <span class="hljs-number">700</span>;
  <span class="hljs-attribute">--bolder-font</span>: <span class="hljs-number">900</span>;
  <span class="hljs-attribute">--bg-color</span>: <span class="hljs-number">#fcfcfc</span>;
  <span class="hljs-attribute">--primary-color</span>: <span class="hljs-number">#4756df</span>;
  <span class="hljs-attribute">--secondary-color</span>: <span class="hljs-number">#ff7235</span>;
  <span class="hljs-attribute">--primary-shadow</span>: <span class="hljs-number">#8b8eaf</span>;
  <span class="hljs-attribute">--secondary-shadow</span>: <span class="hljs-number">#a17a69</span>;
  <span class="hljs-attribute">--bottom-margin</span>: <span class="hljs-number">0.5rem</span>;
  <span class="hljs-attribute">--bottom-margin-2</span>: <span class="hljs-number">1rem</span>;
  <span class="hljs-attribute">--line-height</span>: <span class="hljs-number">1.7rem</span>;
  <span class="hljs-attribute">--transition</span>: <span class="hljs-number">0.3s</span>;
}
<span class="hljs-comment">/* Variables end */</span>

<span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">scroll-behavior</span>: smooth;
}

<span class="hljs-comment">/* CSS Resets */</span>
* {
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">0</span>;
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">0</span>;
  <span class="hljs-attribute">box-sizing</span>: border-box;
}

<span class="hljs-selector-tag">ul</span> {
  <span class="hljs-attribute">list-style-type</span>: none;
}

<span class="hljs-selector-tag">a</span> {
  <span class="hljs-attribute">text-decoration</span>: none;
  <span class="hljs-attribute">color</span>: <span class="hljs-built_in">var</span>(--primary-color);
}

<span class="hljs-selector-tag">a</span><span class="hljs-selector-pseudo">:hover</span> {
  <span class="hljs-attribute">color</span>: <span class="hljs-built_in">var</span>(--secondary-color);
}

<span class="hljs-selector-tag">body</span> {
  <span class="hljs-attribute">font-family</span>: <span class="hljs-built_in">var</span>(--font-family);
}
</code></pre>
<p>If you notice, I set a hover state for all links on the website from line 39 to 41. When the user hovers on any link, it changes to the secondary color I set in the CSS variables.</p>
<p>Here's a good rule of thumb for declaring CSS variables: if you find yourself using the same property and value often in the same CSS file, you should declare a variable for it to avoid repetition. </p>
<p>You should also make your variable names are as descriptive as possible, like I did, in order to help others who might work with your code.</p>
<p>With the resets, there are some changes to the navbar in the browser:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss3.png" alt="ss3" width="600" height="400" loading="lazy"></p>
<p>To style the navbar and align the content in it, I will be using CSS Flexbox:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">nav</span> {
  <span class="hljs-attribute">position</span>: sticky;
  <span class="hljs-attribute">top</span>: <span class="hljs-number">0</span>;
  <span class="hljs-attribute">left</span>: <span class="hljs-number">0</span>;
  <span class="hljs-attribute">z-index</span>: <span class="hljs-number">1</span>;
  <span class="hljs-attribute">display</span>: flex;
  <span class="hljs-attribute">align-items</span>: center;
  <span class="hljs-attribute">justify-content</span>: space-between;
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">1.5rem</span> <span class="hljs-number">3.5rem</span>;
  <span class="hljs-attribute">background-color</span>: <span class="hljs-built_in">var</span>(--bg-color);
  <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">0</span> <span class="hljs-number">3px</span> <span class="hljs-number">5px</span> <span class="hljs-built_in">rgba</span>(<span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0.1</span>);
}
</code></pre>
<p><strong>What's the CSS above doing?</strong></p>
<p>I made the navbar sticky with the position property, so it remains at the top no matter what. </p>
<p>The <code>z-index</code> property with the value of 1 makes sure the navbar displays over any other element on the web page. That's how you make a sticky navbar.</p>
<p>In addition, I also applied a shadow to the bottom of the navbar with the <code>box-shadow</code> property.</p>
<p>The navbar has a new look: 
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss4.png" alt="ss4" width="600" height="400" loading="lazy"></p>
<p>But we're not finished yet. The nav menu items need to be side by side, not on top of each other. I will be doing that with Flexbox too. </p>
<p>I will also finish up the rest of the navbar styling by making the h1, nav items, and the hamburger menu button look nicer. I'll do this with some CSS variables initially declared.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">nav</span> <span class="hljs-selector-tag">h1</span> {
  <span class="hljs-attribute">color</span>: <span class="hljs-built_in">var</span>(--primary-color);
}

<span class="hljs-selector-tag">nav</span> <span class="hljs-selector-tag">a</span> {
  <span class="hljs-attribute">color</span>: <span class="hljs-built_in">var</span>(--primary-color);
  <span class="hljs-attribute">transition</span>: <span class="hljs-built_in">var</span>(--transition);
}
<span class="hljs-selector-tag">nav</span> <span class="hljs-selector-tag">a</span><span class="hljs-selector-pseudo">:hover</span> {
  <span class="hljs-attribute">color</span>: <span class="hljs-built_in">var</span>(--secondary-color);
  <span class="hljs-attribute">border-bottom</span>: <span class="hljs-number">2px</span> solid <span class="hljs-built_in">var</span>(--secondary-color);
}

<span class="hljs-selector-tag">nav</span> <span class="hljs-selector-tag">ul</span> {
  <span class="hljs-attribute">display</span>: flex;
  <span class="hljs-attribute">gap</span>: <span class="hljs-number">1.9rem</span>;
}

<span class="hljs-selector-tag">nav</span> <span class="hljs-selector-tag">ul</span> <span class="hljs-selector-tag">li</span> {
  <span class="hljs-attribute">font-weight</span>: <span class="hljs-built_in">var</span>(--bold-font);
}
</code></pre>
<p>The hamburger menu bar also needs to be hidden. It has a class of <code>.burger-menu</code>, so we can set a display of none with it and also make the button look better.</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.burger-menu</span> {
  <span class="hljs-attribute">color</span>: <span class="hljs-built_in">var</span>(--primary-color);
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">2rem</span>;
  <span class="hljs-attribute">border</span>: <span class="hljs-number">0</span>;
  <span class="hljs-attribute">background-color</span>: transparent;
  <span class="hljs-attribute">cursor</span>: pointer;
  <span class="hljs-attribute">display</span>: none;
}
</code></pre>
<p>Our navbar looks way nicer now: 
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss5.png" alt="ss5" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-build-the-hero-section">How to Build the Hero Section</h3>
<p>The next section we'll work on is the hero section. This won’t take quite as much work as the navbar.</p>
<p>The HTML boilerplate for the hero section is in the code snippet below:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">section</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"hero"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"about"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
        <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/images/wfh_1.svg"</span>
        <span class="hljs-attr">alt</span>=<span class="hljs-string">"jane-doe"</span>
        <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
        <span class="hljs-attr">class</span>=<span class="hljs-string">"hero-img"</span>
      /&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"bio animate__animated animate__shakeX"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">h2</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"bio-title"</span>&gt;</span>About Me<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"bio-text"</span>&gt;</span>
          Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia sed
          dolorem fugit sapiente porro veniam pariatur dolore nostrum delectus
          inventore tempore minus nemo, iste ullam illo laboriosam maiores
          repudiandae quos!
        <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">section</span>&gt;</span>
</code></pre>
<p>The only thing that's a bit strange are the classes of <code>animate__animated animate__shakeX</code> attached to the div containing the <code>About Me</code> text. The class names are from animate CSS and they serve to animate the About Me text  container.</p>
<p>With this, the website gets a new look:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss6.png" alt="ss6" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-style-the-hero-section">How to Style the Hero Section</h3>
<p>Flexbox will come to the rescue once again! This section has two major sets of content – an image and text in a div. So we can use flexbox to display them side by side. You can see how it works in the CSS code snippet below:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.hero</span> {
  <span class="hljs-attribute">display</span>: flex;
  <span class="hljs-attribute">align-items</span>: center;
  <span class="hljs-attribute">justify-content</span>: center;
  <span class="hljs-attribute">gap</span>: <span class="hljs-number">2.5rem</span>;
  <span class="hljs-attribute">max-width</span>: <span class="hljs-number">68.75rem</span>;
  <span class="hljs-attribute">margin</span>: auto;
}
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/ss7.png" alt="ss7" width="600" height="400" loading="lazy"></p>
<p>Our Jane Doe image is too big, so we need to reduce its width and height. 
We also need to style the bio text (About Me text) for readability too. The CSS variables initially declared will be very instrumental here.</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.hero</span> <span class="hljs-selector-tag">img</span> {
  <span class="hljs-attribute">height</span>: <span class="hljs-number">37.5rem</span>;
  <span class="hljs-attribute">width</span>: <span class="hljs-number">37.5rem</span>;
}

<span class="hljs-selector-class">.bio</span> {
  <span class="hljs-attribute">width</span>: <span class="hljs-number">25rem</span>;
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">0.625rem</span>;
  <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">6px</span>;
  <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">0px</span> <span class="hljs-number">2px</span> <span class="hljs-number">15px</span> <span class="hljs-number">2px</span> <span class="hljs-built_in">var</span>(--primary-shadow);
}

<span class="hljs-selector-class">.bio</span> <span class="hljs-selector-tag">h1</span> {
  <span class="hljs-attribute">margin-bottom</span>: <span class="hljs-built_in">var</span>(--bottom-margin);
}

<span class="hljs-selector-class">.bio</span> <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">line-height</span>: <span class="hljs-built_in">var</span>(--line-height);
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">0.3rem</span> <span class="hljs-number">0</span>;
}
</code></pre>
<p>The hero section now looks beautiful: 
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss8.png" alt="ss8" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-build-the-more-about-me-section">How to Build the More About Me Section</h3>
<p>I included this section to include some more information about Jane Doe with some placeholder text. </p>
<p>You can take advantage of this to include information you were unable to put in the About Me section.</p>
<p>The HTML boilerplate for this section is quite short and simple:</p>
<pre><code class="lang-html">    <span class="hljs-tag">&lt;<span class="hljs-name">section</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"more-about"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span>More About Me<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis
        nesciunt excepturi quos obcaecati incidunt voluptatem ipsam sunt ipsum,
        autem deleniti cupiditate molestias quis unde quae totam porro dicta
        iure animi inventore, veniam hic! Omnis nulla, delectus a voluptatibus
      <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
        Lorem ipsum dolor sit amet consectetur, adipisicing elit. Consequuntur
        nostrum dolor minus, libero delectus praesentium perferendis
      <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero,
        consequuntur labore? Ea totam voluptas amet!
      <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">section</span>&gt;</span>
</code></pre>
<p>The CSS is straightforward as well. All we'll do is set a <code>background-color</code> with the <code>--bg-color</code> CSS variable, make the section readable by setting the padding, margin, line-height, and aligning the h2 text to the center:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.more-about</span> {
  <span class="hljs-attribute">background-color</span>: <span class="hljs-built_in">var</span>(--bg-color);
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">1rem</span> <span class="hljs-number">6rem</span>;
}

<span class="hljs-selector-class">.more-about</span> <span class="hljs-selector-tag">h2</span> {
  <span class="hljs-attribute">margin-bottom</span>: <span class="hljs-built_in">var</span>(--bottom-margin);
  <span class="hljs-attribute">text-align</span>: center;
}

<span class="hljs-selector-class">.more-about</span> <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">line-height</span>: <span class="hljs-built_in">var</span>(--line-height);
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">0.4rem</span>;
}
</code></pre>
<p>In the browser, the More About section looks like this:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss9.png" alt="ss9" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-build-the-skills-section">How to Build the Skills Section</h3>
<p>From the live demo, you'll see that the skills section contains relevant skills such as HTML, CSS, JavaScript, and so on. I was able to get the icons of those languages as SVGs from Icons8.</p>
<p>The HTML boilerplate for this section is in the code snippet below:</p>
<pre><code class="lang-html"> <span class="hljs-tag">&lt;<span class="hljs-name">section</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"skills"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"skills"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">h2</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"skill-header"</span>&gt;</span>My Top Skills<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>

      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"skills-wrapper"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"first-set animate__animated animate__pulse"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
            <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/icons/icons8-html-5.svg"</span>
            <span class="hljs-attr">alt</span>=<span class="hljs-string">""</span>
            <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
            <span class="hljs-attr">class</span>=<span class="hljs-string">"icon icon-card"</span>
          /&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
            <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/icons/icons8-css3.svg"</span>
            <span class="hljs-attr">alt</span>=<span class="hljs-string">""</span>
            <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
            <span class="hljs-attr">class</span>=<span class="hljs-string">"icon icon-card"</span>
          /&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
            <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/icons/icons8-javascript.svg"</span>
            <span class="hljs-attr">alt</span>=<span class="hljs-string">""</span>
            <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
            <span class="hljs-attr">class</span>=<span class="hljs-string">"icon icon-card"</span>
          /&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>

        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"second-set animate__animated animate__pulse"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
            <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/icons/icons8-bootstrap.svg"</span>
            <span class="hljs-attr">alt</span>=<span class="hljs-string">""</span>
            <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
            <span class="hljs-attr">class</span>=<span class="hljs-string">"icon icon-card"</span>
          /&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
            <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/icons/icons8-react-native.svg"</span>
            <span class="hljs-attr">alt</span>=<span class="hljs-string">""</span>
            <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
            <span class="hljs-attr">class</span>=<span class="hljs-string">"icon icon-card"</span>
          /&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
            <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/icons/icons8-git.svg"</span>
            <span class="hljs-attr">alt</span>=<span class="hljs-string">""</span>
            <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
            <span class="hljs-attr">class</span>=<span class="hljs-string">"icon icon-card"</span>
          /&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">section</span>&gt;</span>
</code></pre>
<p>There are six icons in total. And instead of having to align them with Flexbox, I grouped them in two places (3 teach), with the classes of first-set and second-set, so they stay on top of each other. This means that the stylings we'll apply will be more readable. Easy!</p>
<p>Notice that I’ve been attaching the loading attribute to the individual icons and images and setting it to lazy. This will make sure that the images are loaded only when the user scrolls to the sections containing them. This will subsequently speed up load time, because only what is needed will be loaded.</p>
<h3 id="heading-how-to-style-the-skills-section">How to Style the Skills Section</h3>
<p>Without styling, the skills section looks like this:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss10edited.jpg" alt="ss10edited" width="600" height="400" loading="lazy"></p>
<p>We should style the section a little bit because it doesn’t look good enough yet: </p>
<pre><code class="lang-css"><span class="hljs-selector-class">.skills</span> {
  <span class="hljs-attribute">max-width</span>: <span class="hljs-number">68.75rem</span>;
  <span class="hljs-attribute">margin</span>: auto;
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">margin-top</span>: <span class="hljs-number">2.5rem</span>;
}

<span class="hljs-selector-class">.skill-header</span> {
  <span class="hljs-attribute">margin-bottom</span>: <span class="hljs-number">1rem</span>;
}

<span class="hljs-selector-class">.skills-wrapper</span> <span class="hljs-selector-tag">img</span> {
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">1.25rem</span>;
}

<span class="hljs-selector-class">.icon</span> {
  <span class="hljs-attribute">width</span>: <span class="hljs-number">11.875rem</span>;
  <span class="hljs-attribute">height</span>: <span class="hljs-number">11.25rem</span>;
}
</code></pre>
<p>In the CSS above, I defined a maximum width for the whole section to push things to the center for a better user experience. </p>
<p>Other stylings we applied relate to clarity and readability. For example, I increased the size of the icons to make them more visible with the width and height properties. I also applied a padding of 1rem (16 pixels) to all the icons to push them apart from each other a little bit.</p>
<p>The skills section now looks cool:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss11.png" alt="ss11" width="600" height="400" loading="lazy"></p>
<p>Still, I think the section can be better, so I have decided to make some more tweaks with the box-shadow property. </p>
<p>Remember from the HTML that there is a class attribute called <code>.icon-card</code> attached to all the icons. I will be using the class name to put all the icons in a card:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.icon-card</span> {
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#fff</span>;
  <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">11px</span>;
  <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">0</span> <span class="hljs-number">3px</span> <span class="hljs-number">10px</span> <span class="hljs-built_in">var</span>(--secondary-shadow);
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">20px</span>;
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">10px</span>;
}
</code></pre>
<p>The skills section looks a lot better:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss12.png" alt="ss12" width="600" height="400" loading="lazy">
Look at that!</p>
<h3 id="heading-how-to-build-the-projects-section">How to Build the Projects Section</h3>
<p>One of the major purposes of a portfolio website is to show off your projects. So we'll need to build a section to showcase projects you've worked on in the past.</p>
<p>This section is probably the most tedious to style, but Flexbox won’t stop being our friend.</p>
<p>The HTML for this section is in the code snippet below:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">section</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"projects"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"projects"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">h2</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"projects-title"</span>&gt;</span>Some of my Recent Projects<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"projects-container"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-container project-card"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
            <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/images/expenseTracker.png"</span>
            <span class="hljs-attr">alt</span>=<span class="hljs-string">"expense-tracker"</span>
            <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
            <span class="hljs-attr">class</span>=<span class="hljs-string">"project-pic"</span>
          /&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">h3</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-title"</span>&gt;</span>Expense Tracker<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-details"</span>&gt;</span>
            Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quas
            ratione vel inventore labore commodi modi quos culpa aut saepe!
            Alias!
          <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">target</span>=<span class="hljs-string">"_blank"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-link"</span>&gt;</span>Check it Out<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-container project-card"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
            <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/images/netflixClone.png"</span>
            <span class="hljs-attr">alt</span>=<span class="hljs-string">"netflic-clone"</span>
            <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
            <span class="hljs-attr">class</span>=<span class="hljs-string">"project-pic"</span>
          /&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">h3</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-title"</span>&gt;</span>Netflix Clone<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-details"</span>&gt;</span>
            Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quas
            ratione vel inventore labore commodi modi quos culpa aut saepe!
            Alias!
          <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">target</span>=<span class="hljs-string">"_blank"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-link"</span>&gt;</span>Check it Out<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-container project-card"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
            <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/images/greenyEarth.png"</span>
            <span class="hljs-attr">alt</span>=<span class="hljs-string">"greeny-earth"</span>
            <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
            <span class="hljs-attr">class</span>=<span class="hljs-string">"project-pic"</span>
          /&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">h3</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-title"</span>&gt;</span>Greeny Earth<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-details"</span>&gt;</span>
            Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quas
            ratione vel inventore labore commodi modi quos culpa aut saepe!
            Alias!
          <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">target</span>=<span class="hljs-string">"_blank"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"project-link"</span>&gt;</span>Check it Out<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">section</span>&gt;</span>
</code></pre>
<p>Looking at the HTML, there are three projects in total, all in their individual divs with the class name of project-container and project-card. These class names will be instrumental in styling the projects consistently. </p>
<p>The containing section element itself has a class of projects, and an id attribute of projects as well. The class name is for styling, and the id is for linking it to the Projects link on the navbar.  </p>
<p>The projects have their individual images with the class name of <code>project-pic</code>, their titles with a class of <code>project-title</code>, more details with the class name of <code>project-details</code>, and links with the class name of <code>project-link</code>. </p>
<p>The sole purpose of giving all of them unique class names is to style them.</p>
<p>These are a few of the projects I worked on myself when I was starting out as a developer.</p>
<p>The projects section looks like this in the browser:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/projects-unstyled.gif" alt="projects-unstyled" width="600" height="400" loading="lazy"></p>
<p>The section doesn’t look good yet, though – there is even an annoying horizontal scrollbar caused by the images. So we have a lot to do with CSS.</p>
<h3 id="heading-how-to-style-the-project-section">How to Style the Project Section</h3>
<p>First of all, I will give the whole section a background color by setting the greyish color (--bg-color) we declared in the CSS variables as the value. </p>
<p>I will also reduce the width and height of the project images by usung the <code>project-pic</code> class. Then I'll use Flexbox to put the projects side by side.</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.projects</span> {
  <span class="hljs-attribute">background-color</span>: <span class="hljs-built_in">var</span>(--bg-color);
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">32px</span> <span class="hljs-number">0</span>;
  <span class="hljs-attribute">margin-top</span>: <span class="hljs-number">2rem</span>;
}

<span class="hljs-selector-class">.project-pic</span> {
  <span class="hljs-attribute">width</span>: <span class="hljs-number">65%</span>;
  <span class="hljs-attribute">height</span>: <span class="hljs-number">60%</span>;
}

<span class="hljs-selector-class">.projects-container</span> {
  <span class="hljs-attribute">display</span>: flex;
  <span class="hljs-attribute">align-items</span>: center;
  <span class="hljs-attribute">justify-content</span>: center;
}
</code></pre>
<p>The section looks a lot better:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss13Edited.jpg" alt="ss13Edited" width="600" height="400" loading="lazy"></p>
<p>The images now look better, but the project title, project details, and project links need to be aligned nicely within their individual containers. </p>
<p>The whole project section also needs to be pushed to the center. You don’t need Flexbox to do this, though – it can be done by setting the text align property to the value of center:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.projects-title</span> {
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">margin-bottom</span>: <span class="hljs-number">1rem</span>;
}

<span class="hljs-selector-class">.project-container</span> {
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">width</span>: <span class="hljs-number">21.875rem</span>;
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">1rem</span>;
}
</code></pre>
<p>Notice that I also set a width of <code>21.875rem (350 pixels)</code> for the individual project containers. This will push them apart from the sides for a better user experience. In this case, the user would not need to look all the way across before they see everything. </p>
<p>The section now looks better:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss14.png" alt="ss14" width="600" height="400" loading="lazy"></p>
<p>We can still make this section better. The project titles, project details and project links look chunked together, so we should add some padding and margins. </p>
<p>The individual project containers also need to look more distinct. The <code>box-shadow</code> property will be instrumental here again, so I’m putting them in their individual cards.</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.project-container</span> <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">0.4rem</span>;
}

<span class="hljs-selector-class">.project-title</span> {
  <span class="hljs-attribute">margin-bottom</span>: <span class="hljs-built_in">var</span>(--bottom-margin);
}

<span class="hljs-selector-class">.project-details</span> {
  <span class="hljs-attribute">margin-bottom</span>: <span class="hljs-built_in">var</span>(--bottom-margin);
}

<span class="hljs-selector-class">.project-card</span> {
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#fff</span>;
  <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">11px</span>;
  <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">0</span> <span class="hljs-number">3px</span> <span class="hljs-number">10px</span> <span class="hljs-built_in">var</span>(--primary-shadow);
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">20px</span>;
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">10px</span>;
}
</code></pre>
<p>The project section looks way better now: 
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss15.png" alt="ss15" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-build-the-contact-section">How to Build the Contact Section</h3>
<p>If a potential employer or client finds your portfolio website attractive, they might want to contact you. So you'll want to have a contact form in this section, alongside links to your social media profiles.</p>
<p>The HTML for this section looks like this:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">section</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"contact"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"contact"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span>Get In Touch With Me<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"contact-form-container"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"contact-form"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">action</span>=<span class="hljs-string">"https://formspree.io/f/xyylngw"</span> <span class="hljs-attr">method</span>=<span class="hljs-string">"POST"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span>&gt;</span>
              <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"name"</span>&gt;</span>Name<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
              <span class="hljs-tag">&lt;<span class="hljs-name">input</span>
                <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span>
                <span class="hljs-attr">id</span>=<span class="hljs-string">"name"</span>
                <span class="hljs-attr">name</span>=<span class="hljs-string">"sender-name"</span>
                <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Enter Your Name"</span>
                <span class="hljs-attr">class</span>=<span class="hljs-string">"input-field"</span>
                <span class="hljs-attr">required</span>
              /&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span>&gt;</span>
              <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"email"</span>&gt;</span>Email<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
              <span class="hljs-tag">&lt;<span class="hljs-name">input</span>
                <span class="hljs-attr">type</span>=<span class="hljs-string">"email"</span>
                <span class="hljs-attr">id</span>=<span class="hljs-string">"email"</span>
                <span class="hljs-attr">name</span>=<span class="hljs-string">"sender-email"</span>
                <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Enter Your Email"</span>
                <span class="hljs-attr">class</span>=<span class="hljs-string">"input-field"</span>
                <span class="hljs-attr">required</span>
              /&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span>&gt;</span>
              <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"message"</span>&gt;</span>Message<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
              <span class="hljs-tag">&lt;<span class="hljs-name">textarea</span>
                <span class="hljs-attr">id</span>=<span class="hljs-string">"message"</span>
                <span class="hljs-attr">cols</span>=<span class="hljs-string">"60"</span>
                <span class="hljs-attr">rows</span>=<span class="hljs-string">"10"</span>
                <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Enter Your Message"</span>
                <span class="hljs-attr">name</span>=<span class="hljs-string">"message"</span>
                <span class="hljs-attr">class</span>=<span class="hljs-string">"input-field"</span>
                <span class="hljs-attr">required</span>
              &gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">textarea</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">input</span>
              <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span>
              <span class="hljs-attr">value</span>=<span class="hljs-string">"Submit"</span>
              <span class="hljs-attr">id</span>=<span class="hljs-string">"submit-btn"</span>
              <span class="hljs-attr">class</span>=<span class="hljs-string">"submit-btn"</span>
            /&gt;</span>
          <span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">section</span>&gt;</span>
</code></pre>
<p>Here we've built a contact form with input fields for name and email, a <code>textarea</code> so people can enter the message to be sent, and a submit button for submitting the message so you can see it. </p>
<p>If you take a good look at the form element, you’ll see I have an action attribute set to a URL from Formspree. This is what I chose for the form submission. With Formspree, you can get the message directly in your email inbox without having to set up a server with complex PHP or JavaScript.</p>
<p>Note that you can't use my URL – it won't work for you. You can easily setup your own on the Formspree website for free. I also attached a resource on how to set up Formspree to the readme file of the project. </p>
<p>I have set some <code>id</code> and <code>class</code> attributes for the individual inputs to style them. There is also a <code>name</code> attribute for all the input fields. This is required by the Formspree form submission service.</p>
<p>To get a basic validation, I attached a <code>required</code> attribute, so the form refuses to submit if the user leaves any of the input fields unfilled.</p>
<h3 id="heading-how-to-style-the-contact-section">How to Style the Contact Section</h3>
<p>Without styling, the contact section doesn’t look good at all:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss16Edited.jpg" alt="ss16Edited" width="600" height="400" loading="lazy"></p>
<p>All I will do in the CSS is align the whole content to the center and make the input fields look better.</p>
<p>With the text align and margin properties, you can align the h2 and the container for the contact form to the center. </p>
<p>I will also put the whole form in a card with the <code>box-shadow</code> property.</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.contact</span> {
  <span class="hljs-attribute">margin-top</span>: <span class="hljs-number">2rem</span>;
}

<span class="hljs-selector-class">.contact</span> <span class="hljs-selector-tag">h2</span> {
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">margin-bottom</span>: <span class="hljs-built_in">var</span>(--bottom-margin-<span class="hljs-number">2</span>);
}

<span class="hljs-selector-class">.contact-form-container</span> {
  <span class="hljs-attribute">max-width</span>: <span class="hljs-number">40.75rem</span>;
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">0</span> auto;
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">0.938rem</span>;
  <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">5px</span>;
  <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">0</span> <span class="hljs-number">3px</span> <span class="hljs-number">10px</span> <span class="hljs-built_in">var</span>(--secondary-shadow);
}
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/ss17.png" alt="ss17" width="600" height="400" loading="lazy"></p>
<p>The input fields, textarea, labels and placeholders definitely need some styling as well to help with alignment and clarity:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.contact-form-container</span> <span class="hljs-selector-tag">label</span> {
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">2.7em</span>;
  <span class="hljs-attribute">font-weight</span>: <span class="hljs-built_in">var</span>(--bold-font);
  <span class="hljs-attribute">color</span>: <span class="hljs-built_in">var</span>(--primary-color);
}

<span class="hljs-selector-class">.contact-form-container</span> <span class="hljs-selector-tag">textarea</span> {
  <span class="hljs-attribute">min-height</span>: <span class="hljs-number">6.25rem</span>;
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">14px</span>;
}

<span class="hljs-selector-class">.contact-form-container</span> <span class="hljs-selector-class">.input-field</span> {
  <span class="hljs-attribute">width</span>: <span class="hljs-number">100%</span>;
  <span class="hljs-attribute">padding-top</span>: <span class="hljs-number">10px</span>;
  <span class="hljs-attribute">padding-bottom</span>: <span class="hljs-number">10px</span>;
  <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">5px</span>;
  <span class="hljs-attribute">border</span>: none;
  <span class="hljs-attribute">border</span>: <span class="hljs-number">2px</span> outset <span class="hljs-built_in">var</span>(--primary-color);
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">0.875rem</span>;
  <span class="hljs-attribute">outline</span>: none;
}
</code></pre>
<p>The form looks better now: <img src="https://www.freecodecamp.org/news/content/images/2021/10/ss18.png" alt="ss18" width="600" height="400" loading="lazy"></p>
<p>But the placeholders are not consistent with the labels. So we need to give it a color and some padding. I will be giving it the primary color set in the CSS variable lists. </p>
<p>To select the placeholders for styling, you can use the placeholder pseudo-class:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.input-field</span><span class="hljs-selector-pseudo">::placeholder</span> {
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">0.5rem</span>;
  <span class="hljs-attribute">color</span>: <span class="hljs-built_in">var</span>(--primary-color);
}
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/ss19.png" alt="ss19" width="600" height="400" loading="lazy"></p>
<p>In the contact form, the only thing left is to style the button. Buttons are quite easy to style:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.submit-btn</span> {
  <span class="hljs-attribute">width</span>: <span class="hljs-number">100%</span>;
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">10px</span>;
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">10px</span> <span class="hljs-number">0</span>;
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#fff</span>;
  <span class="hljs-attribute">border</span>: <span class="hljs-number">2px</span> solid <span class="hljs-built_in">var</span>(--primary-color);
  <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">5px</span>;
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1rem</span>;
  <span class="hljs-attribute">font-weight</span>: <span class="hljs-built_in">var</span>(--bold-font);
  <span class="hljs-attribute">transition</span>: <span class="hljs-built_in">var</span>(--transition);
}
</code></pre>
<p>In the CSS code snippet above, I made the button go all the way across in the form container by giving it a width of 100%. I also made it more visible with some padding, a margin, a border, and a bolder font weight.</p>
<p>The <code>border-radius</code> property with a value of 5px removes the sharp edges and the transition serves to slow things down a little when the button is in the hover state. </p>
<p>The hover state is defined in the CSS code snippet below:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.submit-btn</span><span class="hljs-selector-pseudo">:hover</span> {
  <span class="hljs-attribute">background-color</span>: <span class="hljs-built_in">var</span>(--primary-color);
  <span class="hljs-attribute">border</span>: <span class="hljs-number">2px</span> solid <span class="hljs-built_in">var</span>(--primary-color);
  <span class="hljs-attribute">cursor</span>: pointer;
}
</code></pre>
<p>The form looks much better now:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/contact-form-hover-effect.gif" alt="contact-form-hover-effect" width="600" height="400" loading="lazy"></p>
<p>Remember that having your social media links in your portfolio website is a plus for anyone who might want to contact you. That’s the next thing we are going to do, and we are going to do it in a unique way.</p>
<p>The HTML for the social buttons is in the code snippet below:</p>
<pre><code class="lang-html">    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"socials"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">target</span>=<span class="hljs-string">"_blank"</span>
        &gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span>
          <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/icons/icons8-twitter-circled.gif"</span>
          <span class="hljs-attr">alt</span>=<span class="hljs-string">"Twitter"</span>
          <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
          <span class="hljs-attr">class</span>=<span class="hljs-string">"socicon"</span>
      /&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">target</span>=<span class="hljs-string">"_blank"</span>
        &gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span>
          <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/icons/icons8-instagram.gif"</span>
          <span class="hljs-attr">alt</span>=<span class="hljs-string">"Instagram"</span>
          <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
          <span class="hljs-attr">class</span>=<span class="hljs-string">"socicon"</span>
      /&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">target</span>=<span class="hljs-string">"_blank"</span>
        &gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span>
          <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/icons/icons8-linkedin-circled.gif"</span>
          <span class="hljs-attr">alt</span>=<span class="hljs-string">"Linkedin"</span>
          <span class="hljs-attr">loading</span>=<span class="hljs-string">"lazy"</span>
          <span class="hljs-attr">class</span>=<span class="hljs-string">"socicon"</span>
      /&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">target</span>=<span class="hljs-string">"_blank"</span>
        &gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/icons/icons8-github.gif"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Github"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"socicon"</span>
      /&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
</code></pre>
<p>The social icons I chose are animated gif icons from icons8. I put all of them in a container with the class of <code>socials</code>, and gave them an individual class of <code>socicon</code> for styling.</p>
<p>Take a look at some animated social media icons winking at you below:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/animated-social-icons.gif" alt="animated-social-icons" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-style-the-social-icons">How to Style the Social Icons</h3>
<pre><code class="lang-css"><span class="hljs-selector-class">.socials</span> {
  <span class="hljs-attribute">display</span>: flex;
  <span class="hljs-attribute">flex-direction</span>: column;
  <span class="hljs-attribute">position</span>: fixed;
  <span class="hljs-attribute">right</span>: <span class="hljs-number">1%</span>;
  <span class="hljs-attribute">bottom</span>: <span class="hljs-number">50%</span>;
}

<span class="hljs-selector-class">.socicon</span> {
  <span class="hljs-attribute">width</span>: <span class="hljs-number">2rem</span>;
  <span class="hljs-attribute">height</span>: <span class="hljs-number">2rem</span>;
}
</code></pre>
<p>With the CSS above, the social icons will be fixed to the right on the web page, so anyone who visits the website sees them no matter where they scroll. </p>
<p>I also reduced the size of the icons by assigning them all reduced <code>width</code> and <code>height</code> property values.
<img src="https://www.freecodecamp.org/news/content/images/2021/10/good-icons.gif" alt="good-icons" width="600" height="400" loading="lazy"></p>
<p>Look at that!</p>
<p>The only thing left to do is the footer. There’s nothing complex in the footer HTML and CSS apart from the reserved character entity for copyright symbol and heart:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">footer</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"copy"</span>&gt;</span><span class="hljs-symbol">&amp;copy;</span> Copyright 2021<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"copy"</span>&gt;</span>
        Built with <span class="hljs-symbol">&amp;#x2661;</span> by
        <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://twitter.com/koladechris"</span> <span class="hljs-attr">target</span>=<span class="hljs-string">"_blank"</span>
          &gt;</span>Kolade Chris (Ksound)<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>
        &gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">footer</span>&gt;</span>
</code></pre>
<pre><code class="lang-css"><span class="hljs-selector-tag">footer</span> {
  <span class="hljs-attribute">background-color</span>: <span class="hljs-built_in">var</span>(--bg-color);
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">1.25rem</span>;
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">2rem</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span>;
}
</code></pre>
<p>We now have a full-fledged portfolio website! 
<img src="https://www.freecodecamp.org/news/content/images/2021/10/full-fledged-portfolio.gif" alt="full-fledged-portfolio" width="600" height="400" loading="lazy"></p>
<p>But we need to make it responsive, because it doesn’t look good on smaller devices:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/unresponsive-portfolio.gif" alt="unresponsive-portfolio" width="600" height="400" loading="lazy"></p>
<p>We need to make all the content of the individual sections display on section on top of the another (in a column layout). We can do this pretty easily with media queries and Flexbox. </p>
<p>Before adding the media queries for responsiveness, lets implement a scroll-to-top button with HTML, CSS, and JavaScript.</p>
<h2 id="heading-how-to-add-the-scroll-to-top-button">How to Add the Scroll to Top Button</h2>
<h3 id="heading-the-html-for-the-scroll-to-top-button">The HTML for the Scroll to Top Button</h3>
<p>For the HTML, I got an animated icon from Icons8 and decided to put it in an i tag. </p>
<p>The i tag has a class of <code>scroll-up</code> for styling and an id of <code>scroll-up</code> for selecting it with JavaScript. This is because in my projects, I like to use classes for styling and ids for JavaScript functionalities.</p>
<pre><code class="lang-html">  <span class="hljs-tag">&lt;<span class="hljs-name">i</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"scroll-up"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"scroll-up"</span>
      &gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span>
        <span class="hljs-attr">src</span>=<span class="hljs-string">"assets/icons/icons8-upward-arrow.gif"</span>
        <span class="hljs-attr">class</span>=<span class="hljs-string">"socicon up-arrow"</span>
        <span class="hljs-attr">alt</span>=<span class="hljs-string">"scroll-up"</span>
    /&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">i</span>&gt;</span>
</code></pre>
<h3 id="heading-how-to-style-the-scroll-to-top-icon">How to Style the Scroll to Top Icon</h3>
<p>I will make the scroll-to-top icon fixed just like the social icons. I'll also give it a cursor property of pointer, so the cursor changes when the user hovers on it.</p>
<p>With the class of up-arrow attached to the scroll-to-top icon, I will also increase the size of the icon for visibility:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.scroll-up</span> {
  <span class="hljs-attribute">position</span>: fixed;
  <span class="hljs-attribute">right</span>: <span class="hljs-number">0.5%</span>;
  <span class="hljs-attribute">bottom</span>: <span class="hljs-number">3%</span>;
  <span class="hljs-attribute">cursor</span>: pointer;
}

<span class="hljs-selector-class">.up-arrow</span> {
  <span class="hljs-attribute">width</span>: <span class="hljs-number">3rem</span>;
  <span class="hljs-attribute">height</span>: <span class="hljs-number">3rem</span>;
}
</code></pre>
<p>The icon looks good: 
<img src="https://www.freecodecamp.org/news/content/images/2021/10/scroll-up-first.gif" alt="scroll-up-first" width="600" height="400" loading="lazy"></p>
<p>But it doesn’t do anything yet. So we need to make it functional with a few lines of JavaScript:</p>
<pre><code class="lang-js"><span class="hljs-comment">// scroll to top functionality</span>
<span class="hljs-keyword">const</span> scrollUp = <span class="hljs-built_in">document</span>.querySelector(<span class="hljs-string">"#scroll-up"</span>);

scrollUp.addEventListener(<span class="hljs-string">"click"</span>, <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-built_in">window</span>.scrollTo({
    <span class="hljs-attr">top</span>: <span class="hljs-number">0</span>,
    <span class="hljs-attr">left</span>: <span class="hljs-number">0</span>,
    <span class="hljs-attr">behavior</span>: <span class="hljs-string">"smooth"</span>,
  });
});
</code></pre>
<p><strong>What is the script above doing?</strong></p>
<p>The first line selects the scroll-to-top button with the id attribute attached to it in the HTML. We used the <code>querySelector()</code> method here. You can also use the <code>getElementById()</code> method.</p>
<p>In the remaining lines, I used the click <code>eventListener</code> to get the user’s click action and exploit the <code>scrollTo</code> part of the windows object to make the button functional.</p>
<p>With this functionality, when the user clicks on the scroll-to-top button, the page scrolls to the top and left side of the website smoothly. I did this by setting top to <code>0</code>, left to <code>0</code>, and behavior to <code>smooth</code>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/scroll-up.gif" alt="scroll-up" width="600" height="400" loading="lazy"></p>
<p>You can learn more about the windows object by opening up your browser’s developer tools console. Type in window and hit enter, then you see everything available in the windows object, like I did below:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/window-object.gif" alt="window-object" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-make-your-portfolio-website-responsive">How to Make Your Portfolio Website Responsive</h2>
<p>To make the website responsive, we will be using CSS media queries and Flexbox.</p>
<p>First, we'll need to make the images and text look smaller, and then we'll make the content of each section display in a vertical layout by setting the <code>flex-direction</code> to column.</p>
<p>In the media query, I will be using 2 breakpoints – <code>720px</code> and <code>420px</code>.</p>
<p>The 720px breakpoint is for tablets and mobile phones, and 420px is for small phones like an iPhone 6, and small Android phones. </p>
<p>Media query Breakpoints are the points at which you want the content of a website to respond according to the width of a device. So, any code put under the 720px breakpoint reflects on devices with a screen less than or more than 720px, depending on whether you specify max-width or min-width.</p>
<p>In the case of a max-width of <code>720px</code>, the media query syntax looks like this:</p>
<pre><code class="lang-css"><span class="hljs-keyword">@media</span> screen <span class="hljs-keyword">and</span> (<span class="hljs-attribute">max-width:</span> <span class="hljs-number">720px</span>) {
  <span class="hljs-comment">/*changes reflects on screen with a width of 720px and below*/</span>
}
</code></pre>
<h3 id="heading-how-to-create-the-media-query-for-tablets-and-mobile-phones-max-width-720px">How to Create the Media Query for Tablets and Mobile Phones (max-width 720px)</h3>
<p>We will start making the website responsive right from the navbar, because the navbar doesn’t look good on smaller devices. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/ss21.png" alt="ss21" width="600" height="400" loading="lazy"></p>
<p>First, I’m going to reduce the padding of the navbar so the <code>h1</code> logo and nav menu items fit in nicely:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">nav</span> {
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">1.5rem</span> <span class="hljs-number">1rem</span>;
  }
</code></pre>
<p>Things now look a bit better:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss22.png" alt="ss22" width="600" height="400" loading="lazy"></p>
<p>On small devices, the nav menu items need to be on top of one another, and they need to be hidden. So, its time to update the code so the hamburger menu is initially hidden.</p>
<h3 id="heading-how-to-build-the-hamburger-menu">How to Build the Hamburger Menu</h3>
<p>To make the hamburger menu, we need to take the nav menu items out of the viewport. Then we need to set a class of <code>show</code> on the nav list items that will be toggled with few lines of JavaScript (remember the nav items are in an unordered list).</p>
<pre><code class="lang-css"> <span class="hljs-selector-tag">nav</span> <span class="hljs-selector-tag">ul</span> {
    <span class="hljs-attribute">position</span>: fixed;
    <span class="hljs-attribute">background-color</span>: <span class="hljs-built_in">var</span>(--bg-color);
    <span class="hljs-attribute">flex-direction</span>: column;
    <span class="hljs-attribute">top</span>: <span class="hljs-number">86px</span>;
    <span class="hljs-attribute">left</span>: <span class="hljs-number">10%</span>;
    <span class="hljs-attribute">width</span>: <span class="hljs-number">80%</span>;
    <span class="hljs-attribute">text-align</span>: center;
    <span class="hljs-attribute">transform</span>: <span class="hljs-built_in">translateX</span>(<span class="hljs-number">120%</span>);
    <span class="hljs-attribute">transition</span>: transform <span class="hljs-number">0.5s</span> ease-in;
  }

   <span class="hljs-selector-tag">nav</span> <span class="hljs-selector-tag">ul</span> <span class="hljs-selector-tag">li</span> {
    <span class="hljs-attribute">margin</span>: <span class="hljs-number">8px</span>;
  }
</code></pre>
<p>In the CSS code snippet above, I set a position of fixed on the unordered list (<code>ul</code>) to make it float on the screen. I also pushed it down 86px from the top with <code>top: 86px</code>, and 10% to the left. </p>
<p>I gave it a width of 80% of its parent (the nav element from the HTML), pushed it to the center with <code>text-align: center</code>, and finally hid it with the transform property set to <code>translateX(120%)</code>. This will push it to the right and force it out of the viewport. </p>
<p>And now, when the user clicks to show the nav items, they all slide in from the right. Awesome. </p>
<p>If you want the nav menu items to slide in from the left, change the <code>transform</code> property value to <code>transform: translateX(-120%)</code> (this is the direct opposite of <code>transform: translateX(120%)</code>). It's as easy as that, depending on your preference.</p>
<p>I also assigned a margin of 8px to the nav items to give them more space.</p>
<p>The navbar now looks like this: 
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss22-1.png" alt="ss22-1" width="600" height="400" loading="lazy"></p>
<p>The hamburger menu bar remains hidden. So we need to show it by giving it a display of block, setting a class of show to translate on the x-axis to 0 in order to show it, and then toggle it with JavaScript.</p>
<pre><code class="lang-css"> <span class="hljs-selector-class">.burger-menu</span> {
    <span class="hljs-attribute">display</span>: block;
  }

  <span class="hljs-selector-tag">nav</span> <span class="hljs-selector-tag">ul</span><span class="hljs-selector-class">.show</span> {
    <span class="hljs-attribute">transform</span>: <span class="hljs-built_in">translateX</span>(<span class="hljs-number">0</span>);
  }
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/ss24.png" alt="ss24" width="600" height="400" loading="lazy"></p>
<p>Our hamburger menu bars now gets shown, but the nav items remain hidden. To show it, we need to toggle the show class on and off with JavaScript.</p>
<h3 id="heading-the-javascript-for-the-hamburger-menu">The JavaScript for the Hamburger Menu</h3>
<p>To toggle the navbar nav menu items on and off with JavaScript, we first need to select all relevant items of the navbar and store them in some variables:</p>
<pre><code class="lang-js"><span class="hljs-comment">// Nav hamburgerburger selections</span>

<span class="hljs-keyword">const</span> burger = <span class="hljs-built_in">document</span>.querySelector(<span class="hljs-string">"#burger-menu"</span>);
<span class="hljs-keyword">const</span> ul = <span class="hljs-built_in">document</span>.querySelector(<span class="hljs-string">"nav ul"</span>);
<span class="hljs-keyword">const</span> nav = <span class="hljs-built_in">document</span>.querySelector(<span class="hljs-string">"nav"</span>);
</code></pre>
<ul>
<li>The <code>burger</code> variable select the hamburger menu bars</li>
<li>The <code>ul</code> variable selects the list items (the nav links altogether)</li>
<li>The <code>nav</code> variable selects the container itself (the nav element)</li>
</ul>
<p>What we need to do next is toggle the <code>nav ul.show</code> class when the user clicks the hamburger menu bar. We'll do this by adding a click <code>eventListener</code> to the hamburger menu bar, and then using the toggle method to remove and add the class of <code>show</code>.</p>
<p>Remember that we selected it and stored it in a variable called <code>burger</code>.</p>
<pre><code class="lang-js">burger.addEventListener(<span class="hljs-string">"click"</span>, <span class="hljs-function">() =&gt;</span> {
  ul.classList.toggle(<span class="hljs-string">"show"</span>);
});
</code></pre>
<p>Our nav items can now be toggled on and off:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/nav-toggling-quirk.gif" alt="nav-toggling-quirk" width="600" height="400" loading="lazy"></p>
<p>But there is a problem – the mobile nav is not hidden any time any of the nav item links are clicked. So we need to remove the class of nav ul.show when any of the nav item links are clicked. </p>
<p>We can do this with a few lines of JavaScript too:</p>
<pre><code class="lang-js"><span class="hljs-comment">// Close hamburger menu when a link is clicked</span>

<span class="hljs-comment">// Select nav links</span>
<span class="hljs-keyword">const</span> navLink = <span class="hljs-built_in">document</span>.querySelectorAll(<span class="hljs-string">".nav-link"</span>);

navLink.forEach(<span class="hljs-function">(<span class="hljs-params">link</span>) =&gt;</span>
  link.addEventListener(<span class="hljs-string">"click"</span>, <span class="hljs-function">() =&gt;</span> {
    ul.classList.remove(<span class="hljs-string">"show"</span>);
  })
);
</code></pre>
<p>Remember that the nav links have a class of <code>nav-link</code> from the HTML. So I selected all of them with that class and put them in a variable called navLink. We did this with the <code>querySelectorAll(</code>) method.</p>
<p>I then looped through all the links with the <code>forEach</code> array method and listened for a click event on all of them. Then I used the <code>remove()</code> method provided by the DOM to remove the class of <code>show</code> any time any of the nav menu items are clicked. This will take all the list items out of the viewport.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/nav-toggling-quirk-fixed.gif" alt="nav-toggling-quirk-fixed" width="600" height="400" loading="lazy"></p>
<p>Look at that!</p>
<p>That’s a lot of work. With what we just covered you can make a hamburger menu for any website.</p>
<h3 id="heading-how-to-make-the-hero-section-responsive">How to Make the Hero Section Responsive</h3>
<p>The hero section doesn't look that great at the moment: 
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss25.png" alt="ss25" width="600" height="400" loading="lazy"></p>
<p>All we need to do is give it a flex direction of column in the media query, reduce the width and height of Jane Doe's image, and make the About Me text (bio text) readable.</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.hero</span> {
    <span class="hljs-attribute">margin-top</span>: -<span class="hljs-number">4rem</span>;
    <span class="hljs-attribute">flex-direction</span>: column;
    <span class="hljs-attribute">gap</span>: <span class="hljs-number">0</span>;
  }

  <span class="hljs-selector-class">.hero</span> <span class="hljs-selector-tag">img</span> {
        <span class="hljs-attribute">height</span>: <span class="hljs-number">37.5rem</span>;
        <span class="hljs-attribute">width</span>: <span class="hljs-number">30rem</span>;
    }

  <span class="hljs-selector-class">.bio</span> {
    <span class="hljs-attribute">margin-top</span>: -<span class="hljs-number">7rem</span>;
    <span class="hljs-attribute">width</span>: <span class="hljs-number">20.5rem</span>;
  }
</code></pre>
<p>The hero section looks better now:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss26.png" alt="ss26" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-make-the-more-about-me-section-responsive">How to Make the More About Me Section Responsive</h3>
<p>The More About Me section doesn’t look bad, but we can certainly improve it:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss27.png" alt="ss27" width="600" height="400" loading="lazy"></p>
<p>I have the following CSS to make it readable and more presentable:</p>
<pre><code class="lang-css"> <span class="hljs-selector-class">.more-about</span> {
    <span class="hljs-attribute">margin-top</span>: <span class="hljs-number">2rem</span>;
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">1rem</span> <span class="hljs-number">3.5rem</span>;
  }

  <span class="hljs-selector-class">.more-about</span> <span class="hljs-selector-tag">h2</span> {
    <span class="hljs-attribute">text-align</span>: center;
  }

  <span class="hljs-selector-class">.more-about</span> <span class="hljs-selector-tag">p</span> {
    <span class="hljs-attribute">text-align</span>: justify;
  }
</code></pre>
<p>I pushed the whole section down a little bit and increased the padding on all sides, aligned the <code>h2</code> to center, and justified the text.
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss28.png" alt="ss28" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-make-the-skills-section-responsive">How to Make the Skills Section Responsive</h3>
<p>The skill icons appear too big:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss29.png" alt="ss29" width="600" height="400" loading="lazy"></p>
<p>All we need to do in the media query is reduce the sizes of the icons with the width and height properties: </p>
<pre><code class="lang-css"><span class="hljs-selector-class">.icon</span> {
    <span class="hljs-attribute">width</span>: <span class="hljs-number">5.875rem</span>;
    <span class="hljs-attribute">height</span>: <span class="hljs-number">5.25rem</span>;
  }
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/ss30.png" alt="ss30" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-make-the-projects-section-responsive">How to Make the Projects Section Responsive</h3>
<p>In the projects section, we need to make the three projects stack on top of one another by setting the flex direction to column. I will also reduce the width of the individual containers a little bit.</p>
<pre><code class="lang-css"> <span class="hljs-selector-class">.projects-container</span> {
    <span class="hljs-attribute">flex-direction</span>: column;
  }

  <span class="hljs-selector-class">.project-container</span> {
    <span class="hljs-attribute">width</span>: <span class="hljs-number">20.875rem</span>;
  }
</code></pre>
<h3 id="heading-how-to-make-the-contact-form-responsive">How to Make the Contact Form Responsive</h3>
<p>The width of the contact form needs to be reduced to push it away from the sides and make sure that the fixed social media icons are not on top of it. </p>
<p>All we need to do is set a maximum width:</p>
<pre><code class="lang-css"> <span class="hljs-selector-class">.contact-form-container</span> {
    <span class="hljs-attribute">max-width</span>: <span class="hljs-number">23.75rem</span>;
  }
</code></pre>
<p>The contact form now looks better:
<img src="https://www.freecodecamp.org/news/content/images/2021/10/ss32.png" alt="ss32" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-make-the-website-responsive-on-small-phones">How to Make the Website Responsive on Small Phones</h3>
<p>On small phones such as the iPhone 6, 7, and 8 plus, the social icons and scroll-to-top icon are not showing. There is also a horizontal scrollbar.
<img src="https://www.freecodecamp.org/news/content/images/2021/10/smaller-phones-responive-quirks.gif" alt="smaller-phones-responive-quirks" width="600" height="400" loading="lazy"></p>
<p>To fix these quirks, I will be adding some media queries at the 420px breakpoint:</p>
<pre><code class="lang-css"><span class="hljs-keyword">@media</span> screen <span class="hljs-keyword">and</span> (<span class="hljs-attribute">max-width:</span> <span class="hljs-number">420px</span>) {
  <span class="hljs-selector-class">.hero</span> <span class="hljs-selector-tag">img</span> {
    <span class="hljs-attribute">height</span>: <span class="hljs-number">37.5rem</span>;
    <span class="hljs-attribute">width</span>: <span class="hljs-number">23rem</span>;
  }

  <span class="hljs-selector-class">.bio</span> {
    <span class="hljs-attribute">width</span>: <span class="hljs-number">18.3rem</span>;
  }

  <span class="hljs-selector-class">.project-container</span> {
    <span class="hljs-attribute">width</span>: <span class="hljs-number">17.875rem</span>;
  }

  <span class="hljs-selector-class">.contact-form-container</span> {
    <span class="hljs-attribute">max-width</span>: <span class="hljs-number">17.75rem</span>;
  }
}
</code></pre>
<p>I reduced the size of our Jane Doe image, and also reduced the width of the bio text (About Me text), the project container, and the contact form container as well. </p>
<p>All these changes will make the icons fixed to the right side of the website show – the social media and scroll-to-top icons.
<img src="https://www.freecodecamp.org/news/content/images/2021/10/smaller-phones-responsiveness-quirk-fixed.gif" alt="smaller-phones-responsiveness-quirk-fixed" width="600" height="400" loading="lazy"></p>
<p>Everything now looks good: 
<img src="https://www.freecodecamp.org/news/content/images/2021/10/fully-responsive.gif" alt="fully-responsive" width="600" height="400" loading="lazy"></p>
<p>That’s the end of it all. We have a fully responsive portfolio website.</p>
<p>You can download the finished version as a zip file from this <a target="_blank" href="https://github.com/Ksound22/developer-portfolio">GitHub repo</a>. </p>
<p>You can also check out the <a target="_blank" href="https://eager-williams-af0d00.netlify.app/?">live demo</a> of the portfolio website as well. It has a readme that contains information about the tools I used, and how you can customize the website. </p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>In this tutorial, you learned what a developer portfolio website is and why you should have one. </p>
<p>You also learned how to make a fully responsive portfolio website with HTML, CSS, and JavaScript. </p>
<p>The different parts of this tutorial are each small projects that, when combined, turn into a giant one-page website. For example, you can make card design, a responsive menu bar, a functional contact form, and a scroll-to-top button as the tutorial covers them all.</p>
<p>Feel free to customize the website to your taste. </p>
<p>If you find this tutorial useful, you can share it with your friends and family. I would really appreciate that.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Build a Portfolio Site with Next.js and TailwindCSS ]]>
                </title>
                <description>
                    <![CDATA[ By Manu Arora If you're a web developer, it's important for you to have a personal portfolio website – especially when you're applying for jobs.  If you have a nice online portfolio site, you'll have a better chance of getting attention from recruite... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-build-a-portfolio-site-with-nextjs-tailwindcss/</link>
                <guid isPermaLink="false">66d460149f2bec37e2da063d</guid>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Next.js ]]>
                    </category>
                
                    <category>
                        <![CDATA[ portfolio ]]>
                    </category>
                
                    <category>
                        <![CDATA[ projects ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tailwind ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 18 Aug 2021 18:02:02 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/08/Blue-and-White-Modern-Corporate-Travel-YouTube-Thumbnail--3-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Manu Arora</p>
<p>If you're a web developer, it's important for you to have a personal portfolio website – especially when you're applying for jobs. </p>
<p>If you have a nice online portfolio site, you'll have a better chance of getting attention from recruiters than if you don't.</p>
<p>Instead of sending your CV and asking a recruiter to have a look, a portfolio website can help you stand out by directly showcasing your skills, projects, education, and your personal brand.</p>
<p>You can use your portfolio to showcase your projects, your education, share re-usable code snippets with the world, provide helpful resources, and write your own blogs. There are countless things that you can do with your own website.</p>
<p>I built a template that you can use to create, edit, and deploy your own portfolio website for free on the internet in no time. And if you want to build your own version from scratch, I'll show you how in this article.</p>
<p>So let's dive in – I'll show you what technology I used, how I structured the portfolio, and I'll break it down by section so you can see how each part works. </p>
<h2 id="heading-tech-stack">Tech Stack</h2>
<p>Let's talk about the tech stack I used to build this template:</p>
<ul>
<li><strong>Next.js</strong> - a React framework used for building blazing-fast websites along with server-side rendering, which makes it easier for people to find your site on the internet.</li>
<li><strong>tailwindcss</strong> - a CSS framework to that lets you quickly prototype and style your web applications.</li>
<li><strong>Rough Notation</strong> - a styling library used in the Hero section, great for highlighting important text on your webpage.</li>
</ul>
<p>Why <code>Next.js</code>? Because it is a React framework with <code>Server-Side Rendering</code>, which is good for SEO (Good for us if we get found on Google, right?).</p>
<p>Also, Next.js helps us build blazing-fast websites along with benefits such as Image optimization.</p>
<p>Why <code>tailwindcss</code>? Because TailwindCSS is a framework which reduces a lot of styling efforts. It has low level CSS classes that you can directly embed into the HTML code.</p>
<p>Not only that, it comes with amazing support for responsiveness. For example <code>&lt;div className="text-sm md:text-xl"&gt;&lt;/div&gt;</code> signifies that text will be <code>small</code> on smaller screens and <code>xl</code> on medium to large screens.</p>
<p>Finally, we are going to deploy the application on <strong>Vercel</strong>. Vercel gives us an easy way to deploy our application with CI/CD. The code is pushed to a remote GitHub repository and with every push, it's deployed.</p>
<h2 id="heading-portfolio-site-features">Portfolio Site Features</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/websitegif-1.gif" alt="websitegif-1" width="600" height="400" loading="lazy"></p>
<p>The website includes what I consider to be the absolute minimum you should have in your portfolio website, along with some extra features that are cool to have.</p>
<ul>
<li><code>Dark Mode</code> - Comes with dark mode support. Toggle the mode button to switch between dark and light mode.</li>
<li><code>Built with Next.js</code> - The website is built with Next.js which comes with awesome features out of the box like Image Optimization and SEO support.</li>
<li><code>Customizable styling</code> - Using TailwindCSS, I built this website in such a way that you can customize primary colors and change the look of your website according to your needs.</li>
<li><code>Custom Meta Component</code> - Every page is wrapped with a Meta Component tag which you can use to provide meta information for every separate page that you create.</li>
<li><code>Responsive Design</code> - Pages look beautiful on all the devices - desktop, tablet, and mobile.</li>
</ul>
<h2 id="heading-portfolio-pages-well-build">Portfolio Pages We'll Build</h2>
<p>We are going to include all the necessary pages you should have in your portfolio website, such as:</p>
<ul>
<li><code>Homepage</code> - A landing page for the visitor. This is what they'll see when they land on your website.</li>
<li><code>About</code> - A brief intro that includes what you do, your technical skills, and your social links.</li>
<li><code>Experience</code> - A history of your work, your personal projects that you've undertaken, and your relevant projects.</li>
<li><code>Projects</code> - A grid of all the projects you have built.</li>
<li><code>Contact</code> - A form where the recruiter / end-user can reach out to you.</li>
</ul>
<h2 id="heading-components-and-layouts">Components and Layouts</h2>
<p>The entire website is divided into components – small chunks of reusable code that you can use anywhere on the webpage. The folder structure is quite simple and self explanatory:</p>
<ul>
<li><code>components</code> is where all the components live, like the hero section, navbar, and layouts.</li>
<li><code>public</code> is where all your static assets go, like images, fonts, and/or any external script for generating dynamic sitemaps.</li>
<li><code>styles</code> is where your global styling lives. We will integrate Tailwind's base library here.</li>
<li><code>pages</code> is where all your routes live, and it's one of the best features of Next.js. Just create a new file in the <code>pages</code> folder and it'll serve as a new route.</li>
</ul>
<h3 id="heading-container-block">Container Block</h3>
<p><code>&lt;ContainerBlock /&gt;</code> is the parent of all the components. It provides a way for the user to have custom meta tags for every page. I designed the layout so that it accepts props as <code>children</code> and provides a <code>Navbar</code>, <code>&lt;meta&gt;</code> tags, and <code>Footer</code> for every page.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">"react"</span>;
<span class="hljs-keyword">import</span> Head <span class="hljs-keyword">from</span> <span class="hljs-string">"next/head"</span>;
<span class="hljs-keyword">import</span> { useRouter } <span class="hljs-keyword">from</span> <span class="hljs-string">"next/router"</span>;
<span class="hljs-keyword">import</span> Navbar <span class="hljs-keyword">from</span> <span class="hljs-string">"./Navbar"</span>;
<span class="hljs-keyword">import</span> Footer <span class="hljs-keyword">from</span> <span class="hljs-string">"./Footer"</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">ContainerBlock</span>(<span class="hljs-params">{ children, ...customMeta }</span>) </span>{
  <span class="hljs-keyword">const</span> router = useRouter();

  <span class="hljs-keyword">const</span> meta = {
    <span class="hljs-attr">title</span>: <span class="hljs-string">"Manu Arora - Developer, Writer, Creator and YouTuber"</span>,
    <span class="hljs-attr">description</span>: <span class="hljs-string">`I've been developing websites for 5 years straight. Get in touch with me to know more.`</span>,
    <span class="hljs-attr">image</span>: <span class="hljs-string">"/avatar.png"</span>,
    <span class="hljs-attr">type</span>: <span class="hljs-string">"website"</span>,
    ...customMeta,
  };
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">Head</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>{meta.title}<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"robots"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"follow, index"</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">content</span>=<span class="hljs-string">{meta.description}</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"description"</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span>
          <span class="hljs-attr">property</span>=<span class="hljs-string">"og:url"</span>
          <span class="hljs-attr">content</span>=<span class="hljs-string">{</span>`<span class="hljs-attr">https:</span>//<span class="hljs-attr">yourwebsite.com</span>${<span class="hljs-attr">router.asPath</span>}`}
        /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">link</span>
          <span class="hljs-attr">rel</span>=<span class="hljs-string">"canonical"</span>
          <span class="hljs-attr">href</span>=<span class="hljs-string">{</span>`<span class="hljs-attr">https:</span>//<span class="hljs-attr">yourwebsite.com</span>${<span class="hljs-attr">router.asPath</span>}`}
        /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">property</span>=<span class="hljs-string">"og:type"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">{meta.type}</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">property</span>=<span class="hljs-string">"og:site_name"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"Manu Arora"</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">property</span>=<span class="hljs-string">"og:description"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">{meta.description}</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">property</span>=<span class="hljs-string">"og:title"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">{meta.title}</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">property</span>=<span class="hljs-string">"og:image"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">{meta.image}</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"twitter:card"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"summary_large_image"</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"twitter:site"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"@mannupaaji"</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"twitter:title"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">{meta.title}</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"twitter:description"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">{meta.description}</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"twitter:image"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">{meta.image}</span> /&gt;</span>
        {meta.date &amp;&amp; (
          <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">property</span>=<span class="hljs-string">"article:published_time"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">{meta.date}</span> /&gt;</span>
        )}
      <span class="hljs-tag">&lt;/<span class="hljs-name">Head</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">main</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"dark:bg-gray-800 w-full"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">Navbar</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>{children}<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">Footer</span> /&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">main</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  );
}
</code></pre>
<p>After creating <code>ContainerBlock.js</code>, you can simply wrap your page component in a <code>ContainerBlock</code> tag, providing meta tags for <code>title</code>, <code>description</code>, and <code>image</code>:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> Head <span class="hljs-keyword">from</span> <span class="hljs-string">"next/head"</span>;
<span class="hljs-keyword">import</span> styles <span class="hljs-keyword">from</span> <span class="hljs-string">"../styles/Home.module.css"</span>;
<span class="hljs-keyword">import</span> ContainerBlock <span class="hljs-keyword">from</span> <span class="hljs-string">"../components/ContainerBlock"</span>;
<span class="hljs-keyword">import</span> FavouriteProjects <span class="hljs-keyword">from</span> <span class="hljs-string">"../components/FavouriteProjects"</span>;
<span class="hljs-keyword">import</span> LatestCode <span class="hljs-keyword">from</span> <span class="hljs-string">"../components/LatestCode"</span>;
<span class="hljs-keyword">import</span> Hero <span class="hljs-keyword">from</span> <span class="hljs-string">"../components/Hero"</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Home</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">ContainerBlock</span>
      <span class="hljs-attr">title</span>=<span class="hljs-string">"Manu Arora - Developer, Writer, Creator"</span>
      <span class="hljs-attr">description</span>=<span class="hljs-string">"Building a template with Next.js and Tailwindcss - for FreeCodeCamp users."</span>
    &gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">Hero</span> /&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">FavouriteProjects</span> /&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">LatestCode</span> /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ContainerBlock</span>&gt;</span></span>
  );
}
</code></pre>
<h2 id="heading-how-to-enable-dark-mode">How to Enable Dark Mode</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-18-at-9.09.35-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Dark mode support is provided by a <code>npm</code> package called <code>next-themes</code>. The aim is to wrap the parent container with a provider <code>ThemeProvider</code> through which the <code>theme</code> is available to the children at all times.</p>
<p><strong>_app.js</strong></p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> <span class="hljs-string">"../styles/globals.css"</span>;
<span class="hljs-keyword">import</span> { ThemeProvider } <span class="hljs-keyword">from</span> <span class="hljs-string">"next-themes"</span>;

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">MyApp</span>(<span class="hljs-params">{ Component, pageProps }</span>) </span>{
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">ThemeProvider</span> <span class="hljs-attr">defaultTheme</span>=<span class="hljs-string">"light"</span> <span class="hljs-attr">attribute</span>=<span class="hljs-string">"class"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">Component</span> {<span class="hljs-attr">...pageProps</span>} /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ThemeProvider</span>&gt;</span></span>
  );
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> MyApp;
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Copy-of-Untitled--6--1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>To toggle the theme between light mode and dark mode, we need a button. You can reuse this button anywhere in the application, but we are going to integrate it in the <code>Navbar</code> so it's available for the end user at all times.</p>
<p><strong>Navbar.js</strong></p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> React, { useEffect, useState } <span class="hljs-keyword">from</span> <span class="hljs-string">"react"</span>;
<span class="hljs-keyword">import</span> Link <span class="hljs-keyword">from</span> <span class="hljs-string">"next/link"</span>;
<span class="hljs-keyword">import</span> { useTheme } <span class="hljs-keyword">from</span> <span class="hljs-string">"next-themes"</span>;
<span class="hljs-keyword">import</span> { useRouter } <span class="hljs-keyword">from</span> <span class="hljs-string">"next/router"</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Navbar</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">const</span> router = useRouter();
  <span class="hljs-built_in">console</span>.log(router.asPath);
  <span class="hljs-keyword">const</span> { theme, setTheme } = useTheme();
  <span class="hljs-keyword">const</span> [mounted, setMounted] = useState(<span class="hljs-literal">false</span>);

  useEffect(<span class="hljs-function">() =&gt;</span> {
    setMounted(<span class="hljs-literal">true</span>);
  }, []);

  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"max-w-6xl  mx-auto px-4 py-10 md:py-20"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"flex  md:flex-row justify-between items-center"</span>&gt;</span>
        {/* Logo / Home / Text */}
         // Rest of the code
          <span class="hljs-tag">&lt;<span class="hljs-name">button</span>
            <span class="hljs-attr">aria-label</span>=<span class="hljs-string">"Toggle Dark Mode"</span>
            <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span>
            <span class="hljs-attr">className</span>=<span class="hljs-string">"w-10 h-10 p-3 rounded focus:outline-none"</span>
            <span class="hljs-attr">onClick</span>=<span class="hljs-string">{()</span> =&gt;</span> setTheme(theme === "dark" ? "light" : "dark")}
          &gt;
            {mounted &amp;&amp; (
              <span class="hljs-tag">&lt;<span class="hljs-name">svg</span>
                <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://www.w3.org/2000/svg"</span>
                <span class="hljs-attr">viewBox</span>=<span class="hljs-string">"0 0 24 24"</span>
                <span class="hljs-attr">fill</span>=<span class="hljs-string">"currentColor"</span>
                <span class="hljs-attr">stroke</span>=<span class="hljs-string">"currentColor"</span>
                <span class="hljs-attr">className</span>=<span class="hljs-string">"w-4 h-4 text-yellow-500 dark:text-yellow-500"</span>
              &gt;</span>
                {theme === "dark" ? (
                  <span class="hljs-tag">&lt;<span class="hljs-name">path</span>
                    <span class="hljs-attr">strokeLinecap</span>=<span class="hljs-string">"round"</span>
                    <span class="hljs-attr">strokeLinejoin</span>=<span class="hljs-string">"round"</span>
                    <span class="hljs-attr">strokeWidth</span>=<span class="hljs-string">{2}</span>
                    <span class="hljs-attr">d</span>=<span class="hljs-string">"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"</span>
                  /&gt;</span>
                ) : (
                  <span class="hljs-tag">&lt;<span class="hljs-name">path</span>
                    <span class="hljs-attr">strokeLinecap</span>=<span class="hljs-string">"round"</span>
                    <span class="hljs-attr">strokeLinejoin</span>=<span class="hljs-string">"round"</span>
                    <span class="hljs-attr">strokeWidth</span>=<span class="hljs-string">{2}</span>
                    <span class="hljs-attr">d</span>=<span class="hljs-string">"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"</span>
                  /&gt;</span>
                )}
              <span class="hljs-tag">&lt;/<span class="hljs-name">svg</span>&gt;</span>
            )}
          <span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
     <span class="hljs-comment">//Rest of the code</span>
  );
}
</code></pre>
<p>Once the button is clicked, the theme changes. Pretty cool, right? 😍</p>
<h2 id="heading-how-to-build-the-hero-section">How to Build the Hero Section</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/hero.png" alt="hero" width="600" height="400" loading="lazy"></p>
<p>The hero section lets you grab people's attention. If you do it right, it can help you land your first job.</p>
<p>I've used <code>react-rough-notation</code>, a library that dynamically highlights text with different colors and delays.</p>
<p>The good thing about this effect is that the end-user immediately pays attention to the text that's highlighted. You can put your best foot forward here and tell them WHO you are and WHAT you do.</p>
<p>The code for <code>rough-notation</code> is simple: we wrap the text to be highlighted in <code>&lt;RoughNotationGroup&gt;</code> and <code>&lt;RoughNotation&gt;</code> tags with additional parameters such as colors and delays.</p>
<p>Here, I'll create a custom component called <code>RainbowHighlight</code> which takes in a color and highlights the text enclosed which can be used everywhere.</p>
<p><strong>RainbowHighlight.js</strong></p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">"react"</span>;
<span class="hljs-keyword">import</span> { RoughNotation } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-rough-notation"</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">const</span> RainbowHighlight = <span class="hljs-function">(<span class="hljs-params">{ color, children }</span>) =&gt;</span> {
  <span class="hljs-comment">// Change the animation duration depending on length of text we're animating (speed = distance / time)</span>
  <span class="hljs-keyword">const</span> animationDuration = <span class="hljs-built_in">Math</span>.floor(<span class="hljs-number">30</span> * children.length);

  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">RoughNotation</span>
      <span class="hljs-attr">type</span>=<span class="hljs-string">"highlight"</span>
      <span class="hljs-attr">multiline</span>=<span class="hljs-string">{true}</span>
      <span class="hljs-attr">padding</span>=<span class="hljs-string">{[0,</span> <span class="hljs-attr">2</span>]}
      <span class="hljs-attr">iterations</span>=<span class="hljs-string">{1}</span>
      <span class="hljs-attr">animationDuration</span>=<span class="hljs-string">{animationDuration}</span>
      <span class="hljs-attr">color</span>=<span class="hljs-string">{color}</span>
    &gt;</span>
      {children}
    <span class="hljs-tag">&lt;/<span class="hljs-name">RoughNotation</span>&gt;</span></span>
  );
};
</code></pre>
<p><strong>Hero.js</strong></p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">"react"</span>;
<span class="hljs-keyword">import</span> { RoughNotation, RoughNotationGroup } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-rough-notation"</span>;
<span class="hljs-keyword">import</span> { RainbowHighlight } <span class="hljs-keyword">from</span> <span class="hljs-string">"./RainbowHighlight"</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Hero</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">const</span> colors = [<span class="hljs-string">"#F59E0B"</span>, <span class="hljs-string">"#84CC16"</span>, <span class="hljs-string">"#10B981"</span>, <span class="hljs-string">"#3B82F6"</span>];
  <span class="hljs-keyword">return</span> (
    &lt;div className="flex flex-row justify-center items-start overflow-hidden"&gt;
      {/* Text container */}

      &lt;div className="w-full md:w-1/2 mx-auto text-center md:text-left lg:p-20"&gt;
        &lt;RoughNotationGroup show={true}&gt;
          &lt;RainbowHighlight color={colors[0]}&gt;
            &lt;h1 className="text-4xl md:text-8xl font-bold text-gray-700 dark:text-gray-200 my-2"&gt;
              Developer.
            &lt;/h1&gt;
          &lt;/RainbowHighlight&gt;
       &lt;RoughNotationGroup&gt;
     &lt;/div&gt;
     ....
     ....
     ....
   );
</code></pre>
<h2 id="heading-how-to-fetch-the-latest-repositories-from-github">How to Fetch the Latest Repositories From GitHub</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-18-at-9.09.35-AM-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Fetching repositories with the <a target="_blank" href="https://docs.github.com/en/rest">GitHub API</a> is quite easy.</p>
<p>The GitHub API comes with a provision to fetch the repositories with descending <code>updated_time</code> field, so that we get the latest repositories.</p>
<pre><code class="lang-js"> <span class="hljs-keyword">const</span> res = <span class="hljs-keyword">await</span> axios.get(
      <span class="hljs-string">`https://api.github.com/search/repositories?q=user:<span class="hljs-subst">${username}</span>+sort:author-date-asc`</span>
    );
</code></pre>
<p>Once we fetch the latest repository, we <code>splice</code> the array to only take into account the most recent 6 repositories.</p>
<pre><code class="lang-js"><span class="hljs-keyword">let</span> repos = res.data.items;
    <span class="hljs-keyword">let</span> latestSixRepos = repos.splice(<span class="hljs-number">0</span>, <span class="hljs-number">6</span>);
    <span class="hljs-keyword">return</span> latestSixRepos;
</code></pre>
<p>So the entire function looks like this:</p>
<p><strong>getLatestRepos.js</strong></p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> axios <span class="hljs-keyword">from</span> <span class="hljs-string">"axios"</span>;

<span class="hljs-keyword">const</span> getLatestRepos = <span class="hljs-keyword">async</span> (data) =&gt; {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"data"</span>, data);
  <span class="hljs-keyword">try</span> {
    <span class="hljs-keyword">const</span> username = data.githubUsername;

    <span class="hljs-keyword">const</span> res = <span class="hljs-keyword">await</span> axios.get(
      <span class="hljs-string">`https://api.github.com/search/repositories?q=user:<span class="hljs-subst">${username}</span>+sort:author-date-asc`</span>
    );

    <span class="hljs-keyword">let</span> repos = res.data.items;
    <span class="hljs-keyword">let</span> latestSixRepos = repos.splice(<span class="hljs-number">0</span>, <span class="hljs-number">6</span>);
    <span class="hljs-keyword">return</span> latestSixRepos;
  } <span class="hljs-keyword">catch</span> (err) {
    <span class="hljs-built_in">console</span>.log(err);
  }
};

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> getLatestRepos;
</code></pre>
<p>Once the data is fetched from the function, we can then use it inside of our React Component <code>&lt;GetReposCard /&gt;</code> and pass the parameters accordingly.</p>
<pre><code class="lang-jsx">&lt;div className=<span class="hljs-string">"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 max-w-6xl mx-auto px-10 lg:-mt-10 gap-y-20"</span>&gt;
        {<span class="hljs-comment">/* Single github Repo */</span>}

        {repos &amp;&amp;
          repos.map(<span class="hljs-function">(<span class="hljs-params">latestRepo, idx</span>) =&gt;</span> (
            <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">GithubRepoCard</span> <span class="hljs-attr">latestRepo</span>=<span class="hljs-string">{latestRepo}</span> <span class="hljs-attr">key</span>=<span class="hljs-string">"idx"</span> /&gt;</span></span>
          ))}
      &lt;/div&gt;
</code></pre>
<pre><code class="lang-jsx"><span class="hljs-keyword">const</span> GithubRepoCard = <span class="hljs-function">(<span class="hljs-params">{ latestRepo }</span>) =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"github-repo"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">h1</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"font-semibold text-xl dark:text-gray-200 text-gray-700"</span>&gt;</span>
        {latestRepo.name}
      <span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"text-base font-normal my-4 text-gray-500"</span>&gt;</span>
        {latestRepo.description}
      <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span>
        <span class="hljs-attr">href</span>=<span class="hljs-string">{latestRepo.clone_url}</span>
        <span class="hljs-attr">className</span>=<span class="hljs-string">"font-semibold group flex flex-row space-x-2 w-full items-center"</span>
      &gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>View Repository <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"transform  group-hover:translate-x-2 transition duration-300"</span>&gt;</span>
          <span class="hljs-symbol">&amp;rarr;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  );
};
</code></pre>
<p>There is a small problem here – the GitHub API provides only a limited number of calls per IP address.</p>
<p>To resolve this issue, one can create a GitHub application and generate <code>Auth Tokens</code>, which we can embed with the GitHub API request and you'll get more requests per IP address. You can <a target="_blank" href="https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting">read the documentation here</a> for more info about it.</p>
<h2 id="heading-how-to-include-projects-in-your-portfolio">How to Include Projects in Your Portfolio</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/projects.png" alt="projects" width="600" height="400" loading="lazy"></p>
<p>I've kept the projects section as simple as possible with a huge image area, because the recruiter / end-user is most interested in seeing what you've done. If it looks good, you already have an edge.</p>
<p>I've divided the page into Tailwind <code>grids</code> of two columns, which breaks on mobile screens into 1 column.</p>
<p>The image container contains a header text that displays the project's name and a number at the bottom.</p>
<p>The hover animations on the images are subtle. The image scales slowly to gather the user's attention. On click, it takes the user to the live website / GitHub repository of the project.</p>
<pre><code class="lang-js">
<span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">"react"</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Projects</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">section</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"bg-white dark:bg-gray-800"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"max-w-6xl mx-auto h-48 bg-white dark:bg-gray-800"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">h1</span> <span class="hljs-attr">className</span>=<span class="hljs-string">" text-5xl md:text-9xl font-bold py-20 text-center md:text-left"</span>&gt;</span>
          Projects
        <span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
      {/* Grid starts here */}
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"bg-[#F1F1F1] dark:bg-gray-900"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"max-w-6xl mx-auto grid grid-cols-1 md:grid-cols-2 gap-8 py-20 pb-40"</span>&gt;</span>
          {/* Single card */}
          <span class="hljs-tag">&lt;<span class="hljs-name">a</span>
            <span class="hljs-attr">href</span>=<span class="hljs-string">"https://tailwindmasterkit.com"</span>
            <span class="hljs-attr">className</span>=<span class="hljs-string">"w-full block shadow-2xl"</span>
          &gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"relative overflow-hidden"</span>&gt;</span>
              <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
                <span class="hljs-attr">src</span>=<span class="hljs-string">"/tmk.jpg"</span>
                <span class="hljs-attr">alt</span>=<span class="hljs-string">"portfolio"</span>
                <span class="hljs-attr">className</span>=<span class="hljs-string">"transform hover:scale-125 transition duration-2000 ease-out"</span>
              /&gt;</span>
              <span class="hljs-tag">&lt;<span class="hljs-name">h1</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"absolute top-10 left-10 text-gray-50 font-bold text-xl bg-red-500 rounded-md px-2"</span>&gt;</span>
                Tailwind Master Kit
              <span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
              <span class="hljs-tag">&lt;<span class="hljs-name">h1</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"absolute bottom-10 left-10 text-gray-50 font-bold text-xl"</span>&gt;</span>
                01
              <span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
          <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">section</span>&gt;</span></span>
    ...
    ...
    ...
  );
</code></pre>
<h2 id="heading-how-to-build-the-contact-page">How to Build the Contact Page</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/contact.png" alt="contact" width="600" height="400" loading="lazy"></p>
<p>I took the contact section directly from the <a target="_blank" href="http://tailwindmasterkit.com">Tailwind Master Kit</a>, which is a components and templates marketplace for Tailwind web app projects. I didn't want spend more time styling a contact form myself and used some help.</p>
<p>The component is absolutely free and you can embed it into Tailwind related websites easily.</p>
<p><strong>Contact.js</strong></p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">"react"</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Contact</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">return</span> (
    &lt;section&gt;
      &lt;div className="max-w-6xl mx-auto h-48 bg-white dark:bg-gray-800 antialiased"&gt;
        &lt;h1 className=" text-5xl md:text-9xl font-bold py-20 text-center md:text-left"&gt;
          Contact
        &lt;/h1&gt;
      &lt;/div&gt;
      &lt;div className="relative z-10 rounded-md shadow-md bg-[#02044A] p-4 md:p-10 lg:p-20 max-w-6xl mx-auto mb-20 -mt-4"&gt;
        &lt;div className="grid grid-cols-1 md:grid-cols-2 gap-4"&gt;
          &lt;div className="md:ml-4"&gt;
            &lt;header className=""&gt;
              &lt;h1 className="text-gray-50 font-semibold text-2xl"&gt;
                Get in touch, let's talk.
              &lt;/h1&gt;
              &lt;p className="font-light text-base text-gray-200 mt-2"&gt;
                Fill in the details and I'll get back to you as soon as I can.
              &lt;/p&gt;
            &lt;/header&gt;
            &lt;div className="icons-container inline-flex flex-col my-20"&gt;
              &lt;div className="flex flex-row items-center space-x-6 rounded-md border border-[#02044A] hover:border hover:border-blue-500 p-4"&gt;

                &lt;p className="text-gray-50 font-light text-sm"&gt;
                  +91 9987384723
                &lt;/p&gt;
              &lt;/div&gt;
              &lt;div className="flex flex-row items-center space-x-6 rounded-md border border-[#02044A] hover:border hover:border-blue-500 p-4"&gt;
                ....
                ....
                &lt;p className="text-gray-50 font-light text-sm"&gt;
                  contact@yourwebsite.com
                &lt;/p&gt;
              &lt;/div&gt;
              &lt;div className="flex flex-row items-center space-x-6 rounded-md border border-[#02044A] hover:border hover:border-blue-500 p-4"&gt;
                ....
                ....
          &lt;form className="form rounded-lg bg-white p-4 flex flex-col"&gt;
            &lt;label htmlFor="name" className="text-sm text-gray-600 mx-4"&gt;
              {" "}
              Your Name
            &lt;/label&gt;
            &lt;input
              type="text"
              className="font-light rounded-md border focus:outline-none py-2 mt-2 px-1 mx-4 focus:ring-2 focus:border-none ring-blue-500"
              name="name"
            /&gt;
            &lt;label htmlFor="email" className="text-sm text-gray-600 mx-4 mt-4"&gt;
              Email
            &lt;/label&gt;
            &lt;input
              type="text"
              className="font-light rounded-md border focus:outline-none py-2 mt-2 px-1 mx-4 focus:ring-2 focus:border-none ring-blue-500"
              name="email"
            /&gt;
            &lt;button
              type="submit"
              className="bg-blue-500 rounded-md w-1/2 mx-4 mt-8 py-2 text-gray-50 text-xs font-bold"
            &gt;
              Send Message
            &lt;/button&gt;
          &lt;/form&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;
  );
}
</code></pre>
<h2 id="heading-how-to-deploy-the-portfolio">How to Deploy the Portfolio</h2>
<p>Deploying the application is fairly simple and just takes 8 simple steps.</p>
<ol>
<li><p>Clone the repository</p>
<pre><code class="lang-bash">git <span class="hljs-built_in">clone</span> https://github.com/manuarora700/simple-developer-portfolio-website
</code></pre>
</li>
<li><p>Install dependencies</p>
</li>
</ol>
<pre><code class="lang-bash">npm install
</code></pre>
<ol start="3">
<li>Start the local development server</li>
</ol>
<pre><code class="lang-bash">npm run dev
</code></pre>
<ol start="4">
<li><p>Make modifications to the website. You should include all your projects, education, social links, and Meta information.</p>
</li>
<li><p>Push the code to your remote repository</p>
</li>
</ol>
<pre><code class="lang-bash">git add *
git commit -m <span class="hljs-string">"add changes to the cloned repo"</span>
git push
</code></pre>
<ol start="6">
<li><p>Create a Vercel account (or login to your Vercel account) </p>
</li>
<li><p>Add the newly created GitHub repository with the changes pushed and Vercel will automatically deploy it for you on a link.</p>
</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/vercel.png" alt="vercel" width="600" height="400" loading="lazy"></p>
<ol start="8">
<li>Once the site is live, share the test link with your friends or add it in your résumé. You can also go ahead and connect a custom domain to make it more professional.</li>
</ol>
<h2 id="heading-conclusion">Conclusion</h2>
<p>This portfolio site will give a recruiter or visitor everything they're looking for if they want to learn more about you and your work. The goal of your portfolio should be to showcase your skills in the best way possible.</p>
<p>Also, we've built the site with <code>Next.js</code>, which shows that you're comfortable with React and its frameworks. (Recruiters are looking for you! 😍)</p>
<p>The website uses <code>tailwindcss</code> for styling, which shows that you can work with a CSS framework and cut down on styling time.</p>
<p>The components are granular and each serves its own purpose. The folder structure is simple and easy to understand.</p>
<p>You can customize the website in any way you like - I've open sourced it and the code is linked to the GitHub repo below.</p>
<p>My <a target="_blank" href="https://manuarora.in">personal website</a> has helped me land interviews at big tech companies and it is one of the main reasons I've been able to get a job (along with practicing on freeCodeCamp and learning how to code).</p>
<p>I really enjoyed building this website. If you liked it, leave a star on the GitHub repo and help spread the word. ⭐️</p>
<h4 id="heading-source-code-and-live-demo">Source Code and Live Demo</h4>
<p><a target="_blank" href="https://github.com/manuarora700/simple-developer-portfolio-website">Source Code</a><br><a target="_blank" href="https://simple-developer-portfolio-website.vercel.app/">Live Demo</a></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Find Remote Jobs – 25 Websites To Help You Work from Home Online ]]>
                </title>
                <description>
                    <![CDATA[ Working from home can have its challenges but there are also many benefits. A lot of employees enjoy the flexible schedule, and you can save money from not having to eat out or drive to work.  I have curated a list of 25 sites for remote work. Whethe... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-find-remote-jobs/</link>
                <guid isPermaLink="false">66b8d9842755c964523f0560</guid>
                
                    <category>
                        <![CDATA[ Freelancing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ jobs ]]>
                    </category>
                
                    <category>
                        <![CDATA[ remote work ]]>
                    </category>
                
                    <category>
                        <![CDATA[ remote-working ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jessica Wilkins ]]>
                </dc:creator>
                <pubDate>Mon, 26 Jul 2021 21:46:24 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/07/helena-lopes-RgPQNvoIcdg-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Working from home can have its challenges but there are also many benefits. A lot of employees enjoy the flexible schedule, and you can save money from not having to eat out or drive to work. </p>
<p>I have curated a list of 25 sites for remote work. Whether you are looking for part time, full time, or freelance work, these are the best sites to look into.  </p>
<p>Here is the complete list. Once you find a website that interests you, click that link and it will jump you down to a more detailed description of that website.</p>
<ol>
<li><a class="post-section-overview" href="#heading-arc">Arc</a></li>
<li><a class="post-section-overview" href="#heading-we-work-remotely">We Work Remotely</a></li>
<li><a class="post-section-overview" href="#heading-skip-the-drive">Skip The Drive</a></li>
<li><a class="post-section-overview" href="#heading-power-to-fly">Power to Fly</a></li>
<li><a class="post-section-overview" href="#heading-remote-ok">Remote OK</a></li>
<li><a class="post-section-overview" href="#heading-remotive">Remotive</a></li>
<li><a class="post-section-overview" href="#heading-flexjobs">FlexJobs</a></li>
<li><a class="post-section-overview" href="#heading-dribble">Dribble</a></li>
<li><a class="post-section-overview" href="#heading-angellist">AngelList</a></li>
<li><a class="post-section-overview" href="#heading-remoteco">Remote.co</a></li>
<li><a class="post-section-overview" href="#heading-justremote">JustRemote</a></li>
<li><a class="post-section-overview" href="#heading-virtual-vocations">Virtual Vocations</a></li>
<li><a class="post-section-overview" href="#heading-pangian">Pangian</a></li>
<li><a class="post-section-overview" href="#heading-working-nomads">Working Nomads</a></li>
<li><a class="post-section-overview" href="#heading-jobspresso">Jobspresso</a></li>
<li><a class="post-section-overview" href="#heading-outsourcely">Outsourcely</a></li>
<li><a class="post-section-overview" href="#heading-landingjobs">Landing.Jobs</a></li>
<li><a class="post-section-overview" href="#heading-authentic-jobs">Authentic Jobs</a></li>
<li><a class="post-section-overview" href="#heading-stack-overflow">Stack Overflow</a></li>
<li><a class="post-section-overview" href="#heading-gunio">Gun.io</a></li>
<li><a class="post-section-overview" href="#heading-idealist">Idealist</a></li>
<li><a class="post-section-overview" href="#heading-fiverr">Fiverr</a></li>
<li><a class="post-section-overview" href="#heading-upwork">Upwork</a></li>
<li><a class="post-section-overview" href="#heading-freelancer">Freelancer</a></li>
<li><a class="post-section-overview" href="#heading-freelancermap">freelancermap</a></li>
</ol>
<h2 id="heading-arc">Arc</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-20-at-3.53.26-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://arc.dev/">Arc</a> is a site dedicated to remote developer jobs. Arc provides many free resources including a job search by tech stack, <a target="_blank" href="https://arc.dev/resume">a resume guide</a>, <a target="_blank" href="https://arc.dev/salaries">salary explorer</a>, <a target="_blank" href="https://arc.dev/virtual-events">virtual events</a>, and <a target="_blank" href="https://arc.dev/interview">interview questions</a>.</p>
<p>You can also browse through <a target="_blank" href="https://arc.dev/companies">Arc's list of Top Remote Companies</a> that are hiring right now.  </p>
<h2 id="heading-we-work-remotely">We Work Remotely</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-23-at-11.37.56-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://weworkremotely.com/">We Work Remotely</a> offers free job postings in frontend, backend, full stack, mobile, design and more. You also have access to their <a target="_blank" href="https://learn.weworkremotely.com/community-calendar?utm_source=wwr-nav">events</a>, <a target="_blank" href="https://forum.weworkremotely.com/">forum</a>, and <a target="_blank" href="https://wwrcommunity.slack.com/join/shared_invite/zt-rgdyfy2v-sRTnAG8iIQF1GRZjlFSU4g#/shared-invite/email">slack group</a>. </p>
<h2 id="heading-skip-the-drive">Skip The Drive</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-23-at-11.58.38-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://www.skipthedrive.com/">Skip The Drive</a> offers free job listings in the areas of development, project management, sales and more. This site also offers a <a target="_blank" href="https://www.skipthedrive.com/list-of-micro-job-sites/">list of Micro Job Sites</a>, a <a target="_blank" href="https://www.skipthedrive.com/how-much-money-can-you-save-by-telecommuting/">Remote Job Savings Calculator</a>, and a <a target="_blank" href="https://www.skipthedrive.com/job-application-tracking/">Job Application Tracking spreadsheet</a>. </p>
<h2 id="heading-power-to-fly">Power to Fly</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-1.15.32-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://powertofly.com/">Power to Fly</a> specializes in connecting candidates from underrepresented backgrounds to potential employers. When you create an account you'll have access to job listings, career events, coaching sessions, mentorship and more. </p>
<h2 id="heading-remote-ok">Remote OK</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-12.27.33-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://remoteok.io/">Remote Ok</a> offers free job listings in development, online teaching, design and more. This site also has a separate page for just <a target="_blank" href="https://remoteok.io/workers">freelancers</a> where you can create a profile and have access to thousands of jobs.  </p>
<h2 id="heading-remotive">Remotive</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-23-at-11.43.02-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://remotive.io/">Remotive</a> offers free job postings in the areas of IT, development, design, QA and more. Remotive also provides <a target="_blank" href="https://remotive.io/guides">career guides</a>, <a target="_blank" href="https://remotive.io/webinar">webinars</a>, and paid access to the <a target="_blank" href="https://remotive.io/community">Remotive community</a>.   </p>
<h2 id="heading-flexjobs">FlexJobs</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-20-at-3.36.45-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://www.flexjobs.com/">FlexJobs</a> is a subscription site for remote part-time, full time and freelance jobs. If you are skeptical about paying for job postings, then check out their <a target="_blank" href="https://www.bbb.org/us/co/boulder/profile/employment-agencies/flexjobs-1296-90091095/customer-reviews">Better Business Bureau rating and reviews.</a>  </p>
<p>This is the current pricing list for the FlexJobs subscriptions.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-20-at-3.47.34-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Members have access to their job listings, events, and articles. FlexJobs also offers career coaching, resume reviews, and mock interviews for an additional cost. </p>
<h2 id="heading-dribble">Dribble</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-1.36.31-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>While Dribble is mainly known as a place for freelance designers to post their work, there is also a section for <a target="_blank" href="https://dribbble.com/jobs">remote graphic design jobs</a>. </p>
<h2 id="heading-angellist">AngelList</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-1.40.22-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://angel.co/jobs">AngelList</a> offers software job listings at startup companies. You will need to create an account in order to read the full job descriptions and apply. </p>
<h2 id="heading-remoteco">Remote.co</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-23-at-10.43.51-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://remote.co/">Remote.co</a> offers free job postings in the areas of IT, development, design, QA and more. If you upgrade to the premium service, then you have access to more job postings, career coaching, and resume reviews. </p>
<h2 id="heading-justremote">JustRemote</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-23-at-10.48.58-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://justremote.co/">JustRemote</a> offers free job postings in the areas of DevOps, development, design and more. They also offer an online resume builder to help you get to the interview stage. </p>
<p>For an added cost, JustRemote has a feature called <a target="_blank" href="https://justremote.co/power-search">PowerSearch</a> that provides you with additional job postings that are normally hidden from the general public. </p>
<h2 id="heading-virtual-vocations">Virtual Vocations</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-23-at-10.58.56-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://www.virtualvocations.com/">Virtual Vocations</a> is a free service that provides you with remote job listings in development, technical writing, QA, project management and more. </p>
<p>Virtual Vocations also offers a paid subscription service which includes courses, webinars, and career coaching sessions. </p>
<h2 id="heading-pangian">Pangian</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-23-at-11.27.50-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://pangian.com/">Pangian</a> offers free remote job listings in the areas of development, IT, sales and more. You will need to create a free account in order to access the job details. </p>
<p>Pangian also offers free career tips and a <a target="_blank" href="https://chat.pangian.com/">community forum</a>. For an additional $149.99 (US dollars), you can have access to the <a target="_blank" href="https://pangian.com/resume-cv-remote-audit-revamp-rework/">one on one resume and CV audit</a>.</p>
<h2 id="heading-working-nomads">Working Nomads</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-12.46.55-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://www.workingnomads.co/jobs">Working Nomads</a> offers free job listings in development, design, DevOps, project management and more. </p>
<h2 id="heading-jobspresso">Jobspresso</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-12.51.39-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://jobspresso.co/">Jobspresso</a> offers thousands of free listings in development, design, DevOps, customer service, and more. </p>
<h2 id="heading-outsourcely">Outsourcely</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-12.54.10-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://www.outsourcely.com/remote-workers">Outsourcely</a> ensures that job candidates are paired with the right company. Create an account and browse through thousands of postings in web development, mobile, design, customer service and more. </p>
<h2 id="heading-landingjobs">Landing.Jobs</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-1.26.52-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://landing.jobs/remoteworking">Landing.jobs</a> connects independent contractors with remote jobs. Create an account, go through the Landing.jobs evaluation process, and then start applying for remote work. </p>
<h2 id="heading-authentic-jobs">Authentic Jobs</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-1.30.40-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://authenticjobs.com/?search_location=remote">Authentic jobs</a> offers free listings in web development, mobile, project management, design and more. </p>
<h2 id="heading-stack-overflow">Stack Overflow</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-1.45.35-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Stack Overflow is mainly known as a place for tech questions and answers but they also have a <a target="_blank" href="https://stackoverflow.com/jobs/get-started">jobs section</a>.  For remote work, just select the remote options in the search parameters. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-1.49.32-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-gunio">Gun.io</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-2.26.44-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://www.gun.io/">Gun.io</a> specializes in connecting developers with software companies. Create an account, apply for jobs, go through interviews and start working. </p>
<h2 id="heading-idealist">Idealist</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-26-at-2.07.18-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://www.idealist.org/en/">Idealist</a> is a site that posts hundreds of jobs for non-profits and organizations that want to create change in the world. For remote work, make sure to choose that option in the search parameters. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-26-at-2.12.56-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-freelance-projects-and-micro-jobs">Freelance projects and micro-jobs</h2>
<h2 id="heading-fiverr">Fiverr</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-1.52.47-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://www.fiverr.com/">Fiverr</a> is site where you can create a list of services and offer them to Fiverr's global audience. </p>
<h2 id="heading-upwork">Upwork</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-1.59.51-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://www.upwork.com/">Upwork</a> is a place for freelancers to bid on jobs, sell their projects, and connect with recruiters. </p>
<h2 id="heading-freelancer">Freelancer</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-2.02.54-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://www.freelancer.com/">Freelancer</a> specializes in connecting clients with freelancers. Freelancers can search through thousands of projects and make bids.</p>
<h2 id="heading-freelancermap">freelancermap</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Screen-Shot-2021-07-24-at-2.09.47-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://www.freelancermap.com/">freelancermap</a> specializes in connecting freelancers with clients all around the world. Freelancers can create an account and bid on projects that match their skills and experience. </p>
<p>## </p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
