<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Phoebe Voong-Fadel - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Phoebe Voong-Fadel - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Thu, 21 May 2026 10:20:53 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/author/phoebevoongfadel/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Review of CS50 – Harvard's Introduction to Computer Science Course ]]>
                </title>
                <description>
                    <![CDATA[ Are you considering taking the CS50 Introduction to Computer Science course, but wondering if it's the right fit for you? As someone who doesn’t have a computer science degree and was looking to learn the fundamentals of the field, I was in the same ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/cs50-course-review/</link>
                <guid isPermaLink="false">66d4608c230dff016690584d</guid>
                
                    <category>
                        <![CDATA[ Computer Science ]]>
                    </category>
                
                    <category>
                        <![CDATA[ cs50 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Phoebe Voong-Fadel ]]>
                </dc:creator>
                <pubDate>Mon, 09 Jan 2023 22:20:27 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/01/this-is-cs50-1.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Are you considering taking the <a target="_blank" href="https://www.freecodecamp.org/news/harvard-cs50/">CS50</a> Introduction to Computer Science course, but wondering if it's the right fit for you?</p>
<p>As someone who doesn’t have a computer science degree and was looking to learn the fundamentals of the field, I was in the same boat. That's why I decided to enrol on the course and document my experience in this article.</p>
<p>I'll provide an overview and review of CS50 to help you decide if it's the right course for you.</p>
<h2 id="heading-what-is-cs50">What is CS50?</h2>
<p>CS50 is a ten week online and on-campus course which serves as an introduction to computer science. It's taught at Harvard and Yale University.</p>
<p>The course leader is Professor David J. Malan. He’s supported by the CS50 team, which consists of Senior Preceptors and an entire production team. The course runs from 1 January to 31 December.</p>
<h2 id="heading-why-choose-cs50">Why choose CS50?</h2>
<p>There are several reasons why CS50 might be a good choice for you. Here are a few:</p>
<ul>
<li><p>It's a highly respected course offered by Harvard University. This means that you'll be learning from experienced instructors and getting access to a top-quality course.</p>
</li>
<li><p>It covers a wide range of topics, including computer science fundamentals, algorithms, data structures, and programming languages such as C, Python, and SQL. This means that you'll have a well-rounded introduction to the field.</p>
</li>
<li><p>It's self-paced, which means that you can work through the course at your own pace and fit it into your schedule. You can watch the lectures on various platforms, including EdX and freeCodeCamp's YouTube channel. For me this was important as I didn’t have a lot of spare time.</p>
</li>
<li><p>It's free! You’ll have access to the lectures and course materials.</p>
</li>
</ul>
<h2 id="heading-what-is-the-format-of-the-course">What is the Format of the Course?</h2>
<p>There are ten weeks worth of lectures, labs, and problem sets, which must be completed. At the end of the course, there’s a final project.</p>
<h3 id="heading-is-this-a-course-for-beginners">Is this a course for beginners?</h3>
<p>Yes. In fact, around two thirds of students who enroll in CS50 have never taken a computer science course before. So if you're new to the field and looking to learn the basics, you'll be in good company.</p>
<p>That being said, don't expect the course to be easy. While the lectures are designed to be accessible and engaging, the problem sets and labs can be challenging. On average, students should expect to spend around 12 hours per week on the course.</p>
<h3 id="heading-do-i-get-a-certificate-at-the-end-of-the-course">Do I get a certificate at the end of the course?</h3>
<p>You can choose to receive a free CS50 certificate or pay for a verified certificate from <a target="_blank" href="https://www.edx.org/verified-certificate">edX</a>.</p>
<h3 id="heading-what-if-you-dont-finish-the-course-by-31-december">What if you don’t finish the course by 31 December?</h3>
<p>You can roll over any submissions into the following year. I did this and the process was straightforward. The course content is pretty much the same with some updates to the course materials.</p>
<h2 id="heading-cs50-walkthrough-week-by-week">CS50 Walkthrough, Week by Week</h2>
<h3 id="heading-week-0-learn-scratch">Week 0: Learn Scratch</h3>
<p>In the first week of the course, you'll be introduced to the world of computer science and learn about how numbers, text, and images are represented in binary.</p>
<p>You'll also learn about algorithms and pseudo code, and get a hands-on introduction to <a target="_blank" href="https://scratch.mit.edu/">Scratch</a>, a graphical programming language.</p>
<p>For your first problem set, you'll create a Scratch project. This week is a fun way to ease you into the course and get a taste of programming.</p>
<p>If you’re interested, this is <a target="_blank" href="https://scratch.mit.edu/projects/500624784">my Scratch project</a>, which was inspired by my son who’s fascinated by space.</p>
<h3 id="heading-week-1-learn-c">Week 1: Learn C</h3>
<p>In the second week of the course, you'll dive into <a target="_blank" href="https://www.freecodecamp.org/news/learn-c-programming-classic-book-dr-chuck/">C, a low-level programming language</a>.</p>
<p>You'll learn programming fundamentals such as functions, conditionals, boolean expressions, loops, and variables.</p>
<p>For the problem set, you'll create a program that outputs a pyramid of hashes like at the end of a level in a Super Mario game.</p>
<h3 id="heading-week-2-introduction-to-arrays">Week 2: Introduction to Arrays</h3>
<p>You'll continue learning about programming in C and delve into topics such as how your program compiles, debugging, arrays, characters, strings, and command-line arguments.</p>
<p>For the lab, you'll write a <a target="_blank" href="https://www.freecodecamp.org/news/how-to-code-the-caesar-cipher-an-introduction-to-basic-encryption-3bf77b4e19f7/">Caesar's cipher</a> program, and for the problem set, you'll work on a scrabble-type challenge. If you’ve completed the <a target="_blank" href="https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/">JavaScript Algorithm and Data Structures</a> certificate on freeCodeCamp, this should be familiar as this is one of the coding challenges.</p>
<h3 id="heading-week-3-introduction-to-algorithms">Week 3: Introduction to Algorithms</h3>
<p>In week three, you'll learn about different types of search (linear and binary) and different types of sort (selection and bubble), as well as recursion.</p>
<p>You'll also learn about <a target="_blank" href="https://www.freecodecamp.org/news/big-o-notation/">big O notation</a>, which can be challenging but is an important concept in computer science. Thankfully, the course provides additional short videos on more difficult concepts, which provide a more detailed explanation with examples.</p>
<h3 id="heading-week-4-computer-memory">Week 4: Computer Memory</h3>
<p>Week four focuses on memory, including topics such as pointers, addresses, memory allocation and freeing memory, detecting memory leaks, and explaining how a stack overflow occurs.</p>
<p>The lab and problem set involve manipulating audio and image files. Below is an example of a filter I created in C.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/tweet-week-4.png" alt="Screenshot of tweet with an image of a church that is colour. Next to it an image of the same church in grayscale" width="600" height="400" loading="lazy"></p>
<h3 id="heading-week-5-data-structures">Week 5: Data Structures</h3>
<p>In the final week of programming in C, you'll learn about how pointers can be used to store the addresses in memory for linked lists.</p>
<p>The lab consolidates your knowledge of pointers, and the problem set involves creating a spell checking program. This was a particularly tricky exercise and it’s worth taking your time to understand the starter files provided before delving in.</p>
<h3 id="heading-week-6-learn-python-basics">Week 6: Learn Python Basics</h3>
<p>Week six marks the transition from C to <a target="_blank" href="https://en.wikipedia.org/wiki/Python_\(programming_language\)">Python</a>, a popular programming language that is easier to learn and use than C. You'll work on problem sets that involve translating previous programs written in C to Python.</p>
<h3 id="heading-week-7-sql-and-relational-databases">Week 7: SQL and Relational Databases</h3>
<p>In week seven, you'll learn about relational databases and <a target="_blank" href="https://en.wikipedia.org/wiki/SQL">SQL</a> (Structured Query Language), using SQLite to execute queries on the command line and in Python.</p>
<p>The problem set is a fun one, as you’ll have to solve a mystery of who stole the CS50 duck through a series of SQL queries!</p>
<h3 id="heading-week-8-html-css-and-javascript">Week 8: HTML, CSS, and JavaScript</h3>
<p>Week eight covers the basics of the internet and the web, including HTML, CSS, and JavaScript on the client side.</p>
<p>For the problem set you’ll create a home page about yourself.</p>
<h3 id="heading-week-9-flask">Week 9: Flask</h3>
<p>In week nine, you'll learn about <a target="_blank" href="https://en.wikipedia.org/wiki/Flask_\(web_framework\)">Flask</a>, a Python framework that is used to build web applications. You'll cover topics such as forms, layouts and templating using <a target="_blank" href="https://en.wikipedia.org/wiki/Jinja_\(template_engine\)">Jinja</a>, POST and GET requests, and how to email from a Flask application. You'll also walk through the process of building a full-stack application.</p>
<p>For the problem set, you'll put your skills to the test by implementing a full-stack finance application that brings together everything you've learned throughout the course. This is a challenging but rewarding project that will give you a taste of what it's like to build a real-world web application.</p>
<h3 id="heading-week-10-wrap-up-lecture">Week 10: Wrap up lecture</h3>
<p>No exercises this week. There’s a guest lecturer and a wrap up from Prof Malan.</p>
<h3 id="heading-the-final-project">The final project</h3>
<p>The last part of the course is the final project. The brief is to:</p>
<blockquote>
<p>“build something of interest to you, that you solve an actual problem, that you impact your community, or that you change the world.”</p>
</blockquote>
<p>This is deliberately vague, so you have the freedom to choose any programming language and project you like. You'll also have to record a three minute video demoing your app.</p>
<p>I built a baby tracking app. On the backend I developed a REST API with Python and Flask. For my database I used SQLite. On the client side, I used React.js.</p>
<p>This is a substantial piece of work. From conception, to designing my application through to developing the app, I probably spent over 30 hours on this.</p>
<p>Your final project would make a great addition to your personal portfolio so have fun with it! Below are some screenshots of my application.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/My-project.png" alt="screenshots of baby tracking app" width="600" height="400" loading="lazy"></p>
<h2 id="heading-what-are-the-benefits-of-taking-cs50">What Are the Benefits of Taking CS50?</h2>
<ul>
<li><p>The lectures are high quality, in terms of content and production. Professor Malan is animated, enthusiastic, and is very passionate about teaching computer science and programming. The visual examples on the stage and on the interactive screens are helpful for understanding difficult concepts.</p>
</li>
<li><p>The problem sets are well-structured and provide detailed walkthrough videos, specifications, and starter code with comments to help guide you through the tasks. You can also test your code to see if it meets all the requirements before submitting.</p>
</li>
<li><p>Setting up your integrated development environment (IDE) is straightforward, thanks to a modified version of GitHub Codespaces, which allows you to code in the browser.</p>
</li>
<li><p>The <a target="_blank" href="https://manual.cs50.io/">CS50</a> library is a helpful resource with great documentation. The library provides functions such as <code>get_string</code>, which prompts a user for a string in the command line interface (CLI). These functions act like training wheels during the early weeks of the course, helping you to focus on familiarising yourself with the programming language.</p>
</li>
<li><p>For some of the problem sets, there are two options: one for when you're "feeling less comfortable" and one for when you're "feeling more comfortable." This allows you to choose the level of difficulty that is right for you.</p>
</li>
<li><p>The course is structured in a way that builds on your knowledge from previous lectures and problem sets. You'll start with C, a low-level language, and then move on to how to implement the same things in Python and JavaScript later in the course.</p>
</li>
<li><p>There is a large and active online CS50 community on various platforms such as Facebook, Twitter, Discord, and LinkedIn, where you can connect with other students and get help with problem sets and labs.</p>
</li>
<li><p>The course is free and accessible to anyone with a computer and an internet connection.</p>
</li>
</ul>
<h3 id="heading-what-are-the-drawbacks-of-cs50">What are the drawbacks of CS50?</h3>
<p>The course is challenging. It can have a steep learning curve. I found I had to do additional reading around subjects I was not familiar/comfortable with.</p>
<p>Most people don't finish the course, but even if you don't complete it, you can still benefit from what you learn. In the words of Prof Malan:</p>
<blockquote>
<p>“What ultimately matters in this course is not so much where you end up relative to your classmates but where you end up relative to yourself when you begin.”</p>
</blockquote>
<h2 id="heading-summary">Summary</h2>
<p>CS50 is a comprehensive and highly respected course that provides a strong foundation in computer science.</p>
<p>As a self-taught frontend developer with no computer science degree, I found that the course was an excellent way to fill in knowledge gaps and strengthen my understanding of the fundamentals of the field.</p>
<p>The lectures are engaging and well-produced, and the problem sets are challenging but provide a valuable opportunity to apply what you've learned.</p>
<p>The course covers a wide range of topics, making it an excellent introduction to computer science. Overall, it is a standout course and one of the best online learning experiences I've had.</p>
<p>I hope you’ve found this article useful and it’s helped you with making the decision on whether to take CS50.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What is Computer Programming? Defining Software Development. ]]>
                </title>
                <description>
                    <![CDATA[ My five year old son, Ramy, approached me one day while I was working from home and asked, “What are you doing Mama?” “I’m working,” I replied. He looked at my laptop screen and inquired again: “But what are you doing?” I paused and started to think ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/</link>
                <guid isPermaLink="false">66d46093ffe6b1f641b5fa55</guid>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Phoebe Voong-Fadel ]]>
                </dc:creator>
                <pubDate>Thu, 16 Apr 2020 15:38:38 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/03/illustration_cover.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>My five year old son, Ramy, approached me one day while I was working from home and asked, “What are you doing Mama?”</p>
