<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: yusufcodes</title>
    <description>The latest articles on DEV Community by yusufcodes (@yusufcodes).</description>
    <link>https://dev.to/yusufcodes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F209009%2Ffc041ed8-c70f-44d0-9290-014ac039b330.jpeg</url>
      <title>DEV Community: yusufcodes</title>
      <link>https://dev.to/yusufcodes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yusufcodes"/>
    <language>en</language>
    <item>
      <title>Reflection: My First 3 Months at Moonpig as a Software Developer</title>
      <dc:creator>yusufcodes</dc:creator>
      <pubDate>Tue, 22 Mar 2022 14:35:36 +0000</pubDate>
      <link>https://dev.to/yusufcodes/reflection-my-first-3-months-at-moonpig-as-a-software-developer-3apb</link>
      <guid>https://dev.to/yusufcodes/reflection-my-first-3-months-at-moonpig-as-a-software-developer-3apb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction 👋🏽
&lt;/h2&gt;

&lt;p&gt;So, I’ve hit three months as an Associate Software Engineer at Moonpig, and I thought it would be good to reflect on my time so far. Time flies, and I often forget what I’ve worked on, so I hope this blog post helps me remember what my initial three months were like 😅, and I hope this gives anyone reading the perspective of a new engineer joining the company. &lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding How Moonpig Operate 🌝🐽
&lt;/h2&gt;

&lt;p&gt;Moonpig are a large organisation, with a few different teams, each looking after a different area of the customer experience. This ranges from the user’s initial interaction to select a category for a card they are purchasing, to being able to attach gifts to their purchase, all the way up to fulfilling the order once a user has paid. &lt;/p&gt;

&lt;p&gt;A big part of my first three months was getting to grips with all the different areas (this is a work in progress!), but I’ve definitely got a better understanding with how all of this works from a technical point of view.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning New Technologies 🛠️
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Backend and Serverless
&lt;/h3&gt;

&lt;p&gt;Coming from a front-end role, there was a lot for me to learn in terms of back-end. For example, the company use AWS infrastructure and &lt;a href="https://martinfowler.com/articles/serverless.html"&gt;Serverless&lt;/a&gt; which I had never worked with before. I started by understanding what Terraform is (Infrastructure as Code to deploy resources into AWS), followed by the different resources you can use in AWS. &lt;/p&gt;

&lt;p&gt;One area of Serverless which Moonpig heavily invest in is Lambda - these are small, single purpose functions which are deployed into AWS which performs some operation and returns. The function is called when it needs to be executed, meaning you only pay for the time your functions execute - much cheaper than keeping a server running 24/7, which most of the time will be idly waiting for requests! I was really surprised by the power of Lambda, and just how much of the company’s backend operations rely on it.&lt;/p&gt;

&lt;p&gt;Architecture diagram showing how different AWS services interact with one another&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing 🧪
&lt;/h3&gt;

&lt;p&gt;I’ve also been getting used to &lt;a href="https://www.freecodecamp.org/news/test-driven-development-what-it-is-and-what-it-is-not-41fa6bca02a2/"&gt;Test-Driven Development&lt;/a&gt;, where tests are written for any backend / frontend work we do. This often involves writing a test for the functionality you want to add first, which requires a different way of thinking, as opposed to just writing the feature without tests. &lt;/p&gt;

&lt;h2&gt;
  
  
  Different Working Environment 🌱
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Moving from an Agency to a Product Company 🏢
&lt;/h3&gt;

&lt;p&gt;My first role in the industry was at an agency, building apps in React Native. We had a variety of clients, and depending on the workload, I could find myself working on multiple projects at once. New features and designs would come from our end client, and we’d log time worked on tickets to ensure we correctly bill the client.&lt;/p&gt;

&lt;p&gt;Things are a little different in a product company. Everyone is working towards one product instead, which I’ve enjoyed. It’s allowed for me to slow down and focus a little more. Each team at Moonpig has a Product Manager and Designer, who are the main points of contacts for new features, upgrades / enhancements and new designs. Also, there’s no time tracking in product companies (well, at Moonpig at least), which certainly took the pressure off of me a little bit! &lt;/p&gt;

&lt;h3&gt;
  
  
  Pair Programming 🍐
&lt;/h3&gt;

&lt;p&gt;In my previous role, I would work independently most of the time. The concept of pairing was totally new to me coming into Moonpig (working alongside another engineer on a single ticket). A huge benefit I’ve found with pairing is the amount that I am able to learn in a short space of time - I’ve learned a lot about not only the technical domain of the team I’m in, but also using my tools more efficiently (for example, discovering that rebasing in Git was a thing 👀). It’s also super easy to fire questions to the other person if you’re unsure - when working independently, it isn’t as easy to get help so quickly. &lt;/p&gt;

&lt;h3&gt;
  
  
  Hybrid Working &amp;amp; Networking 👥
&lt;/h3&gt;

&lt;p&gt;As Moonpig have an office in Manchester, it’s been really nice going in once or twice a week to change my working environment up. This has also meant that I’ve been able to meet fellow Moonpig colleagues face to face, learning more about who they are and what sort of work they do. My previous role was fully remote, meaning all my interactions with colleagues were over the internet. It’s been nice to have an office space to go into since working at Moonpig.&lt;/p&gt;

&lt;h3&gt;
  
  
  Working with Agile &amp;amp; Scrum 📝
&lt;/h3&gt;

&lt;p&gt;There are various processes in place to help keep the team working together efficiently, which come from Agile and Scrum. A couple of examples I was new to at Moonpig were the following sessions: refinement and retrospectives.&lt;/p&gt;

&lt;p&gt;Refinement is time for the team to go through upcoming work (tickets in the backlog) and ensure there is enough information to attempt the work, ahead of pulling the ticket into “to do”. This is a good time to identify any blockers and dependencies on a task ahead of time.&lt;/p&gt;

&lt;p&gt;Retrospectives are reflective sessions where the team are able to openly discuss how things have gone over a timeframe (e.g. every two weeks), and identify areas to improve on. It’s also a nice time to celebrate any wins that the team have had, keeping the team morale high.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Involved with Working Groups 🙋🏽‍♂️
&lt;/h2&gt;

&lt;p&gt;Moonpig have a concept called a “working group”, each having their own focus to improve a particular area of the business. One that caught my eye from day one was the Associate Working Group, whose aim is to improve the Associate Engineer in the company. Given that I was a brand new associate, I thought it would make sense to try and get involved however I could.&lt;/p&gt;

&lt;p&gt;I started by sharing learning resources that I found helpful for different technologies I was currently learning, followed by attending collaborative meetings which gave me a chance to voice my thoughts and opinions to others in the group. &lt;/p&gt;

&lt;p&gt;When you join a new company, it can sometimes feel like you aren’t providing tons of value, but fortunately this working group gave me an instant feeling of satisfaction as I contributed to the different activities going on in the group&lt;/p&gt;

&lt;h2&gt;
  
  
  Dealing with Anxiety and Impostor Syndrome 🧠
&lt;/h2&gt;

&lt;p&gt;Joining a new company, whilst still fairly early on in my career, certainly hasn’t been easy. I’d constantly be questioning whether I deserved to be in my new role, and seeing how much there was to learn at the beginning made me feel like I wasn’t good enough to learn it all. I’d tell myself that I somehow fluked my way through the interviews, somehow pulling a wool over my interviewer’s eyes. &lt;/p&gt;

&lt;p&gt;As outlined in this post, there was a lot for me to get to grips with, which triggered the anxiety a little as well. There were many unknowns, and I often felt like I had no control over all of the things I needed to learn. I wasn’t sure if I’d “do well” as a result, contributing to the feelings of anxiety.&lt;/p&gt;

&lt;p&gt;Despite all of my worries and doubts, I was really happy to receive some positive feedback from my manager and those who I had worked with so far, as I came to the end of my three month probation. I definitely feel more settled and acquainted with the new tech I’ve been learning, and the new ways of working. &lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next? 👀
&lt;/h2&gt;

&lt;p&gt;For the remainder of the year, I’ll be rotating across different teams, which will give me a flavour of what different teams do in the business, and also help me find which side of the tech stack I’m truly passionate about (I love both front and back-end at the moment!). I started on the Loyalty team, and have recently rotated onto the Attach team. I’ll be on the Attach team for three months, after which I hope to write up another blog post on what my experience has been like. &lt;/p&gt;

&lt;p&gt;I hope this post was interesting and gave you an insight into what it is like to join Moonpig as a new engineer!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Avoid These Mistakes as a Junior Developer</title>
      <dc:creator>yusufcodes</dc:creator>
      <pubDate>Fri, 04 Jun 2021 11:53:22 +0000</pubDate>
      <link>https://dev.to/yusufcodes/avoid-these-mistakes-as-a-junior-developer-f2n</link>
      <guid>https://dev.to/yusufcodes/avoid-these-mistakes-as-a-junior-developer-f2n</guid>
      <description>&lt;h1&gt;
  
  
  Introduction 👋🏽
&lt;/h1&gt;

&lt;p&gt;Last year, I took my first steps into the industry as a part-time Junior Developer whilst completing my Computer Science degree. In this post, I want to reflect on some mistakes I’ve made, hoping to help other developers who are early into their careers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Not asking for help 😨
&lt;/h2&gt;

