<?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: Katie Raby</title>
    <description>The latest articles on DEV Community by Katie Raby (@katieraby).</description>
    <link>https://dev.to/katieraby</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%2F247911%2F4c92ae84-e13d-475d-8e3e-45546ffac719.jpeg</url>
      <title>DEV Community: Katie Raby</title>
      <link>https://dev.to/katieraby</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/katieraby"/>
    <language>en</language>
    <item>
      <title>Studying for my Certified Solutions Architect Associate with AWS Cloud Quest</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Mon, 14 Nov 2022 12:47:56 +0000</pubDate>
      <link>https://dev.to/aws-builders/studying-for-my-certified-solutions-architect-associate-with-aws-cloud-quest-2eb9</link>
      <guid>https://dev.to/aws-builders/studying-for-my-certified-solutions-architect-associate-with-aws-cloud-quest-2eb9</guid>
      <description>&lt;p&gt;Recently I discovered an amazing new gamified educational platform for learning all about AWS - &lt;a href="https://aws.amazon.com/training/digital/aws-cloud-quest/"&gt;Cloud Quest&lt;/a&gt;! ☁️ I'm currently on the journey of studying for for my AWS Certified Solutions Architect Associate (SAA) exam, using Cloud Quest to supplement my learning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn-by-doing with Cloud Quest
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Cloud Quest is a role-playing game which gives you 'real world' scenarios to solve using your cloud skills as you help citizens within a virtual city.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The game comprises of lab exercises, quizzes, and architecture challenges. Tasks for the citizens give you the opportunity to learn by doing. Presented with learning concepts and an architecture plan, you have to solve the problem using a real AWS console environment. There is a guided aspect to the lab, and then a 'DIY' section which gives you a challenge to complete without guidance using the skills you've learnt.&lt;/p&gt;

&lt;p&gt;For completing the challenges, you earn reputation points, gems to upgrade buildings, buy clothes or vehicles. I currently ride around on an unicorn inflatable for the pool, and before that I was moving around the city via paper airplane. There is a super fun aspect to the game, with it's retro looking graphics and you might spot a random giraffe crossing the road too!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tF_hidvr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yy4q0e0q3v9v0q7k9drx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tF_hidvr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yy4q0e0q3v9v0q7k9drx.png" alt="Completing a challenge within the city and earning rewards in-game" width="800" height="281"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Solve problems in the city, and earn rewards upon completing the challenges.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What I love about Cloud Quest in my experience is the learn-by-doing aspect, and getting actual experience doing things in the AWS console. For example, one of my most recent tasks was building a mini REST API with Lambda Proxy Integration using API Gateway + Lambda. Building real solutions gives me confidence that I know the theoretical and practical knowledge required for my exam.&lt;/p&gt;