<p>“I’m working,” I replied.</p>
<p>He looked at my laptop screen and inquired again: “But what <em>are you doing</em>?”</p>
<p>I paused and started to think about this. I’m a web developer and I’m programming in JavaScript. How do I explain this to a five year old?</p>
<p>“I write instructions for the computer and the computer does what I tell it to do. This is called programming,” I explained. Ramy looked puzzled.</p>
<p>I continued, “For example, I can give the computer instructions to add two numbers and it will give me the answer.” I wrote a function which added 2 + 2 and showed him the answer on my screen. His eyes lit up.</p>
<p>From that point, I started to think <em>what is programming</em>? What actually happens under the hood? When I first started to learn to code in 2017 on <a target="_blank" href="https://www.freecodecamp.org/">freeCodeCamp</a>, I used the inbuilt code editor on the website and would see the results. However, I didn’t really understand the magic that was going on behind the scenes.</p>
<p>I started doing some research and these were some of the terms I searched for: “What is computer programming? What is software?” There are over 600 million search results on Google for “What is Computer Programming?” It's a bit like going down a rabbit hole – it can be complicated and overwhelming.</p>
<p>I wanted to put together a comprehensive introduction to what computer programming and software development is for beginners. I will start with computer programming and then cover computer programming languages. Then I’ll talk about software and software development. Finally, I’ll move onto the current trends and the future of computer programming.</p>
<p>If you’re thinking about transitioning into the world of programming or are just interested in learning to code, then this will provide you with a general overview, without (too much!) technical jargon.</p>
<p>Just one thing to note: you can use the words “Developer” and “Programmer” to mean someone who writes code.</p>
<h2 id="heading-what-is-computer-programming">What is Computer Programming?</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/illustration_input_output.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>On Wikipedia, the definition of “Computer Programming” is:</p>
<blockquote>
<p><em>“Computer programming is the process of designing and building an executable computer program to accomplish a specific computing result.”</em></p>
</blockquote>
<p>But what does that mean?</p>
<p>A computer itself isn’t smart. Yes they’re powerful and have the potential to carry out tasks much faster than a human. But computers need a human to write instructions and tell them what to do.</p>
<p>Therefore, programming is the process of writing those instructions. We use a programming language to do this. These instructions are translated to a readable format which a computer can understand. The instructions are then carried out by the computer.</p>
<h2 id="heading-programming-how-to-make-a-cup-of-tea">Programming how to make a cup of tea</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/illustration_programming_tea.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Let’s take making a cup of tea as an example. If you were to give instructions on how to make a cup of tea, it would look like the following:</p>
<ol>
<li><p>Boil some water</p>
</li>
<li><p>Pour hot water in a cup with a teabag</p>
</li>
<li><p>Let the tea brew</p>
</li>
<li><p>Remove the teabag</p>
</li>
<li><p>Add milk and/or sugar (if desired)</p>
</li>
</ol>
<p>Simple, right?</p>
<p>What we take for granted is that communication with a human being is different than communicating with a computer. A human has prior knowledge and life experience – they may know where to find the tea. We assume they know that milk is stored in a fridge.</p>
<p>Humans also have intuition. If you can't find a cup you might then search the cupboards instead. There’s also reading people’s non verbal cues like body language.</p>
<p>When it comes to programming, you have to be <strong>very</strong> specific. Continuing with how to make a cup of tea, you might write instructions in <a target="_blank" href="https://en.wikipedia.org/wiki/Pseudocode">pseudo-code</a> like this:</p>
<ol>
<li><p>Go to the kitchen</p>
</li>
<li><p>Locate the kettle</p>
</li>
<li><p>Open the lid of the kettle</p>
</li>
<li><p>Fill the kettle with water</p>
</li>
<li><p>Turn the kettle on</p>
</li>
<li><p>Wait for it to boil to 100 degrees Celsius</p>
</li>
<li><p>Find a cup</p>
</li>
</ol>
<p>And so forth.</p>
<p>What if instructions like the ones above are not enough? You may need to add some <em>logic</em> to account for all scenarios. For example: 2) Locate the kettle. Well, is it an electric kettle or is it a kettle you put on a hob? You’ll need to add a condition that <strong>if</strong> it is an electric kettle, then do xyz. <strong>Otherwise</strong>, do xyz for a kettle that you put on a hob.</p>
<p>Even when you think that you’ve accounted for every possible condition and given very specific instructions, there are things that you may not foresee. You start making your cup of tea and something goes wrong. Oh no! Your kettle stops working after you start boiling it.</p>
<p>What happened? There’s a bug in your code! A bug is an error or flaw in your code which might lead to unexpected results. In order to fix your code, you go through a process of “<a target="_blank" href="https://en.wikipedia.org/wiki/Debugging">debugging</a>”, which is where you find the problems in your code and resolve the issues.</p>
<p>In this case, your instructions didn’t include filling up your kettle to 0.8 litres to cover the heating element. So the kettle switches off as a safety measure.</p>
<p>To prevent errors from happening after you run your program, developers carry out testing and <a target="_blank" href="https://en.wikipedia.org/wiki/Unit_testing">unit-testing</a> on their programs. Unit-testing is where you write tests for parts of your code. The tests either fail or pass.</p>
<p>For example, you write a function which adds two numbers: 1 + 1. You then write a unit test where the expected output is 2. All answers will fail unless it's 2.</p>
<p>You go through your code until everything runs without any unexpected problems. Programming is therefore a detailed oriented and iterative process where you are continuously improving what you have previously written.</p>
<h2 id="heading-how-does-your-computer-understand-your-code">How does your computer understand your code?</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/illustration_low_high_languages.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>What most programmers write as “code” is a <a target="_blank" href="https://en.wikipedia.org/wiki/High-level_programming_language">high level programming language</a>. It is <a target="_blank" href="https://levelup.gitconnected.com/what-is-abstraction-in-programming-2f35c8c72e15">abstract</a> by design. Abstraction in this context means that we are moving further away from machine code and programming languages are closer to spoken languages.</p>
<p>But a computer can’t understand text based code. It needs to be compiled (translated) into <a target="_blank" href="https://en.wikipedia.org/wiki/Machine_code">machine code</a>. Machine code is a set of instructions which can be understood by a computer’s <a target="_blank" href="https://en.wikipedia.org/wiki/Central_processing_unit">central processing unit</a> (CPU). Think of the CPU as the brain of a computer. Machine code is made up of ones and zeros. This is called binary.</p>
<p>For example, this is how you would write “Hello World” in binary:</p>
<p><code>01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100</code></p>
<p>As you can see, binary is not easily readable for humans, so we tend to avoid programming in machine code!</p>
<h2 id="heading-what-exactly-is-a-programming-language">What exactly is a programming language?</h2>
<p>Programming languages fall both within the spectrum of low-level languages, such as assembly, and high level programming languages, such as JavaScript.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/illustration_spoken_programming_lang.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>But what is a programming language exactly? The best analogy I can think of are the spoken languages we use today. All languages express the same idea, but in different ways to another person:</p>
<p>English: Hello</p>
<p>French: Bonjour</p>
<p>Spanish: Hola</p>
<p>Programming languages are different ways of expressing the same idea, but to a computer instead. The following will print out “Hello” in three different programming languages:</p>
<p>JavaScript: <code>alert(“Hello”);</code></p>
<p>Python: <code>print(“Hello”)</code></p>
<p>Perl: <code>print "Hello";</code></p>
<p>Each programming language has its own <a target="_blank" href="https://en.wikipedia.org/wiki/Syntax_\(programming_languages\)">syntax</a>. In English, we have grammar. The same applies to programming languages – they each have their own set of rules.</p>
<h2 id="heading-how-do-you-know-if-a-programming-language-is-a-programming-language">How do you know if a programming language is a programming language?</h2>
<p>This might seem like an odd question to ask. Is all code written in a programming language? Technically, no. For example, there is a misconception that <a target="_blank" href="https://en.wikipedia.org/wiki/HTML">HTML</a> (HyperText Markup Language) is a programming language. It is in fact a “<a target="_blank" href="https://en.wikipedia.org/wiki/Declarative_programming">declarative</a>” language, which according to Wikipedia is:</p>
<blockquote>
<p><em>“...a style of building the structure and elements of computer programs - that expresses the logic of computation without describing its control flow.”</em></p>
</blockquote>
<p>In other words, HTML provides the structure of a web page, but doesn’t control how the website behaves or functions.</p>
<p>You can determine if a language is a programming language by whether it’s “Turing complete”. The <a target="_blank" href="https://en.wikipedia.org/wiki/Turing_machine">Turing Machine</a> is a hypothetical machine described by Alan Turing in 1936. For a programming language to be <a target="_blank" href="https://en.wikipedia.org/wiki/Turing_completeness">Turing complete</a> it needs:</p>
<ol>
<li><p>Conditional branching (which I explore below).</p>
</li>
<li><p>The ability to read and write to an infinite paper tape. This essentially means being able to store data in memory.</p>
</li>
</ol>
<p>I’m not going to explore this topic deeply, but if you are interested this <a target="_blank" href="https://www.youtube.com/watch?v=RPQD7-AOjMI">video</a> is a helpful introduction.</p>
<h2 id="heading-what-are-the-fundamentals-of-a-programming-language">What are the fundamentals of a programming language?</h2>
<p>There are some basic elements which are commonly featured. This includes variables, loops, conditional statements, data structures and algorithms. These are the building blocks of most programming languages.</p>
<h3 id="heading-what-is-a-for-loop">What is a 'for loop'?</h3>
<p>For loops are useful if you have to execute a set of instructions repeatedly. For example, you have afternoon tea and have to make five cups of tea for your guests. In order to make one cup of tea, you have to follow a set of instructions, like my earlier example.</p>
<p>Instead of writing the instructions five times, you can tell the computer to loop through the same instructions five times. This enables you to scale.</p>
<p>Below is an example of a basic <code>for</code> loop:</p>
<pre><code class="lang-js"><span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-number">5</span>; i++) {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Make Tea!"</span>);
}