&lt;p&gt;As an early-career developer, it is so easy to feel like you need to know everything. You feel like you need to prove yourself to your team, and prove that you belong in the role you've landed, so you want to take everything on without asking for help. However, the honest truth is everyone needs a helping hand at some point, no matter what seniority level they're at.&lt;/p&gt;

&lt;p&gt;As a junior, your colleagues will not expect you to know how to do everything. They are there to help you, and have probably faced the issues you are facing before, so you will save a lot of time by reaching out for help! Asking for help is not a reflection of your ability to do your job. So, when you find yourself struggling, make sure to reach out to someone for help!&lt;/p&gt;

&lt;h2&gt;
  
  
  Asking for help in the wrong way 🤔
&lt;/h2&gt;

&lt;p&gt;The time of your colleagues is precious, so you want to make sure you've tried everything you can with your skills and knowledge with any problems you face. An example of this is searching online for solutions, or consulting the documentation for the technologies you are working with. After doing some research, you are in a better position to ask for help. See the following example of asking for help:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OK Approach&lt;/strong&gt;: &lt;em&gt;"Hi, I am struggling with Problem X. Any ideas what to do?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better Approach&lt;/strong&gt;: &lt;em&gt;"Hi, I am struggling with Problem X. I have read this article (link), and had a look at this tutorial (link), and tried applying these, but I am still having problems. Can anyone guide me further?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Explaining what you have already tried can save time for your colleagues, and can help them identify whether your approaches were correct in the first place. Take the time to look into your problems a little further, and you may be able to fix things yourself! (And, if not, you will have a much better way of approaching your colleagues).&lt;/p&gt;

&lt;h2&gt;
  
  
  Avoiding tasks outside of your comfort zone 🙅🏽‍♂️
&lt;/h2&gt;

&lt;p&gt;Alright, hear me out with this one. I'm not saying you must take on the most difficult ticket on day one. However, as you build up in knowledge and confidence, you will be in a better position to attempt harder tasks. You can use guidance from your management to help you move onto harder tasks. If you stick with the same tasks you always do, without trying to move up in complexity, it will take longer to advance as a developer. Your employer will favour your willingness to try harder things, and in the end it will only help you grow as a developer - so keep pushing yourself! (But not too hard, burnout is real 😅).&lt;/p&gt;

&lt;h2&gt;
  
  
  Not breaking down big tasks ✍🏽
&lt;/h2&gt;

&lt;p&gt;When you first get started as a dev, it can be easy to just follow a single ticket through without thinking about the magnitude of the task. However, if you try and think about the individual blocks of tasks you need to carry out, you could break down a larger task into smaller ones.&lt;/p&gt;

&lt;p&gt;The benefit of this is it will help  you work in a more Agile way, allowing you to deliver smaller chunks of work in a quicker timeframe. This can help you receive feedback from your colleagues much sooner, helping you deliver the best piece of software in a better timeframe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting yourself down 😔
&lt;/h2&gt;

&lt;p&gt;If there is anything I excel at, it is putting myself down. When I make progress with a task, I will dismiss it two seconds later and identify what I must do next. This is not a great way to work, because you will never feel satisfied with the progress you're making at such an early stage of your career. It may seem small in the moment, but these little wins will contribute to larger successes as you work on more tasks.&lt;/p&gt;

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

&lt;p&gt;These were just a few little mistakes I've identified in myself as an early-career developer. I hope I can continue identifying and learning from my mistakes, and that these are useful for any other early-career developers out there!&lt;/p&gt;

&lt;p&gt;Can you think of any other mistakes to avoid? Let's generate a discussion in the comments below 🤔!&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>career</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why I Left My Developer Internship After Two Months</title>
      <dc:creator>yusufcodes</dc:creator>
      <pubDate>Thu, 16 Jul 2020 21:07:33 +0000</pubDate>
      <link>https://dev.to/yusufcodes/why-i-left-my-developer-internship-after-two-months-4h43</link>
      <guid>https://dev.to/yusufcodes/why-i-left-my-developer-internship-after-two-months-4h43</guid>
      <description>&lt;h2&gt;
  
  
  Introduction 👋🏼
&lt;/h2&gt;

&lt;p&gt;In Summer 2019, I started an &lt;strong&gt;Industrial Placement&lt;/strong&gt;, due to last 12 months, as part of my BSc Computer Science degree. It was my first ever experience as a Software Developer. Unfortunately, I decided to leave the position after two months, taking the rest of the academic year (2019-20) as a gap year. In this article, I want to talk about the things which led me to leave so early on.&lt;br&gt;
&lt;em&gt;Disclaimer&lt;/em&gt;: This is &lt;strong&gt;not&lt;/strong&gt; a post where I bash my previous employer, but rather, the things which I experienced which were too much &lt;strong&gt;for me&lt;/strong&gt;, a newbie to the industry who suffers from anxiety. The purpose of this article is to help anybody out there in a similar position to me.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, what happened?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Burning Out
&lt;/h3&gt;

&lt;p&gt;After two months, I believe I reached a point of &lt;strong&gt;burnout&lt;/strong&gt;. If you haven't heard of this before, I've included a definition below:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Burnout is a state of emotional, physical, and mental exhaustion caused by &lt;a href="https://www.helpguide.org/articles/stress/stress-symptoms-signs-and-causes.htm"&gt;excessive and prolonged stress&lt;/a&gt;. It occurs when you feel overwhelmed, emotionally drained, and unable to meet constant demands - &lt;a href="%5Bhttps://www.helpguide.org/articles/stress/burnout-prevention-and-recovery.htm%5D(https://www.helpguide.org/articles/stress/burnout-prevention-and-recovery.htm)"&gt;HelpGuide&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A lot of people may reach this point because they have too much to do. In my case, I felt I had &lt;strong&gt;too much to get to grips with&lt;/strong&gt; in a short space of time, rather than an excessive workload, and for this reason I believe I burned out. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m2_7BdB_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://minutes.co/wp-content/uploads/2019/09/Burnout.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m2_7BdB_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://minutes.co/wp-content/uploads/2019/09/Burnout.jpg" alt="enter image description here"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Dealing with Imposter Syndrome
&lt;/h3&gt;

&lt;p&gt;Due to the working environment I was in, it was fast paced from day one. I had a lot of knowledge and working practices to get to grips with, and believe me when I say, I was giving it my all every single day. I can remember getting up each morning and putting on a positive, brave face to try and make progress with my day. However my anxiety would, more often than not, catch up to me. I'd often wake up to a new day thinking: "&lt;em&gt;I can't do this&lt;/em&gt;". Did this stop me from going in to work? It actually did on two days where I called in sick. I've worked before this job and never felt like taking a day off like this, so I knew this wasn't a good sign for me. (&lt;em&gt;Note: nothing wrong with taking days off when you don't feel like your best self, it just wasn't ever a thing I had to do before!&lt;/em&gt;)&lt;/p&gt;

&lt;p&gt;Back to the point I'm trying to make here, &lt;strong&gt;I just didn't feel good enough&lt;/strong&gt;. The work environment I was in meant I needed to be more bold and confident in my work, and I wasn't quite there yet as a new developer. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XvVqXIRG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://astrobites.org/wp-content/uploads/2018/02/imposter-300x196.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XvVqXIRG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://astrobites.org/wp-content/uploads/2018/02/imposter-300x196.png" alt="desc"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Needing More Support
&lt;/h3&gt;

&lt;p&gt;Due to how new I am to the development world, the work environment I was in wasn't supportive enough &lt;em&gt;for me&lt;/em&gt;. There was often tons of things going on, meaning I had to grapple with everything that came my way, with little breathing room. This just added on to my anxiety as I felt I was holding back my employers in the work that they were trying to achieve. &lt;/p&gt;

&lt;h3&gt;
  
  
  Personal Expectations
&lt;/h3&gt;