&lt;p&gt;The Certified Cloud Practitioner track on Cloud Quest is completely free, so you can give the game a try without commitment, and anything additional to that you can get a subscription to AWS Skill Builders which also includes 150+ additional skillbuilder sessions, Jam, and all the Cloud Quest tracks (including the Solutions Architect track i'm currently working on!). Other tracks available on the game are security, machine learning, and serverless developer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick exam revision with mini games
&lt;/h3&gt;

&lt;p&gt;There are mini games within Cloud Quest which involve answering AWS quiz questions. These quizzes are great to solidify my knowledge for my Certified SAA exam. Between taking on the lab challenges for citizens, I make sure to go around the city and take part in the mini games as I go along, to revise my learnings so far.&lt;/p&gt;

&lt;p&gt;One of these mini games is becoming friendly with Pets around the city. To befriend a pet, you have to prove yourself by answering the quiz questions. Certain animals need a specific number of questions answered before they're impressed.&lt;/p&gt;

&lt;p&gt;Example multi-choice questions could be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose 3 statements which are true of S3.&lt;/li&gt;
&lt;li&gt;An EBS-backed EC2 instance needs to be ____ before changing instance type. &lt;em&gt;stopped&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sH9rDGow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7hyevhixaau0pgu98gx7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sH9rDGow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7hyevhixaau0pgu98gx7.png" alt="Befriend a pet in-game by answering quiz questions" width="800" height="387"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Complete quiz questions to earn the trust of animals around the city, and gain Pet Friends after you've proved yourself!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can also enter Drone Capture Mode to play a fun mini game, shooting down drones throughout the city to earn AWS service cards. Some of the drones will carry a challenge in which you can use these cards to fill in the correct services within an architecture diagram. Seeing architecture diagrams and understanding how all the pieces fit together is key here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W6F1bfoE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/saet7gkkum61dd6tdrxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W6F1bfoE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/saet7gkkum61dd6tdrxw.png" alt="Drones floating in the air which a player can shoot down and earn service cards to create architecture diagrams" width="800" height="458"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Drones float throughout the city! You can enter Drone Capture Mode to shoot the drones down, and earn rewards&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;With so much to do in the game, it's so hard to get bored. I never imagined having so much fun learning and the gamification and rewards system keeps you playing for longer. I'm learning a lot in-game, and anything i'm not sure about, there are links to relevant documentation so you can read all about it. &lt;strong&gt;The solutions architect path on Cloud Quest is a valuable resource in helping me feel prepared for my exam. I'm learning around the services and architecture, and gaining practical skills I need to feel confident with using AWS.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Pomodoro Pairing</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Thu, 19 May 2022 11:57:45 +0000</pubDate>
      <link>https://dev.to/katieraby/pomodoro-pairing-27ig</link>
      <guid>https://dev.to/katieraby/pomodoro-pairing-27ig</guid>
      <description>&lt;p&gt;Recently I started using the &lt;em&gt;pomodoro pairing&lt;/em&gt; technique at work for pairing/mobbing sessions. As a team, we wanted to try something different to keep our focus during longer sessions. Since some of us had already used the pomodoro technique before, it seemed well worth giving it a try. There are a range of benefits to using this technique, and it has positively transformed our pairing sessions.&lt;/p&gt;

&lt;h3&gt;
  
  
  What actually is the pomodoro technique?
&lt;/h3&gt;

&lt;p&gt;No, it has nothing to do with tomatoes! Okay, maybe a little bit. The pomodoro timer was given its namesake in the 1980s when Francesco Cirillo, a university student, used a tomato timer to measure his 25-minute interval study sessions. These short sessions became known as a pomodoro. In the pomodoro technique, work is broken down into intervals, typically around 25-minutes. Each interval is separated by a short break.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5TZmh83d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4mlvzl7l4ukr1da626u5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5TZmh83d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4mlvzl7l4ukr1da626u5.jpg" alt="A Pomodoro tomato with a timer on it" width="800" height="662"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The pomodoro steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; Decide on a task&lt;/li&gt;
&lt;li&gt; Set the pomodoro timer (25 mins, adapt to suit)&lt;/li&gt;
&lt;li&gt; Work on the task&lt;/li&gt;
&lt;li&gt; When the timer finishes, take a short break (typically 5 mins)&lt;/li&gt;
&lt;li&gt; Repeat steps 2-4 until you've done 3 or 4 pomodoros&lt;/li&gt;
&lt;li&gt; Take a longer break&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Pomodoro pairing
&lt;/h3&gt;

&lt;p&gt;To start using the pomodoro pairing technique, take the above pomodoro steps and adapt them accordingly to fit your pairing or mobbing sessions.&lt;/p&gt;

&lt;p&gt;A great tool to use is &lt;a href="https://cuckoo.team/"&gt;Cuckoo Timer&lt;/a&gt;, especially for remote teams. To get started with Cuckoo, create a shareable link which opens a new session for participants to join. In the sessions sidebar, there is an option to use the pomodoro technique, which displays the suggested work and break lengths to select from. Using a tool such as Cuckoo is a great way to ensure that everyone in the session each hears the alarm, and can hold each other accountable to the timer so that sessions don't run over.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oVSaRmP9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7o43kfz7smc9lxlv9qb8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oVSaRmP9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7o43kfz7smc9lxlv9qb8.png" alt="Cuckoo Interface" width="800" height="398"&gt;&lt;/a&gt;&lt;br&gt;Cuckoo interface, with a 'Use the Pomodoro Technique' option in the sessions sidebar.
  &lt;/p&gt;

&lt;p&gt;After each pomodoro, choose a different driver to ensure that all participants in the pair or mob get the opportunity to regularly switch roles. Once the new driver is set up and ready to code, start the timer again for another pomodoro.&lt;/p&gt;

&lt;p&gt;You may find yourselves drifting off too far from the task at hand during the session. If this happens, recognise it, and bring yourselves back to the task at hand. A good rule of thumb is, at the end of the current pomodoro, if you're still working through a thought process, let that play out until the end then consider that the end of the pomodoro. Don't forget to take your break!&lt;/p&gt;

&lt;p&gt;Some of the benefits myself and the team have discovered working in this way are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Making sure we take enough breaks - very easily forgotten throughout the day! ☕️&lt;/li&gt;
&lt;li&gt;  Having a healthy social break and time to yourself&lt;/li&gt;
&lt;li&gt;  Working for shorter time intervals keeps navigator(s) focused on the session at hand&lt;/li&gt;
&lt;li&gt;  Regular switching of pairing roles gives ample time in each role&lt;/li&gt;
&lt;li&gt;  Manageable work sessions allow other team members to drop in and out&lt;/li&gt;
&lt;li&gt;  Work (and commits) are broken down into manageable chunks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's safe to say there are a lot of benefits to using this technique. The team loves it, as do I! I'm an advocate for this technique, and highly recommend you give it a try during your pairing sessions. Let me know your thoughts! 🗣&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Additional resources&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://shopify.engineering/pair-programming-explained"&gt;Pair programming explained&lt;/a&gt; (and other techniques you can employ)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>pairprogramming</category>
      <category>pomodoro</category>
    </item>
    <item>
      <title>Using testing-playground with React Testing Library</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Mon, 18 Apr 2022 18:00:33 +0000</pubDate>
      <link>https://dev.to/katieraby/using-testing-playground-with-react-testing-library-26j7</link>
      <guid>https://dev.to/katieraby/using-testing-playground-with-react-testing-library-26j7</guid>
      <description>&lt;p&gt;&lt;a href="https://testing-library.com/docs/react-testing-library/intro" rel="noopener noreferrer"&gt;React Testing Library&lt;/a&gt; is a popular testing utility tool for front-end testing.&lt;/p&gt;

&lt;p&gt;Challenges can arise using React Testing Library, when trying to work out how to target an element.&lt;br&gt;
A logical option may be to add a &lt;code&gt;data-testid&lt;/code&gt; attribute to the element you want to target. Yet, there are a few downsides to this approach.&lt;/p&gt;

&lt;p&gt;According to the React Testing Library &lt;a href="https://testing-library.com/docs/guiding-principles/" rel="noopener noreferrer"&gt;guiding principles&lt;/a&gt;,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The more your tests resemble the way your software is used, the more confidence they can give you.&lt;br&gt;
-- &lt;cite&gt;Kent C Dodds&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We can often spend time testing implementation details. Using the &lt;code&gt;data-testid&lt;/code&gt; attribute on an element is only testing that the element exists. Our focus when testing should be on the user, for example, what the user sees, or how the user interacts with it.&lt;/p&gt;

&lt;p&gt;It can be a struggle to work out how to target elements without the use of &lt;code&gt;data-testid&lt;/code&gt;...&lt;/p&gt;

&lt;p&gt;Thankfully, we have the &lt;a href="https://testing-playground.com/" rel="noopener noreferrer"&gt;testing-playground&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnpm1qzgt7sbax3vdn1mu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnpm1qzgt7sbax3vdn1mu.png" alt="testing-playground homepage showing full interface"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The testing playground is a tool which gives you a visual representation of the DOM, and helps you discover the best queries to target elements.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to access the playground from within your tests
&lt;/h3&gt;

&lt;p&gt;There are two ways you can access the playground:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Logging the testing playground from within a test generates a link within your console when you run your tests, which you can open in the browser.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;screen&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@testing-library/react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

     &lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test it block&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="p"&gt;...&lt;/span&gt;
       &lt;span class="nx"&gt;screen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;logTestingPlaygroundURL&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
       &lt;span class="nf"&gt;expect&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;ol&gt;
&lt;li&gt;Call the debug method &lt;code&gt;screen.debug()&lt;/code&gt;, which prints out the DOM output. Copy and paste the DOM output into the testing playground directly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once the playground is open, you can navigate around it using the inspect-tool, much like the developer tools 'inspect'. When you inspect an element in the visual DOM, selecting it will display the suggested query to copy into your tests. The display gives you information about accessible and semantic ways to query your element. For example, buttons can be targeted using the accessible role of button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F764fpe4ypqiuj5fuqf4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F764fpe4ypqiuj5fuqf4q.png" alt="testing-playground interface showing a query"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The testing playground provides you with direct feedback when you make edits to the code. The playground displays improvements you can make to your code and queries, for example how to make your queries more specific by adding a name. Using the suggested queries is preferable to using the non-specific test-ids.&lt;/p&gt;

&lt;p&gt;Another helpful use of the testing playground is to confirm what elements are visible in the DOM. You may be expecting to see a success message after a user clicks a button. If your test fails you can use the playground as a debugging tool to see what is visible to the user. Alternatively, you can use &lt;code&gt;screen.debug()&lt;/code&gt; for the DOM output. &lt;/p&gt;

&lt;p&gt;In summary, the testing playground is a great tool to use in conjunction with React Testing Library 🐸 &lt;br&gt;
Give it a go, and see how it can improve your testing skills.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Open Source: Tiny Contributions, Big Impact</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Mon, 27 Sep 2021 12:01:00 +0000</pubDate>
      <link>https://dev.to/katieraby/open-source-tiny-contributions-big-impact-aej</link>
      <guid>https://dev.to/katieraby/open-source-tiny-contributions-big-impact-aej</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Open source software (OSS) is software that’s freely available to use, redistribute, and modify, typically shared via a public code repository hosting service. - &lt;a href="https://www.digitalocean.com/community/users/lmuldrow"&gt;Lyn Muldrow&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The prospect of contributing to open source may feel daunting, or you may spend hours searching for a feature to build that perfectly fits your skill set. Sometimes by looking to make "big contributions" to a repo, or overthinking the process, you can rule yourself out and miss the opportunity to contribute at all. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open source is for everyone, and even making tiny contributions can have a big impact.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TINY CONTRIBUTIONS
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;So what's the magic of making tiny contributions?&lt;/em&gt;&lt;br&gt;
Making a small contribution to an open source project is a great way to introduce yourself to a new repository/project, learn something new, make a first contribution, or make a change in a technology you're not so familiar with. I can promise you, it's 100% worth it!&lt;/p&gt;

&lt;p&gt;Some examples of meaningful tiny contributions to a project may be anything from fixing broken links or adding content to documentation, to fixing an alignment issue in CSS, or deleting unused code. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: creating a pull request (PR) to remove whitespace, or similar, may be considered a 'spam' contribution, so please try to target meaningful contributions only. A way you can do this is to work on already open issues that have need to be fixed. If unsure, please contact the maintainer of the project to be sure&lt;/em&gt; 🙂 &lt;/p&gt;

&lt;h2&gt;
  
  
  BIG IMPACT
&lt;/h2&gt;

&lt;p&gt;When you think of making a big impact contribution, your first thoughts might be fixing a critical bug, or implementing a major feature. However, your tiny changes can have a big impact not only on the project, but on your own personal development. For example, this could be making your first pull request to open source, or learning something new about the technology you're using.&lt;/p&gt;

&lt;p&gt;Tiny contributions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build your confidence&lt;/li&gt;
&lt;li&gt;Get you started on the journey of contributing to open source&lt;/li&gt;
&lt;li&gt;Provide learning opportunities, which could be related to a certain technology, or using a new commit message convention&lt;/li&gt;
&lt;li&gt;Get you involved in the open source community. During the process you may get to chat to maintainers and build relationships, or reflect on your contributions in a twitter post&lt;/li&gt;
&lt;li&gt;Introduce you to setting up for contributing to a different codebase, and follow contributing guidelines&lt;/li&gt;
&lt;li&gt;Allow you to make small contributions to your favourite repos&lt;/li&gt;
&lt;li&gt;Fix small yet important issues - fixing that broken link may help any developer coming to read that documentation. Your contributions could have benefits for maintainers, the community and end-users to name a few!&lt;/li&gt;
&lt;li&gt;Gives you the opportunity to work with new technologies you haven't used before and get exposure to new code, without committing to a large task.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From making a tiny contribution, this could give you the confidence, skills, community and experience to thrive and enjoy every contribution you make to open source - that's a huge impact! 🚀&lt;/p&gt;




&lt;p&gt;⭐️ &lt;strong&gt;Get started today with making tiny contributions to open source and experience the big impact of your changes&lt;/strong&gt; ⭐️&lt;/p&gt;




&lt;p&gt;Planning to contribute to open source for the first time? find more information, with a step-by-step guide &lt;a href="https://www.digitalocean.com/community/tutorial_series/an-introduction-to-open-source"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hacktoberfest.digitalocean.com/"&gt;Hacktoberfest&lt;/a&gt; is right around the corner! 🎃 Engaging in Hacktoberfest is a fantastic opportunity to find issues and get started in open source (and maybe even plant a tree 🌳). Special shout-out to &lt;a href="https://dev.to/cockroachlabs"&gt;@CockroachLabs&lt;/a&gt; for giving me the opportunity to make a tiny change, with big impact, being my first ever pull request to open source (Hacktoberfest 2020). 🥳&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>hacktoberfest</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Go: Packages, Variables &amp; Printing</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Fri, 19 Feb 2021 16:42:17 +0000</pubDate>
      <link>https://dev.to/katieraby/go-packages-variables-printing-fbi</link>
      <guid>https://dev.to/katieraby/go-packages-variables-printing-fbi</guid>
      <description>&lt;p&gt;Now that you've installed Go (see previous in series), follow me on the journey to writing your first Go program. &lt;/p&gt;

&lt;p&gt;Find some of the key pieces of information you need to get started, such as how a Go file is structured, how to declare variables, and how to print. &lt;/p&gt;

&lt;h2&gt;
  
  
  Packages 📦
&lt;/h2&gt;

&lt;p&gt;A good place to start in any Go journey is looking at the anatomy of a Go file, and understanding how Go files structure themselves using things called &lt;strong&gt;packages&lt;/strong&gt;. Every Go program is made up of packages, and the &lt;em&gt;main&lt;/em&gt; ( 😉 ) and most important package, where programs start running is called package &lt;strong&gt;main&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Packages are declared at the top of the file, and then below that you have any imports, which can either be grouped or split out (example below showing a single import).&lt;/p&gt;

&lt;p&gt;Package names provide context for their usage, and when referred to elsewhere and accessing contents of a package, the package name is the prefix. i.e. &lt;code&gt;fmt.Println()&lt;/code&gt; to access the Println function inside the &lt;code&gt;fmt&lt;/code&gt; package.&lt;/p&gt;

&lt;p&gt;Within the main package, you need a main function, which is the entry point for execution. An example main.go file looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="c"&gt;// your package declaration&lt;/span&gt;
&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="c"&gt;// your import statements&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="s"&gt;"fmt"&lt;/span&gt;

&lt;span class="c"&gt;// main function - the entry point of execution &lt;/span&gt;
&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, World."&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;Note: it is best practice to only have one main package and method within a directory - as there should be only one entry point to a program.&lt;/p&gt;

&lt;p&gt;The great thing i've found about Go is that so many handy packages are included by default in Go's standard library, such as Math and Testing. Find the &lt;a href="https://golang.org/pkg/"&gt;full list of Go's standard library packages here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Which packages are your favourite? Let me know in the comments below! ⬇️ &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;helpful tip&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
When you are playing around with Go, creating the files from scratch each time (rather than letting the IDE fill this for you) will help you to get used to the structure of a Go file.&lt;/p&gt;
&lt;h2&gt;
  
  
  Variables 🐾
&lt;/h2&gt;

&lt;p&gt;One of the first things you're probably wondering is how to declare a variable in Go. &lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;var&lt;/strong&gt; statement declares either a single variable, or a list of variables, with the type at the end. If no type is provided, Go will infer the type of the initialised variable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="c"&gt;// declaring variable catYears as an integer&lt;/span&gt;
&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;catYears&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;

&lt;span class="c"&gt;// initialising variable myCat to a string - type inferred&lt;/span&gt;
&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;myCat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Hansel"&lt;/span&gt; 

&lt;span class="c"&gt;// declares two variables, both of type boolean&lt;/span&gt;
&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;isCat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;isDog&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Variables can be written at package or function level. Inside a function, you can use the shorthand := syntax to declare and initialise a variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
&lt;span class="c"&gt;// variable catYears declared and initialised using shorthand&lt;/span&gt;
   &lt;span class="n"&gt;catYears&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find all the different &lt;a href="https://golang.org/pkg/go/types/#BasicKind"&gt;basic types in go here&lt;/a&gt;. More of these will be covered later in the series.&lt;/p&gt;

&lt;h2&gt;
  
  
  Printing / Formatting 🖨
&lt;/h2&gt;

&lt;p&gt;To print or format in Go, you can use the "fmt" package (pronounced fumpt, used in the hello world example above).&lt;/p&gt;

&lt;p&gt;Below are some of the most commonly used functions for printing and formatting. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Print&lt;/strong&gt; - writes to standard output (stdout) can accept multiple arguments, spaces are added between arguments when neither are strings, returns number of bytes written and any error encountered (n int, e error).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;fmt.Print(args…) (n int, e error)&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fmt.Println(args…) (n int, e error)&lt;/code&gt; each print-out is on a new line
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;true&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="c"&gt;// 1 true 2&lt;/span&gt;

&lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"World"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c"&gt;// Hello&lt;/span&gt;
&lt;span class="c"&gt;// World&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Sprint&lt;/strong&gt; - does the same as Print, but returns the resulting string instead of printing it to stdout. In terms of usage, you may be saving the formatted string to a variable for example.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fmt.Sprint(args…) string&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fmt.Sprintln(args…) string&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c"&gt;// resulting string is returned and saved into variable&lt;/span&gt;
  &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Sprint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, World."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="c"&gt;// Hello, World.&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similarly to the above, there is also &lt;strong&gt;Fprint&lt;/strong&gt; which prints the result to an external source, such as a file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Formatting Strings&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Printf(format string, args…) (n int, err error)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Sprintf(format string, args…) string&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both &lt;code&gt;fmt.Printf&lt;/code&gt; and &lt;code&gt;fmt.Sprintf&lt;/code&gt; can be used for string interpolation / formatting strings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is string interpolation?&lt;/strong&gt;&lt;br&gt;
"Evaluating a string literal containing one or more placeholders, yielding a result in which the placeholders are replaced with their corresponding values." (Wiki)&lt;/p&gt;

&lt;p&gt;In short, you want a string to be dynamic and have values that could change, so, you put placeholders instead of static values.&lt;/p&gt;

&lt;p&gt;In Go, these placeholders are also known as verbs. Both &lt;code&gt;fmt.Printf&lt;/code&gt; and &lt;code&gt;fmt.Sprintf&lt;/code&gt; expect a format string as their first argument - the format of the final string, including its verb placeholders.&lt;/p&gt;

&lt;p&gt;An example of this in its basic form might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;myName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Katie"&lt;/span&gt;

&lt;span class="c"&gt;// formatted string with %s as a placeholder for a string&lt;/span&gt;
&lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"My name is %s"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;myName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find more resources with examples and verbs for formatting below! &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://golang.org/pkg/fmt/#hdr-Printing"&gt;Verbs for formatting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gobyexample.com/string-formatting"&gt;Go By Example - String Formatting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Running a Go program
&lt;/h2&gt;

&lt;p&gt;A good place to wrap this intro up, is how you actually run your Go code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;go run filename.go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don't forget that you can always use the &lt;a href="https://play.golang.org/"&gt;Go Playground&lt;/a&gt; whenever you want to quickly try out a piece of code, or play around with something new! &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Missed anything you think would be helpful to new Gophers? Comment below!&lt;/em&gt; 💬&lt;/p&gt;

</description>
      <category>go</category>
      <category>beginners</category>
      <category>journey</category>
      <category>learning</category>
    </item>
    <item>
      <title>Go: Installation, Setup &amp; IDE</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Tue, 05 Jan 2021 19:54:38 +0000</pubDate>
      <link>https://dev.to/katieraby/go-installation-setup-ide-27e8</link>
      <guid>https://dev.to/katieraby/go-installation-setup-ide-27e8</guid>
      <description>&lt;p&gt;&lt;em&gt;A quick post on Go setup and installation for those following along on the Go journey with me.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;My Setup&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.jetbrains.com/go/features/"&gt;GoLand IDE&lt;/a&gt; (a JetBrains product), a cross-platform IDE built specifically for Go developers. I took the 'basic editing' GoLand tutorial and i'm really impressed with the features it offers, in terms of quick navigation and code completion.
Normally for coding in JavaScript, I would use &lt;a href="https://code.visualstudio.com/"&gt;VS code&lt;/a&gt; - which i'm sure works well as a free tool for Go too, coupled with the Go extension. &lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Go Playground&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;If you don't want to install Go locally on your machine, you have the option to use the &lt;a href="https://play.golang.org/"&gt;Go Playground&lt;/a&gt;, which runs your Go program in a sandbox environment, and is really handy if you just want to get started with minimal setup.&lt;/p&gt;

&lt;p&gt;I'm currently working my way through the official &lt;a href="https://tour.golang.org/welcome/1"&gt;Tour of Go&lt;/a&gt; which uses the Go playground alongside the information and tutorial. I am also using the playground if I just want to try something out quickly, without setting up local files etc.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Installing Go&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;To install Go, visit this &lt;a href="https://golang.org/doc/install"&gt;link for the installation instructions&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Alternatively, you can use Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;golang
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Next&lt;/em&gt;: Verify Go has been installed, by checking your version in your terminal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go version
// go version go1.15.5 darwin/amd64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You're all set, and ready to 'Go'! &lt;/p&gt;

</description>
      <category>go</category>
      <category>beginners</category>
      <category>journey</category>
      <category>learning</category>
    </item>
    <item>
      <title>Introduction to My Golang Journey</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Thu, 31 Dec 2020 15:25:40 +0000</pubDate>
      <link>https://dev.to/katieraby/introduction-to-my-golang-journey-25kd</link>
      <guid>https://dev.to/katieraby/introduction-to-my-golang-journey-25kd</guid>
      <description>&lt;h3&gt;
  
  
  &lt;strong&gt;Unlike my other blog posts, this will form a series of blog posts focused on my personal learning journey whilst learning a new language - Go.&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I'll be writing posts about Go basics as I learn or recap them, which will help me go over what I've learnt, give me accountability, and hopefully also help others following the same journey! &lt;/p&gt;

&lt;h3&gt;
  
  
  Why am I learning Go?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Since starting as a developer, I have mainly been working with the JavaScript stack and want to expand my skills to encompass other languages.&lt;/li&gt;
&lt;li&gt;I love to learn and take on a challenge!&lt;/li&gt;
&lt;li&gt;I'll be expanding my skills at work in 2021 to include Go. The back-end services are written in Go, and I want to be able to work across the full-stack.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What is my background?
&lt;/h3&gt;

&lt;p&gt;Briefly, I started coding more seriously at the end of 2019, and graduated from my full-stack JavaScript coding bootcamp in May 2020. I started my role as a Junior Software Engineer in the July, and have continued to work and learn since! &lt;/p&gt;

&lt;h3&gt;
  
  
  What resources am I using so far?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tour.golang.org/welcome/1"&gt;A Tour of Go - the official Go learning tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://frontendmasters.com/courses/go-for-js-devs/"&gt;Frontend Masters "Go for JavaScript Developers"&lt;/a&gt; by Brenna Martenson&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.notion.so"&gt;Notion&lt;/a&gt; for note-taking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note: I am learning Go from the perspective of already being familiar with JavaScript.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The format of posts in this series will be free-flowing. Feel free to post any advice or resources in the comments below ⬇️ &lt;/p&gt;

</description>
      <category>go</category>
      <category>beginners</category>
      <category>journey</category>
      <category>learning</category>
    </item>
    <item>
      <title>How I Changed Career from Marketing to Software Engineering</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Sun, 15 Nov 2020 10:54:45 +0000</pubDate>
      <link>https://dev.to/katieraby/how-i-changed-career-from-marketing-to-software-engineering-5ak8</link>
      <guid>https://dev.to/katieraby/how-i-changed-career-from-marketing-to-software-engineering-5ak8</guid>
      <description>&lt;p&gt;&lt;em&gt;Last year I was in an established marketing career, with no tech degree to speak of, and was convinced that making the switch to a new career in tech at this point in my life was near enough impossible.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Less than a year later, I started my career in tech as a Junior Software Engineer&lt;/strong&gt; 💻 So here’s my story.&lt;/p&gt;

&lt;p&gt;From dabbling in code for the very first time at the age of 12, and learning the basics in HTML and CSS, I found that there was an unmistakable pull and magical feeling about coding, a world where I could create anything I wanted.&lt;/p&gt;

&lt;p&gt;Whilst at school, I never thought that a career in coding was even possible, nor had I thought of studying computer science an option. At many points in my life, I had tried to go back to coding ‘bits and bobs’, but had never fully committed myself to changing career.&lt;/p&gt;

&lt;p&gt;After graduating from university in 2015 with a degree in International Business and French, I took an interest in marketing as a career as it would allow me to be creative and work across a broad range of disciplines. After a few jobs doing other things, such as a retail supervisor and recruitment consultant, I got a job working in marketing and communications for a global engineering consultancy, which marked the beginning of my career in marketing.&lt;/p&gt;

&lt;p&gt;Once you’re fully embedded in a career, it can be difficult to make the change. You face all sorts of questions; how will I translate my previous experience into the tech world, or will my resume be impressive enough to land my first role. I had seen first hand working in a recruitment agency after university how challenging a career change can be, but I was determined. The focus for me ultimately became wanting to do a job that I would love and look forward to every day.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;So what changed?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Over a year ago I attended a 2-day &lt;a href="https://djangogirls.org/"&gt;Django Girls&lt;/a&gt; workshop. Django Girls is a non-profit organisation created to inspire women from all backgrounds to get interested in technology, and interested I became! I learnt some Python and Django and created my first web application. I thoroughly enjoyed myself, and was curious to ask questions and learn more about each step of the process. The workshop re-sparked my love for code. At work, I took every opportunity to code when I could, by editing e-mail templates, and I developed a real thirst for solving problems and getting things to work.&lt;/p&gt;

&lt;p&gt;I then began coding in the evenings after work, learning through online platforms such as &lt;a href="https://www.freecodecamp.org/"&gt;FreeCodeCamp&lt;/a&gt; — where I started by working through the Responsive Web Design Certification. I also developed a love for coding pure CSS images, a digital expression of art through code! Coding in the evenings after work was difficult, but I developed a daily habit of coding via the &lt;a href="https://www.100daysofcode.com/"&gt;#100DaysOfCode&lt;/a&gt; challenge, and would recommend it to anyone who wants to have fun, learn a lot, and hold themselves accountable to regular coding. I found out about this challenge at a local coding meet-up, and it felt fantastic to immerse myself amongst other coders.&lt;/p&gt;

&lt;p&gt;It wasn’t long before I started looking into how I could get into coding full-time. One day, enough was enough. I was determined to make it happen. I took the plunge and handed in my notice at work. I was in a comfortable role, and something I could have continued doing for many years to come, but &lt;strong&gt;I wasn’t content with living inside of my comfort zone anymore when my true passions lay elsewhere&lt;/strong&gt;. I knew how big a risk this was, leaving behind comfort and safety to pursue my dreams, and I had to at least give it a try.&lt;/p&gt;

&lt;p&gt;I looked around at different options to start my career in tech, and settled on going to an in-person coding bootcamp, Northcoders, in Manchester, UK. During this time, I was active on LinkedIn, and whilst waiting for my course to start managed to secure myself some work at a digital agency working as a Junior Front End Web Developer. This was a fantastic experience, and solidified my decision to pursue a career in tech. It gave me the confidence that people believed in my skills, and that I could really make it into the industry.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What happened next?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I attended Northcoders bootcamp full-time, where I learnt everything from the ground-up on an intense course, finishing with building a group project, which for us was a full-stack mobile application geared towards helping people with their shopping during the pandemic. Though there are many different routes into the coding industry, a bootcamp worked really well for my learning style and gave me the skills to be able to build projects independently.&lt;/p&gt;

&lt;p&gt;After bootcamp, I continued to learn and found ways to differentiate myself in the industry and build my brand, writing blog posts about things I had learnt and interacting with the developer community.&lt;/p&gt;

&lt;p&gt;When it came to job searching, I had a portfolio of projects that I had built, and a CV showcasing my development experience and transferrable skills from my career in marketing, including project management, design and communication. Even though you may be looking to change career, don’t underestimate the value of skills you have developed thus far in your life or career. There is more to a career in development than just the coding!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What advice can I offer to you, looking to change career to development?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Having read my story, it’s important to remember that this is only my story — everyone has a different story! There are many different paths into development, whether this be a computer science degree, a bootcamp, self-taught, online degrees or courses, apprenticeships, part-time study and more.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Look into the different paths into development and find what works best for you and your situation.&lt;/li&gt;
&lt;li&gt;Get involved in the tech community, whether this be through local meet-ups in your area, events such as Django Girls, or the developer community online via Twitter or Linkedin.&lt;/li&gt;
&lt;li&gt;Find things which spark your passion for code.
Take advantage of the free resources online, such as FreeCodeCamp, where you can try out a range of languages such as JavaScript or Python.&lt;/li&gt;
&lt;li&gt;Always keep learning, and never give up on your dreams!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay up to date with my articles, and feel free to connect with me over on &lt;a href="https://twitter.com/niomk"&gt;Twitter&lt;/a&gt;, or &lt;a href="https://github.com/katieraby"&gt;Github&lt;/a&gt;. ✨&lt;/p&gt;

</description>
      <category>career</category>
      <category>juniordeveloper</category>
      <category>careerchange</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Top Tips For Developers Starting Their First Role</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Sun, 25 Oct 2020 17:17:46 +0000</pubDate>
      <link>https://dev.to/katieraby/top-tips-for-developers-starting-their-first-role-2bag</link>
      <guid>https://dev.to/katieraby/top-tips-for-developers-starting-their-first-role-2bag</guid>
      <description>&lt;p&gt;You’ve just landed your first Developer role. Congratulations! 🏆&lt;/p&gt;

&lt;p&gt;What now? How do you prepare for your first week? What are some things you should think about when you start?&lt;/p&gt;

&lt;p&gt;Here are some tips for developers starting out in their first role (and beyond!).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ASK QUESTIONS.&lt;/strong&gt;&lt;br&gt;
As a junior developer you can never ask too many questions! Your colleagues and workplace should be more than okay with answering all your questions — this is your chance to learn as much as you possibly can.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WRITE DOWN YOUR QUESTIONS.&lt;/strong&gt;&lt;br&gt;
You don’t want to forget questions as they arise, and someone may not always be available to answer them for you, so it can be a good idea to write down your questions and save them for an appropriate time.&lt;br&gt;
On top of this, it’s good to write down your questions so that you can also write down the answer, and refer back to it when you need to.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;BE HONEST ABOUT WHAT YOU DO AND DON’T KNOW.&lt;/strong&gt;&lt;br&gt;
Being honest about your experience is never going to work against you. It shows that you understand your areas for improvement and have something to work on, and on the flip side, it’s your time to shine if you know there are certain things you are better at.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DON’T BE AFRAID TO OFFER OPINIONS AND IDEAS.&lt;/strong&gt;&lt;br&gt;
No matter your level of experience, your opinions and ideas are really valuable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TAKE NOTES.&lt;/strong&gt;&lt;br&gt;
Any notes which you may find useful, notes about the technology you’re using, notes about the team, notes about any research you’ve done, coding snippets to remember for the future!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GET A NOTEBOOK FOR ‘BUGS’.&lt;/strong&gt;&lt;br&gt;
Each time you come across a bug, make a note of what you found, how you found it, and how you went about fixing it, and how you fixed it. You can then have a collection of error messages and bugs which are able to refer back to, each time you come across something and don’t remember how you solved it the first time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GET A NOTEBOOK FOR DAILY ACHIEVEMENTS.&lt;/strong&gt;&lt;br&gt;
Every day, starting from day one, make notes of your achievements each working day. This is great for those days you may be feeling low and need reminding of all the things you have achieved in your career so far, or when you just want to look back at how amazing you are, and also great to keep a record when it comes time for a promotion! You have a daily record of your achievements to hand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WHEN YOU GET STUCK, DON’T SPEND TOO LONG BEFORE YOU ASK FOR HELP.&lt;/strong&gt;&lt;br&gt;
Try to figure out the solution on your own first, but don’t let yourself spend two days trying to solve something which you could have solved in ten minutes with a little help! There will be a learning curve at first, but don’t let yourself get bogged down.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PUSH YOURSELF OUT OF YOUR COMFORT ZONE WHENEVER YOU GET A CHANCE.&lt;/strong&gt;&lt;br&gt;
Try new things, and push the boundaries of your comfort zone, whenever you get the opportunity. Take the reins and lead your daily stand-up, or present a new technology idea to your CTO.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;BE PATIENT WITH YOURSELF.&lt;/strong&gt;&lt;br&gt;
A Junior Developer or not, you are starting at a new company with new processes and a whole new codebase to get yourself acquainted with! Give yourself the time and patience you need to get to grips the life-changing transition you have just made into your new job, and understand that there are always things to learn at every level of your career.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;UNDERSTAND THAT YOU WILL NEVER KNOW EVERYTHING.&lt;/strong&gt;&lt;br&gt;
Don’t feel deflated when you realise that you don’t know everything there is to know at work. No matter the skills you came in with, the possibilities and learning potential of programming is infinite — you will never know all the things, and neither will anyone in your company, and that is completely okay. Use this as something to drive you and excite you, that you have chosen a career in which you will be constantly learning and improving!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TREAT EVERY MOMENT AS A LEARNING OPPORTUNITY.&lt;/strong&gt;&lt;br&gt;
Even if there comes a problem you already know how to solve, there could be a new way of looking at the problem that you hadn’t already thought about, or new ways to approach it, and new things to discover.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IT’S OKAY TO STEP AWAY FROM A PROBLEM AND COME BACK TO IT.&lt;/strong&gt;&lt;br&gt;
Sometimes you just need to step away and come back to a problem later. Get yourself a hot drink and come back after a break. Looking at it with fresh eyes again could help you solve it, and if not, it’s okay to get help on the problem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;FIND A MENTOR.&lt;/strong&gt;&lt;br&gt;
Whether this be someone in or out of work, having a mentor who you can talk to about your coding experience, career progression, and general wellbeing can be invaluable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;FAMILIARISE YOURSELF WITH RELEVANT DOCUMENTATION.&lt;/strong&gt;&lt;br&gt;
Find out what technologies your team uses, and look into the relevant documentation associated to get a feel for things before diving in. You may also find that your team will have their own internal documentation, documenting things such as how to use their API or tools. Familiarise yourself with this on your first few days, so you know where to go when you need information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;FIND OUT ABOUT THE BIGGER PICTURE.&lt;/strong&gt;&lt;br&gt;
You’re working on one piece, or multiple pieces, of the wider puzzle. Find out how all the puzzle pieces fit together in the bigger picture of the product you’re working on. Find out about the industry you’re working in, and how the product you’re making fits into that industry picture.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DON’T FALL INTO THE TRAP OF WORKING ALL THE HOURS UNDER THE SUN.&lt;/strong&gt;&lt;br&gt;
You’re new to a job, you’re excited, and you want to prove yourself. You are tempted to continually work after hours, but please resist this temptation — it is a recipe for burnout. You will be learning a lot every day at work, and your brain needs time away and rest to process the things you’ve learnt throughout the day. Take rest when you need it, and arrive fresh for the next day to learn a whole lot more!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;NEVER FORGET ABOUT THE END USER.&lt;/strong&gt;&lt;br&gt;
Always keep in mind WHO you are developing for, and WHO will be using your product, this will help to guide your development and ensure you are doing and noticing things with the end user in mind.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SPEND TIME REALLY UNDERSTANDING WHAT YOU ARE DEVELOPING.&lt;/strong&gt;&lt;br&gt;
You can quite easily feel like you want to dive headfirst into writing code as quickly as possible — but without really understanding the codebase and the product can be detrimental to you in the long-run, and can leave technical debt for the team. Ensure you spend time understanding what you’re developing and how things fit together, to be able to make more informed decisions about your code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ENJOY YOURSELF.&lt;/strong&gt;&lt;br&gt;
Congratulations for reaching this amazing goal and securing your first role as a Junior Developer. You have worked so hard and you totally deserve it. Relish the feeling of landing an awesome job, and enjoy yourself!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>career</category>
      <category>developer</category>
      <category>tips</category>
      <category>jobs</category>
    </item>
    <item>
      <title>Live Art - Showing Support for Artists Through Web Monetization</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Fri, 05 Jun 2020 21:04:23 +0000</pubDate>
      <link>https://dev.to/katieraby/live-art-showing-support-for-artists-through-web-monetization-4he</link>
      <guid>https://dev.to/katieraby/live-art-showing-support-for-artists-through-web-monetization-4he</guid>
      <description>&lt;h2&gt;
  
  
  What We Built
&lt;/h2&gt;

&lt;p&gt;We built a "Live Art" web platform to help artists gain monetary support through live art sessions, with payments being sent from supporters using the coil browser extension to the logged-in artist. The payment pointer stored in the meta tags will be dynamic - changing depending on which artist is logged in, to eventually allow for multiple "art rooms" with multiple artists, giving supporters the ability to pick a room.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;This submission falls under the Creative Catalyst category: projects that use existing Web Monetization technology to explore the creation, distribution, and discoverability of content online.&lt;/p&gt;

&lt;p&gt;We wanted to submit a project under the creative catalyst category to demonstrate the wide usage of Web Monetization, focused specifically on helping freelance/ad hoc creatives to monetize their passions through the web.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Find our hosted &lt;a href="https://live-art.herokuapp.com/" rel="noopener noreferrer"&gt;Live Art here at this link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faauzlutelrpoct6t82u1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faauzlutelrpoct6t82u1.png" alt="Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are an artist you will need a payment pointer to enable micro payments to be made to your web wallet. Uphold offer a good service for this and you can sign up &lt;a href="https://uphold.com/en-gb/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqcf05mdou8fb88kiy0ch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqcf05mdou8fb88kiy0ch.png" alt="Artist Login"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a supporter you will need a coil account and the relevant extension for your web browser. Find more info about getting started &lt;a href="https://coil.com/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1njtcijs9mho2eq3lp8l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1njtcijs9mho2eq3lp8l.png" alt="Not monetized"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once logged in and the site is monetized, the artist will be able to draw on the canvas with the supporter able to view in real-time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu1b1o3d4ndls8ou3fis6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu1b1o3d4ndls8ou3fis6.png" alt="Blank canvas"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr535j0mezslj31bl5tz4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr535j0mezslj31bl5tz4.png" alt="Bad art example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The supporter will be sending payments via their Coil browser extension as below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5tkij2vmgnknqnw3eju1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5tkij2vmgnknqnw3eju1.png" alt="Monetization in action"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Back-end Repo
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/katieraby" rel="noopener noreferrer"&gt;
        katieraby
      &lt;/a&gt; / &lt;a href="https://github.com/katieraby/live-art-backend" rel="noopener noreferrer"&gt;
        live-art-backend
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      RUNNER UP in the DEV x Grant For The Web Hackathon 2020, 'Live Art'. Web monetization hackathon project. Created using nodeJS, Express, Mongoose and MongoDB. MIT Licensed.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Live Art Backend API&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Backend RESTful API for Live Art, serving up endpoints relating to storing artist data, logging in, and fetching artist data
Endpoints available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GET /artist&lt;/li&gt;
&lt;li&gt;POST /artist&lt;/li&gt;
&lt;li&gt;POST /artist/:username&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting Started &amp;amp; Installation&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Prerequisites&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;To run this API on your machine, you will need Node.js and MongoDB installed on your machine.&lt;/p&gt;
&lt;p&gt;To install Mongo, go to &lt;a href="https://docs.mongodb.com/manual/installation/" rel="nofollow noopener noreferrer"&gt;https://docs.mongodb.com/manual/installation/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To install Node, go to: &lt;a href="https://nodejs.org/en/download/" rel="nofollow noopener noreferrer"&gt;https://nodejs.org/en/download/&lt;/a&gt; &lt;br&gt;
The version required is a minimum of v. 13.8.0&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Installation&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Clone a copy of the repository on your machine using the below command:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-s1"&gt;git&lt;/span&gt; &lt;span class="pl-s1"&gt;clone&lt;/span&gt; &lt;span class="pl-s1"&gt;https&lt;/span&gt;:&lt;span class="pl-c"&gt;//github.com/katieraby/live-art-backend.git&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Install the required dependencies:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-s1"&gt;npm&lt;/span&gt; &lt;span class="pl-s1"&gt;install&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;For testing, install the required dev dependencies:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-s1"&gt;npm&lt;/span&gt; &lt;span class="pl-s1"&gt;i&lt;/span&gt; &lt;span class="pl-c1"&gt;-&lt;/span&gt;&lt;span class="pl-v"&gt;D&lt;/span&gt; &lt;span class="pl-s1"&gt;mocha&lt;/span&gt; &lt;span class="pl-s1"&gt;chai&lt;/span&gt; &lt;span class="pl-s1"&gt;supertest&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;How to create your dbConfig (required)&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;To connect to your live mongo database, ensure…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/katieraby/live-art-backend" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  Front-end Repo
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/katieraby" rel="noopener noreferrer"&gt;
        katieraby
      &lt;/a&gt; / &lt;a href="https://github.com/katieraby/live-art" rel="noopener noreferrer"&gt;
        live-art
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      RUNNER UP in the DEV x Grant For The Web Hackathon 2020, 'Live Art'. Show support for artists and creatives by viewing their live art display in a monetized environment. Co-created with bainesface.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Live Art&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;A web application using web monetization and socket.io to enable supporters to view live art and make micro payments to the artist.&lt;/h4&gt;
&lt;/div&gt;
&lt;p&gt;The hosted version of this project is available &lt;a href="https://live-art.herokuapp.com/" rel="nofollow noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/katieraby/live-art./screenshots/homepage.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkatieraby%2Flive-art.%2Fscreenshots%2Fhomepage.png" alt="Alt text" title="homepage"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you are an artist you will need a payment pointer to enable micro payments to be made to your web wallet. Uphold offer a good service for this and you can sign up &lt;a href="https://uphold.com/en-gb/" rel="nofollow noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/katieraby/live-art./screenshots/artistlogin.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkatieraby%2Flive-art.%2Fscreenshots%2Fartistlogin.png" alt="Alt text" title="artist log in"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As a supporter you will need an coil account and the relevant extension for your web browser. All can be found &lt;a href="https://coil.com/" rel="nofollow noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/katieraby/live-art./screenshots/notmonetized.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkatieraby%2Flive-art.%2Fscreenshots%2Fnotmonetized.png" alt="Alt text" title="not monetized message"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once logged in and the site is monetized, the artist will be able to draw on the canvas with the supporter able to view in real time.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/katieraby/live-art./screenshots/blankcanvas.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkatieraby%2Flive-art.%2Fscreenshots%2Fblankcanvas.png" alt="Alt text" title="blank canvas"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/katieraby/live-art./screenshots/badart.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkatieraby%2Flive-art.%2Fscreenshots%2Fbadart.png" alt="Alt text" title="badart"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The supporter will be sending payments via their Coil browser extension as below.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/katieraby/live-art./screenshots/monetized-screenshot-2.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkatieraby%2Flive-art.%2Fscreenshots%2Fmonetized-screenshot-2.png" alt="Monetization in action" title="monetization in action"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you would like to view the backend API for this project please find the code &lt;a href="https://github.com/katieraby/live-art-backend" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/h3&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/katieraby/live-art" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How We Built It
&lt;/h2&gt;

&lt;p&gt;Technologies used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/" rel="noopener noreferrer"&gt;React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/socket.io" rel="noopener noreferrer"&gt;Socket.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API" rel="noopener noreferrer"&gt;Canvas API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://expressjs.com/" rel="noopener noreferrer"&gt;Express&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;Node&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mongodb.com/" rel="noopener noreferrer"&gt;MongoDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mongoosejs.com/" rel="noopener noreferrer"&gt;Mongoose&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We started off by creating our mini back-end, using Express, Mongoose and MongoDB, in which we would store the artist's data, including username, bio, payment pointer and password (hashed), to enable artists to have a regular account in which they could login as an artist to Live Art. &lt;/p&gt;

&lt;p&gt;We then moved across to our front-end and decided to create our socket server within the front-end file structure, to separate concerns. For our front-end web application, we used React and integrated the Canvas API to act as our artist's whiteboard during a Live Art session. &lt;/p&gt;

&lt;p&gt;To integrate web monetization into our application, we needed dynamic meta-tags, in which the monetization payment pointer changed according the artist logged in. We used the React plugin react-meta-tags to give us component-like access to the meta tags, where we were then able to grab the artist's payment pointer ID from the socket connection, store it in state, and reflect this change in our meta tags for monetization.&lt;/p&gt;

&lt;p&gt;To finish, we added some styling to our application using CSS modules. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Future of Live Art
&lt;/h2&gt;

&lt;p&gt;At present our product, on the date of submission, is our minimum viable product and has a few bugs which need fixing!&lt;/p&gt;

&lt;p&gt;Improvements we would also like to make following the submission deadline include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding a live chat to allow users to interact with the artist&lt;/li&gt;
&lt;li&gt;Allow supporters to login with Coil Authentication&lt;/li&gt;
&lt;li&gt;Adding additional styling&lt;/li&gt;
&lt;li&gt;Creating multiple art rooms, so multiple artists are able to draw at the same time, with supporters able to choose which artist to support.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Team Members
&lt;/h2&gt;

&lt;p&gt;Sarah Baines - &lt;a href="https://github.com/bainesface" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;br&gt;
Katie Raby - &lt;a href="https://github.com/katieraby" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Word
&lt;/h2&gt;

&lt;p&gt;Thank you to the DEV team for putting on such awesome hackathons, to allow developers the opportunity to explore new technology they wouldn't otherwise be aware of!&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fimages%2Fc13629797876df67c9286b2683b42760%2Ftenor.gif%3Fitemid%3D3558780" 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%2Fmedia1.tenor.com%2Fimages%2Fc13629797876df67c9286b2683b42760%2Ftenor.gif%3Fitemid%3D3558780" alt="Celebration GIF"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gftwhackathon</category>
      <category>webmonetization</category>
      <category>showdev</category>
      <category>react</category>
    </item>
    <item>
      <title>How to: Pass the AWS Certified Cloud Practitioner Exam in 2020</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Fri, 15 May 2020 11:49:42 +0000</pubDate>
      <link>https://dev.to/katieraby/how-to-pass-the-aws-certified-cloud-practitioner-exam-in-2020-3d31</link>
      <guid>https://dev.to/katieraby/how-to-pass-the-aws-certified-cloud-practitioner-exam-in-2020-3d31</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;From knowing very little about cloud computing in general, I passed my AWS Certified Cloud Practitioner (CCP) exam after 8 - 9 days of study.&lt;br&gt;
Find out how I accomplished this below.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is my background?&lt;/strong&gt; &lt;br&gt;
I'm relatively new to the tech industry, having started coding full-time at the end of last year through a full-stack coding bootcamp. As part of my final bootcamp project we used Firebase for Cloud Storage, and this piqued my curiosity for cloud services in general, so I was keen to delve into this more after my course.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why AWS?&lt;/strong&gt; &lt;br&gt;
Amazon Web Services (AWS) is very widely used in the industry, and in Q4 of 2019 held the largest market share amongst cloud infrastructure providers (&lt;a href="https://www.statista.com/chart/18819/worldwide-market-share-of-leading-cloud-infrastructure-service-providers/"&gt;Source&lt;/a&gt;), so I thought I'd start there!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is this exam for?&lt;/strong&gt;&lt;br&gt;
Regardless of your current job or title, this foundational exam is suitable for anyone who has an interest in building overall knowledge and skills around the AWS Cloud. If you are currently working with AWS and have a base knowledge, you may be able to complete this exam in a shorter time span.&lt;/p&gt;

&lt;p&gt;You can find details about the exam format and skills areas from &lt;a href="https://aws.amazon.com/certification/certified-cloud-practitioner/"&gt;Amazon&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Without re-inventing the wheel, find details about which resources I used below and how I managed my revision for the exam.&lt;/p&gt;

&lt;h2&gt;
  
  
  Play to your learning strengths
&lt;/h2&gt;

&lt;p&gt;Play to your strengths in terms of how you learn best - I like to watch, write out my own notes and read them back for revision.&lt;/p&gt;

&lt;p&gt;To prepare for the exam, I opened up a notebook on &lt;a href="https://www.gitbook.com/"&gt;Gitbook&lt;/a&gt; and had pages for these areas: Cloud Computing - Overview, AWS Integrated Services, AWS Core Services, Technology Overview, AWS Global Infrastructure, Architecture, Security, Pricing and Support, and Q&amp;amp;A. &lt;/p&gt;

&lt;p&gt;As I studied the different areas, I made notes on each of the pages that I would come back to later to read through.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gaining an understanding
&lt;/h2&gt;

&lt;p&gt;I started with going through this 6-hour video course: &lt;a href="https://www.aws.training/Details/Curriculum?id=27076"&gt;AWS Digital Training - AWS Cloud Practitioner Essentials (Second Edition)&lt;/a&gt;. As this is an official Amazon course, it was a great place to start and really gave me a broad overview of the key areas for the exam. &lt;strong&gt;BONUS&lt;/strong&gt;: you receive a certificate of completion after this course, so you get a real sense of achievement!&lt;/p&gt;

&lt;p&gt;I then worked through &lt;a href="https://www.youtube.com/watch?v=3hLmDS179YE&amp;amp;t=1s"&gt;ExamPro's 4-hour CCP Training Full Course 2020&lt;/a&gt; - a fantastic resource, and thanks to FreeCodeCamp this is completely ad-free for the whole 4 hours. Alongside this, I was also making notes in my Gitbook and screenshotting the overview slides which were really helpful for last-minute revision.&lt;/p&gt;

&lt;p&gt;Though the above two videos were crucial to my success, they didn't cover all of the services which might appear on the exam. The questions can be finicky, so be sure to read the &lt;a href="https://d1.awsstatic.com/whitepapers/aws-overview.pdf"&gt;Overview of Amazon Web Services Whitepaper&lt;/a&gt; - absolutely essential to read (even at 95 pages long).&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical skills
&lt;/h2&gt;

&lt;p&gt;I wanted to gain some practical skills alongside my theoretical knowledge, so I started by creating an AWS account and had a play around with the AWS Management Console.&lt;/p&gt;

&lt;p&gt;The aforementioned &lt;a href="https://www.youtube.com/watch?v=3hLmDS179YE&amp;amp;t=1s"&gt;ExamPro course&lt;/a&gt; helped a lot with this too - as there are "follow along" sections, and before I knew it, I had created a budget with an alert, launched EC2 instances, created an auto-scaling group, an elastic load balancer, and added items to an S3 bucket.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practice, practice, practice!
&lt;/h2&gt;

&lt;p&gt;My Dad, and I'm sure many others before him, said &lt;em&gt;"Fail to prepare, prepare to fail"&lt;/em&gt;, and that stuck with me throughout this preparation. Once you have worked through gaining a base knowledge, you still need to go into the details and get lots of exam practice in!&lt;/p&gt;

&lt;p&gt;To revise for the exam I went ahead and purchased &lt;a href="https://www.udemy.com/course/aws-certified-cloud-practitioner-practice-test/"&gt;6 practice exams and responses&lt;/a&gt;. There are detailed explanations for both correct and incorrect responses following each exam, and it also shows you which areas you need to brush up on. I completed all of the exams, ensuring I reached 73% + in each.&lt;/p&gt;

&lt;p&gt;I also worked through this short set of &lt;a href="https://d1.awsstatic.com/training-and-certification/docs-cloud-practitioner/AWS-Certified-Cloud-Practitioner_Sample-Questions.pdf"&gt;Amazon official sample questions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Throughout any of the practice exams whenever I got an answer wrong, or wasn't sure about the answer, I added this to the Q&amp;amp;A section of my Gitbook notes. That way I could come back to the questions I struggled with whilst revising and quickly refresh myself.&lt;/p&gt;

&lt;p&gt;On the days leading up to the exam I read the Overview of Amazon Web Services Whitepaper again, and filled any gaps by searching for helpful Youtube videos, such as &lt;a href="https://www.youtube.com/watch?v=bRI6flPhR18"&gt;this one&lt;/a&gt; on the AWS Shared Responsibility Model.&lt;/p&gt;

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

&lt;p&gt;Here's a summary of all the resources I used, which were free (with the exception of the practice exam set on Udemy): &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practice exams&lt;/strong&gt; - &lt;br&gt;
&lt;a href="https://d1.awsstatic.com/training-and-certification/docs-cloud-practitioner/AWS-Certified-Cloud-Practitioner_Sample-Questions.pdf"&gt;Amazon Official Sample Questions&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.udemy.com/course/aws-certified-cloud-practitioner-practice-test/"&gt;6 AWS CCP Practice Exams&lt;/a&gt; - paid resource&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whitepapers &amp;amp; AWS Website&lt;/strong&gt; - &lt;br&gt;
&lt;a href="https://d1.awsstatic.com/whitepapers/aws-overview.pdf"&gt;Overview of Amazon Web Services&lt;/a&gt;&lt;br&gt;
&lt;a href="http://d1.awsstatic.com/whitepapers/aws_pricing_overview.pdf"&gt;How AWS Pricing Works&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/premiumsupport/plans/"&gt;AWS Support Plans Info&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Videos &amp;amp; Training&lt;/strong&gt; - &lt;br&gt;
&lt;a href="https://www.aws.training/Details/Curriculum?id=27076"&gt;AWS Digital Training - AWS Cloud Practitioner Essentials (Second Edition)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=3hLmDS179YE&amp;amp;t=1s"&gt;Exam Pro's 4-hour CCP Course&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/playlist?list=PLC1EA73D8914686E5"&gt;Selected videos from this AWS Products and Services official playlist&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=bRI6flPhR18"&gt;AWS Shared Responsibility Model - unofficial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please comment or get in touch with any further questions relating to my preparation for this course. I hope this answered 'How to pass the CCP exam in 2020'. Good luck for your exam!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>career</category>
      <category>cloud</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Benefits Of Test-Driven Development (TDD)</title>
      <dc:creator>Katie Raby</dc:creator>
      <pubDate>Sun, 29 Mar 2020 17:58:42 +0000</pubDate>
      <link>https://dev.to/katieraby/the-benefits-of-test-driven-development-tdd-beginner-and-beyond-57o8</link>
      <guid>https://dev.to/katieraby/the-benefits-of-test-driven-development-tdd-beginner-and-beyond-57o8</guid>
      <description>&lt;p&gt;The idea behind test driven development is that you let the tests &lt;em&gt;'drive'&lt;/em&gt; your development process. How does this work? Start by writing a test that fails, then develop the code to make that test pass, then refactor. This cycle is called red, green, refactor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmhiiq4wu9p43naip6hob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmhiiq4wu9p43naip6hob.png" alt="TDD Red, green, refactor cycle diagram"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;center&gt;*a diagram to show the red, green, refactor TDD cycle*&lt;/center&gt;

&lt;p&gt;&lt;strong&gt;RED&lt;/strong&gt;: The red phase is the starting point of the cycle, where you define expectations for the piece of code being tested, and let the test fail. Write tests starting at the lowest level, e.g. &lt;em&gt;when the function is passed an empty array, return an empty array&lt;/em&gt;. Why let the test fail? So that you know you have written a good test - a test shouldn't be able to pass without any logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GREEN&lt;/strong&gt;: Implement the necessary logic to make your test pass - don't worry about it being the most optimised or efficient at this stage, the goal is to pass the test!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REFACTOR&lt;/strong&gt;: During the refactor phase, consider how you could optimise your code, without adding any additional functionality.&lt;/p&gt;

&lt;p&gt;So, now that you know about the process, what are the benefits of Test-Driven Development?&lt;/p&gt;

&lt;h3&gt;
  
  
  The foundations are in place before you build the house
&lt;/h3&gt;

&lt;p&gt;With TDD you can dictate exactly what you expect your code to do from the ground up. TDD forces you to think about exactly what you expect from scenario to scenario, which makes you more likely to cover all the bases.&lt;/p&gt;

&lt;h3&gt;
  
  
  TDD helps you to develop the logic in your code
&lt;/h3&gt;

&lt;p&gt;By starting tests with the simplest functionality first, you can use them to guide your logic as you build up functionality. This helps you to break a problem down into smaller, more manageable pieces, thus aiding the problem solving process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Very high test-coverage
&lt;/h3&gt;

&lt;p&gt;Test-coverage refers to the percentage of your code that is tested. A high test coverage means that you can trust your code works because you have a large set of tests, and TDD allows for this because you shouldn't have any code written which doesn't have the associated tests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improved quality of your code
&lt;/h3&gt;

&lt;p&gt;As you are specifically writing code to pass the tests in place, and refactoring at the end of each test; you ensure your code is clean and optimised without any extra pieces of code that you won't need.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prevents bugs early on in the development process
&lt;/h3&gt;

&lt;p&gt;As you are adding to the functionality of your code as you go along, you ensure that each stage of the code is working as you progress. Much better than writing a large piece of code, and trying to test it afterwards only to find that it fails!&lt;/p&gt;

&lt;h3&gt;
  
  
  Easy to add functionality to your code
&lt;/h3&gt;

&lt;p&gt;With a high test coverage, you are simply adding to a very tested piece of code. This is great because you know you can rely on the code you already have, and can write additional tests to add functionality bit by bit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Your code can be understood easily
&lt;/h3&gt;

&lt;p&gt;One great benefit of testing in general (and using descriptive test statements!), is the readability this provides for others. Developers, testers and non-technical colleagues working on or around the codebase can identify exactly what the piece of code does without any guesswork - great for when you are working on an older codebase and want to navigate around it easily.&lt;/p&gt;

&lt;h4&gt;
  
  
  Want to try it out for yourself? Get started with some resources below:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd" rel="noopener noreferrer"&gt;Uncle Bob's Three Rules of TDD&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=qkblc5WRn-U" rel="noopener noreferrer"&gt;Three Rules of TDD - Youtube Video&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.peterprovost.org/blog/2012/05/02/kata-the-only-way-to-learn-tdd/" rel="noopener noreferrer"&gt;Kata - the Only Way To Learn TDD&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tdd</category>
      <category>testing</category>
      <category>programming</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