<span class="hljs-comment">//expected output: </span>
<span class="hljs-string">"Make Tea!"</span>
<span class="hljs-string">"Make Tea!"</span>
<span class="hljs-string">"Make Tea!"</span>
<span class="hljs-string">"Make Tea!"</span>
<span class="hljs-string">"Make Tea!"</span>
</code></pre>
<h3 id="heading-what-is-a-conditional-statement">What is a conditional statement?</h3>
<p>In JavaScript we have <code>if...else</code> conditional statements. These are used when you want to execute different actions based on a condition.</p>
<p>Going back to my earlier example, you ask the user <strong>if</strong> they want milk in their tea. <strong>If</strong> they do want milk, then add milk to tea, <strong>else</strong> do nothing.</p>
<p>Here is an example of an <code>if...else</code> statement in JavaScript:</p>
<pre><code class="lang-js"><span class="hljs-keyword">if</span>(milk == <span class="hljs-literal">true</span>) {
  <span class="hljs-comment">// add milk</span>
  } <span class="hljs-keyword">else</span> {
  <span class="hljs-comment">// don't add milk</span>
}
</code></pre>
<h3 id="heading-what-are-data-structures">What are data structures?</h3>
<blockquote>
<p><em>“A data structure is a way of organizing data so that it can be used effectively...They are essential ingredients in creating fast and powerful algorithms.”</em></p>
</blockquote>
<p>(<a target="_blank" href="https://www.youtube.com/watch?v=RBSGKlAvoiM">Data Structures Easy to Advanced Course, William Fiset</a>)</p>
<p>Common <a target="_blank" href="https://en.wikipedia.org/wiki/Data_structure">data structures</a> that you can find across many programming languages are arrays, objects, tuples, and unions. I’ll take arrays as an example.</p>
<p>In JavaScript, an array can store a range of data such as numbers and strings (text). I love biscuits with my tea so I’m going to store them in my array:</p>
<pre><code class="lang-js">biscuits = [“shortbread”, “digestive”, “ginger nut”];
</code></pre>
<p>These biscuits are stored in the computer’s memory and you, as a developer, can access a specific biscuit by referencing its <a target="_blank" href="https://simple.wikipedia.org/wiki/Array_data_structure">index</a>. You start counting the index from 0. The index is like the biscuit’s position in a biscuit tin. You reference it by using the square bracket notation.</p>
<pre><code class="lang-js">biscuits[<span class="hljs-number">0</span>]; <span class="hljs-comment">// “shortbread”</span>
biscuits[<span class="hljs-number">1</span>]; <span class="hljs-comment">// “digestive”</span>
biscuits[<span class="hljs-number">2</span>]; <span class="hljs-comment">// “ginger nut”</span>
</code></pre>
<p>If you want to get a digestive biscuit, you can access its index position: <code>biscuits[1]</code>. I can easily find it because I know where it’s stored.</p>
<p>Remember that the first item of the array is index 0. So when you refer to index 1, it’s actually the second item of the array.</p>
<p>Therefore, data structures are a way to manage data. This includes storing and retrieving data. It’s more efficient to execute algorithms if data is organised in a data structure.</p>
<h3 id="heading-what-is-an-algorithm">What is an algorithm?</h3>
<p>An <a target="_blank" href="https://simple.wikipedia.org/wiki/Algorithm">algorithm</a> is a specific set of instructions that solves a problem. It’s an abstract concept. Here’s a link to a short video from TED on "<a target="_blank" href="https://youtu.be/6hfOvs8pY1k">What is an Algorithm?</a>".</p>
<p>Remember when we were writing instructions on how to make a cup of tea earlier? That is essentially an algorithm: a set of sequential instructions.</p>
<p>When I wrote my first function in JavaScript, I actually created my first algorithm without knowing it was an algorithm! A function is an implementation of an algorithm.</p>
<p>Just like in real life, there are often multiple solutions for a coding problem. For example, say you’re planning on going to a cafe that you’ve never been to before. There are several ways of getting to your destination. Some routes take longer than others, but ultimately, they all get you to the same place. Ideally you want to pick the quickest, most efficient, and easiest route.</p>
<p>The same principle can be applied to programming. There are usually a few ways to solve a coding problem, and programmers strive to find the most elegant and efficient solution.</p>
<p>Developers often don’t get it right on the first try! Just as I would write a first draft for an article, it’s the same for coding. I would redraft an article several times, where I may change the structure, edit, rewrite sections, and cut out unnecessary sentences. In programming we go through a similar process, and we call this <a target="_blank" href="https://en.wikipedia.org/wiki/Code_refactoring">refactoring</a> our code.</p>
<h2 id="heading-what-are-the-main-programming-languages-used-today-how-many-are-there">What are the main programming languages used today? How many are there?</h2>
<p>There seems to be some debate on the total number of programming languages on the internet. Some websites such as <a target="_blank" href="https://en.wikipedia.org/wiki/List_of_programming_languages">Wikipedia</a> list approximately 700 of “all notable” current and historical programming languages. Other sites such as <a target="_blank" href="https://www.tiobe.com/tiobe-index/programming-languages-definition/#instances">Tiobe</a> track and monitor 250 of the “most popular” languages.</p>
<p>On <a target="_blank" href="https://github.com/">Github</a>, the most popular programming language of 2019 was JavaScript:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/github-most-popular-languages.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Source:</em> <a target="_blank" href="https://octoverse.github.com/#top-languages"><em>https://octoverse.github.com/#top-languages</em></a></p>
<h3 id="heading-why-are-there-so-many-programming-languages-how-have-programming-languages-evolved">Why are there so many programming languages? How have programming languages evolved?</h3>
<p>Different programming languages are developed to satisfy different needs. This is demonstrated throughout the history of programming languages. Please refer to this diagram by O’Reilly which maps out the <a target="_blank" href="https://www.cs.toronto.edu/~gpenn/csc324/PLhistory.pdf">history of programming languages from the 1950s to 2004</a>.</p>
<p>In the mid 1950s, FORTRAN (Formula Translation) was created to work out complex mathematical, statistical, and scientific problems. COBOL (“Common Business Oriented Language”) was created in 1959 to make it easier for businesses to use code. There are some languages which are more suited for doing statistical analysis such as R (1976).</p>
<p>There was the rise of general purpose programming languages from the 1970s onwards, such as C, C++, C# and Java. As you can see in the chart above, general purpose languages dominate the top 10 most popular languages.</p>
<p>JavaScript, created in 1995, is a popular language for the web. It gives websites their interactivity and life.</p>
<p>More recently, we’ve seen the birth of new languages such as Go from Google, which was intended to maintain large software systems more efficiently. We'll probably see even more programming languages created in the future.</p>
<h2 id="heading-compiled-vs-interpreted-programming-languages">Compiled vs. interpreted programming languages</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/illustration_compiled_interpreted.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>As you start to become more familiar with programming languages, you will come across compiled and interpreted programming languages. What is the difference?</p>
<h3 id="heading-what-is-a-compiled-language">What is a compiled language?</h3>
<p>Programming languages such as C, C++, and Java have a “build” process where your code is compiled down to a more readable format (machine language) for the computer.</p>
<p>It might be easier to think of two people who don’t speak the same language, but they have to work together. John speaks English and Chloe speaks French. Chloe writes a set of instructions on how to make a chocolate soufflé in French, but John can’t understand it. They need a translator that can speak both English and French. It’s easier if the translator can translate Chloe’s instructions in advance before they start cooking together.</p>
<p>Instead, developers “speak” a programming language like Java or Python. They need their code to be compiled (translated) to machine language before a program can run so the computer can understand it.</p>
<p>Programs made from a compiled language are easier for a computer to understand, and therefore run very quickly.</p>
<h3 id="heading-what-is-an-interpreted-language">What is an interpreted language?</h3>
<p>JavaScript, PHP, and Python are examples of interpreted programming languages. There’s no build process and the code doesn’t need to be compiled. Your code is being interpreted or read line by line as you run the program.</p>
<p>Back to my analogy of Chloe and John. John writes down a set of instructions on how to make a shepherds pie. The translator doesn’t translate John’s instructions in advance, but instead joins them for their cooking session. The translator translates each line of John’s instructions from English to French as Chloe cooks. Because of this, it takes longer for Chloe to prepare and cook the meal.</p>
<p>Therefore, interpreted languages are slower than compiled languages. They have to be translated on the fly so the computer can understand.</p>
<p>But with <a target="_blank" href="https://blog.sessionstack.com/how-javascript-works-inside-the-v8-engine-5-tips-on-how-to-write-optimized-code-ac089e62b12e">just-in-time</a> (JIT) compilers, interpreted languages are becoming faster and more efficient.</p>
<h2 id="heading-which-programming-languages-should-i-choose-to-learn">Which programming language(s) should I choose to learn?</h2>
<p>Programming languages pretty much do the same thing, but they are just different ways of expressing the same instructions to a computer. Once you've grasped the concepts and fundamentals of one programming language, the learning curve for learning another language won't be as steep.</p>
<p>The programming language you should choose to learn first depends on a number of factors. For example, I wanted to be a web developer, so I chose JavaScript as my primary programming language. Other languages for the web you can learn are PHP and Ruby on Rails.</p>
<p>If you want to become a data scientist, then Python might be an option. Python is considered one of the best data science tools to analyze <a target="_blank" href="https://en.wikipedia.org/wiki/Big_data">big data</a>. I mentioned R earlier, which is another language used widely amongst data scientists and statisticians.</p>
<p>Python is a general purpose programming language, and is also useful to learn if you want to get into the field of Machine Learning and Artificial Intelligence.</p>
<p>If you want to become a Software Engineer then Java could be an option. Java is one of the most popular and in demand languages in the world. It's a versatile language which can be used for developing small to large enterprise software.</p>
<p>So think about what role in tech you would like and what kind of companies you want to work for.</p>
<p>Choosing a programming language also depends on what software you’re trying to build. This leads us nicely to our next section.</p>
<h2 id="heading-what-is-software">What is software?</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/illustration_software_everywhere.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>How many times do you interact with software on a given day?</p>
<p>Software is everywhere. It’s integrated as <a target="_blank" href="https://en.wikipedia.org/wiki/Embedded_system">embedded systems</a> into everyday devices such as your microwave, washing machines, cars, TVs, children’s toys, and remote controls. Then there’s more obvious computer related devices which have <a target="_blank" href="https://en.wikipedia.org/wiki/Application_software">application</a> and/or <a target="_blank" href="https://en.wikipedia.org/wiki/System_software">system</a> software such as tablets, smart phones, laptops, desktop computers, and home assistants like Alexa.</p>
<p>The average person probably interacts with software a few dozen times a day, if not more. It is part of our daily life.</p>
<p>All software is programmed by a developer. Software is agile by nature and can constantly iterate. Software and hardware are intertwined. Imagine your phone without its apps and operating system. The phone would essentially be an expensive brick! Therefore, software gives hardware life and hardware is how we interact with software.</p>
<p>The majority of software that’s created by programmers is written in a high level programming language.</p>
<h3 id="heading-what-is-software-development">What is software development?</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/illustration_software_development.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://en.wikipedia.org/wiki/Software_development">Software development</a> is everything from the conception of an idea to development and deployment. This process, from conceiving an idea to deploying software, is also known as the software life cycle.</p>
<p>There are several stages of the software life cycle: discovery, design, programming/creation, testing, and deployment/execution. It also includes everything else in the software development ecosystem such as maintenance, documentation, and bug fixes.</p>
<p>I won't go into detail here, as the subject of software development warrants its own article.</p>
<h2 id="heading-current-trends-in-software-development-and-computer-programming">Current trends in Software Development and Computer Programming</h2>
<h3 id="heading-artificial-intelligence-and-machine-learning">Artificial Intelligence and Machine Learning</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/illustration_machine_learning.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In recent years you’ve probably heard of terms like artificial intelligence and machine learning. Sometimes they’re used interchangeably, but are they the same?</p>
<p>No, they’re not quite the same thing. Machine learning is where a machine learns through experience. Whereas artificial intelligence is a broader idea that machines can execute tasks intelligently. Machine learning is a subset of Artificial Intelligence.</p>
<h3 id="heading-what-is-artificial-intelligence">What is Artificial intelligence?</h3>
<p>I’ve covered how programming languages work – the programmer writes a set of instructions for the computer to execute. Artificial Intelligence (AI) is a broader concept where computers can mimic the way a brain functions. It’s training a machine to “think” like a human.</p>
<p>The big question is: can you replicate human intelligence in a machine? Can you mimic the way a human learns, reasons, and perceives? Alan Turing asked this question in his article in 1950:</p>
<blockquote>
<p><em>“Can machines think?”</em></p>
</blockquote>
<p>(<a target="_blank" href="https://phil415.pbworks.com/f/TuringComputing.pdf">Computing Machinery and Intelligence</a>, 1950 by Alan Turing)</p>
<p>In Turing’s article he proposed the “Turing test” in which a machine would be classed as “intelligent” if a person could not tell the difference between the responses of a human and the artificially intelligent machine.</p>
<p>After 70 years, AI developers, academics, scientists and researchers are still trying to answer this question and create an artificially intelligent machine. I don’t think we’re there yet. Have you tried having a conversation with Siri or Alexa? Conversations with these two devices are still basic. However, I’m sure it’s just a matter of time before the technology improves.</p>
<p>Companies like <a target="_blank" href="https://deepmind.com/">DeepMind</a> are researching this concept and whether machines are capable of intelligence. DeepMind’s <a target="_blank" href="https://deepmind.com/research/case-studies/alphago-the-story-so-far">AlphaGo</a> program made the headlines when it beat a professional player at Go. This was a huge milestone for AI.</p>
<h3 id="heading-what-is-machine-learning">What is Machine Learning?</h3>
<p><a target="_blank" href="https://en.wikipedia.org/wiki/Machine_learning">Machine learning</a> (ML) is a subset of artificial intelligence. ML is a different way of programming. It is the idea that the computer has the ability to learn without being explicitly programmed. Arthur Samuel first came up with the idea of machine learning in his <a target="_blank" href="https://www.semanticscholar.org/paper/Some-Studies-in-Machine-Learning-Using-the-Game-of-Samuel/e9e6bb5f2a04ae30d8ecc9287f8b702eedd7b772">paper</a> in 1959:</p>
<blockquote>
<p><em>“Programming computers to learn from experience should eventually eliminate the need for much of this detailed programming effort.”</em></p>
</blockquote>
<p>When I was teaching my son how to recognize a cat, I would show him pictures of cats. I did this repeatedly until he was able to recognize a cat without me prompting him.</p>
<p>Machine learning is similar to this. You give your computer a hundred images (input) of cats. It then learns the patterns in the data and builds a classification system through repetition. If you give your computer more images of cats and other animals, it should be able to identify whether the animal in the picture is a cat or not a cat. It has essentially learned what a cat should look like.</p>
<p>ML is giving your computer data and examples, and in turn, it’s able to learn for itself like babies and young children do. Instead of developers giving the instructions to a computer, the computer creates its own set of instructions to follow – machine learning algorithms. Machine learning algorithms is a subset of ML, a concept known as <a target="_blank" href="https://en.wikipedia.org/wiki/Deep_learning">“Deep learning”</a>.</p>
<blockquote>
<p>“AI is one of the most profound things we’re working on as humanity. It’s more profound than fire or electricity...”</p>
</blockquote>
<p>(Sundar Pichai, <a target="_blank" href="https://www.youtube.com/watch?v=sqd516M0Y5A">World Economic Forum</a>, January 2020)</p>
<p>The quote from Sundar Pichai, the CEO of Alphabet Inc, summaries the importance of AI and ML.</p>
<h2 id="heading-what-is-the-future-of-computer-programming">What is the future of computer programming?</h2>
<p>This final section will be my predictions on the future of computer programming.</p>
<p>Developers will continue to create new programming languages. Programming languages will become more abstract and, therefore, accessible to individuals learning to code.</p>
<p>I believe there will be greater importance placed on coding and programming education in primary and secondary school curricula. The demand for developers and programmers will only increase as technology and software becomes ever more integrated in our daily lives. Programming will become ubiquitous.</p>
<p>We will see the continual rise and popularity of ML and AI to assist developers in the software development process. This includes automating testing, along with detecting and preventing vulnerabilities and bugs.</p>
<p>AI will revolutionize all aspects of our society, not just in programming and software development. For example, we’ve seen great strides in the area of AI and self driving cars.</p>
<p>One of the world’s leading companies developing self driving cars is <a target="_blank" href="https://www.tesla.com/">Tesla</a>, founded by Elon Musk. With the supervision of a human driver, a Tesla car can now automatically change lanes, navigate autonomously on limited access freeways, and the owner can summon the car to and from a garage or parking spot. Tesla's goal is to create a fully automated, self driving car without any human supervision.</p>
<p>As machines become more intelligent, we may come to a point where machines surpass the intelligence of human beings. This is referred to as <a target="_blank" href="https://en.wikipedia.org/wiki/Technological_singularity">singularity</a>. It may seem like complete science fiction at the moment! But notable figures such as <a target="_blank" href="https://en.wikipedia.org/wiki/Ray_Kurzweil">Ray Kurzweil</a> predict that machines with human level intelligence will be available within the next 20 years. Kurzweil is known for his accurate predictions of how technologies will progress. He wrote a book on this: <a target="_blank" href="https://en.wikipedia.org/wiki/The_Age_of_Spiritual_Machines">The Age of Spiritual Machines</a>.</p>
<p>How will our society change as a result of super intelligent machines?</p>
<h2 id="heading-final-words">Final words</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/illustration_ending_illustration.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Technology influences and code touches almost every part of our lives. From our choice of entertainment (online games, streaming) and how we shop, to choosing what we eat and even how we date! Code is important and more jobs will shift and require people to have at least some basic understanding of programming.</p>
<p>Yet there are only approximately 23.9 million developers in the world according to the <a target="_blank" href="https://evansdata.com/reports/viewRelease.php?reportID=9">Global Developer Population and Demographic study 2019</a>. To put this in perspective, only <strong>0.3%</strong> of the world’s population knows how to program. As I discussed earlier, our dependency on software and technology is increasing. According to the <a target="_blank" href="https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm#tab-6">US Bureau of Labor statistics</a>, the demand for software engineers is expected to grow by 21% from 2018 to 2028. Therefore, we need to increase the number of developers.</p>
<p>If you’re thinking about becoming a developer, start today. It is an incredibly exciting time to do so! There are many learn-to-code resources online. There are self-paced platforms like <a target="_blank" href="https://www.freecodecamp.org/">freeCodeCamp</a>. There's also a great <a target="_blank" href="https://learntocodewith.me/posts/code-for-free/">post by Laurence Bradford</a> which compiles all the best resources to learn to code for free. Do some research and find out which resource suits your learning style.</p>
<p>If you have any questions or just want to say hello, find me on Twitter <a target="_blank" href="https://twitter.com/PhoebeVF">@PhoebeVF</a>.</p>
<p><em>A special thanks to Katerina Limpitsouni from</em> <a target="_blank" href="https://undraw.co/"><em>Undraw</em></a> <em>for creating the illustrations for this article.</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to approach your first tech job fair ]]>
                </title>
                <description>
                    <![CDATA[ If you’re looking for your first role in tech, going to a tech job fair is a fantastic way to talk to companies directly. Although I’m currently working as a Front-End Web Developer, it was still useful to attend. It made me aware of what skills are ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-approach-your-first-tech-job-fair/</link>
                <guid isPermaLink="false">66d46091677cb8c6c15f316f</guid>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ networking ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Phoebe Voong-Fadel ]]>
                </dc:creator>
                <pubDate>Fri, 24 Jan 2020 16:51:58 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/01/networking.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you’re looking for your first role in tech, going to a tech job fair is a fantastic way to talk to companies directly.</p>