&lt;p&gt;I wanted to be perfect from day one. Read that again. &lt;em&gt;I wanted to be perfect from day one&lt;/em&gt;. Is this even possible for a brand new developer? In most cases, no (unless you're that super genius kid we all want to be). Was I going in with this expectation of myself each day? &lt;strong&gt;Yes.&lt;/strong&gt; I wasn't comfortable with making mistakes and being vulnerable, and that hindered me a lot. I was giving myself undue stress which wasn't necessary - this itself will have impacted my performance and ability to do my role.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Have I Learned From the Experience?
&lt;/h2&gt;

&lt;p&gt;Leaving the placement so early on made me feel like a complete failure, and sometimes still does. However if anything, that was the &lt;strong&gt;best decision I could've made for my own mental sanity&lt;/strong&gt;. If I didn't think of my mental health first, who knows how I would've ended up a few more months down the line. Leaving something for the sake of looking after yourself doesn't equate to failure - we just like to make ourselves feel like we've failed because...we're human. &lt;/p&gt;

&lt;p&gt;Below are some points regarding what I learned from my experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Put your mental health first before anything, and talk to someone about what you're going through;&lt;/li&gt;
&lt;li&gt;Don't aim to be perfect in a new role, but be open to failing &lt;strong&gt;and learning from said failure&lt;/strong&gt;, working to ensure it doesn't happen again;&lt;/li&gt;
&lt;li&gt;Talk to your management team sooner rather than later, your workplace may be more accommodating than you think!&lt;/li&gt;
&lt;li&gt;When job searching, try and imagine if the environment you're looking into is the best fit for you. You could spot a bad environment for you before you accept any prospective offer.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fca_r0tD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://scontent-lht6-1.xx.fbcdn.net/v/t1.0-9/29244763_2048660798722318_4803850527967714771_n.jpg%3F_nc_cat%3D111%26_nc_sid%3D9267fe%26_nc_ohc%3D2NWmTYtqJC8AX-ydUzm%26_nc_ht%3Dscontent-lht6-1.xx%26oh%3D54dab5cb02765c158aea135514afa2d9%26oe%3D5F36D167" alt="desc"&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This was a quick overview of my first developer experience as a student, purposefully kept quite brief. It has taken me a while to pluck up the courage to sit and write about my first ever developer experience, being that of one that wasn't quite as planned. However, I've learned and grown from the experience, and actually picked up some team leading skills this year (on my gap year) as I was a Team Leader at M&amp;amp;S Foodhall - during a global pandemic! The soft skills gained this year are invaluable and I look forward to applying them to my next future developer role, which I hope to find for 2021 (hope to finish my Computer Science degree by then!)&lt;/p&gt;

&lt;p&gt;I hope you find this article useful, and if you're interested in following my student and developer journey, just tap on the links below:&lt;br&gt;
▶️ &lt;a href="https://instagram.com/yusufcodes"&gt;Instagram - yusufcodes&lt;/a&gt;&lt;br&gt;
▶️ &lt;a href="https://twitter.com/yusufcodes"&gt;Twitter - yusufcodes&lt;/a&gt;&lt;br&gt;
▶️ &lt;a href="https://www.linkedin.com/in/yusuf-chowdhury/"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A Quick Introduction to CSS Grid</title>
      <dc:creator>yusufcodes</dc:creator>
      <pubDate>Mon, 20 Jan 2020 17:45:45 +0000</pubDate>
      <link>https://dev.to/yusufcodes/a-quick-introduction-to-css-grid-na5</link>
      <guid>https://dev.to/yusufcodes/a-quick-introduction-to-css-grid-na5</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;In this article, I will be covering the basics of CSS Grid, defining what it is and how to get started with it. This is to aid my own learning and hopefully give something quick and useful back to the community.&lt;br&gt;
Follow along as I break down this awesome bit of technology! 😄&lt;/p&gt;
&lt;h2&gt;
  
  
  What is CSS Grid?
&lt;/h2&gt;

&lt;p&gt;CSS Grid gives you the ability to divide a given section into a bunch of &lt;strong&gt;rows and columns&lt;/strong&gt;, hence the name &lt;em&gt;CSS Grid&lt;/em&gt;. This is useful when building layouts, because you can position elements in any area of the grid, by specifying where you want the item to go in your CSS.&lt;/p&gt;
&lt;h2&gt;
  
  
  Getting Started with CSS Grid
&lt;/h2&gt;

&lt;p&gt;To get started, you need a &lt;strong&gt;parent container&lt;/strong&gt; which you'd apply a special property to, to activate the Grid. Any items that you want to be a part of this Grid are then placed within this parent container.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"one"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;One&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"two"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Two&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"three"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Three&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"four"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Four&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To activate the Grid, we apply the &lt;strong&gt;display&lt;/strong&gt; property with the &lt;strong&gt;grid&lt;/strong&gt; value. This tells the browser that we want the specified container to be a Grid, that's it.&lt;br&gt;
This then allows us to use a bunch of different properties associated to CSS Grid to start building our layout.&lt;/p&gt;
&lt;h3&gt;
  
  
  CSS Grid Properties
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;grid-template-columns&lt;/strong&gt;: Specify the size and number of columns &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;grid-template-rows&lt;/strong&gt;: Specify the size and number of rows&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Example Usage
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="err"&gt;...&lt;/span&gt;
    &lt;span class="c"&gt;/* Defining two columns with the size of 60px */&lt;/span&gt;
    &lt;span class="py"&gt;grid-template-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;60px&lt;/span&gt; &lt;span class="m"&gt;60px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;When using these properties, you are &lt;strong&gt;explicitly&lt;/strong&gt; defining the Grid, meaning that you are defining exactly how the Grid should behave.&lt;/p&gt;

&lt;p&gt;If we defined our columns without specifying any rules for the rows, CSS will &lt;strong&gt;implicitly&lt;/strong&gt; create the rows for us, depending on the size of the elements. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;grid-gap&lt;/strong&gt;: Create some space between the different rows and columns of the Grid&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Example Usage
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="err"&gt;...&lt;/span&gt;
    &lt;span class="c"&gt;/* Create 10 pixels of space on the top and bottom of each Grid element,
    and 20 pixels of space on the left and right sides. */&lt;/span&gt;
    &lt;span class="py"&gt;grid-gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;grid-auto-rows&lt;/strong&gt;: Defines the size of implicitly created rows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;grid-auto-columns&lt;/strong&gt;: Defines the size of implicitly created columns&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Example Usage
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="err"&gt;...&lt;/span&gt;
    &lt;span class="py"&gt;grid-auto-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Using the example above, what happens when we define this property is that any other columns that are added to the Grid, &lt;strong&gt;implicitly&lt;/strong&gt;, will use up 'one free space' available on the page automatically. &lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: fr does not stand for free space, but it's a neat way to think of how this unit works.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;grid-column&lt;/strong&gt; (shorthand)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;grid-row&lt;/strong&gt; (shorthand)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;grid-column is &lt;strong&gt;shorthand&lt;/strong&gt; for the following properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;grid-column-start&lt;/li&gt;
&lt;li&gt;grid-column-end&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;grid-row is &lt;strong&gt;shorthand&lt;/strong&gt; for the following properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;grid-row-start&lt;/li&gt;
&lt;li&gt;grid-row-end&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;strong&gt;-start&lt;/strong&gt; properties tells the Grid where to initially place an item, and the &lt;strong&gt;-end&lt;/strong&gt; properties tells the Grid at which point the element to be placed should stop at.&lt;/p&gt;

&lt;p&gt;The value you specify refers to the Grid Line. Thinking of a square box, the line on the left would be &lt;strong&gt;Line 1&lt;/strong&gt;, and the line on the right would be &lt;strong&gt;Line 2&lt;/strong&gt;. &lt;/p&gt;
&lt;h4&gt;
  
  
  Example Usage
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="err"&gt;...&lt;/span&gt;
    &lt;span class="c"&gt;/* Start at column line 2, end at column line 4*/&lt;/span&gt;
    &lt;span class="py"&gt;grid-column-start&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="py"&gt;grid-column-end&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c"&gt;/* Shorthand */&lt;/span&gt;
    &lt;span class="nl"&gt;grid-column&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Grid Template Areas
&lt;/h3&gt;

&lt;p&gt;Grid Template Areas are a way to name the different sections of the Grid. The property used is called  &lt;strong&gt;grid-template-areas&lt;/strong&gt;. Below is the basic syntax for its usage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="py"&gt;grid-template-areas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="s1"&gt;"sidebar-1 content sidebar-2"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The syntax roughly follows the structure of the actual Grid. So, the first three columns that are present will be called  &lt;strong&gt;sidebar-1&lt;/strong&gt;,  &lt;strong&gt;content&lt;/strong&gt;, and  &lt;strong&gt;sidebar-2&lt;/strong&gt;  respectively.&lt;/p&gt;

&lt;p&gt;To continue defining the other areas of the Grid, such as rows below it, you continue on a new line with either the same name to define a whole area, or a new name to identify a new section of the grid.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="py"&gt;grid-template-areas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="s1"&gt;"sidebar-1 content sidebar-2"&lt;/span&gt;
      &lt;span class="s1"&gt;"sidebar-1 content sidebar-2"&lt;/span&gt;
      &lt;span class="s1"&gt;"footer footer footer"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using your pre-defined class names for each of the elements on the page, you can use the Grid Template Area names to define where to place such elements. An example is shown below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.footer&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="py"&gt;grid-area&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;footer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.item1&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="py"&gt;grid-area&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;sidebar-1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.item2&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="py"&gt;grid-area&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.item3&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="py"&gt;grid-area&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;sidebar-2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is saying that, for each item selected, place it in the defined area of the grid that we have specified. The element being placed will naturally position itself into the named section of the grid, using  &lt;strong&gt;grid-area&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;This was a very quick introduction to CSS Grid, as I wanted to summarise the basic concepts I learned through the following resources:&lt;br&gt;
&lt;a href="https://cssgrid.io/"&gt;Wes Bos: CSS Grid Course&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout"&gt;Mozilla Developer Network: CSS Grid Layout&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading 👋! If you're interested in following me on my Web  Development journey, follow me on &lt;a href="https://www.instagram.com/yusufcodes/?hl=en"&gt;Instagram&lt;/a&gt; and &lt;a href="https://twitter.com/yusufcodes"&gt;Twitter&lt;/a&gt; 😄&lt;/p&gt;

</description>
      <category>css</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>✏️ Learn ES6 With Me: Part Two</title>
      <dc:creator>yusufcodes</dc:creator>
      <pubDate>Sat, 16 Nov 2019 17:28:47 +0000</pubDate>
      <link>https://dev.to/yusufcodes/learn-es6-with-me-part-two-435o</link>
      <guid>https://dev.to/yusufcodes/learn-es6-with-me-part-two-435o</guid>
      <description>&lt;h2&gt;
  
  
  Introduction 👋🏼
&lt;/h2&gt;

&lt;p&gt;Welcome to &lt;strong&gt;part two&lt;/strong&gt; of this &lt;strong&gt;four-part series&lt;/strong&gt;, where I'll be documenting the concepts I am currently learning as part of my journey to better understand the JavaScript Language.&lt;/p&gt;

&lt;p&gt;In this part, I will be covering the following topics:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Arrow Functions: Basics&lt;/li&gt;
&lt;li&gt;Arrow Functions: Lexical ‘This’ Keyword&lt;/li&gt;
&lt;li&gt;Destructuring&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to start from the beginning of the series, below is a link to Learn ES6 With Me: Part One ⬇️&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/yusufcodes" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qUP5gqWx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--0ZV6lwi8--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/209009/fc041ed8-c70f-44d0-9290-014ac039b330.jpeg" alt="yusufcodes"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/yusufcodes/learn-es6-with-me-part-one-3a2c" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;✏️ Learn ES6 With Me: Part One&lt;/h2&gt;
      &lt;h3&gt;yusufcodes ・ Nov 9 '19 ・ 7 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Arrow Functions: Basics ➡️
&lt;/h2&gt;

&lt;p&gt;Arrow functions are a new way to write out functions in ES6. The syntax is &lt;strong&gt;simpler&lt;/strong&gt; and allows for a much more cleaner look to your code.&lt;/p&gt;

&lt;p&gt;For your reference, below is the basic syntax in a generic format, which I've taken directly from &lt;a href="%5Bhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions%5D(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)"&gt;Mozilla Developer Network&lt;/a&gt; as it's nice and clear:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;param1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;param2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;…&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;paramN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;statements&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; 
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;param1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;param2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;…&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;paramN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;expression&lt;/span&gt;
&lt;span class="c1"&gt;// equivalent to: =&amp;gt; { return expression; }&lt;/span&gt;

&lt;span class="c1"&gt;// Parentheses are optional when there's only one parameter name:&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;singleParam&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;statements&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;singleParam&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;statements&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// The parameter list for a function with no parameters should be written with a pair of parentheses.&lt;/span&gt;
&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;statements&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now, onto a basic example. Let's start off with a regular function that we'd write in ES5. Here, I write a function declaration with the name &lt;strong&gt;ES5Func&lt;/strong&gt;, passing in a parameter called &lt;strong&gt;name&lt;/strong&gt;. This is then output to the console in a simple statement:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;ES5Func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Hey &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;ES5Func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Yusuf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: Hey Yusuf!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now, I've written the same code as above but using the &lt;strong&gt;ES6 Arrow Function syntax&lt;/strong&gt;. I'll break it down below:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ES6Func&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Hey &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;ES6Func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Yusuf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;// Output: Hey Yusuf! (same as above)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;We declare a const value called &lt;strong&gt;ES6Func&lt;/strong&gt; - this is the name of our new function&lt;/li&gt;
&lt;li&gt;We then supply any &lt;strong&gt;arguments&lt;/strong&gt; to the function, in this case, we have &lt;strong&gt;name&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Note: When you only have &lt;strong&gt;one&lt;/strong&gt; argument, you can omit the parentheses if you want&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;We then introduce the use of an arrow &lt;strong&gt;=&amp;gt;&lt;/strong&gt; - this is identifying the beginning of our function.

&lt;ul&gt;
&lt;li&gt;Notice how, in this example, we have &lt;strong&gt;no curly braces&lt;/strong&gt; like we usually do in ES5. This is because we're only writing a single line of code, and for simplicity, you don't need to use curly braces when there's only &lt;strong&gt;one line of code&lt;/strong&gt; to execute.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's explore another example that has a bit more going on within it:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Method to square the number entered by the user and return the value&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;squareValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;numToSquare&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`The number that is going to be squared is: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;numToSquare&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;numToSquare&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;numToSquare&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;valueSquared&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;squareValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;valueSquared&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: 25 (5 x 5 = 25)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Notice how in this second example, we &lt;strong&gt;do&lt;/strong&gt; have curly braces as we're writing multiple lines of code.&lt;/p&gt;

&lt;p&gt;Now, although our functions can be written using ES6 Arrow Function syntax, one thing we need to consider is that the behaviour of the &lt;strong&gt;'this'&lt;/strong&gt; value is different when we use this syntax. In the next section, I've tried to briefly describe this, although I know that it could be explored in more depth. &lt;/p&gt;
&lt;h2&gt;
  
  
  Arrow Functions: Lexical 'This' Keyword
&lt;/h2&gt;

&lt;p&gt;With a regular ES5 function, each new function would define it's own this value which was determined by how the function was called - &lt;strong&gt;&lt;em&gt;this is not the case with Arrow Functions!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Arrow Functions use the &lt;strong&gt;this&lt;/strong&gt; value of it's &lt;strong&gt;surrounding environment&lt;/strong&gt;, and because the value of this is affected by the location of the function, it is described as being &lt;strong&gt;lexical&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Below is an example of us writing an Arrow Function, simply displaying the &lt;strong&gt;this&lt;/strong&gt; property in the console:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;exploreThisKeyword&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;exploreThisKeyword&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;When running this function, the output resolves to the &lt;strong&gt;Window&lt;/strong&gt; object. This is because the current &lt;strong&gt;parent scope&lt;/strong&gt; is Window, the global scope of the browser. &lt;/p&gt;

&lt;p&gt;More could be said with the explanation of exactly why this is happening, but I don't want this article to become too long! If you're interested in this topic of JavaScript, I recommend &lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/scope-closures/README.md"&gt;You Don't Know JS Yet: Scope &amp;amp; Closures&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The takeaway point of this section is that Arrow Functions &lt;strong&gt;do not&lt;/strong&gt; create their own value for the 'this' keyword but rather, inherit the value assigned from their surrounding scope. So, keep this in mind as you start to use Arrow Functions.&lt;/p&gt;
&lt;h2&gt;
  
  
  Destructuring ⛏️
&lt;/h2&gt;

&lt;p&gt;Destructuring is the process of &lt;strong&gt;breaking down a data structure&lt;/strong&gt; into &lt;strong&gt;constituent variables&lt;/strong&gt;. This allows for multiple variables to be quickly defined, without having to individually extract each value you want.&lt;/p&gt;

&lt;p&gt;Let's say you have some array, &lt;strong&gt;foo&lt;/strong&gt;, and you want to store the values of this array in some variables. Below is an example of how you would traditionally do this:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ES5 - storing values from an array into variables&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;one&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;two&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;three&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;red&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;yellow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;green&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Although it works just fine, it's pretty long for what we're trying to achieve. Luckily we have &lt;strong&gt;destructuring&lt;/strong&gt;! &lt;/p&gt;

&lt;p&gt;Examples below show how destructuring is possible for &lt;strong&gt;Arrays&lt;/strong&gt; and also &lt;strong&gt;Objects&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Arrays
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ES6 - storing values from an array into variables&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;one&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;two&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;three&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;red&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;yellow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;green&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;red&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// "one"&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;yellow&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// "two"&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;green&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// "three"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Objects
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ES6 - storing the value of some properties of an object into variables&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;o&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;p&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;q&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;q&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;o&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 42&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;q&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Hopefully you can see how easy it is to extract data using this new feature of ES6.&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In &lt;strong&gt;part two&lt;/strong&gt; of this &lt;strong&gt;four-part series&lt;/strong&gt;, I've covered the following ES6 JavaScript concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ES6 Arrow Functions: the basic syntax and the behaviour of the 'this' keyword&lt;/li&gt;
&lt;li&gt;Destructuring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay tuned for the next two parts of this series, which I'll post links to below once they've been released.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Some space for the next unreleased two parts of this series!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Want to read &lt;strong&gt;part one&lt;/strong&gt; of this series? Click below&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/yusufcodes" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qUP5gqWx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--0ZV6lwi8--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/209009/fc041ed8-c70f-44d0-9290-014ac039b330.jpeg" alt="yusufcodes"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/yusufcodes/learn-es6-with-me-part-one-3a2c" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;✏️ Learn ES6 With Me: Part One&lt;/h2&gt;
      &lt;h3&gt;yusufcodes ・ Nov 9 '19 ・ 7 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note:&lt;/em&gt;&lt;/strong&gt; I am in no way, shape or form, an expert when it comes to JavaScript. My idea and motive behind these posts are to help myself better understand these concepts as I learn them, whilst trying to give something back to the DEV community.&lt;br&gt;
If there is anything fundamentally wrong with the information I've shared, please let me know. We're all still learning, and we can certainly do that together! 😊&lt;/p&gt;

&lt;p&gt;Find me on &lt;a href="//www.instagram.com/yusufcodes"&gt;Instagram&lt;/a&gt; and &lt;a href="//www.twitter.com/yusufcodes"&gt;Twitter&lt;/a&gt;, where I post about the tech that I'm currently working with, and document my journey as a Computer Science student🙂.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>✏️ Learn ES6 With Me: Part One</title>
      <dc:creator>yusufcodes</dc:creator>
      <pubDate>Sat, 09 Nov 2019 18:00:21 +0000</pubDate>
      <link>https://dev.to/yusufcodes/learn-es6-with-me-part-one-3a2c</link>
      <guid>https://dev.to/yusufcodes/learn-es6-with-me-part-one-3a2c</guid>
      <description>&lt;h2&gt;
  
  
  Introduction 👋🏼
&lt;/h2&gt;

&lt;p&gt;Welcome to &lt;strong&gt;part one&lt;/strong&gt; of this &lt;strong&gt;four-part series&lt;/strong&gt;, where I'll be documenting the concepts I am currently learning as part of my journey to better understand the JavaScript Language.&lt;/p&gt;

&lt;p&gt;In this part, I will be covering the following topics:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Variable Declarations with Let and Const&lt;/li&gt;
&lt;li&gt;Blocks and Immediately Invoked Function Expressions&lt;/li&gt;
&lt;li&gt;Strings in ES6&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once I write and release the next parts, I will link them &lt;strong&gt;right below this line!&lt;/strong&gt; &lt;br&gt;
&lt;em&gt;[empty space of nothing until I write and release the next parts]&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Variable Declarations with Let and Const 📦
&lt;/h2&gt;

&lt;p&gt;In ES6, there are two new ways of declaring variables using the following keywords: '&lt;strong&gt;let&lt;/strong&gt;' and '&lt;strong&gt;const&lt;/strong&gt;'.&lt;/p&gt;
&lt;h3&gt;
  
  
  Defining variables in ES6
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Two methods of declaring variables&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Yusuf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: 0&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: Yusuf&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Effectively, the two statements above will do the same thing, such that two new variables, &lt;strong&gt;counter&lt;/strong&gt; and &lt;strong&gt;name&lt;/strong&gt;, are defined and set to some value.&lt;/p&gt;
&lt;h3&gt;
  
  
  What's the difference between 'let' and 'const' then?
&lt;/h3&gt;

&lt;p&gt;The major difference between 'let' and 'const' is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;'&lt;strong&gt;let&lt;/strong&gt;': used for values which may change throughout the lifecycle of your JavaScript application.&lt;/li&gt;
&lt;li&gt;'&lt;strong&gt;const&lt;/strong&gt;': used for values which cannot, and should not, change at any point in your application. These can be thought of as 'constant' values. **&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;** Thank you &lt;a href="https://dev.to/dovca"&gt;David&lt;/a&gt; for raising an excellent point in the comments - you can change values contained within a const structure itself (such as array elements) but not the entire variable itself (such as replacing the whole array contents). His input is below:&lt;br&gt;
&lt;/p&gt;
&lt;div class="liquid-comment"&gt;
    &lt;div class="body"&gt;
      &lt;p&gt;Comment Not Found&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
Another really good bit of explanation of const below:


&lt;div class="liquid-comment"&gt;
    &lt;div class="body"&gt;
      &lt;p&gt;Comment Not Found&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
Thinking back to the example of the &lt;strong&gt;counter&lt;/strong&gt; and &lt;strong&gt;name&lt;/strong&gt; variables we defined above, we used &lt;strong&gt;let&lt;/strong&gt; for the &lt;em&gt;counter&lt;/em&gt; and &lt;strong&gt;const&lt;/strong&gt; for the &lt;em&gt;name&lt;/em&gt;. This makes sense, right?

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;counter&lt;/em&gt;: this could be incremented or decremented in our program (changed), so it is appropriate to use &lt;strong&gt;let&lt;/strong&gt; for this variable.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;name&lt;/em&gt;: in most cases, a person cannot change their name, so we would want this to be defined using &lt;strong&gt;const&lt;/strong&gt;, so it cannot be changed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In fact, if we attempted to change the value of a variable defined using &lt;strong&gt;const&lt;/strong&gt;, we will be greeted with a lovely error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Yusuf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// Attempting to re-assign the value of name throws an error&lt;/span&gt;
&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;new name!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uOUHntzh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/SyLLKgO.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uOUHntzh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/SyLLKgO.png" alt="Displaying the console error which appears when trying to change the value of a const variable"&gt;&lt;/a&gt;&lt;br&gt;
This feature enables developers to define and save variables with one value, knowing that they won't be able to change it, intentionally or unintentionally, without JavaScript kicking up a fuss about it. Neat stuff I think.&lt;/p&gt;
&lt;h3&gt;
  
  
  Variable Declarations: Function Scoped vs. Block Scoped 🔍
&lt;/h3&gt;

&lt;p&gt;With the introduction of &lt;strong&gt;let&lt;/strong&gt; and &lt;strong&gt;const&lt;/strong&gt;, the way that the JavaScript Engine accesses these variables is different to how it is normally done when declaring variables with the &lt;strong&gt;var&lt;/strong&gt; keyword in ES5.&lt;/p&gt;

&lt;p&gt;We can describe &lt;em&gt;let&lt;/em&gt; and &lt;em&gt;const&lt;/em&gt; variables to be &lt;strong&gt;block scoped&lt;/strong&gt;, and variables defined using &lt;em&gt;var&lt;/em&gt; as &lt;strong&gt;function scoped&lt;/strong&gt;. A scope can be thought of as the 'space' in which a particular value is accessible. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Block Scope&lt;/strong&gt;: Variables defined in this scope are only available within the block that it is defined in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Function Scope&lt;/strong&gt;: Variables defined in this scope are available throughout the function which it is defined in, even within other inner scopes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is a simple example of these two types of scopes, with an explanation afterwards:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ES5: 'var'&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;testingScopesOne&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Creating a new Block Scope&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Output: 2&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Output: 2&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// ES6: 'let'&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;testingScopesTwo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c1"&gt;// Creating a new Block Scope&lt;/span&gt;

    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Output: 2&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Output: 1&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;testingScopesOne&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;testingScopesTwo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Code Explanation 👀
&lt;/h4&gt;

&lt;p&gt;Above I have defined and executed two functions, &lt;strong&gt;testingScopesOne&lt;/strong&gt; and &lt;strong&gt;testingScopesTwo&lt;/strong&gt;.&lt;br&gt;
I'll try to break down what I did in each function, the outcome, and how this links to the concepts of &lt;strong&gt;Function Scope&lt;/strong&gt; and &lt;strong&gt;Block Scope&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In each function, I defined a variable called &lt;strong&gt;num&lt;/strong&gt;, assigning it the value &lt;strong&gt;1&lt;/strong&gt;. The difference between them is that I use &lt;strong&gt;var&lt;/strong&gt; in &lt;strong&gt;testingScopesOne&lt;/strong&gt; and &lt;strong&gt;let&lt;/strong&gt; in &lt;strong&gt;testingScopesTwo&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;After the variable definition and assignment, I create a &lt;strong&gt;new block&lt;/strong&gt; using curly braces { ... }&lt;/li&gt;
&lt;li&gt;Within the &lt;strong&gt;newly created block scope&lt;/strong&gt;, I create a variable with the same name, &lt;strong&gt;num&lt;/strong&gt;, and assign a new value of &lt;strong&gt;2&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;testingScopesOne&lt;/strong&gt;: I used &lt;strong&gt;var&lt;/strong&gt; and output the value within the current block scope.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;testingScopesTwo&lt;/strong&gt;: I used &lt;strong&gt;let&lt;/strong&gt; and also output the value here.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both output a value of &lt;strong&gt;2&lt;/strong&gt;, which is expected. Once we escape this block scope, however, we get a different outcome in the output statements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upon leaving the block scope, I once again output the value of '&lt;strong&gt;num&lt;/strong&gt;' in &lt;strong&gt;testingScopesOne&lt;/strong&gt; and &lt;strong&gt;testingScopesTwo&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;testingScopesOne&lt;/strong&gt; output is &lt;strong&gt;2&lt;/strong&gt;, whereas &lt;strong&gt;testingScopesTwo&lt;/strong&gt; outcome is &lt;strong&gt;&lt;em&gt;still 1&lt;/em&gt;&lt;/strong&gt;,  which is the initial value we assigned to it in the beginning.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Why is this happening? 😮
&lt;/h4&gt;

&lt;p&gt;The testingScopesOne function is demonstrating the concept of &lt;strong&gt;Function Scoping&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Explanation:&lt;/em&gt; We defined a variable num using &lt;strong&gt;var&lt;/strong&gt;, assigned it one value, then reassigned it another value within another scope of the function. This newly assigned value, 2, &lt;strong&gt;overrode the initial value&lt;/strong&gt; of &lt;strong&gt;1&lt;/strong&gt;, showing that the scope of variables defined using &lt;strong&gt;var&lt;/strong&gt; are &lt;strong&gt;Function Scoped&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The testingScopesTwo function, on the other hand, is demonstrating the concept of &lt;strong&gt;Block Scoping&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Explanation:&lt;/em&gt; We defined the variable num using &lt;strong&gt;let&lt;/strong&gt;, and then within another scope of the function, we assigned a &lt;strong&gt;different value&lt;/strong&gt; (2) to num. Instead, what happened here is, this new value did not save as it did in testingScopesOne, so when we output the value at the end of the function outside of this scope, the value remained at &lt;strong&gt;1&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;This is because, when we declared the variable num again within the block scope, it created a &lt;strong&gt;completely new variable&lt;/strong&gt;, even though the name matched the initial variable we declared (num). This therefore demonstrates the concept of &lt;strong&gt;Block Scoping&lt;/strong&gt;, where any variable defintion using let is only bound to the current block scope it is defined in.&lt;/p&gt;
&lt;h2&gt;
  
  
  Blocks and Immediately Invoked Function Expressions 🏃🏽
&lt;/h2&gt;

&lt;p&gt;A block is any code which is encased within a set of curly braces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Some code&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Blocks are commonly used in control structures such as if, for, else, etc. but is not limited to be used in these.&lt;/p&gt;

&lt;p&gt;In ES6, we can use the concept of blocks to simplify the way we write Immediately Invoked Function Expressions (IIFEs).&lt;/p&gt;

&lt;h3&gt;
  
  
  Recap: What is an IIFE?
&lt;/h3&gt;

&lt;p&gt;An IIFE is a function which is &lt;strong&gt;executed straight away&lt;/strong&gt; (🏃🏽) upon definition - the JavaScript Engine recognises this as a function which needs to be executed right away.&lt;/p&gt;

&lt;p&gt;The important thing about an IIFE is the ability to &lt;strong&gt;encapsulate&lt;/strong&gt; all of the data that is used and defined within it. This means that access to anything from inside of an IIFE is not possible, unless such data is publicly defined. The reason for this is because, upon execution of an IIFE, a new &lt;strong&gt;scope&lt;/strong&gt; is created, which is separate to the &lt;strong&gt;main parent scope&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  IIFEs: ES5 vs. ES6
&lt;/h3&gt;

&lt;p&gt;In ES5, we had to do the following to create an IIFE:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Declare an anonymous function&lt;/li&gt;
&lt;li&gt;Wrap this function within parentheses&lt;/li&gt;
&lt;li&gt;Add a pair of parentheses outside thse parentheses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A lot of work, right? Not to mention how messy the structure ends up looking.&lt;br&gt;
Luckily, all we need to do in ES6 is write our code within a lone pair of parentheses...&lt;em&gt;and that's it&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ES5 IIFE&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Code&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;

&lt;span class="c1"&gt;// ES6 IIFE&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="c1"&gt;// Code&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ES6 IIFE: Example
&lt;/h3&gt;

&lt;p&gt;Below is a simple example where we define an IIFE and declare a variable, myName, within it.&lt;br&gt;
Accessing this variable within the IIFE works fine, whilst trying to access it from outside of the IIFE causes an error.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Yusuf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: Yusuf&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Error: myName is not defined&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Strings in ES6 🧵
&lt;/h2&gt;

&lt;p&gt;The way we manipulate and interact with strings is considerably better in ES6.&lt;br&gt;
There is one feature in particular, which is probably one of my most favourite things about ES6. And that is...&lt;strong&gt;string literals&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  String Literals
&lt;/h3&gt;

&lt;p&gt;Remember when you'd want to print out a string with some variables, such as a person's name? You would've had to do the following to achieve this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ES5 Strings&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;, welcome to this application!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With string literals, the awkwardness of adding the + operator between variables and starting / ending the string between each variable is now gone🥳! The above console log can be achieved by doing the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ES6 String Literals&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Hello &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, welcome to this application!`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notable differences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;backticks&lt;/strong&gt; instead of normal quotes&lt;/li&gt;
&lt;li&gt;Enter any variables using the following syntax: &lt;strong&gt;${ ... }&lt;/strong&gt;, where ... represents the variable you want to display&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also enter other simple snippets of JavaScript code within the ${ ... } structure, such as a call to a function. This function may &lt;strong&gt;return some value&lt;/strong&gt; that you want to be displayed, in which case, you can just enter it directly into the string.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;returnName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Yusuf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Hello &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;returnName&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="s2"&gt;, welcome to this application!`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Output: Hello Yusuf, welcome to this application!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ES6 String Methods
&lt;/h3&gt;

&lt;p&gt;Aside from string literals, ES6 also comes with a few new functions that can be used on strings. Below is a simple demonstration of each:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Method Name: startsWith&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;coffee&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;startsWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cof&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// Output: true&lt;/span&gt;

&lt;span class="c1"&gt;// Method Name: endsWith&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;coffee&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;endsWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ee&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// Output: true&lt;/span&gt;

&lt;span class="c1"&gt;// Method Name: includes&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;coffee&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;offe&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// Output: true&lt;/span&gt;

&lt;span class="c1"&gt;// Method Name: repeat&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hey &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;repeat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// Output: hey hey hey hey&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;In &lt;strong&gt;part one&lt;/strong&gt; of this &lt;strong&gt;four-part series&lt;/strong&gt;, I've covered the following ES6 JavaScript concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using let and const to define variables, and comparing this to using var&lt;/li&gt;
&lt;li&gt;Briefly touched on scopes, although more could be said on this as an entire article!&lt;/li&gt;
&lt;li&gt;Covered Immediately Invoked Function Expressions and how we can achieve this using blocks&lt;/li&gt;
&lt;li&gt;ES6 String manipulation and some new methods associated with them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay tuned for the next three parts of this series, which I'll post links to below once they've been released.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Some space for the next unreleased three parts of this series!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note:&lt;/em&gt;&lt;/strong&gt; I am in no way, shape or form, an expert when it comes to JavaScript. My idea and motive behind these posts are to help myself better understand these concepts as I learn them, whilst trying to give something back to the DEV community.&lt;br&gt;
If there is anything fundamentally wrong with the information I've shared, please let me know. We're all still learning, and we can certainly do that together! 😊&lt;/p&gt;

&lt;p&gt;Find me on &lt;a href="//www.instagram.com/yusufcodes"&gt;Instagram&lt;/a&gt; and &lt;a href="//www.twitter.com/yusufcodes"&gt;Twitter&lt;/a&gt;, where I post about the tech that I'm currently working with, and document my journey as a Computer Science student🙂.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>👨‍💻 What I learned from my first week as a Software Developer Intern</title>
      <dc:creator>yusufcodes</dc:creator>
      <pubDate>Sat, 24 Aug 2019 20:52:55 +0000</pubDate>
      <link>https://dev.to/yusufcodes/what-i-learned-from-my-first-week-as-a-software-developer-intern-5859</link>
      <guid>https://dev.to/yusufcodes/what-i-learned-from-my-first-week-as-a-software-developer-intern-5859</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;In this post, I'd like to detail a few bits of advice upon starting my first job as a Software Developer Intern. &lt;/p&gt;

&lt;p&gt;💡 To quickly introduce myself, I'm currently studying my Bachelor's in Computer Science in the city of Manchester, UK. As part of this degree, I've taken a year out to gain some Industrial Experience, which will form part of my degree. I started working over a week ago, so thought I'd get this post out following my experiences so far, as well as general tips which I feel will help &lt;em&gt;anyone&lt;/em&gt; starting out in a new job.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I've learned and my tips 👍🏼
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;You won't know everything straight away, &lt;em&gt;and that's OK&lt;/em&gt; 🤯&lt;/strong&gt;&lt;br&gt;
I felt bad about all of the things I didn't know, despite being new to the company. I had to adjust this mindset so that, instead of feeling bad about myself, I'd simply &lt;strong&gt;try my best&lt;/strong&gt; with a given task and see what I could achieve. Over time, you will get to grips with things - just know that &lt;em&gt;this will take time&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't be afraid to ask for help 🗣️&lt;/strong&gt;&lt;br&gt;
As nice as it may be to get on with a task for some time to try and make progress, there may come a point where you aren't getting anywhere. &lt;em&gt;This is the time to ask for help&lt;/em&gt;. You don't want to be hitting the same brick wall which, if you had asked for help earlier, could've avoided completely. The way I'm trying to approach this is to try my best with a given task and when I'm feeling &lt;strong&gt;completely stuck&lt;/strong&gt;, I will ask for guidance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't be afraid to make mistakes ❌&lt;/strong&gt;&lt;br&gt;
Let's be honest, the last thing you want to be doing as a new employee is making a mistake - whether it be a small mistake or a catastrophic one. &lt;em&gt;But these things happen sometimes&lt;/em&gt;. Why shouldn't you be afraid of these mistakes? Because: you will genuinely learn from such an experience. You'll want to ensure that the same mistake won't happen again, so you will do what you need to do in order to really learn from the mistake you made.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reflect on your experiences regularly 📖&lt;/strong&gt;&lt;br&gt;
The process of reflecting can really help you look back on all of the things you've achieved so far, and help you identify areas which you'd like to work on more. I'm personally trying to write down all of the things I've done at the end of each week, reflecting on both my progress at work and also my feelings throughout the process. I feel like this will help me as I progress in my career as a developer. As a student, I'll have something to look back on, before eventually starting my career once I've graduated from university.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you aren't feeling totally comfortable - speak to someone about it&lt;/strong&gt;&lt;br&gt;
Starting a new job, no matter what level you are at, can be daunting. You may have a bunch of thoughts and emotions running through your mind, and sometimes just talking to someone about things can help you make sense of all of this. This could be with someone at your new workplace, or someone you know in your personal life. &lt;/p&gt;

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

&lt;p&gt;I hope this quick post helps you out in some way, and if you found it useful, please share it with friends and family who you think may find it useful too! Thank you for taking the time to read my post☺️&lt;br&gt;
Find me on social media 👋🏽:&lt;br&gt;
-&lt;a href="//www.instagram.com/yusufcodes"&gt;Instagram&lt;/a&gt;&lt;br&gt;
-&lt;a href="//www.twitter.com/yusufcodes"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>📘 Study tips from a Computer Science student</title>
      <dc:creator>yusufcodes</dc:creator>
      <pubDate>Sat, 17 Aug 2019 21:10:42 +0000</pubDate>
      <link>https://dev.to/yusufcodes/study-tips-from-a-computer-science-student-5aog</link>
      <guid>https://dev.to/yusufcodes/study-tips-from-a-computer-science-student-5aog</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;After completing the first two years of studying my bachelor's in Computer Science, achieving a &lt;strong&gt;first class&lt;/strong&gt; so far, I thought I'd share a few tips which I feel have helped me. Note that people have different strategies to learning, but these are the things which I feel have helped &lt;em&gt;me&lt;/em&gt;. Let's begin! ⬇️&lt;/p&gt;

&lt;h2&gt;
  
  
  My study tips ✏️
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Make notes&lt;/strong&gt; 📝&lt;br&gt;
Notetaking is something I do regularly, an example of my notes are in the header image of this post (no, they don't need to be super neat!). When I take notes, I feel like I'm taking the time to really &lt;strong&gt;understand&lt;/strong&gt; what I'm trying to learn. I'm having to read some information, and process it by &lt;em&gt;writing it into my own words&lt;/em&gt;. I can then read over these multiple times to help me retain the information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn from multiple sources&lt;/strong&gt;&lt;br&gt;
Although the book that your lecturer strongly recommends is packed with information, there may be a topic which just doesn't make much sense to you. &lt;em&gt;And that's ok&lt;/em&gt;. We're in an era where information can be easily accessed online - &lt;strong&gt;use this to your advantage.&lt;/strong&gt; There's a high chance that searching online for the topic you're struggling with will yield a large amount of resources for you to try and learn from - more books, articles, videos, and anything else in between.&lt;/p&gt;

&lt;p&gt;I'd often search for a secondary resource to supplement my university resources, even if my primary resource was completely fine. This enabled me to &lt;strong&gt;broaden my knowledge&lt;/strong&gt; on the topic I was studying, sometimes outside the scope of my curriculum, but this can really help you understand the concepts you need to know better. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practice with old examination papers&lt;/strong&gt; 📄&lt;br&gt;
Most curriculums will have &lt;em&gt;past examination papers&lt;/em&gt;: exams which previous students have sat. These are helpful because they give you an idea of what the examination format will be like, for example, indicating the &lt;em&gt;type of questions&lt;/em&gt; to expect and how you'll be expected to present your information (short answer questions, essay questions, etc.)&lt;/p&gt;

&lt;p&gt;You can use this to aid you during your exam preparation, ensuring that you're able to take all the information you've been studying and apply it to the exam that you will be taking. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make a study plan&lt;/strong&gt; 📅&lt;br&gt;
If I don't have a study plan in place, I just know I won't be able to study effectively. I'll either end up procrastinating or focusing on the topics which I like (raise your hand if you're guilty of doing this🙋‍♂️🙋!).&lt;br&gt;
Below is a rough guide on how I'd plan out my studying:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Make a list of the topics you need to study&lt;/strong&gt;&lt;br&gt;
Having a list of the things you need to study will help you keep track of the topics you have covered and the topics which still need covering.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gather the resources you plan on using to study these topics&lt;/strong&gt;&lt;br&gt;
This will make it easy for you to crack on with the studying rather than waste time trying to find those lectures and books you need!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set a day that you'd like to study each topic, and state how long&lt;/strong&gt;&lt;br&gt;
Example: Monday 2PM to 3PM - study Big O Notation and Time Complexity. I tend to write plans for a couple days ahead at least.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reflect on the things you learned&lt;/strong&gt;&lt;br&gt;
At the end of the day, I'd quickly confirm the topics which I felt OK at and more importantly, areas that still needed a bit of work. I could then amend any study plans I had in place to account for these weak areas. (Study plans can change - that's fine!)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ask for help when needed&lt;/strong&gt; 🗣️&lt;br&gt;
A helping hand is always useful, whether it be from a fellow student or your lecturer. A quick explanation of something could solve that road block you're facing with a difficult topic!😌&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reward yourself for your hard work&lt;/strong&gt; ☕&lt;br&gt;
In that all important study plan we talked about earlier, set aside time to do things you like. The sort of thing you'd &lt;em&gt;rather be doing&lt;/em&gt; than studying at times. Taking time off to relax will help you stay focused and motivated when you come back to studying again.&lt;/p&gt;

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

&lt;p&gt;Like my other posts, I like to keep them short and sweet (so you don't get bored)!&lt;br&gt;
I hope this condensed post helps you out in some way if you're looking for ways to make the most out of your studying. If you have any questions, comment down below or find me on &lt;a href="//www.instagram.com/yusufcodes"&gt;Instagram&lt;/a&gt; or &lt;a href="//www.twitter.com/yusufcodes"&gt;Twitter&lt;/a&gt; and contact me over there🙂. Thank you for reading this post!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>study</category>
      <category>codenewbie</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I stayed organized whilst studying a Computer Science degree and working a job📝</title>
      <dc:creator>yusufcodes</dc:creator>
      <pubDate>Sun, 11 Aug 2019 20:30:37 +0000</pubDate>
      <link>https://dev.to/yusufcodes/how-i-stayed-organized-whilst-studying-a-computer-science-degree-and-working-a-job-2b4p</link>
      <guid>https://dev.to/yusufcodes/how-i-stayed-organized-whilst-studying-a-computer-science-degree-and-working-a-job-2b4p</guid>
      <description>&lt;p&gt;&lt;b&gt;Introduction👋&lt;/b&gt;&lt;br&gt;
Have you ever wondered what it's like to study and work, and how to handle it? I hope to go over these things in this quick post. &lt;/p&gt;

&lt;p&gt;At the time of writing this, I've completed the first two years of my Computer Science degree and during those years, I needed to work to aid myself financially.&lt;/p&gt;

&lt;p&gt;For reference, I worked in retail as a Customer Assistant, between 20-30 hours a week, so a lot of the information will be based off of that experience. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;What it's like to work and study👨‍🎓&lt;/b&gt;&lt;br&gt;
Working and studying can be difficult but rewarding. You're able to earn money, which you'll probably be needing, whilst still being in full-time education. Alongside that, you're building on many 'soft' skills which employers actively look for, including: teamwork, organisation, communication and time management. &lt;/p&gt;

&lt;p&gt;As great as this is, it can slightly diminish your university experience. For example, you may need to turn down some social events, or struggle to actively participate in university societies. This really depends on how many hours you are required to work.&lt;/p&gt;

&lt;p&gt;However, you can certainly find your balance, and participate in the things you want to do whilst working! I'll move onto some tips I can offer to help the study-working life experience. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;My tips to handle working and studying☑️&lt;/b&gt;&lt;br&gt;
• Write all of your deadlines down in one place&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F0uic6pd7n25erul8x0og.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F0uic6pd7n25erul8x0og.jpeg"&gt;&lt;/a&gt;&lt;br&gt;
I kept a list which looked like this in Evernote. This meant that I could see all of my deadlines in one place, and plan my studies to target each deadline - ensuring I'm working towards each deadline / examination as equally as possible. &lt;/p&gt;

&lt;p&gt;• Create weekly and daily plans&lt;br&gt;
Planning is something which I think every student should do - irrespective of whether they have a job or not. This allows for you to allocate time to your studies, but also time can be set aside for your personal life. &lt;/p&gt;

&lt;p&gt;In my case, I would open up Google Calendar and plot the following things:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;My class schedule&lt;br&gt;
My work schedule&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From this, I could use the 'free' blocks of time to allocate towards my personal study time, and any other things I had going on that week. &lt;/p&gt;

&lt;p&gt;Once I had done this, I'd be able to create a daily plan. For example, I could plan a Monday in the following manner:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Classes: 9-12PM&lt;br&gt;
Personal study: 1-4PM&lt;br&gt;
Work: 5-10PM&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'd go into more detail for my personal study, for example: "Spend 1 hour on the Algorithms and Data Structures unit" - in this study session I could be brushing up on some lecture notes, or working on some lab work. &lt;/p&gt;

&lt;p&gt;Each day would differ as I'd have more classes on some days compared to others. I had days in the week where I did more studying than others. &lt;/p&gt;

&lt;p&gt;In summary, planning is a way for you to plan ahead, stay on top of your workload, and ensure you stay focused and on-track all week - all whilst managing to work your job.&lt;/p&gt;

&lt;p&gt;• Take your studies seriously right from the beginning of the academic year&lt;br&gt;
Yes - I'm indirecting those who leave things to the last minute - do not do this if you have a job! You'll only make things more difficult when your deadlines and exams approach, and you're left with insufficient time to prepare because you still need to keep working at your job. Your job won't suddenly stop when you have a bunch of exams and deadlines coming up. &lt;/p&gt;

&lt;p&gt;Once you've been set an assignment, get that deadline written down and &lt;b&gt;start working on it as soon as possible.&lt;/b&gt; For exams, I'd advise keeping up with your lecture content right from the beginning - I'd write all my notes up for each week as consistently as I could, well ahead of the examination date. After that, keep reading over those notes at regular intervals so it stays fresh in your head. &lt;/p&gt;

&lt;p&gt;The benefit of doing all of this? Once your deadlines and exams approach, you'll be one step ahead because you started studying early on. This will mean that you'll be able to successfully work the shifts for your job whilst sitting exams and submitting assignments. &lt;/p&gt;

&lt;p&gt;• If needed, take time off work using any holiday / annual leave&lt;br&gt;
You'll probably have some sort of holiday or annual leave system in place at work. If you know that certain study periods will be busy, you can always book these times off. I'd advise letting your employer know as soon as possible, because last minute accomodation for time off is a tricky thing to do - especially in a fast paced sector like retail. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br&gt;
So that concludes this post about working and studying. I wanted to keep it brief yet try and provide as much information as I can. Find me on &lt;a href="https://www.twitter.com/yusufcodes" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; and &lt;a href="https://www.instagram.com/yusufcodes" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt;, and reach out to me if you have more questions. Alternatively, leave a comment on this post and I'll get back to you. &lt;/p&gt;

&lt;p&gt;If you found this useful, share it with others who may find it useful! Thank you for reading😊👋🏽&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>computerscience</category>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Got an Internship in Software Development as a Computer Science student🎓</title>
      <dc:creator>yusufcodes</dc:creator>
      <pubDate>Sat, 10 Aug 2019 21:54:27 +0000</pubDate>
      <link>https://dev.to/yusufcodes/how-i-got-an-internship-in-software-development-as-a-computer-science-student-4587</link>
      <guid>https://dev.to/yusufcodes/how-i-got-an-internship-in-software-development-as-a-computer-science-student-4587</guid>
      <description>&lt;p&gt;&lt;b&gt;Introduction👋&lt;/b&gt;&lt;br&gt;
I’d like to share the different stages involved in finding an internship/placement as a Computer Science student. I’m going to keep this information as brief as possible, but if you have any questions feel free to send me a message (contact details at the end of the article)!&lt;/p&gt;

&lt;p&gt;I applied for my internship during the second year of my degree (2018–19), and you should start applying as soon as your second year begins. Internships vary in how long they are from a few weeks to an entire year. The length of your internship is totally up to you. If you go for a year-long placement however, you will need to take that year out of your degree, increasing the length of your studies by 1 year.&lt;/p&gt;

&lt;p&gt;I study in the UK so things may be a little different where you are from — but I imagine most things are the same.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Stages Involved in Finding an Internship🔎&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;• &lt;b&gt;Write a CV (Curriculum Vitae) / Resume&lt;/b&gt;&lt;br&gt;
This should be a 1–2 page collation of all of your experiences to date. This should include academic attainment and any work experience you may have.&lt;/p&gt;

&lt;p&gt;• &lt;b&gt;Search for jobs&lt;/b&gt;&lt;br&gt;
You should be searching for jobs including ‘placement’ or ‘internship’, for example ‘Software Developer Placement’, and so on. Places that I used to search were: my university’s job posting site, GlassDoor, &lt;a href="http://wwww.ratemyplacement.co.uk"&gt;RateMyPlacement&lt;/a&gt; and Indeed. I’m sure there are other sites that also advertise these vacancies. If you know of a company you would like to work for, you could check their website directly and see if they are running any internships.&lt;/p&gt;

&lt;p&gt;• &lt;b&gt;Write a Cover Letter (if required)&lt;/b&gt;&lt;br&gt;
Most vacancies will require you to submit both a CV and a cover letter. A cover letter is a short written piece where you explain why you are interested in the internship, and affirm that you are a suitable candidate. Employers usually read these and then go through your CV, so making sure this is written well is important!&lt;/p&gt;

&lt;p&gt;• &lt;b&gt;Keep track of all the places that you’ve applied to&lt;/b&gt;&lt;br&gt;
I made a basic spreadsheet and detailed the following things:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Company name&lt;br&gt;
Date applied&lt;br&gt;
Vacancy details: name, deadline for applications, job description&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is really helpful when you’ve applied to a few companies, because it means you won’t forget where you’ve applied to. You can come back to this spreadsheet as and when you receive invitations to interviews (or sadly, any rejections) to keep on top of all of the companies that you have applied for.&lt;/p&gt;

&lt;p&gt;• &lt;b&gt;Set up a Personal Portfolio or a GitHub account&lt;/b&gt;&lt;br&gt;
This gives a company a way to see the types of things you’ve worked on, which could increase your chances of getting a job if they like what they see.&lt;/p&gt;

&lt;p&gt;I personally have a couple of my university work posted on my GitHub. You don’t need to have dozens of projects or a super pretty website — just some way to show an employer what you have done. Remember, these employers aren’t looking for a perfect coder, just &lt;b&gt;someone with a genuine passion to excel in the field.&lt;/b&gt; Showcasing your work is a great way to highlight this.&lt;/p&gt;

&lt;p&gt;• &lt;b&gt;Prepare for the interviews&lt;/b&gt;&lt;br&gt;
Great — you’ve been invited to an interview with a company — &lt;b&gt;now what?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I was left feeling overwhelmed when I received offers from places that I applied for — mainly due to my lack of self-confidence. If you end up feeling like this, you’re not alone!&lt;/p&gt;

&lt;p&gt;Preparing for interviews is a very broad topic which, if you searched online, you’d find many different resources. I’ll give a little bit of information on what I personally did, but I recommend you also do your own research into interview preparation.&lt;/p&gt;

&lt;p&gt;‣ &lt;b&gt;Research the company&lt;/b&gt;&lt;br&gt;
Company research is so important. You’re going to be asked to show your interest in the role you applied for and the company itself, so you’ll need to do a bit of research on them. Find out exactly who they are, what they do, and things that you find interesting about them. This way, you’ll be able to demonstrate you passion and enthusiasm for both the role and the company.&lt;/p&gt;

&lt;p&gt;‣ &lt;b&gt;Brush up on any technical skills&lt;/b&gt;&lt;br&gt;
For example, if they’re advertising a position working with JavaScript, make sure you know the basics. Most companies will tell you whether or not you will be undertaking a technical interview, in which case it should indicate what you may need to prepare for it.&lt;/p&gt;

&lt;p&gt;A great way to brush up on your general programming skills is by using websites like HackerRank or LeetCode. Both websites are similar on the basis that they provide you with programming exercises to complete, of varying levels of difficulty, in most programming languages.&lt;/p&gt;

&lt;p&gt;Algorithms and Data Structures is an important topic to cover as well. I personally went over my university unit which covered all of this information, but if you haven’t studied the topic yet, there are many resources online to read up about it!&lt;/p&gt;

&lt;p&gt;‣ &lt;b&gt;Know what you’ve written on your CV and Cover Letter&lt;/b&gt;&lt;br&gt;
The employers will most likely have the CV and Cover Letter right in front of them, so make sure you know exactly what you’ve put on there. It will make it easy for you to explain the different areas of your academic experience and other work experience you may have.&lt;/p&gt;

&lt;p&gt;‣ &lt;b&gt;Dress appropriately&lt;/b&gt;&lt;br&gt;
Dressing in smart or smart-casual attire is the best idea. I’d personally stay clear of wearing casual clothes to an interview — show the company that you care by taking care of your appearance!&lt;/p&gt;

&lt;p&gt;&lt;b&gt;My Tips&lt;/b&gt;&lt;br&gt;
• Make use of your university’s careers services.&lt;br&gt;
• Make sure your CV and Cover Letter are perfect — no errors in spelling or grammar.&lt;br&gt;
• Tailor your CV and Cover Letter to each vacancy — generic applications aren’t generally taken seriously and decreases your chances of being invited to an interview.&lt;br&gt;
• Attend networking events — your university may host employability events where employers come in to talk about what they do and the jobs they have to offer. These can help you massively during the application process if an employer remembers you!&lt;br&gt;
• &lt;b&gt;Don’t give up!&lt;/b&gt; — Placements and internships are very competitive, so rejections are totally normal. Don’t let it knock your confidence and continue to search for and apply to more internships.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br&gt;
I hope this brief post is useful to you if you’re looking for a student placement / internship. Follow me on &lt;a href="https://www.instagram.com/yusufcodes"&gt;Instagram&lt;/a&gt; and &lt;a href="https://www.twitter.com/yusufcodes"&gt;Twitter&lt;/a&gt; to keep up to date with my life as a student, and things I get up to! You can also contact me through these platforms if you have any questions.&lt;/p&gt;

&lt;p&gt;If you found this post useful, I’d greatly appreciate you sharing it on your own platforms to benefit other people! Thanks for reading😊👋&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