<p>Although I’m currently working as a Front-End Web Developer, it was still useful to attend. It made me aware of what skills are in demand and to see which up and coming tech companies/start-ups are in my local market.</p>
<p>However, I understand that networking at a job fair can be daunting and intimidating. I want to give some advice and actionable tips on how to make the most out of going to a job fair, and hopefully alleviate some fears you may have.</p>
<h2 id="heading-wait-you-have-to-apply-for-a-place">Wait… you have to apply for a place?</h2>
<p>Some job fairs may have a screening process. This usually means that you will have to apply for a place. This is to ensure that candidates have the right balance of skills (Frontend, Backend or Fullstack) and experience (junior, mid-level and senior developers).</p>
<p>So be prepared before you apply. Make sure your LinkedIn profile and CV/resume are up to date. It’s always worth having someone review your CV first. They may ask you to give other relevant information. This could be links to your GitHub account, personal portfolios, and other sites where you showcase your coding projects.</p>
<h2 id="heading-how-do-you-prepare-for-a-tech-job-fair">How do you prepare for a tech job fair?</h2>
<p>There are a few things you can do to make the networking process easier and make the most of the experience:</p>
<h3 id="heading-do-your-research">Do your research.</h3>
<p>Find out which companies are attending and filter the companies you’re interested in. You can learn a lot with a quick internet search!</p>
<p>I did some research on companies through websites like <a target="_blank" href="https://www.glassdoor.com/index.htm">Glassdoor</a>. Don’t worry if they’re not offering any junior/associate roles, as tech companies usually recruit throughout the year. I also found that some companies didn’t advertise their junior web development roles.</p>
<p>During the research stage, make a list of companies you would like to work for. Also it makes you look good to prospective employers if you have some knowledge about their company.</p>
<h3 id="heading-get-your-business-cards-and-copies-of-your-cv-ready">Get your business cards and copies of your CV ready.</h3>
<p>If a company is interested in you, they will take your details and you’ll be added to a mailing list. However, it’s always useful to have some business cards ready.</p>
<h3 id="heading-make-a-plan">Make a plan.</h3>
<p>The job fair I attended had over 200 companies. I cross referenced my list with a map of the companies’ booths so I could approach my preferred companies first. Job fairs can easily become overwhelming, and this will prevent a ‘headless chicken’ approach!</p>
<h2 id="heading-how-do-you-approach-companies-at-a-tech-job-fair">How do you approach companies at a tech job fair?</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/01/make-notes.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-make-a-list-of-questions-to-ask">Make a list of questions to ask.</h3>
<p>If you find networking difficult, it helps if I have a list of questions prepared. Here are some of the questions I asked:</p>
<ul>
<li><p>Are you currently hiring junior developers/software engineers?</p>
</li>
<li><p>Do you offer mentorship to junior developers? How do you support your junior developers?</p>
</li>
<li><p>Do you consider candidates from non-traditional backgrounds?</p>
</li>
<li><p>What’s your stack?</p>
</li>
<li><p>Can you tell me a bit more about your interview process?</p>
</li>
<li><p>Are you family friendly? Do you offer remote working/flexible hours?</p>
</li>
<li><p>Can you tell me a bit more about where the company is going?</p>
</li>
<li><p>What are your core values?</p>
</li>
</ul>
<p>You want to see if you would be the right fit for a company, so try and find out as much as you can. But don’t feel obliged to ask every question on your list. Often a conversation will naturally evolve depending on your answers and what they may ask you. Go with the flow.</p>
<h3 id="heading-set-a-time-limit">Set a time limit.</h3>
<p>The goal of going to a job fair is to talk to as many companies as you can. It’s a numbers game. The more companies you approach, the greater the chance of getting an interview if you have the right skills. Set a time limit on how long to spend with each company so you can move on to the next.</p>
<h3 id="heading-be-polite-and-approachable">Be polite and approachable.</h3>
<p>I’ve read in some studies that you are not only judged on what you say, but also your body language and tone of voice. Just be aware that non verbal communication is important.</p>
<p>Don’t forget to introduce yourself with a brief introduction. Job fairs are loud with a lot of people in a confined space, so speak slowly and clearly. When you have finished your conversation, don’t forget to thank them for their time.</p>
<h3 id="heading-make-notes-as-you-go-along">Make notes as you go along.</h3>
<p>I made notes about the companies I talked to. It’s easy to forget who you spoke to and what you actually talked about. Try to get their contact details or a business card.</p>
<h3 id="heading-take-regular-breaks">Take regular breaks</h3>
<p>You may not realize it, but networking is very tiring. You need to keep up the energy and enthusiasm throughout the day. Pack some drinks and snacks.</p>
<h3 id="heading-be-yourself">Be yourself</h3>
<p>Just try and treat it as a friendly chat. It’s a good opportunity to let your personality shine through.</p>
<h2 id="heading-what-do-you-do-after-the-fair">What do you do after the fair?</h2>
<p>Well done, you’ve survived your first tech job fair! Now it’s time to follow up. If you’ve collected any contact details/business cards, make sure you follow up as soon as possible. Send an email with a few details about yourself including your key skills/experience and links to your CV, LinkedIn profile, and so on.</p>
<p>If you’ve signed up to a company’s mailing list, they will email you within a few days. It helps to have a spreadsheet of the companies you spoke to and include notes.</p>
<p>Even if a company is not currently hiring for your particular skill set and experience, they may be hiring in the future. Make sure you touch base with your contacts as you never know what opportunities may crop up.</p>
<p>Good luck and happy networking!</p>
<p>If you have any questions or just want to say hello, find me on Twitter <a target="_blank" href="https://twitter.com/PhoebeVF">@PhoebeVF</a></p>
<p>Illustrations courtesy of <a target="_blank" href="https://undraw.co/">https://undraw.co</a></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I went from stay-at-home-mum to landing my first web developer job ]]>
                </title>
                <description>
                    <![CDATA[ Two years ago I completed my first exercise on “Say Hello to HTML Elements” on freeCodeCamp (FCC). After two years of self-study, aged 36, I accepted my first job offer as a JavaScript Frontend Developer. I want to share some advice and tips and tell... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-went-from-stay-at-home-mum-to-landing-my-first-web-developer-job/</link>
                <guid isPermaLink="false">66d4608f733861e3a22a7351</guid>
                
                    <category>
                        <![CDATA[ 100DaysOfCode ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Career Change ]]>
                    </category>
                
                    <category>
                        <![CDATA[ coding interview ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Working Mothers ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Phoebe Voong-Fadel ]]>
                </dc:creator>
                <pubDate>Thu, 24 Oct 2019 15:39:57 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/10/phoebe2.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Two years ago I completed my first exercise on “Say Hello to HTML Elements” on <a target="_blank" href="https://www.freecodecamp.org/">freeCodeCamp</a> (FCC). After two years of self-study, aged 36, I accepted my first job offer as a JavaScript Frontend Developer. I want to share some advice and tips and tell how I managed to land my first job.</p>
<p>This is a continuation of my <a target="_blank" href="https://www.freecodecamp.org/news/how-i-went-from-stay-at-home-mum-to-front-end-web-developer-39724046692a/">first article</a>. I wrote this at the end of 2018 and I started freelancing as a Front-end Developer and studying part-time.</p>
<p>To summarise, I’m not from a Computer Science/STEM background. I didn’t go to a coding bootcamp, and I’m self-taught. I’m a stay-at-home mum who learned to code whenever I could. I used self-paced learning tools like FCC. As my children got older, I progressed to learning programming part-time.</p>
<p>The reason for this article is to inspire others from non-traditional backgrounds to learn how to code. That it is possible to transition into the tech industry. I want to share my experience and perspective. I also want to emphasise that it wasn’t all smooth sailing. There were ups and downs, doubts and dark times.</p>
<p>I will go through my coding journey first. Then I will talk about the resources I used to learn how to code. Finally, I'll share tips on how I landed my first web developer job.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/10/undraw_feeling_blue_4b7q.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-january-march-2019-doubt">January - March 2019: Doubt</h3>
<p>As I had two young children, I thought freelancing was a great way to earn extra money while I was studying. I had already started my WordPress freelance portfolio, but I also joined freelancing platforms like Fiverr and Upwork.</p>
<p>I know that these platforms are great for some freelancers, but for me this was a mistake. I couldn’t find any work despite being labelled as “Uprising talent”. I didn’t have ratings/reviews, as I was new. A lot of clients wanted freelancers with experience on their respective platforms. But I couldn’t land the work to get experience/ratings. It was a vicious circle.</p>
<p>There were some clients where I “qualified” to put in a proposal. I would spend hours researching and writing them. I never heard back. In some cases, there were 50+ proposals submitted for a given project. There were also many freelancers who were willing to work for under minimum wage (by UK standards). I couldn’t compete on price.</p>
<p>I started to question my worth and lowered my hourly rate. I thought I just needed to get <em>one</em> rating from a client. The final straw for me was when a company invited me to assist them in some "market research" and to answer a questionnaire. It ended up being a scheme to get freelancers to write fake reviews on Amazon for a product. In exchange, I would get a five star rating.</p>
<p>I declined and shut down all my freelancing accounts. My confidence was knocked. I had serious doubts about my abilities. I started to become negative. I read in forums about how other aspiring web developers couldn’t get interviews/find jobs. Subconsciously, I sought out these stories to justify and feed my negativity.</p>
<p>Worse thing was, I stopped coding and lost sight of what I was trying to achieve.</p>
<h3 id="heading-april-july-2019-stepping-back-and-reassessing-my-life">April - July 2019: Stepping back and reassessing my life</h3>
<p>My husband, who is also my mentor, asked me, “what would make you happy again?”</p>
<p>My response was “learning programming and JavaScript”. So I did what I loved and continued with the FCC curriculum. I also worked on my WordPress freelance business on the side.</p>
<p>In May, an old colleague wanted to hire me to work remotely for a three month part-time contract. It wasn’t tech related but I needed the income so I agreed. It was a great distraction and helped my confidence.</p>
<p>The routine of studying and working lifted my spirits. It took months, but I started feeling positive and motivated again.</p>
<h3 id="heading-august-2019-100daysofcode-challenge">August 2019: #100DaysOfCode challenge</h3>
<p>I was looking for something to keep me focussed and consistent during my coding journey. I went on Twitter for inspiration and found the <a target="_blank" href="https://www.100daysofcode.com/">#100DaysOfCode challenge</a>. You commit to coding for at least one hour a day for 100 days.</p>
<p>I committed to the challenge and I was now accountable to the Twitter community. My goal was to complete all FCC certifications and become a Full Stack Developer. I've completed five out of six certifications so far! It was one of the best decisions I’ve made during my coding journey. I started following other aspiring developers. I watched other people succeed and share their experiences, and support others who were finding it difficult. It was inspiring and kept me motivated.</p>
<p>Instead of using online freelancing platforms, I approached local businesses instead. I got some WordPress side gigs and started getting more referrals. This was a great boost to my confidence.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/10/undraw_resume_1hqp.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-september-october-2019-the-job-hunt">September - October 2019: The job hunt</h3>
<p>My husband said that I was ready to start applying for jobs. In fact, that I’d been ready for months. But I was dragging my feet.</p>
<p>I was in a safe and familiar environment of learning and working on WordPress sites. I knew the job hunt would be arduous and there could be repeated rejections. I was also worried about how the process could affect my mental health. I reached out to others in the community and they all reiterated what husband said to me. “You are ready to start applying for jobs”.</p>
<p>When my son started in Primary School in September, I knew it was the right time to start the job hunt. I took some time to mentally prepare myself and updated my CV. I applied for Frontend Developer roles. I kept a spreadsheet and tracked all my applications.</p>
<p>I applied for four jobs. One directly with a company, three others through an agency. I was prepared to apply for more, but two companies responded. I managed to get a couple of interviews.</p>
<p>I didn’t expect such an immediate response and I took it as a positive sign.</p>
<p>I started preparing for possible interview questions. I split up my preparation into sections: HTML, CSS, JavaScript, accessibility, UI and UX, non tech questions and general questions. I also researched the companies I was being interviewed by.</p>
<h3 id="heading-my-interview-experience">My interview experience</h3>
<p>There was no white-boarding, no solving difficult algorithms on the spot and no trick questions.</p>
<p>The first interview was to get to know me. Employers were actually very intrigued by my non-traditional background. I always thought it would be a hindrance, but in fact it was a talking point.</p>
<p>I got through to the second stage on one job I applied for which was a take home coding exercise. The other interview I was offered the job on the spot.</p>
<p>I decided to accept the role and I'm now a JavaScript Frontend Developer.</p>
<p>I'm surprised by how short the application and interview process was for me. I think it was a combination of the following:</p>
<ol>
<li><p>My experience in my previous career: transferable soft skills I acquired, such as good communication, time management, project management, evidence of completing projects etc.</p>
</li>
<li><p>Other activities I was pursuing outside of learning: freelancing as a WordPress Developer, going to conferences, having a portfolio, blogging and writing articles.</p>
</li>
<li><p>Being interview ready.</p>
</li>
</ol>
<h3 id="heading-the-resources-i-used-to-learn-how-to-code">The resources I used to learn how to code</h3>
<p>I've been asked by many in the community what I used to learn to code. Due to my circumstances of being a stay-at-home-mum, I chose to learn from self-paced online platforms. I needed something remote where I could learn at odd hours of the day. Here are a list of some of the resources I’ve used to learn how to code.</p>
<ol>
<li><a target="_blank" href="https://www.freecodecamp.org/">freeCodeCamp</a> (FCC)</li>
</ol>
<p>I've used FCC from the beginning to the end of my coding journey. It formed the basis of my learning and I always return to it after I branch off to learn a new skill in depth.</p>
<p>Personally, FCC taught me to be independent and learn how to find the answers. The answers aren’t spoon fed and you are required to do your own research to complete the projects. A crucial skill to master. Learning how to search gets easier with time. You'll become very familiar with <a target="_blank" href="https://stackoverflow.com/">Stack Overflow</a>.</p>
<ol start="2">
<li><a target="_blank" href="https://www.udemy.com/">Udemy</a></li>
</ol>
<p>For WordPress I followed a course by <a target="_blank" href="https://www.udemy.com/course/the-complete-wordpress-website-business-course/">Rob Percival and Gregg Davis</a> and one by <a target="_blank" href="https://www.udemy.com/course/become-a-wordpress-developer-php-javascript/">Brad Schiff</a>. For React and Node JS I used courses by <a target="_blank" href="https://www.udemy.com/user/maximilian-schwarzmuller/">Maximillian Schwarzmuller</a>, who’s also part of the Academind team on YouTube.</p>
<p>One thing to bear in mind about follow along project tutorials, is that you must implement what you’re learning throughout the course. Try and apply what you learn to your own projects. This will consolidate what you have learnt.</p>
<ol start="3">
<li>YouTube</li>
</ol>
<p>Here’s some of the channels I’ve tried and tested:</p>
<p><a target="_blank" href="https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ">FCC</a>: I’ve watched a lot of Beau Carnes' videos on JavaScript. But there’s a wide range of videos which covers pretty much anything tech related. From learning Python to GraphQL. The FCC curriculum doesn’t incorporate video tutorials, so this is a good resource to go to.</p>
<p><a target="_blank" href="https://www.youtube.com/user/shiffman/videos?app=desktop">The Coding Train</a>: I used this to understand fundamental JavaScript concepts such as Promises, Async/Await, Prototypes and Higher Order Functions. There’s also some useful videos on regular expressions.</p>
<p><a target="_blank" href="https://www.youtube.com/channel/UCSJbGtTlrDami-tDGPUV9-w">Academind</a> and <a target="_blank" href="https://www.youtube.com/channel/UCyU5wkjgQYGRB0hIHMwm2Sg">LevelUpTuts</a>: Very in depth videos on a wide range of technologies, frameworks and libraries. From the basics progressing to advance tutorials.</p>
<p><a target="_blank" href="https://www.youtube.com/user/currankelleher">Curran Kelleher</a>: I used this channel for learning D3.js.</p>
<ol start="4">
<li><a target="_blank" href="https://www.freecodecamp.org/news/">freeCodeCamp Developer News</a></li>
</ol>
<p>I could be biased but these articles have good content and are checked by the FCC team before publication. Not just useful for programming related subjects, but also some great motivating and career related articles.</p>
<ol start="5">
<li><a target="_blank" href="https://university.mongodb.com/">MongoDB University</a></li>
</ol>
<p>I went on a big tangent over the summer and completed a lot of the free courses with MongoDB University. They take place over three weeks and you must complete the assignments within a timeframe. You are graded and awarded a certification of completion if you pass.</p>
<ol start="6">
<li>Technical Documentation</li>
</ol>
<p>I always try to refer to the official documentation for any API, framework, library, language I’m using. Such as, <a target="_blank" href="https://developer.mozilla.org/en-US/">MDN</a> for JavaScript and <a target="_blank" href="https://www.w3.org/">W3C</a> for HTML.</p>
<ol start="6">
<li><a target="_blank" href="https://egghead.io/">egghead.io</a></li>
</ol>
<p>This is a subscription based video tutorial service covering a breadth of frameworks, libraries, tools and languages.</p>
<ol start="7">
<li><a target="_blank" href="https://www.khanacademy.org">Khan Academy</a></li>
</ol>
<p>You are required to know some basic mathematics when learning JavaScript. I found Khan Academy was useful for this. I took the basic Algebra course. All courses are free and cover a range of subjects.</p>
<p>There are many resources (paid and free) online. Do some research and find the resources that suits your learning style.</p>
<h3 id="heading-here-are-my-top-15-tips-for-approaching-the-job-hunt">Here are my top 15 tips for approaching the job hunt</h3>
<ol>
<li><p><strong>The minimum:</strong> I would strongly suggest having a portfolio, CV/Resume, <a target="_blank" href="https://www.linkedin.com/">LinkedIn</a> account, covering letter, projects/repositories on <a target="_blank" href="https://github.com/">GitHub</a>, showcasing side projects on <a target="_blank" href="https://codepen.io/">CodePen</a> or <a target="_blank" href="https://glitch.com/">Glitch</a>.</p>
</li>
<li><p><strong>Feedback on your CV/Resume:</strong> get someone to review your CV. It always helps to have a fresh pair of eyes.</p>
</li>
<li><p><strong>One page CV/Resume:</strong> Some feedback I got about my CV was changing it from two pages to one page. Recruiters get hundreds of CVs, so you want to get their attention immediately. Long CVs are a definite no. List your technical skills, any relevant experience/side projects you worked on first. If recruiters are interested, they’ll go to your LinkedIn profile for more details.</p>
</li>
<li><p><strong>Let everyone know you’re looking for a job:</strong> Put yourself out there. Sign up and submit your CV to recruitment agencies and job platforms such as <a target="_blank" href="https://www.reedglobal.com/">Reed</a> and <a target="_blank" href="https://www.glassdoor.com/index.htm">Glassdoor</a>. Put in your LinkedIn profile that you’re looking for new opportunities.</p>
</li>
<li><p><strong>Go to recruitment fairs:</strong> There are specialist tech recruitment fairs. An opportunity to bypass the recruitment agencies and speak to the employers directly.</p>
</li>
<li><p><strong>Apply directly to companies:</strong> A tip I got from an insider. A lot of companies don’t advertise their junior developer roles. They are usually inundated with prospective candidates, so approach the companies yourself. This might not yield immediate results, but they’ll have your details on file. Touch base with them once in a while to see if they have any positions opening up.</p>
</li>
<li><p><strong>The commercial experience barrier:</strong> Having “commercial experience” in web development is usually a barrier. Especially for recruitment agencies. I see a requirement for commercial experience even for junior web development roles. But commercial experience doesn’t necessarily mean working for a company. The way I overcame this was to talk about my freelancing work with recruiters. Working with clients for my WordPress sideline business is valid “commercial experience”. I’m usually asked how I landed my first client. The first website I built was for a family member’s business. I did a pay-what-you-want model and they took a chance on me. So utilise your contacts.</p>
</li>
<li><p><strong>Network:</strong> Go to conferences and meetups. Networking is great. I haven’t managed to go to meetups as I have family responsibilities. There’s a great article by <a target="_blank" href="https://www.freecodecamp.org/news/first-meetup/">Jackson Bates</a> about thriving at your first tech meetup. But I’ve been to a few conferences. At some conferences, there might be companies present. Often they’re hoping to recruit developers. Another opportunity to bypass the recruitment agencies and actually talk to the tech companies recruiting. I always go to conferences alone. I do get some anxiety about this, but it encourages me to network and meet new people.</p>
</li>
<li><p><strong>Have a positive online presence:</strong> The feedback I got from one employer was that they were impressed by my positive online presence. A lot of potential employers will try and find you online before they interview you. They want to have some idea of what you’re about. Have a blog and write about things you’re passionate about.</p>
</li>
<li><p><strong>Do the #100DaysOfCode challenge:</strong> Document your journey on Twitter. It’s a good way to see how much you’ve progressed. Also it’s a great way to expand your network. I have “met” so many motivated aspiring developers on Twitter. I get to see how others are doing in their coding journeys and share advice. Also, more experienced developers often comment and offer advice, which is fantastic from a learning perspective.</p>
</li>
<li><p><strong>Have a mentor:</strong> My husband is my main mentor. But I often seek the help of others in the community to get a different perspective. Don’t be afraid to ask. Often people will be happy to give you advice and feedback.</p>
</li>
<li><p><strong>Prepare for technical questions:</strong> There are a lot of articles online and videos on YouTube to help you with the technical questions.</p>
</li>
<li><p><strong>General interview preparation:</strong> Don’t forget to prepare for more general interview questions like “tell me about yourself?”.</p>
</li>
<li><p><strong>Mock interviews:</strong> I know from experience that mock interviews are crucial. Preparing on paper is completely different from actually answering questions in person. Practice and practice some more!</p>
</li>
<li><p><strong>Don’t underestimate/undervalue yourself.</strong> For me this is the most important advice I can give someone. I battle with this on a daily basis. My biggest barrier isn’t my skills, it’s my lack of confidence. Remember, you know more than you think. Don’t talk yourself down, be positive about what you can do and what you have achieved.</p>
</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/10/ian-schneider-TamMbr4okv4-unsplash.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Photo by [Unsplash](https://unsplash.com/@goian?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"&gt;Ian Schneider on &lt;a href="https://unsplash.com/s/photos/passion?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText)</em></p>
<h3 id="heading-final-thoughts">Final thoughts</h3>
<blockquote>
<p>“Grit is passion and perseverance for very long-term goals. Grit is having stamina. Grit is sticking with your future, day in, day out, not just for the week, not just for the month, but for years, and working really hard to make that future a reality. Grit is living life like it's a marathon, not a sprint.”</p>
</blockquote>
<p><em>Angela Lee Duckworth, "Grit: The power of passion and perseverance"</em></p>
<p>This quote by Angela Lee Duckworth, pretty much summarises the last two years of my life.</p>
<p>My coding journey wasn’t a quick sprint, it was a two year marathon. There were ups, downs, tears of sadness and joy. I came close to giving up so many times. But what kept me going was passion and perseverance. Aside from raising children, this is the hardest thing I’ve ever undertaken.</p>
<p>I don’t want to give the impression that the learning stops here, though! It’s essential to keep on learning new skills and evolving, especially in the fast paced world of web development. A new marathon begins as I start my new career. I’m sure the ups and downs will continue, but it’s a road worth taking as I will be doing something I love.</p>
<hr>
<p>If you have any questions or just want to say hello, find me on Twitter <a target="_blank" href="https://twitter.com/PhoebeVF">@PhoebeVF</a></p>
<p>Illustrations courtesy of <a target="_blank" href="https://undraw.co/">https://undraw.co</a></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Host your Static Website with AWS - A Beginner's Guide ]]>
                </title>
                <description>
                    <![CDATA[ When I created my first portfolio last year, I based it on what I had learned from freeCodeCamp (HTML, CSS and a little JavaScript). At that point, I had only viewed my portfolio on localhost by viewing the files on my local computer. I didn’t know a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/a-beginners-guide-on-how-to-host-a-static-site-with-aws/</link>
                <guid isPermaLink="false">66d4608a47a8245f78752a99</guid>
                
                    <category>
                        <![CDATA[ AWS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ dns ]]>
                    </category>
                
                    <category>
                        <![CDATA[ SSL ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Hosting ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Phoebe Voong-Fadel ]]>
                </dc:creator>
                <pubDate>Thu, 08 Aug 2019 11:48:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/08/undraw_blogging_vpvv.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>When I created my first <a target="_blank" href="https://thecodinghamster.com/">portfolio</a> last year, I based it on what I had learned from <a target="_blank" href="https://www.freecodecamp.org/">freeCodeCamp</a> (HTML, CSS and a little JavaScript).</p>
<p>At that point, I had only viewed my portfolio on localhost by viewing the files on my local computer. I didn’t know anything about how to host a website online.</p>
<p>Learning how to host my first website wasn’t easy but it was a great learning experience. If you're an aspiring web developer or just interested in launching your own static website, then I hope you will find this guide useful.</p>
<h4 id="heading-who-is-this-guide-for"><strong>Who is this guide for?</strong></h4>
<p>This guide is aimed at <strong>complete beginners</strong> who want to host a static website (a site with fixed content). I will provide a how-to-guide for the following:</p>
<ol>
<li><p>How to buy a domain.</p>
</li>
<li><p>How to configure your domain for an external hosting provider.</p>
</li>
<li><p>How to host your website with Amazon Web Services (AWS).</p>
</li>
<li><p>How to make your website secure (SSL certification) using Amazon Certification Manager.</p>
</li>
</ol>
<p>There might be some terminology that’s new to you. Please go ahead and look up terms that are not familiar. I’ve put in useful links and explanations where I thought appropriate.</p>
<h4 id="heading-what-is-a-domain-name-and-dns-domain-name-system"><strong>What is a domain name and DNS (Domain Name System)?</strong></h4>
<p>A domain name is your website address. For example thecodinghamster.com. But for a computer, a domain name is actually a series of numbers (an IP address). An IP address looks like this: 123.321.0.1</p>
<p>It’s not easy for us to remember a long string of numbers. So your computer refers to a <strong>DNS</strong> to translate a text based website address into an IP address which it can then understand. A DNS is like a directory.</p>
<p>I watched this great video which explains domain name, DNS and how this works in under five minutes. Please watch the first five minutes of the video if you're interested:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/e2xLV7pCOLI" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<p> </p>
<h3 id="heading-where-can-you-buy-your-domain-name">Where can you buy your domain name?</h3>
<p>You can buy a domain name from a domain name registrar. Prices start from a few dollars. Your domain name is unique. Each domain name registrar offers different levels of services/support. But you can register your domain with any registrar.</p>
<h4 id="heading-what-is-a-hosting-provider"><strong>What is a hosting provider?</strong></h4>
<blockquote>
<p>“An <a target="_blank" href="https://en.wikipedia.org/wiki/Internet_hosting_service">Internet hosting service</a> is a service that runs Internet servers, allowing organizations and individuals to serve content to the Internet. There are various levels of service and various kinds of services offered.”</p>
</blockquote>
<p>When I was looking for a hosting provider for my website, I explored different options. The prices ranged from £2.00 — £5.00 per month with various storage options from 0.5GB to 10GB. The prices seemed reasonable but all I wanted to do was host a static website. It had a few images, HTML, CSS and JavaScript files. No dynamic content.</p>
<h4 id="heading-why-aws"><strong>Why AWS?</strong></h4>
<p>After some further research, I found AWS. AWS offers a <a target="_blank" href="https://aws.amazon.com/free/?nc2=h_ql_pr">free tier option</a>. Essentially, you get lots of free products. Some of them expire after 12 months and others are free in perpetuity. The only cost that you will incur for hosting a static website is the cost of setting up a hosted zone. This cost $0.50 per month. So I went with AWS and set up my account.</p>
<p>The great thing about AWS is the price and it’s a reliable hosting provider. But one thing to bear in mind is that you’re reliant on their documentation. As I started reading about what services AWS offered, it quickly became confusing! I used the official AWS <a target="_blank" href="https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html">guide provided</a> for setting up static websites. But I found myself getting lost with clicking on a link to another link and so forth. I started researching other guides to make up for knowledge gaps.</p>
<p>I found this this excellent <a target="_blank" href="https://victoria.dev/verbose/hosting-your-static-site-with-aws-s3-route-53-and-cloudfront/">guide by Victoria Drake</a>.</p>
<p>I followed Victoria Drake’s guide alongside the AWS one and managed to muddle through. But there were still a few things that were not explained which I hope to flesh out.</p>
<p>Before we proceed, here is your to do list:</p>
<ul>
<li><p>Do some research on domain registrars and buy your domain name.</p>
</li>
<li><p>Sign up for a free account with AWS.</p>
</li>
<li><p>Have both the <a target="_blank" href="https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html">documentation from AWS</a> and <a target="_blank" href="https://victoria.dev/verbose/hosting-your-static-site-with-aws-s3-route-53-and-cloudfront/">Victoria Drake’s guide open</a>. Use my guide to guide you through the documentation (hope that makes sense!).</p>
</li>
</ul>
<p>Here we go!</p>
<h4 id="heading-aws-create-a-hosted-zone-on-route-53"><strong>AWS: Create a Hosted Zone on Route 53.</strong></h4>
<p>Route 53 is where all your DNS requests are handled.</p>
<p>The first thing you must set up is your hosted zone with Route 53. This is really easy if you bought your domain through AWS. A hosted zone is created automatically once you’ve purchase it. If you’ve done this then just skip to the next section (<strong>Set up your S3 Buckets</strong>).</p>
<p>However, if you were like me and bought your domain name via another registrar then please do the following.</p>
<p><strong>This next part is how to create a Hosted Zone on Route 53 if you haven’t bought your domain name from AWS:</strong></p>
<ol>
<li><a target="_blank" href="https://console.aws.amazon.com/route53/home?#hosted-zones:">Go to Route 53</a> in your console and click on “Create Hosted Zone”. Fill in your domain address, comment is optional and choose a “Public Hosted Zone”. Click on “Create”.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/hostedzone1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="2">
<li>Once your hosted zone is created, you need your NS (Name Servers) records:</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/hostedzone2-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="3">
<li>Go to your domain name registrar and login. Depending on your registrar, you should find a section in your settings called "Nameservers" which you can edit. You need to copy across the AWS NS records and change the existing NS records in your domain settings.</li>
</ol>
<p>Please note, don't copy the full stop/period at the end of the NS record. For example, is should be “ns-63.awsdns-07.com”, not “ns-63.awsdns-07.com.”</p>
<p><strong>It will take up to 24 hours to propagate.</strong></p>
<h3 id="heading-set-up-your-s3-buckets"><strong>Set up your S3 Buckets</strong></h3>
<p>In the meantime you can set up your S3 Buckets. The S3 Bucket is the storage for your files such as your index.html.</p>
<p>You must configure two buckets for your website: 1) yourdomainname.com and 2) www.yourdomainname.com.</p>
<p>The first bucket is your main bucket where you will upload all your documents, such as your index.html. The second bucket redirects to the first bucket. To set up your S3 Buckets, please follow the AWS documentation on how to set up your S3 bucket ( <a target="_blank" href="https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html#root-domain-walkthrough-s3-tasks">2: Create and Configure Buckets and Upload Data</a>).</p>
<p>In addition to the documentation, there are a few things to note:</p>
<ul>
<li><p>In section 2.1 (part 2): click on the link <a target="_blank" href="https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html">How Do I Create an S3 Bucket?</a> This is a step by step guide and explain all the settings you need to choose.</p>
</li>
<li><p>In section 2.1 (part 3): you don’t have to upload your website files yet. You can add a test index.html in the meantime.</p>
</li>
</ul>
<p>Take note of your <strong>endpoint</strong>. You can find this in your S3 bucket &gt; “Properties” tab &gt; “Static Web Hosting” box. It should look something like this: http://yourdomainname.com.s3-website.eu-west-2.amazonaws.com</p>
<h3 id="heading-add-the-aliasa-records-in-route-53"><strong>Add the Alias/“A” records in Route 53</strong></h3>
<p>Finally go back to Route 53 and open your hosted zone to set up your Alias records. You can follow <a target="_blank" href="https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html#root-domain-walkthrough-add-arecord-to-hostedzone">the documentation</a> on “Step 3: Add Alias Records for example.com and www.example.com”. It is quite straightforward.</p>
<p>Once the NS settings have propagated, <strong>your site is live</strong>! You’ll be able to visit your site at the domain address e.g. yourdomainname.com</p>
<p>However, please note that it won’t be secure and you’ll see a <strong>http://</strong> prefix in the address bar. I’ll get to that in the next section.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/undraw_security_o890.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-make-your-website-secure-and-what-is-a-ssl-certificate"><strong>How to make your website secure and what is a SSL certificate?</strong></h3>
<p>It’s very important to make your website secure and to do this you’ll need to get an SSL certificate. SSL stands for <a target="_blank" href="https://en.wikipedia.org/wiki/Transport_Layer_Security">Secure Sockets Layer</a> and it uses encryption to securely transfer data between a user and site. Google will also give a rankings boost for websites with HTTPS.</p>
<p>If you secure the website with an SSL certificate, you’ll see <strong>https://</strong> and a padlock symbol in your address bar.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/Screen-Shot-2019-01-19-at-01.05.23.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>There are different types of SSL certificates: <a target="_blank" href="https://en.wikipedia.org/wiki/Extended_Validation_Certificate">Extended Validation Certificate</a> and a <a target="_blank" href="https://en.wikipedia.org/wiki/Domain-validated_certificate">Domain validated certificate</a>. For a personal website or blog, only a domain validated certificate is required. You also won’t see the name of your company on the left of the bar like the example above. You only get this if you have an Extended Validation Certificate which is more for large companies/enterprises.</p>
<h3 id="heading-how-much-does-it-cost-for-an-ssl-certificate"><strong>How much does it cost for an SSL certificate?</strong></h3>
<p>I’ve seen a range of ways of getting an SSL certificate. You can pay a premium for a service that will do this on your behalf or you can do it for free with <a target="_blank" href="https://letsencrypt.org/getting-started/">Let’s Encryp</a>t. Let’s Encrypt is an official Certificate Authority (CA). But you have to renew your certificate every three months and the process is quite complicated.</p>
<p>I didn’t want to pay a premium or want the hassle of renewing every three months. Conveniently, AWS can issue SSL certificates for a <a target="_blank" href="https://aws.amazon.com/certificate-manager/pricing/">very small fee</a>. You pay $0.75 for each certificate issued and it lasts for one year.</p>
<p>If you choose not to go with AWS, make sure you do your research and choose a <a target="_blank" href="https://www.geckoandfly.com/24460/free-trusted-ssl-certificate/">trusted CA</a>!</p>
<h3 id="heading-how-do-you-get-an-ssl-certificate-with-aws"><strong>How do you get an SSL certificate with AWS?</strong></h3>
<p>Log into your AWS console and navigate to the <a target="_blank" href="https://aws.amazon.com/certificate-manager/">AWS Certificate Manager</a> (ACM).</p>
<p><strong>Make sure you change the region from the default (Ohio) to N. Virginia.</strong> This is not explicit in the guides and only the N. Virginia region can issue certificates. I learned the hard way and wasted a lot of time!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/Screen-Shot-2019-01-19-at-01.23.52.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then click on “Get Started” under “Provision Certificates”.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/Screen-Shot-2019-01-18-at-14.55.14.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Follow the <a target="_blank" href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html">documentation with AWS</a> (“Requesting a public certificate using the console”) and use <a target="_blank" href="https://vickylai.com/verbose/hosting-your-static-site-with-aws-s3-route-53-and-cloudfront/">Victoria Drake’s guide</a> (under “SSL certificate”).</p>
<p><strong>In addition to the guides</strong> there are few things that weren’t fully explained:</p>
<ul>
<li><p>You’ll need to <strong>validate your domain ownership</strong> by email or directly with DNS. I would suggest to always verify ownership by <a target="_blank" href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html"><strong>DNS validation</strong></a>.</p>
</li>
<li><p>Once you’ve requested your certificate you’ll get something like this (except the status will be pending). Click on the “Export DNS Configuration file”:</p>
</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/acm.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>It’s an Excel spreadsheet which will contain something like this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/Screen-Shot-2019-01-18-at-15.28.11.png" alt="Image" width="600" height="400" loading="lazy"></p>
<ul>
<li><p>You’ll need to add these records to your DNS settings with your registrar. Log in and go to DNS settings. The interface varies with different registrars but you’re looking for your Host records under your DNS settings.</p>
</li>
<li><p>Click on “Add Record” &gt; record type is <strong>CNAME</strong>:</p>
</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/Screen-Shot-2019-01-18-at-15.48.11.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You need to add two records: 1) Hostname should be “@” and Target Name should be the Record value from the DNS configuration file.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/Screen-Shot-2019-01-18-at-16.01.07.png" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="2">
<li>Hostname should be * (asterisk) and Target Name should be the Record value from the DNS configuration file.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/Screen-Shot-2019-01-18-at-16.01.31.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want more information about the CNAME and record types, I found this <a target="_blank" href="https://help.hover.com/hc/en-us/articles/217282457-How-to-Edit-DNS-records-A-AAAA-CNAME-MX-TXT-SRV-">helpful article</a>.</p>
<p>It's quite long, but I've pulled out the useful part:</p>
<blockquote>
<p>“Note: Hostname refers to the prefix before the domain name. To create a Blank record, use an @ in the Hostname field. This represents an empty prefix (so the name exactly matches the domain name; for example divapirate.com). The @ hostname is also referred to as the the root of the domain. An * (asterisk) in the Hostname is a wildcard, and represents any prefix. For example, creating a record for *.divapirate.com will point .divapirate.com at the IP address provided.”</p>
</blockquote>
<p>You just need to wait for the verification. For me, this took about an hour.</p>
<h3 id="heading-how-do-you-add-your-ssl-certificate"><strong>How do you add your SSL certificate?</strong></h3>
<p>With AWS you can add SSL certificate to your website through setting up <a target="_blank" href="https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-cloudfront-walkthrough.html"><strong>CloudFront</strong></a>. CloudFront is great for speeding up your website. I used the <a target="_blank" href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html">AWS documentation</a> and <a target="_blank" href="https://victoria.dev/verbose/hosting-your-static-site-with-aws-s3-route-53-and-cloudfront/">Victoria Drake’s guide</a> (look out for her useful tips).</p>
<p>Please note, when you create your CloudFront distribution, there’s a drop down menu to add your SSL certificate. If you have been issued with an SSL certificate already, it will be pre-populated in the drop down menu.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/Screen-Shot-2019-01-19-at-01.36.02-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Your state in your CloudFront dashboard should changed to “Enabled”. This isn’t instant and takes a little time.</p>
<h3 id="heading-almost-there"><strong>Almost there…</strong></h3>
<p>Finally, you need to get your <strong>Domain Name</strong> from the CloudFront distribution. It should be something like this dsfdser83543.<strong>cloudfront.net</strong>.</p>
<p>Go back to Route 53 &gt; hosted zone &gt; change both Alias records (Alias Target) to the CloudFront Domain Name.</p>
<p>Voila! You have hosted your first <strong>secure static website</strong> with AWS.</p>
<hr>
<p>Hope you found this useful. If you have any questions or just want to say hello, find me on Twitter <a target="_blank" href="https://twitter.com/PhoebeVF">@PhoebeVF</a></p>
<p>A big thank you to Victoria Drake for her guide. For a more advanced tutorial on this topic, please check out Victoria's article: <a target="_blank" href="https://victoria.dev/verbose/hosting-your-static-site-with-aws-s3-route-53-and-cloudfront/">"Hosting your static site with AWS S3, Route 53, and CloudFront"</a>.</p>
<p>Illustrations courtesy of <a target="_blank" href="https://undraw.co/">https://undraw.co</a></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I went from stay-at-home mum to Front-end Web Developer ]]>
                </title>
                <description>
                    <![CDATA[ I thought about writing about my personal coding journey many times, but never had the courage to do so. I was dismissive and thought: “Why would anyone want to read this?” Developers come from all walks of life. However, I want to talk about learnin... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-went-from-stay-at-home-mum-to-front-end-web-developer-39724046692a/</link>
                <guid isPermaLink="false">66d4608ef855545810e934b5</guid>
                
                    <category>
                        <![CDATA[ Working Mothers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ children ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Phoebe Voong-Fadel ]]>
                </dc:creator>
                <pubDate>Fri, 14 Dec 2018 17:46:15 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*JglCM8Gsb0Z1qn5bt0h18w.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>I thought about writing about my personal coding journey many times, but never had the courage to do so. I was dismissive and thought: “Why would anyone want to read this?”</p>
<p>Developers come from all walks of life. However, I want to talk about learning to code with young children, and the challenges of juggling parenting and studying.</p>
<h4 id="heading-my-background">My background</h4>
<p>I’m not a conventional candidate for becoming a web developer. I went down a humanities route and I have no computer science background. I fell into a career in Higher Education and for over a decade I moved up the ranks in administration. I enjoyed my work but wasn’t fulfilled by my career choice.</p>
<p>About seven years ago in search for a new career path, I sought advice to get into a more technical role. So I started learning the web fundamentals like HTML and CSS. My first attempt at coding was half-hearted. Fear was the main reason. I feared that the transition would take too long. I also got distracted by my upcoming wedding.</p>
<h4 id="heading-6-years-laterone-husband-a-flat-and-two-babies-under-two">6 years later…one husband, a flat, and two babies under two!</h4>
<p>I had my first baby in January 2015. In a nutshell, having my son was a shock to the system and completely turned my world upside down. The sleep deprivation felt like torture and I had difficulty with breastfeeding. I was in a zombie state for the first six months.</p>
<p>As things started to settle down, I found out that I was pregnant…again. This was during my first week back at work! My daughter was born in September 2016. Now I had two babies under twenty months!</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/r2hdpBO7qL3ERzMwH9zdUh5Z0BzShTOt75ka" alt="Image" width="800" height="555" loading="lazy"></p>
<h4 id="heading-realization-motivation-and-career-change">Realization, motivation and career change</h4>
<p>By mid 2017 at the age of 34, I decided to leave my job. I did this for two reasons. It was no longer financially viable for me to work and have my children in childcare. It was difficult to work full-time, while looking after two young children with a husband who worked away a lot.</p>
<p>The thoughts I had seven years earlier never went away. I could wait until the children were older and start to look for part-time work, or to finally pursue a job in tech. My husband, who already works in the tech industry, gave me the same advice.</p>
<p>Learn the fundamentals: HTML, CSS and JavaScript. With a combination of these three skill sets I knew I could become a front-end developer.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/oTLEWe6dQeNE2y7nWJhSaUKwdpoZ3Utx0xgR" alt="Image" width="800" height="532" loading="lazy"></p>
<h4 id="heading-freecodecamp-and-the-start-of-my-coding-journey">freeCodeCamp and the start of my coding journey</h4>
<p>I researched which online learning platform I should follow. I read good things about <a target="_blank" href="https://www.freecodecamp.org/">freeCodeCamp</a>. I also liked the structure of the curriculum. It was suitable for anyone with zero programming experience.</p>
<p>When I started, it was very satisfying seeing my code render in the preview pane! I thought to myself, “this isn’t so bad, I can do this”. I remember the first time I got stuck.</p>
<p>It was on a <code>&lt;div&gt;</code> tag. I read in the exercise instructions: “The div element is probably the most commonly used HTML element of all.” I didn’t understand why you would nest a <code>&lt;div&gt;</code> in a <code>&lt;div&gt;</code>?!</p>
<p>My husband said “Google is your friend” and so I started researching to understand what a <code>&lt;div&gt;</code> was.</p>
<p>It wasn’t easy. I had not studied for over 13 years and I was also going into a subject area that was so far removed from anything I had learned before. Early on, I had a lot of self-doubt and feared that I couldn’t learn to program. But as time went by, the process of learning programming got easier. I worked hard and persevered.</p>
<p>Although the curriculum became more difficult, I got more used to feeling uncomfortable.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/U5I9Kg3fYgqzCZEebeITYFsIaUqbL6oDzltX" alt="Image" width="800" height="600" loading="lazy"></p>
<p><em>A typical evening of multitasking! Putting my daughter to sleep and doing the chores.</em></p>
<h4 id="heading-the-challenges-of-learning-how-to-code-with-children">The challenges of learning how to code with children</h4>
<p>Being a parent is a “job” that never stops. It’s the most demanding role I’ve ever had! I have to be the best chef, entertainer, housekeeper, singer, nurse, nurturer, errand runner, teacher and storyteller… the list goes on. Even when my children are asleep, I’m on standby, ready to drop everything to tend their needs.</p>
<p>With that in mind, finding time to code was the biggest challenge. My husband worked away and for the most of the week I was in charge of two toddlers. It was exhausting! At the beginning I could only code after they were asleep.</p>
<p>A typical day with children would start at 6 am and last until 8 pm. It would be about 9 pm before I could sit down, open my laptop and start coding. Even though I felt tired, when I started to code I felt revitalized by it.</p>
<p>Some evenings were better than others. Depending on the needs of my children, I managed to study anywhere between 30 minutes and three hours before bed. Quite often, I wasn’t able to study at all.</p>
<p>Bear with me, it does get better.</p>
<p>Eventually, coding became part of my routine. I studied more on days when my children were in nursery. On my “free” days, I structured my day like so:</p>
<p>6 am: Breakfast, time with the children<br>9 am: Studying<br>12 pm: Lunch and housework<br>1 pm: Continue studying<br>3 pm: Cook, more housework and pick up children<br>9 pm: Study some more<br>10/11 pm: sleep</p>
<p>When you have children, illness is inevitable. But no-one told me how often babies get sick! It was a big disruption to my coding journey. Here’s an example.</p>
<p>During the winter of 2017, my daughter got the flu and my son soon after. It took two weeks for them to recover. As I finally relaxed and was no longer in “survival mode”, my husband and I got sick. I wasn’t able to study for over a month.</p>
<p>I learned to be prepared for disruptions like this and not allow it to have a major impact on my motivation. I would try to get back to studying as soon as possible. I started off with short periods of coding and built it up once I got back into the flow.</p>
<p>I tried to keep to a routine as much as possible. It wasn’t only important for me, but also my children. For example, this meant having to stop studying in the middle of solving an exercise to pick up my children. Not coding into the early hours of the morning so I could be ready for my children the next day.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/U1uVaNlhGVfmcz8lFISB9Rs7hWyC1kzQQ5W8" alt="Image" width="800" height="668" loading="lazy"></p>
<p>_Photo by [Unsplash](https://unsplash.com/photos/4qIawjLB0aY?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" rel="noopener" target="_blank" title=""&gt;rawpixel on &lt;a href="https://unsplash.com/search/photos/lesson?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" rel="noopener" target="<em>blank" title=")</em></p>
<h4 id="heading-lessons-learned">Lessons Learned</h4>
<p>I was asked recently what are the most important things I have learned on my coding journey. I’ve listed my top tips. Some of them are specific to parents, but I’m sure they would still be useful to any non-parents!</p>
<ol>
<li><p><strong>Anyone can learn to code:</strong> no matter what your background, if you have the interest and motivation, you can learn to code. There are so many resources online that cater to all levels of knowledge. All you need is access to a computer and time to learn. Practice makes perfect!</p>
</li>
<li><p><strong>Code every day:</strong> a tip I picked up from <a target="_blank" href="https://twitter.com/@ossia">Quincy</a> from freeCodeCamp, but it’s so important! I try to stick to this but don’t beat yourself up if you don’t manage to. The unpredictable nature of children meant that this wasn’t always possible for me. I tried to adapt my coding life around my responsibilities and commitments. Learning how to be flexible was key.</p>
</li>
<li><p><strong>Don’t wear yourself down:</strong> try to have some time to relax and switch off from studying. I try to go to the gym.</p>
</li>
<li><p><strong>Multitasking:</strong> The days when my children are in nursery, I group all my housework to that time. I would code while the laundry was washing. Watch a coding related video on YouTube or listen to a podcast while I was cleaning or cooking. I also cook meals in bulk and freeze them to free up more time during the weekend.</p>
</li>
<li><p><strong>Learn to manage your fear:</strong> Don’t allow your negativity to consume you. At some point in your coding journey you’re going to feel self-doubt. Everyone has their own coping mechanisms. Personally, the more I studied and practiced, the more I grew in confidence.</p>
</li>
<li><p><strong>Learning how to research:</strong> this is an important skill to master. At the beginning I found it difficult to search for the correct key words to help me with my tasks. Again, it’s all about practice. The more you search online, the better you’ll become. Remember to bookmark useful sites.</p>
</li>
<li><p><strong>Don’t get overwhelmed:</strong> it’s good to think about where your coding journey will take you. But don’t let it overwhelm you. Think of your knowledge as a bell curve. In the middle of the graph where it peaks, you’ll know two languages or frameworks very well. As it tapers off, your knowledge on other subjects will not be as extensive. It’s always good to be aware of new technologies and trends, but it doesn’t mean you have to be an expert!</p>
</li>
<li><p><strong>Build a portfolio:</strong> you can still build a good portfolio without “work” experience. My portfolio consists of projects from freeCodeCamp. You don’t even need to setup your own environment and can use online resources like <a target="_blank" href="https://codepen.io/">CodePen</a> to demo your code.</p>
</li>
<li><p><strong>Version Control:</strong> learn how to use <a target="_blank" href="https://git-scm.com/">Git</a> and <a target="_blank" href="https://github.com/">GitHub</a>. As you start to do more complex projects, you’ll need to use an IDE (integrated development environment). I use <a target="_blank" href="https://atom.io/">Atom</a> but don’t focus too much on the tool. Choose one and become good at using it! Start creating repositories and committing your code to Github.</p>
</li>
<li><p><strong>Code review:</strong> it’s important to find someone to help you code review your projects. It was difficult for me do this at the beginning. But ultimately, it will lead you to become a better programmer. You’ll learn a lot by reviewing other people’s code as well.</p>
</li>
<li><p><strong>Never stop learning:</strong> another thing people ask me is when I’ll stop studying. My answer is never. There is so much innovation in web development. I want to be aware of the latest updates and the “must have skills”.</p>
</li>
</ol>
<h4 id="heading-where-i-am-now">Where I am now</h4>
<p>I have been learning and coding for about a year, part time. I’ve completed three out of six certificates from freeCodeCamp.</p>
<p>I am now freelancing as a web developer and I have built two commercial websites. One for a client and my portfolio. I have one client I’m working with now to redesign and build their website. I’m also continuing my studies with freeCodeCamp and other platforms such as <a target="_blank" href="https://www.udemy.com/">Udemy</a>.</p>
<h4 id="heading-final-thoughts">Final thoughts</h4>
<p>Some people asked why I did a career change with children and not before when I had more time. This is the irony: I didn’t appreciate or realize how important time was. I was also complacent and scared of taking the plunge before children. I want to be a good example for my children and have a career which I’m passionate about.</p>
<p>When I became a parent, I felt like my sole purpose was to be a mother and I had lost my own identity in the process. When I started studying again, it gave me a purpose outside of parenting. I didn’t have to be a coder or mum, I could be both.</p>
<p>If you have any questions or just want to say hello, find me on Twitter <a target="_blank" href="https://twitter.com/PhoebeVF">@PhoebeVF</a></p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
