<?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[ teaching - 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[ teaching - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Wed, 26 Aug 2026 10:17:38 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/teaching/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Why Developers Should Have a YouTube Channel ]]>
                </title>
                <description>
                    <![CDATA[ By Nishant Kumar If you're a software developer, chances are you'll be learning constantly. There is a famous quote that says, “Forget about the kids, fathers are still learning”. This couldn't be more true in the case of coding. You constantly nee... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/why-developers-should-have-a-youtube-channel/</link>
                <guid isPermaLink="false">66d4607a230dff016690583b</guid>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ videos ]]>
                    </category>
                
                    <category>
                        <![CDATA[ youtube ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 20 Sep 2022 16:14:20 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/09/Why-developers-should-have-a--1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Nishant Kumar</p>
<p>If you're a software developer, chances are you'll be learning constantly. There is a famous quote that says,</p>
<blockquote>
<p><em>“Forget about the kids, fathers are still learning”.</em></p>
</blockquote>
<p>This couldn't be more true in the case of coding. You constantly need to learn, develop, and upgrade your skills. And what is a better way to do that other than starting your own YouTube channel and making videos related to the Computer Programming field?</p>
<p>In this article, I'll explain all the benefits of having a software-related YouTube channel.</p>
<h2 id="heading-it-helps-you-learn-things-more-efficiently">It Helps You Learn Things More Efficiently</h2>
<p>The first point on our list is that creating videos (like writing tutorials) can help you learn things quicker and more efficiently.</p>
<p>Let’s take an example of some topic, like <strong>Recursion</strong>. You can read about it in a book, or in a tutorial on the internet. That’s simple, but you might forget what you learned later.</p>
<p>But when you make a video on that topic, you are teaching it. And to teach certain topics, you'll need to research them quite a bit.</p>
<p>If you are about to teach <strong>Recursion</strong> to a bunch of people, you will watch videos and learn about it in depth. This helps you make sure that you don't leave anything out about that topic. </p>
<p>Then you will create some code examples so people can code along with you at home, and add an explanation about what’s happening in the code in your own voice.</p>
<p>This will boost your learning curve by 200%, or even more. After all, you know what they say – to really know something, try teaching it.</p>
<h2 id="heading-it-can-help-you-get-a-well-paying-developer-job">It Can Help You Get a Well-Paying Developer Job</h2>
<p>Now, let’s say you are searching for a <strong>React</strong> or <strong>Angular</strong> job. You've applied for them through job posting sites. The recruiter contacted you saying they want to move forward with your application, and scheduled an interview tomorrow.</p>
<p>The interview starts. The interviewer asked you to give your introduction. You say I am Nishant, from XYZ Place, looking for an ABC job, and all the other things. The recruiter is looking at your résumé and your portfolio while you are introducing yourself. They see that you have a Youtube Channel, so they ask you about it.</p>
<p>You then tell them about your channel and the sorts of topics you teach there. You explain that you make the tutorial videos, and do all the other things that you do. This will likely impress the recruiter. So what do you think they will do next?</p>
<p>Well, they'll likely email you informing you that they're going to transfer you to the next round of the interview. Who do you think will be happy now after seeing his email? You will!</p>
<p>But the catch is, your videos should be related to pure software development. Focus on topics around coding, programming languages, tools and frameworks. This will broaden your own knowledge and show that you can work efficiently with these tools.</p>
<h2 id="heading-it-can-help-grow-your-network-and-online-presence">It Can Help Grow Your Network and Online Presence</h2>
<p>Making videos also enables you to build and grow your network. You can have a <strong>LinkedIn</strong> account where you can share posts about the topics you've covered in your videos, or playlists in some language like JavaScript or tool like React. </p>
<p>Sooner or later people will start to notice this and they will start following you. You will connect with recruiters from big companies, and that can help you one day. </p>
<p>You will also see other people on Youtube doing the same, and you will follow them. You will see what those other people are doing and it will be an inspiration for you. </p>
<p>The same is true on <strong>Twitter</strong> as well. Let's say you contribute videos on <strong>freeCodeCamp's</strong> channel. They publish it on their website as a transcript, and share it on social media channels like Twitter and Linkedin. People following freeCodeCamp will notice this and that too can help grow your network. People will share it, like it, retweet it, and so on.</p>
<h2 id="heading-it-helps-improve-your-soft-skills-like-communication-and-confidence">It Helps Improve Your Soft Skills like Communication and Confidence</h2>
<p>So if you make videos, it can really help improve the following skills:</p>
<ol>
<li>Communication: If you are making videos, you have to speak. You have to tell the audience what's going on. And day by day, it will help you speak more clearly, eloquently, and engagingly. And communication skills are a pretty good skill to have out there.</li>
<li>Confidence: You are making videos on some topic, say Recursion in JavaScript, or Promises even. You may find it hard to explain the topic at first go – but if you keep doing it, you will improve over time. The better you get at explaining things, the more confident you will get about your teaching abilities.</li>
<li>Multi-tasking: Creating videos is not easy. You need to manage the time you put in. You will record videos on your own, then edit them on your own, and post them to Youtube. And all of these parts of the process require effort. If you are managing all this, your multi-tasking skills will improve.</li>
</ol>
<p>I have been creating videos on my channel for a year. I mainly deal with tutorial-based and conceptual topics. Make sure to check out my channel <a target="_blank" href="https://www.youtube.com/c/CybernaticoByNishant">Cybernatico</a>. It has helped me a lot in improving my confidence and communication skills.</p>
<p>And if your soft skills are good, they will also help you in other things in the world as well, like public speaking, or mentoring others, or facing any enemy.</p>
<h2 id="heading-you-can-use-your-channel-to-generate-a-side-income">You can Use Your Channel to Generate a Side Income</h2>
<p>Creating videos on Youtube can help generate some side income as well. It will take effort at first, but nothing good comes out for free. </p>
<p>You will need to get monetized first. There are two steps to get monetized on youtube – two thresholds you need to pass:</p>
<ol>
<li>You need 1000 subscribers.</li>
<li>You need 4000 watch hours. One watch hour is equal to the one real hour.</li>
</ol>
<p>That alone is not simple, and you'll need to get their first (to get monetized). It can take years or maybe more. But you'll need consistency.</p>
<p>YouTube income generation works like this: you will be paid approximately a dollar per view, if the person saw ads on your video. You will need an Adsense account that will pay you for ads in your video (after YouTube monetizes your channel). </p>
<p>The income you get at first won't be much, but eventually it will grow. All you need to do is to <strong>create quality content with consistency</strong>. </p>
<p>You can then use that side income to buy things you've always wanted, like a car, a Helicopter, or even an Airplane. :)</p>
<p>But remember, it will take effort. It won’t be easy.</p>
<h2 id="heading-it-will-bring-a-smile-to-your-face">It will bring a smile to your face</h2>
<p>So you are making videos, and suppose someone sees it. They might comment something like this,</p>
<blockquote>
<p><em>Oh my God, I just saw your video on XYZ topic. I have been struggling with this and couldn’t find any solution that helped me, but this video helped me sure. Thank you for the video. Love from America.</em></p>
</blockquote>
<p>Now, what will be your thoughts after reading this comment? I am sure you will smile and your heart will bloom.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>And those are some reasons why you should have a software YouTube channel if you are a developer. </p>
<p>Don’t worry that your content might be repetitive. What I explained in my video or what you explained in your video can be very different. A person learning the topic may not benefit from my video, but they may benefit from yours, because of how we explain things.</p>
<p>There can be thousands of creators, but there will be millions of people who are learning. And creators can learn from each other as well.</p>
<p>So that’s it. Make sure to check out my video on the topic <a target="_blank" href="https://youtu.be/99EjPNerWLk">Content Creation for Developers — Why Developers Should Have a Youtube Channel</a></p>
<blockquote>
<p><em>Thanks for reading this blog. Happy Learning and Creating.</em></p>
</blockquote>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What I Learned Teaching 20 High School Girls How to Code ]]>
                </title>
                <description>
                    <![CDATA[ On day 1, they barely knew what a float was. On day 14, they had programmed a game of minesweeper, a cipher decoder, or a zombie apocalypse simulation. And I helped teach them how to do it. Each summer, MIT hosts a program called WTP, or Women's Tech... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-i-learned-teaching-20-hs-girls-to-code/</link>
                <guid isPermaLink="false">66b0c4587abc6e46174eea11</guid>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Kylie Ying ]]>
                </dc:creator>
                <pubDate>Wed, 14 Sep 2022 14:46:14 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/09/pexels-pixabay-207691.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>On day 1, they barely knew what a <em>float</em> was. On day 14, they had programmed a game of minesweeper, a cipher decoder, or a zombie apocalypse simulation. And I helped teach them how to do it.</p>
<p>Each summer, MIT hosts a program called WTP, or Women's Technology Program. </p>
<p>In the program's own words, its goal is:</p>
<blockquote>
<p>"to spark interest in the future study of engineering and computer science among high school rising seniors". </p>
</blockquote>
<p>The program fosters a collaborative, women-focused community for those who have not had opportunities to explore engineering and technology.</p>
<p>This year, I had the privilege of being the Computer Science Instructor for the EECS (Electrical Engineering and Computer Science) track of WTP. This meant I would be teaching 20 high school girls how to code – none of whom had any prior exposure to programming.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-362.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In two short weeks, I, along with four brilliant tutors from MIT, would teach them the foundations of programming in Python: data types, variables, conditionals, loops, functions, classes, and even inheritance. The last week of the program would be reserved for working on a programming project of their choice, putting their new skills to the test.</p>
<p>As the instructor, I spent over a month preparing the materials for the class. During the course (no pun intended) of the class, I spent three hours a day running lectures and one hour a day running office hours for the students. Here's what I learned along the way:</p>
<h2 id="heading-1-anyone-can-learn-to-code">1) Anyone Can Learn to Code</h2>
<p>Yes, anyone.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-366.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>On day 1, I handed everyone a Python cheat sheet. They looked at it with horror and intimidation (I will admit, the formatting was a little scary). But by day 8, we discussed the cheat sheet and the general consensus was that they understood almost everything!</p>
<p>The girls I taught came from all over the country, all with varying backgrounds and access to resources. By the end of the class, all the students felt like they understood the basics and simply needed more repetition.</p>
<p>Perhaps some students with more access to math and science resources grasped concepts <em>faster</em>, but those without the same background were still able to understand those topics eventually. It <em>did</em> take extra work.</p>
<p>These students often sought extra help with assignments, or voluntarily spent their time reviewing additional problems. Nonetheless, at the end of the day, they were able to complete the same tasks and projects as their accelerated peers.</p>
<h2 id="heading-2-community-matters">2) Community Matters</h2>
<p>When you learn with other people, it makes all the difference. A supportive, inviting community can help you answer questions, explain a concept from a different perspective, and remind you that the road ahead is tough, but you are all in this together.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-368.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Often, my students formed their own problem-solving groups to discuss approaches tackling different assignments. In fact, this collaboration is encouraged by MIT policies. </p>
<p>In these groups, when you discuss different solutions and weigh the pros and the cons of each solution, you are exposing yourself to new ideas and new concepts.</p>
<p>Ultimately, these will build problem-solving skills. At the core of programming, is problem-solving.</p>
<p>WTP created a unique community of supportive women, led by women in STEM. I noticed that the key to building a supportive and welcoming community is patience, understanding, and open dialogue–ensuring that nobody feels alienated, ridiculed, or belittled.</p>
<h2 id="heading-3-coding-takes-practice">3) Coding Takes Practice</h2>
<p>At the beginning of the course, I asked my students if anyone knew or was learning another language. Ten hands went up. Then, I asked my students if they could write a book in that language. No hands were in the air.</p>
<p>Learning a programming language is much like learning any other language. While it is critical to understand grammar, vocabulary, and syntax, these become intuitive with practice. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-369.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>But programming a script is much like writing a book (or maybe an essay). The idea and structure are as important as the language itself.</p>
<p>Words alone do not write a book. Ideas write the book, and language simply expresses those ideas. Similarly, conditionals and loops alone do not make up a script. Logic writes the backbone, and conditionals/loops tell the computer how to execute it.</p>
<p><em>How do I keep track of used letters in hangman? How do I find the index of the smallest number in a list? How should I represent this polynomial?</em></p>
<p>For a beginner programmer, these are daunting questions. For someone who has experience, these come with intuition. The only difference between the beginner and the expert is the time spent on practicing the skill.</p>
<h2 id="heading-4-teaching-is-rewarding">4) Teaching is Rewarding</h2>
<p>I could have spent my summer relaxing on the California coast. Instead, I chose to teach. I have no regrets.</p>
<p>Teaching is difficult. There is a saying along the lines of: <em>if you can't teach it, you don't know it</em>. Teaching forces you to fully understand a concept so that you can explain it in multiple ways to others. It is exhausting to repeat yourself over and over, hoping that maybe the concept finally clicks.</p>
<p>However, when a student has that <em>AHA!</em> moment when something finally makes sense, it is the best feeling in the world. To know that you have passed on your knowledge to someone who desired to learn it means you have given a priceless gift.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-371.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>I have been extremely privileged to go through an education system that values learning and to be able to attend one of the most renowned colleges in America. I attribute much of this to the teachers I had growing up. This is proof that teachers can have a huge impact.</p>
<p>At the end of the course, some of the students were excited to show their friends what they learned and to help then learn to code as well.</p>
<p>The act of teaching is exponential.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-370.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-in-reflection">In Reflection</h2>
<p>Initially, I was hesitant to be the instructor. It meant three weeks of my summer after graduation occupied by teaching. Twenty high school girls' introduction to programming through me, their thoughts about STEM influenced by how I taught my course. I was nervous.</p>
<p>However, reflecting upon the summer, I am extremely grateful to have had this once-in-a-lifetime opportunity to interact with and teach these students. I helped them learn not just how to program in Python, but also how to think like a computer scientist. It inspired me to continue teaching, especially in interactive environments where I could ask real-time questions.</p>
<p>At the very end of the program, the students created a monthbook and wrote cute notes to one another and the staff. Upon reading the messages addressed to me, I felt honored to be part of their introduction to computer science. They were just as inspirational to me as I was to them.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ SummerPD: Resources for K-12 Teachers During the Pandemic ]]>
                </title>
                <description>
                    <![CDATA[ Update July 15, 2020: Thank you for your interest in this project. Since our nonprofit is focused on helping adult learners, we have decided to step aside and let organizations who are focused on K-12 take the lead. Here are a few resources I think w... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/summer-pd-k12-teacher-nocode-curriculum/</link>
                <guid isPermaLink="false">66b8d599eb5c4db85a0b3414</guid>
                
                    <category>
                        <![CDATA[ education ]]>
                    </category>
                
                    <category>
                        <![CDATA[ k12 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Tue, 19 May 2020 14:03:04 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9aeb740569d1a4ca28a2.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Update July 15, 2020: Thank you for your interest in this project. Since our nonprofit is focused on helping adult learners, we have decided to step aside and let organizations who are focused on K-12 take the lead.</p>
<p>Here are a few resources I think will be helpful to K-12 teachers and parents as they prepare for the new school year:</p>
<ul>
<li><a target="_blank" href="http://www.openculture.com/free_k-12_educational_resources">Open Culture's list of K-12 Resources</a></li>
<li><a target="_blank" href="https://education.asu.edu/teaching-resources-k-12-educators">Arizona State University's list of K-12 teaching resources</a></li>
<li><a target="_blank" href="https://www.amstat.org/ASA/Education/K-12-Educators.aspx">AmStat's list of K-12 Teacher Resources</a></li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Overcome Your Fear of Writing and Find Motivation to Start ]]>
                </title>
                <description>
                    <![CDATA[ Writing about our work is one of those things that most of us have on our to-do list. But whether it's due to procrastination or fear, we never actually get to it. Here's some more motivation and reasons why you should give it a shot! Why should we w... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/overcoming-your-fear-of-writing-and-how-you-can-find-motivation/</link>
                <guid isPermaLink="false">66bee941dceb56d88f491c64</guid>
                
                    <category>
                        <![CDATA[ Blogging ]]>
                    </category>
                
                    <category>
                        <![CDATA[ code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ education ]]>
                    </category>
                
                    <category>
                        <![CDATA[ goal-setting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ goals ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learn to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ motivation ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technical writing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing tips ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Colby Fayock ]]>
                </dc:creator>
                <pubDate>Thu, 30 Apr 2020 14:45:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/04/writing-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Writing about our work is one of those things that most of us have on our to-do list. But whether it's due to procrastination or fear, we never actually get to it. Here's some more motivation and reasons why you should give it a shot!</p>
<h2 id="heading-why-should-we-write-in-the-first-place">Why should we write in the first place?</h2>
<p>Maybe you've never thought about writing before or maybe you're looking for a little more motivation. Whatever the case, there are a lot of good reasons why writing can help us grow.</p>
<h3 id="heading-helping-others-to-learn">Helping others to learn</h3>
<p>Coding can be tough. And we all started somewhere at the beginning.</p>
<p>It's a long journey that each of us go through and it's even harder to go at it alone. Luckily, we've had websites like <a target="_blank" href="https://www.freecodecamp.org/">freecodecamp.org</a> and <a target="_blank" href="https://css-tricks.com/">css-tricks.com</a> along the way that have made that journey more manageable, but there's always going to be a challenge that just doesn't make sense.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/04/css-tricks-around-2011.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>CSS-Tricks around 2011 when I got my first official coding job via <a target="_blank" href="https://web.archive.org/web/20110701022701/http://css-tricks.com/">Way Back Machine</a></em></p>
<p>This is where we have an opportunity to share our experiences to help others grow. While our favorite coding sites have tons of amazing tutorials, maybe they're missing a key point someone needed to fully grasp the solution. </p>
<p>Whether you're at the beginning or middle of your journey, every experience, big or small, can help another developer on their own journey.</p>
<p>And this is where it can be rewarding. One of my favorite parts of writing has been getting a <a target="_blank" href="https://twitter.com/colbyfayock">Twitter</a> DM from someone about how <a target="_blank" href="https://www.freecodecamp.org/news/author/colbyfayock/">one of my tutorials</a> helped them learn. It's a great feeling knowing you helped someone else on their journey.</p>
<p>Take this as a way for you to give back to the community that helped you learn and grow.</p>
<h3 id="heading-reinforcing-your-learning">Reinforcing your learning</h3>
<p>Thinking back to your grade school Spanish class, one of the tricks to helping the students learn was to reinforce learning. Teachers use different methods like reading, writing, speaking, flashcards, or even that Cinco de Mayo fiesta where you learned about and celebrated Mexico's heritage to help make the language stick.</p>
<p>This applies to development concepts as well. While your solution is still fresh in your head, write it down! Being able to teach what you've learned by writing about it will help those concepts stick in your head.</p>
<p>And just because you write it, it doesn't mean you have to share it. If you're not comfortable sharing it with the world, just keep a copy in a private notebook. You'll always be able to reference it yourself and still reinforce what you know by writing it down.</p>
<h3 id="heading-documenting-our-experiences">Documenting our experiences</h3>
<p>Doubling up on reinforcing your learning, by writing about your experiences, you're kind of creating your own personal <a target="_blank" href="https://stackoverflow.com/">StackOverflow</a> with a list of problems you've already solved.</p>
<p>As much as we had hoped we would remember how to speak Spanish from the classes we took, 10 years goes by pretty quickly and you suddenly realize you can only correctly say "hola" in Spanish.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/04/hola-sign.jpg" alt="Image" width="600" height="400" loading="lazy">
_Hola sign from Jon Tyson on <a target="_blank" href="https://unsplash.com/photos/8MMtYM_3xMY">Unsplash</a>_</p>
<p>If you were the ambitious type, maybe you saved all of your notes. If not, maybe you remember a good website that has flashcards.</p>
<p>Either way, having resources to go back to, whether it's your own notes or that website you still have bookmarked, helps us to quickly reference challenges we've already come across. By writing down your experiences, you're adding to that digital notebook that you know you can always use to remember that quirk you fixed.</p>
<h3 id="heading-growing-your-personal-network">Growing your personal network</h3>
<p>Everyone has their own reasons for wanting to write and share content – and that's okay! While some of us might be doing this to help others learn, others might be simply trying to get a job or grow their Twitter following.</p>
<p>One of the benefits of sharing your experiences is that you're immediately growing the network of developers that have a little more insight into who you are and the work you've done.</p>
<p>This doesn't guarantee a job, but it certainly can help. All teams are a little different in how they recruit. Smaller teams tend to include other developers more in the beginning of the process who are probably more likely to open your blog and not only read a little bit, but actually understand it.</p>
<p>But even if you don't immediately get hired, you're playing the long game. Opportunities will start to come in small ways that lead to bigger opportunities down the road.</p>
<h2 id="heading-why-you-might-be-hesitating-and-how-we-can-look-at-it-another-way">Why you might be hesitating and how we can look at it another way</h2>
<p>Sometimes motivation isn't enough. We all have our personal challenges that might prevent us from doing something we want to do. But sometimes it's a matter of finding a different perspective to give you that bit of inspiration to finally dive in.</p>
<h3 id="heading-imposter-syndrome-who-am-i-to-write-about-this">Imposter syndrome – who am I to write about this?</h3>
<p>This is something I've personally struggled with for the majority of my career. Whether I was confident in my ability to do my job or not, I never felt like it was enough to be one of the people writing guides for others.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/04/colby-fayock-personal-website.jpg" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.colbyfayock.com/">My website and blog</a></em></p>
<p>It wasn't until another team member brought another perspective to this argument (thanks Marquet) – everyone learns differently and maybe my way of telling a story can help someone learn. </p>
<p>If someone doesn't read my work, what are the consequences beyond a little bit of wasted time? On the other hand, maybe my blog post resonated with someone in a way that other blog posts didn't and they were finally able to solve their problem.</p>
<p>And this goes for any level of experience. As <a target="_blank" href="https://twitter.com/swyx">Swyx</a> says, <a target="_blank" href="https://www.swyx.io/writing/learn-in-public/">the fastest way to learn is in public</a>. If you're not helping someone else, you're at least helping yourself grow.</p>
<h3 id="heading-finding-time-it-takes-a-while-to-write-a-post">Finding time – it takes a while to write a post</h3>
<p>Time is a funny thing – it becomes an excuse that we use when we don't want to admit the real reason we're holding back.</p>
<p>Of course that's not always the case. Realistically a lot of us have a ton on our plates already whether we work, take care of a family, or are volunteering to help others. It can be a struggle to not want to just sit on the couch after a hard day's work.</p>
<p>But consider the free time you do have. Can you spare 10 minutes jotting down a few notes or even starting an outline of some things you want to say?</p>
<p>While 10 minutes won't write a whole post, if you start the habit and write another paragraph or two every day, you'll slowly end up with a blog post that you can feel good about sharing.</p>
<p>Just don't set the bar too high. If you start off with an unrealistic goal, you're likely to burn out fast and end up back in the same position you're at now.</p>
<h3 id="heading-no-topic-not-knowing-what-to-write-about">No topic – not knowing what to write about</h3>
<p>From speaking with other developers, I've noticed this seems to be tied a little bit to imposter syndrome. Maybe you're getting confident enough that you're more willing to write, but you're struggling to find what to write about. Is it because you can't think of a topic or is it because every topic you think about, you don't think you're enough of an expert to write about it?</p>
<p>Not having a topic can be a legitimate problem, but there's inspiration all around us. If you're working every day as a developer, you're working on problems that you ultimately need to solve. Why not write about those problems? And if you can't write about the problems due to contract concerns, what about writing about them in an abstract way without any sensitive information?</p>
<p>Inspiration for me comes from my experience talking with others. I'm lucky to be on a team that encourages growth of junior developers and during my time helping them out, their questions lead me to think about topics that I took for granted.</p>
<p>Whenever a topic like that comes up, I immediately note it down for later. This topic was on that list! Over time, my list of topics has grown to a point where I don't think I'll even finish it by the end of the year.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/04/list-of-topic-ideas.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>My personal list of topic ideas</em></p>
<p>While that could feel overwhelming, it's also motivates me to have a bigger selection of what I'm in the mood to write about rather than forcing myself to both think of a new topic and write about something I don't want to write about each week.</p>
<p>Whatever the case, find your source of inspiration. You don't need to be an expert on it. It doesn't matter if someone more experienced already wrote about it. Write what you know. Share your experiences. Maybe you'll help someone see the problem from a different perspective.</p>
<h2 id="heading-finding-what-motivates-you">Finding what motivates you</h2>
<p>At the end of the day, writing is something that each of us will need to find our own motivation to do.</p>
<p>Try to evaluate your goals. What are you looking to achieve? If writing is something you truly want to do, you'll need to find your own source of inspiration.</p>
<p>While some reasons might be more valid than others, it's easier to find reasons not to do something than it is to do it.</p>
<p>You got this! ?</p>
<div id="colbyfayock-author-card">
  <p>
    <a href="https://twitter.com/colbyfayock">
      <img src="https://res.cloudinary.com/fay/image/upload/w_2000,h_400,c_fill,q_auto,f_auto/w_1020,c_fit,co_rgb:007079,g_north_west,x_635,y_70,l_text:Source%20Sans%20Pro_64_line_spacing_-10_bold:Colby%20Fayock/w_1020,c_fit,co_rgb:383f43,g_west,x_635,y_6,l_text:Source%20Sans%20Pro_44_line_spacing_0_normal:Follow%20me%20for%20more%20JavaScript%252c%20UX%252c%20and%20other%20interesting%20things!/w_1020,c_fit,co_rgb:007079,g_south_west,x_635,y_70,l_text:Source%20Sans%20Pro_40_line_spacing_-10_semibold:colbyfayock.com/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_68,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_145,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_222,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_295,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/v1/social-footer-card" alt="Follow me for more Javascript, UX, and other interesting things!" width="2000" height="400" loading="lazy">
    </a>
  </p>
  <ul>
    <li>
      <a href="https://twitter.com/colbyfayock">? Follow Me On Twitter</a>
    </li>
    <li>
      <a href="https://youtube.com/colbyfayock">?️ Subscribe To My Youtube</a>
    </li>
    <li>
      <a href="https://www.colbyfayock.com/newsletter/">✉️ Sign Up For My Newsletter</a>
    </li>
  </ul>
</div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Create Code Profiles in VSCode ]]>
                </title>
                <description>
                    <![CDATA[ By JavaScript Joe This post piggybacks off of the work done by @avanslaars who is a fellow instructor at egghead.io. He shared this in the egghead Slack sometime ago and I never got around to setting this up myself. Now, I'm setting up a new laptop a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-create-code-profiles-in-vscode/</link>
                <guid isPermaLink="false">66d45f654a7504b7409c3423</guid>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 23 Jul 2019 13:45:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/07/Screen-Shot-2019-07-06-at-1.52.10-PM-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By JavaScript Joe</p>
<p>This post piggybacks off of the work done by <a target="_blank" href="https://twitter.com/avanslaars">@avanslaars</a> who is a fellow instructor at <a target="_blank" href="https://github.com/avanslaars/code-profiles">egghead.io</a>. He shared this in the egghead Slack sometime ago and I never got around to setting this up myself.</p>
<p>Now, I'm setting up a new laptop and decided to give it shot. Following Andy's <a target="_blank" href="https://github.com/avanslaars/code-profiles">repo here</a>, I'm going to walk you through the process so you can follow along.</p>
<p>Before we begin, a "code profile" is essentially a different <code>settings.json</code> configuration. You can also customize which extensions load per code profile but that's beyond the scope of this article.</p>
<h3 id="heading-1-create-a-codeprofiles-directory">1. Create a <code>code_profiles</code> directory</h3>
<p>The first thing we need to do is create a place to store our "profile settings". It doesn't have to be called <code>code_profiles</code>, but we're going to use that term since Andy does and it sounds nice.</p>
<p>He keeps his at the root of his computer so we'll do the same:</p>
<pre><code class="lang-shell"># From the root of your computer ~/
mkdir code_profiles
</code></pre>
<p>After your done, <code>cd</code> into that directory:</p>
<pre><code class="lang-shell">cd code_profiles
</code></pre>
<h3 id="heading-2-create-your-first-profile">2. Create your first profile</h3>
<p>Since I'm going to be using this for egghead recordings, I'm going to create a new directory called <code>egghead</code>:</p>
<pre><code class="lang-shell"># mkdir name-of-profile
mkdir egghead
</code></pre>
<p>Then <code>cd</code> into that directory:</p>
<pre><code class="lang-shell">cd egghead
</code></pre>
<h3 id="heading-3-add-your-settingsjson">3. Add your settings.json</h3>
<p>VSCode is expecting a <code>data</code> directory with a <code>User</code> subdirectory. In there, we'll place our settings:</p>
<pre><code class="lang-shell"># -p will create parent directories as needed
mkdir -p data/User
</code></pre>
<p>After those are created, change into that new <code>User</code> subdirectory and create your <code>settings.json</code> file:</p>
<pre><code class="lang-shell"># Go into that directory
cd data/User

# Create your settings file
touch settings.json
</code></pre>
<p>Then open up your <code>settings.json</code> file and add in your settings. I'll add a modified version of what Andy <a target="_blank" href="https://github.com/avanslaars/code-profiles/blob/master/egghead/data/User/settings.json">has in his</a>:</p>
<pre><code class="lang-json">{
  <span class="hljs-attr">"editor.tabSize"</span>: <span class="hljs-number">2</span>,
  <span class="hljs-attr">"editor.quickSuggestions"</span>: <span class="hljs-literal">false</span>,
  <span class="hljs-attr">"editor.parameterHints"</span>: <span class="hljs-literal">false</span>,
  <span class="hljs-attr">"editor.suggestOnTriggerCharacters"</span>: <span class="hljs-literal">false</span>,
  <span class="hljs-attr">"editor.hover"</span>: <span class="hljs-literal">false</span>,
  <span class="hljs-attr">"editor.fontSize"</span>: <span class="hljs-number">18</span>,
  <span class="hljs-attr">"editor.tabCompletion"</span>: <span class="hljs-literal">true</span>,
  <span class="hljs-attr">"window.zoomLevel"</span>: <span class="hljs-number">1</span>,
  <span class="hljs-attr">"workbench.colorTheme"</span>: <span class="hljs-string">"Night Owl"</span>,
  <span class="hljs-attr">"editor.cursorBlinking"</span>: <span class="hljs-string">"solid"</span>,
  <span class="hljs-attr">"editor.cursorStyle"</span>: <span class="hljs-string">"line"</span>,
  <span class="hljs-attr">"editor.minimap.renderCharacters"</span>: <span class="hljs-literal">false</span>,
  <span class="hljs-attr">"terminal.integrated.fontSize"</span>: <span class="hljs-number">16</span>,
  <span class="hljs-attr">"explorer.openEditors.visible"</span>: <span class="hljs-number">0</span>
}
</code></pre>
<h3 id="heading-4-test-your-new-code-profile">4. Test your new code profile</h3>
<p>Now let's make sure we did everything right. Assuming you've already set up VSCode to [launch from the command line](<a target="_blank" href="https://code.visualstudio.com/docs/setup/mac#_launching-from-the-command-line">https://code.visualstudio.com/docs/setup/mac#_launching-from-the-command-line</a>, we can launch our new profile by running:</p>
<pre><code class="lang-shell"># replace CODE_PROFILE_NAME with the profile name used earlier
code --user-data-dir ~/code_profiles/CODE_PROFILE_NAME/data
</code></pre>
<p>And if it worked, you should see VSCode open with your settings:  </p>
<p><img src="https://thepracticaldev.s3.amazonaws.com/i/8r277j7k5r0oi1b3axym.png" alt="screenshot of vscode with new settings" width="3104" height="1978" loading="lazy"></p>
<h3 id="heading-5-create-an-alias-for-your-profile">5. Create an alias for your profile.</h3>
<p>I don't know about you, but I don't want to have to remember <code>code --user-data-dir ...</code> so let's take Andy's advice and create an alias.</p>
<p>I'm using <code>zsh</code> so I'm going to add this alias to my <code>.zshrc</code> file like so using the keyword "teach":</p>
<pre><code class="lang-shell"># replace CODE_PROFILE_NAME with the profile name used earlier
alias teach="code --user-data-dir ~/code_profiles/CODE_PROFILE_NAME/data"
</code></pre>
<p>Now, when you want to use this code profile, all you have to do is type:</p>
<pre><code class="lang-shell">teach ~/projects/lesson
</code></pre>
<p>Woohoo! And that's it.</p>
<p>Special thanks to <a target="_blank" href="https://twitter.com/avanslaars">@avanslaars</a> for sharing this. Here's a link to his <a target="_blank" href="https://github.com/avanslaars/code-profiles"><code>code_profiles</code> repo</a> where I learned how to do this.</p>
<p><em>NOTE</em>: If you are using VSCode in Portable mode, there is a <a target="_blank" href="https://github.com/microsoft/vscode/issues/63657">known bug</a> where the flag <code>user-data-dir</code> does not currently work (special thanks to @myfonj for pointing this out).</p>
<p>###</p>
<p><em>This post first appeared on <a target="_blank" href="https://dev.to/jsjoeio/how-to-create-code-profiles-in-vscode-3ofo">DEV</a>.</em></p>
<p>? Shameless Plug: if you'd like to see more content like this, subscribe to my newsletter: <a target="_blank" href="https://buttondown.email/jsjoeio">https://buttondown.email/jsjoeio</a> </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I launched an iOS App with a teenager ]]>
                </title>
                <description>
                    <![CDATA[ By Sean Choi How to go from Scratch to an iPhone app in the App store As a follow up to two of my prior articles, (How to teach programming to teenagers and Beginner’s Guide to Raspberry Pi), I want to share my experiences in helping a teenager go fr... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-launched-an-ios-app-with-a-teenager-926b5a65a991/</link>
                <guid isPermaLink="false">66c34ddfa1d481faeda49b8d</guid>
                
                    <category>
                        <![CDATA[ Apps ]]>
                    </category>
                
                    <category>
                        <![CDATA[ education ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 01 Nov 2018 23:58:44 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*0eG3vNBbMh7an5R3CY6Gmw.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Sean Choi</p>
<h4 id="heading-how-to-go-from-scratch-to-an-iphone-app-in-the-app-store">How to go from Scratch to an iPhone app in the App store</h4>
<p>As a follow up to two of my prior articles, (<a target="_blank" href="https://medium.freecodecamp.org/how-to-teach-programming-to-teenagers-2ecd43846f0d">How to teach programming to teenagers</a> and <a target="_blank" href="https://medium.freecodecamp.org/beginners-guide-to-raspberry-pi-6e55080fdaaf">Beginner’s Guide to Raspberry Pi</a>), I want to share my experiences in helping a teenager go from coding in Scratch to building and deploying an iOS app.</p>
<p>As mentioned in <a target="_blank" href="https://medium.freecodecamp.org/how-to-teach-programming-to-teenagers-2ecd43846f0d">one of my prior articles</a>, I noticed that teenagers have a strong desire to do something that feels more real. So, the natural question that repetitively came up in many of my classes was <em>“Can we build an iPhone App?”.</em> I felt that the time was right for the students to build an app, and I asked them each to pitch an idea.</p>
<p>A week later, one of the students came back with an idea and it seemed really really interesting, so we decided to take some time outside of the regular class time and build it together. And we ended up with a cool app called <a target="_blank" href="https://itunes.apple.com/us/app/swimgrader/id1364739414?mt=8">SwimGrader</a>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/SqaTFid-0S7n7JVHpIEGmz8spT13QTPUByVZ" alt="Image" width="800" height="461" loading="lazy">
_Asian Games Swimming from [Wikipedia Commons](https://commons.wikimedia.org/wiki/File:Incheon_AsianGames_Swimming<em>19</em>(15178565298).jpg" rel="noopener" target="<em>blank" title=")</em></p>
<h4 id="heading-how-did-swimgrader-come-about">How did SwimGrader come about?</h4>
<p>My student is an avid swimmer and has always been curious how good his swimming is. Assessing your own swimming ability is not really obvious, and you often need some expert to tell you how good you are.</p>
<p>We all know that lowering lap time is the goal most athletes shoot for, so a lot of people attempt to do that. However, it is quite hard to know in detail what you must work on to achieve lower lap times. Of course, you can just try to kick faster and practice more to gain more swimming muscles, but that usually is not the best way to improve your swimming.</p>
<p>Coming from this, my student thought that people needed something that could pinpoint an area of swimming they should work on next. So, his brilliant idea was to build an app that could assess various aspects of your swimming and tell you which area you should work to improve.</p>
<p>Knowing from experience how hard it is to improve my swimming, I was <strong>really</strong> impressed by his idea. It was nothing that I had heard of before and it had a specific use case that could potentially benefit a lot of people. However, since my student had never built an iPhone app before, we decided to work on it together from scratch.</p>
<h4 id="heading-getting-started">Getting started</h4>
<p>Not being a competitive swimmer myself and also thinking that it would be a good thought exercise, I asked my student to come up with the design of the app and the metrics we could use to grade the swimmer in the app.</p>
<p>This process ended up to be a really good learning experience. Not only did this exercise helped the student iron out the details of the project, but it also kept my and my student’s expectations in line. As mentioned in my articles about teaching teenagers, teenagers have high expectations about doing anything with programming. So, after talking through every detail from which data to collect, which pages to create, how each page transition works and which metrics to show, both of us were to clearly set our goals and our expectations.</p>
<p>And knowing the exact end-product we were planning to make helped the student stay constantly engaged.</p>
<p>Digressing a little bit from the main topic, we often learn things that we don’t know when we will ever apply in our lives. This can make us feel like we are walking through a long dark tunnel with no light at the end.</p>
<p>This is especially true when you are younger, as you are most likely being told to learn certain things. I believe that this causes many students to not get excited about what they learn. I learned that setting the right expectations by showing the end of the journey of a learning exercise really helps motivate students and increases the efficiency of the learning exercise itself.</p>
<p>So, back to the design and the metrics of the app that the student suggested: my student first suggested that the app, in general, should not add any overhead for the swimmer. He wanted to build an app that would be able to collect statistics without hampering the swimmer’s performance.</p>
<p>The student already had a measuring device in mind to serve this exact purpose, which I will share in the next section. After some discussion to come up with a minimal viable product, we decided that we should focus on collecting two specific metrics: <strong>head bops</strong> and <strong>turn speed</strong>.</p>
<p>Since head bops are a mostly extraneous movement that can reduce the efficiency of swimming, if we can simply count the number of head bops within some time interval, we thought that we could suggest a reduction in extraneous head movements.</p>
<p>We also agreed that fast turns are necessary for reducing lap times. So, if we could measure the time it takes the swimmer to make a turn at the end of the lane, we could grade the swimmer based on time.</p>
<p>Given this design and the idea, we only needed to start implementing it with the right sensor.</p>
<h4 id="heading-so-which-hardware-made-swimgrader-possible">So, which hardware made SwimGrader possible?</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/9aLWiVhSZZeCfqgwKTSqVAaddclmgStXu9tb" alt="Image" width="800" height="800" loading="lazy">
<em>mbientlab’s sensor research kit</em></p>
<p>Although the latest <a target="_blank" href="https://amzn.to/2RZbPH1">iPhones</a> are waterproof, swimmers probably don’t want to risk taking their <a target="_blank" href="https://amzn.to/2RZbPH1">super expensive iPhones</a> into the pool. So, my student suggested that we use a <a target="_blank" href="https://amzn.to/2CpAnUi">sensor</a> from <a target="_blank" href="https://mbientlab.com/product/mountable-sensor-research-kit/">mbientlab</a> and enclose it in a waterproof case.</p>
<p>This sensor allows you to collect various data from the environment and from your movements, as it houses an accelerometer, a gyroscope, a barometer, a thermometer and so on. Also, they have some <a target="_blank" href="https://github.com/mbientlab/MetaWear-SDK-iOS-macOS-tvOS">sample code</a> that you can use to bootstrap your application so you can immediately collect the data of interest.</p>
<p>So, our idea was to put the sensor inside his swimming cap. He felt that this would minimally impact the swimmers’ ability to swim, which I agreed with. We immediately purchased two of these sensors and started building our app. I will not go over the details of building a simple multi-page iOS app using Swift, because they have covered in thousands of other articles (<a target="_blank" href="https://hackernoon.com/the-ultimate-list-of-resources-to-mastering-swift-and-ios-development-2018-edition-3bd2a87ff400">here</a> is a good medium article that presents many of them).</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/ktN8sHcvZNgzVcV4mval6VErSN3sHmepTzuS" alt="Image" width="800" height="549" loading="lazy">
<em>SwimGrader App Window</em></p>
<h4 id="heading-introducing-swimgrader">Introducing SwimGrader</h4>
<p>So, after hours of programming and going through Apple to get our app approved for the App Store, we were finally able to launch <a target="_blank" href="https://appadvice.com/app/swimgrader/1364739414">SwimGrader</a>. It was really surprising to see this, because I only helped with the initial setup of the project, which consisted of setting up a single page app Swift project and helping with adding buttons and text fields, and simple hardware integration to retrieve data from the sensor.</p>
<p>To give a sense of how easy the hardware integration was, here is a snippet of code to make the LED on the sensor flash green. Retrieving data was just as simple, as can be seen by the example below.</p>
<pre><code><span class="hljs-keyword">import</span> MetaWearimport MetaWearCpp
</code></pre><pre><code>MetaWearScanner.shared.startScan(allowDuplicates: <span class="hljs-literal">true</span>) { (dev) <span class="hljs-keyword">in</span>    <span class="hljs-comment">// We found a MetaWear board, see if it is close by    if dev.rssi.intValue &gt; -50 {        // We found a MetaWear board!        MetaWearScanner.shared.stopScan()        // Connect to the board we found        dev.connectAndSetup().continueWith { t in            if let error = t.error {                // Sorry we couldn't connect                print(error)            } else {                // We are connected! Flash its LED!                var pattern = MblMwLedPattern()                mbl_mw_led_load_preset_pattern(                    &amp;pattern, MBL_MW_LED_PRESET_PULSE)                mbl_mw_led_stop_and_clear(device.board)                mbl_mw_led_write_pattern(                    device.board, &amp;pattern, MBL_MW_LED_COLOR_GREEN)                mbl_mw_led_play(device.board)            }        }    }}</span>
</code></pre><p>Given only a limited about of help, my student went far beyond my expectations to build a grading algorithm and a graphical interface. He retrieved the X, Y, Z data from the sensor and gave a grade on how much the head moved in each direction. He searched online for a graphing library on iOS and displayed what his sensor reported. And, after finishing his app, he went ahead and tested his app in the pool!</p>
<p>It is an effort by a middle school student, so it’s not going to look fancy like Clash of Clans. However, I think it is really impressive, coming from a young student who has never built an iPhone app before! After finishing this, the student asked me,</p>
<blockquote>
<p>Can we build an Apple Watch App for this?</p>
</blockquote>
<p>I told him that he could definitely build an Apple Watch version of the app in the future, but that he could probably build it without my help :).</p>
<h4 id="heading-final-thoughts">Final Thoughts</h4>
<p>As grown-ups, I think it is really hard to keep our ideas fresh, wild and up-to-date. So, I think it’s really educational to hear what these young students have to say and to support what they want to do in all the ways we can.</p>
<p>Not only do these opportunities open the gate to building new and exciting products, but supporting students to pitch and build their own ideas gives them the best educational experiences. Seeing my student asking people to download his app makes me smile. I am hoping that I can maybe build a cool app someday and showcase it to my friends. Although, my student just beat me to that :)</p>
<p>On a side note, I learned that building a cool iOS app is easier than ever. There are so many articles helping you build apps for every possible purpose: games, single view apps, social network apps and many more. Also, there is more hardware than ever that you can easily hook up to your phone and extend the capabilities of your phone.</p>
<p>I hope I can soon share experiences of building my own app. I am just worried if my students will find my app cool…</p>
<p>Thank you for reading this article! I hope I can convince you to work with your students or your children and start building a simple app! I am also open to hearing about your cool app ideas.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Teach Programming to Teenagers ]]>
                </title>
                <description>
                    <![CDATA[ By Sean Choi In the past, many enthusiastic parents have approached me and asked me how I learned to code in the beginning — mainly with the interest in finding ways to help their children how to code. And every time, I didn’t have a clear answer for... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-teach-programming-to-teenagers-2ecd43846f0d/</link>
                <guid isPermaLink="false">66c35516d372f14b49bdcb51</guid>
                
                    <category>
                        <![CDATA[ education ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 08 Oct 2018 14:24:51 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*FNZLxkvfXe2PAIlT8pbf3w.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Sean Choi</p>
<p>In the past, many enthusiastic parents have approached me and asked me how I learned to code in the beginning — mainly with the interest in finding ways to help their children how to code. And every time, I didn’t have a clear answer for them, because I learned to code at a much later age than most of the children of these parents. In the interest of helping these parents, I also tried to find resources that are made to help the children learn to code.</p>
<p>I discovered that there are a lot of resources help K-6 students learn how to code. Some examples include <a target="_blank" href="https://scratch.mit.edu/about">Scratch</a> and the Hour of Code in <a target="_blank" href="https://code.org/">Code.org</a> which are quite useful for someone new to get acquainted with programming.</p>
<p>Through these platforms, students write simple programs that make graphical creatures move or build simple games and learn the basic tools of programming — such as loops and conditionals — while building useful problem-solving skills. The major strength of these platforms is the visual feedback from the platform, which really helps the students stay constantly engaged with the curriculum and the exercises.</p>
<p>However, teaching programming to teenagers over the 6th grade is a completely different beast. <a target="_blank" href="https://www.geekwire.com/2018/new-research-finds-95-teens-access-smartphone-45-online-almost-constantly/">This article</a> shows that over 95% of teenagers today have access to smartphones. So, the visual feedback from Scratch or Code.org no longer wows them. In fact, I discovered that the teenagers actually find them quite mundane and childish.</p>
<p>Instead, teenagers want to build or do something <em>REAL</em> that they can showcase. Such as building and launching a real iPhone app or their own website or hacking into some system. But how can you get someone who just finished a set of Scratch exercises to building an iPhone app, while getting them constantly engaged to finish it?</p>
<p>So, I wanted to share my experiences in teaching programming to 4 teenagers over the course of two years. The students started out having a different range of programming skills, personalities, and expectations. Therefore, to keep everyone engaged, I had to go through various trials to find the teaching materials that worked for everyone.</p>
<p>The main goal of this article is to share what I learned and the trials that were successful, in the hopes of helping other teenagers learn to love programming.</p>
<h1 id="heading-teenagers-have-high-expectations">Teenagers have High Expectations</h1>
<p>I learned that teenagers absorb new technology like dry sponges. While adults may be quite okay with being a technically bit out-of-date, teenagers bet their lives on being cool and following the latest trend out there. I found that teenagers tend to use the coolest and latest apps even before they make it to TechCrunch or CNBC headlines.</p>
<p>In fact, it was my students who introduced me to a bunch of <a target="_blank" href="https://www.crazygames.com/c/io">.io games</a> and <a target="_blank" href="https://en.wikipedia.org/wiki/HQ_Trivia">HQ Trivia</a>. So, it’s important that what they learn is <em>COOL</em>, and something that they can share with their friends.</p>
<p>The first thing they asked when I started the programming class was “Can we Hack stuff? Like websites and iPhone APPs?”.</p>
<p>So, I told them we should first learn HTML and CSS to learn how to hack a website and showed them this:</p>
<pre><code>&lt;!DOCTYPE HTML&gt;
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>  
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>Hello World!<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>  
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>Hello World!<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span></span>
</code></pre><p>I explained what each of these tags meant and how they will show up on a page. I loaded a page with this <code>hello.html</code> and all their expectations of seeing a cool web page went down the drain. They were immediately bored.</p>
<p>However, I continued the class to teach them more HTML, CSS and basic JavaScript. I felt that by teaching them more HTML, CSS and JavaScript and learning the techniques to build some example websites, they would feel more engaged. However, I was wrong.</p>
<p>Even after series of building simple websites and deploying them over <a target="_blank" href="https://firebase.google.com/">Firebase</a>, they kept on saying they wanted to do something more <em>REAL</em> and something they could show their friends.</p>
<h1 id="heading-teaching-them-to-do-something-real">Teaching them to do Something REAL</h1>
<p>I realized that there are many ways to do something real, and it was not at all creating software with cute GUI or teaching them new data structures, or getting some material from Harvard CS50 and showing them.</p>
<p>I decided it would be best to use hardware and make the students physically feel what they had coded. My two choices were <a target="_blank" href="https://amzn.to/2PLBxk1">Raspberry Pi</a> and <a target="_blank" href="https://amzn.to/2CK7eEc">Arduino</a>.</p>
<p>Raspberry Pi is a miniature computer that runs its own version of Linux, and is capable of running most programming languages. You can purchase various peripherals that can be controlled via your own custom software.</p>
<p>Arduino is more involved. It is as an open-source hardware platform, and many companies build various kits, such as <a target="_blank" href="https://amzn.to/2PJHWfu">Smart Autonomous Car</a> and <a target="_blank" href="https://amzn.to/2RQTaNu">Quadruped Robot</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/07/smart-car.jpeg" alt="Image" width="600" height="400" loading="lazy">
<em>Smart car we built using Arduino</em></p>
<p>Using Raspberry Pi, we built a <a target="_blank" href="https://amzn.to/2pTtXoN">weather station</a> that detects temperature and air pressure of the surrounding area and sends them to a cloud database. Then, the students were able to view the weather data through an online graphing tool. We also programmed simple utility functions, such as changing temperature units and finding min/max/average temperature, to post to the database. These exercises helped the students learn simple data structures and algorithms, such as arrays, dictionaries and sorting.</p>
<p>After this, we moved on to building the Arduino-based autonomous car. Each student had sample code that made the cars move and detect obstacles. Then, we built a maze and gave a prize to the student who made the car that got out of the maze first.</p>
<p>The students naturally discussed among themselves which logic would help the car move out of the maze most efficiently. And they found it pretty cool that their algorithm immediately was learned and executed by the car that they built. Most importantly, the students really enjoyed it, since it was real and tangible.</p>
<p>We also did some exercises in learning the basics of hacking! Similar to <a target="_blank" href="https://leetcode.com/">LeetCode</a>, which is aimed at helping participants learn how to solve interview problems, there are many tools built to help students learn the basics of hacking. For example, <a target="_blank" href="https://www.hackthis.co.uk/">HackThis</a> is a nice website that gives you a series of challenges that you can view and solve on your browser. It requires you to use many of existing browser tools, such as Chrome dev tools, to find deficiencies that you can take advantage of to gain access into the system.</p>
<p>The students really loved this exercise, because solving these exercises made them feel like spies in Mission Impossible. After finishing the challenge, they actually went ahead into real websites (I made sure they didn’t do something illegal…) and tried to find loopholes that they could use.</p>
<p>Once they are more prepared and learn the basic Linux concepts, I am planning to teach them more advanced hacking concepts with <a target="_blank" href="https://www.kali.org/">Kali</a> Linux, which I think will be even more exciting.</p>
<h1 id="heading-competition-as-a-learning-tool">Competition as a Learning Tool</h1>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/07/clash-of-code.png" alt="Image" width="600" height="400" loading="lazy">
<em>Clash of Code to start the day</em></p>
<p>Finally, the last thing I learned was that the teenagers are quite competitive. They like exercises that gave them immediate feedback, such as giving them a score, a badge, or placing them on a real scoreboard.</p>
<p>The best platform I found that incentivized the students was <a target="_blank" href="https://www.codingame.com/start">CodingGame</a>. They would solve each programming exercise and level up in the process. The exercises also have some nice visual components to them, enabling the students to be quite engaged to the exercises.</p>
<p>We would also start the day by doing a session of <a target="_blank" href="https://www.codingame.com/multiplayer/clashofcode">Clash of Code</a>, which is a quick 5 minute live programming challenge between other online users, and the students would sometimes win against other players that had higher levels than they did! It really got them pumped up to start another day of learning to program.</p>
<h1 id="heading-final-thoughts">Final Thoughts</h1>
<p>Teaching programming is fun and educational. Not only do you learn how to teach another person, but it also gives you a chance to be in the students’ shoes. You learn to understand how others think about a problem and realize that there are many different ways to perceive the same problem. You also learn how to describe problems in ways that the students would enjoy thinking about. Also, personally, I think teaching helps you become a more understanding and patient person.</p>
<p>I hope you can also let me know how you helped others join the world of programming. For those of you who are starting out in the journey of helping others to learn to program, I really hope that this article gave some takeaways for your own curriculum.</p>
<p>Thank you for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Why you should stop using big words and industry jargon (and what to do instead) ]]>
                </title>
                <description>
                    <![CDATA[ Let’s say you want to teach a person something. Why does the person not understand what you’re saying? One of the main reasons is likely because we like to use big words and industry jargon. This jargon may mean something to us, but it means nothing ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/why-you-should-stop-using-big-words-and-industry-jargon-and-what-to-do-instead-f38c229693e0/</link>
                <guid isPermaLink="false">66c4c7a71b22d2d8d9040ee7</guid>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Zell Liew ]]>
                </dc:creator>
                <pubDate>Mon, 03 Sep 2018 23:45:15 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*o7WmwGkLVR0dVQUYqfSBeg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Let’s say you want to teach a person something. Why does the person not understand what you’re saying?</p>
<p>One of the main reasons is likely because we like to use big words and industry jargon. This jargon may mean something to us, but it means nothing to the people we’re trying to teach.</p>
<p>The next time you try to teach programming, watch out for the words you use.</p>
<h3 id="heading-three-types-of-big-words">Three types of big words</h3>
<p>We can divide jargon into three categories:</p>
<ol>
<li>That which can be explained in a few words</li>
<li>That which cannot be explained with simple words</li>
<li>That which can mean different things in different contexts.</li>
</ol>
<p>When you teach, you should always watch out for these three types of words.</p>
<h3 id="heading-jargon-that-can-be-explained-in-a-few-words">Jargon that can be explained in a few words.</h3>
<p>If the jargon can be explained in a few words, you want to <strong>use those words instead of the jargon.</strong></p>
<p>Interoperability is one example of a such a word.</p>
<p>It sounds scary and complicated, but it can be explained in a few simple words.</p>
<p>If you searched for the meaning of interoperability, you’ll come across definitions like these:</p>
<p>From Wikipedia:</p>
<blockquote>
<p>“<em>Interoperability is a characteristic of a product or system, whose interfaces are completely understood, to work with other products or systems, at present or in the future, in either implementation or access, without any restrictions.</em>“</p>
</blockquote>
<p>From Dictionary.com:</p>
<blockquote>
<p>“<em>Interoperability is the ability to share data between different computer systems, especially on different machines.</em>“</p>
</blockquote>
<p>If we put it in simple terms, “interoperability” means the “ability to share data”.</p>
<p>See how it makes the language barrier much lower?</p>
<p>If you can replace such jargon with simple words, why would you stick to the difficult word?</p>
<h3 id="heading-jargon-that-means-different-things-in-different-contexts">Jargon that means different things in different contexts</h3>
<p>Some jargon has different meanings when it’s used in different contexts.</p>
<p>One example of such jargon is encapsulation.</p>
<p>To encapsulate something means to enclose that thing with something else. If you wrap a potato with a cloth, you can say the cloth encapsulates the potato.</p>
<p>Developers love the word encapsulation. They use it all the time.</p>
<p>The first way is to wrap variables and other code inside a function. In this case, the function encapsulates the code within.</p>
<pre><code><span class="hljs-comment">// This is JavaScriptfunction someFunction () {  const variableName = 'I am a variable!'}</span>
</code></pre><p>The second way is to contain an object’s individuality. For example, if you have a Human object, and you create two humans from the human object, these two humans should not be the same.</p>
<p>In this case, each object encapsulates its own data.</p>
<pre><code><span class="hljs-comment">// This is JavaScriptfunction Human (name) {  this.name = name}</span>
</code></pre><pre><code><span class="hljs-keyword">const</span> zell = <span class="hljs-keyword">new</span> Human(<span class="hljs-string">'Zell'</span>)<span class="hljs-keyword">const</span> vincy = <span class="hljs-keyword">new</span> Human(<span class="hljs-string">'Vincy'</span>)
</code></pre><pre><code>zell.name === vincy.name <span class="hljs-comment">// false</span>
</code></pre><p>The third way is for information hiding. In JavaScript, we can create private variables. These private variables are enclosed by the object.</p>
<p>In this case, the object encapsulates the private variable. You cannot access the private variable. In this case, encapsulation is used to mean something different from the second case.</p>
<pre><code><span class="hljs-comment">// This is JavaScriptfunction Human () {  const privateVariable = 'private'  this.publicVariable = 'public'}</span>
</code></pre><p>So what do you understand by Encapsulation?</p>
<p>You can’t be sure.</p>
<p>There should be no ambiguity when you communicate. If there is ambiguity, communication breaks down, and students don’t learn.</p>
<p>It is best to <strong>ditch the jargon if the jargon means different things in different contexts.</strong></p>
<h3 id="heading-jargon-that-cannot-be-explained-with-simple-words">Jargon that cannot be explained with simple words</h3>
<p>Some jargon cannot be explained with simple words. This jargon is often used to talk about abstract concepts, which is why simple words may not be enough.</p>
<p>One example of such a word is “mutation”.</p>
<p>Mutation comes from the word mutate. To mutate means to change in form or nature. In JavaScript, mutation happens underneath the hood without you noticing.</p>
<p>In this case, change is not enough to explain mutation. It lacks depth and detail. Plus, change is still too abstract.</p>
<p>You feel that a concept is abstract, because you cannot imagine it. You cannot see, hear, feel, touch, or taste it. To make an abstract concrete, we need to appeal to a human’s five senses.</p>
<p><strong>To explain an abstract concept, you can use analogies.</strong> When you use analogies, you can describe an object or a scenario in a way where people can see, hear, or feel what you mean.</p>
<p>For example, <a target="_blank" href="https://alistapart.com/article/why-mutation-can-be-scary">I used X-men as my analogy when I explained mutation</a>.</p>
<p>I asked students to imagine a friend growing fur and turning blue in front of their eyes. Anyone can imagine what it means to grow fur and turn blue, even if they don’t know who Beast is.</p>
<p>If you want to expand the analogy to cater to more people, you can appeal to more senses. For example, to get blind people to imagine mutation, you can also tell them to imagine their friend growled like a beast.</p>
<p>The key here is a change that goes undetected. Nobody knows whether a person is a mutant until they show their powers. On the same front, nobody knows that a JavaScript object has changed until it, well, has changed.</p>
<p>I emphasized this point to draw a link back to mutation in JavaScript.</p>
<p>Mutation becomes more concrete once the link gets established. When I say mutation, students who read the article can picture their friend turning blue, growing fur, and growling like a beast.</p>
<p>Once you turn abstract jargon into a concrete concept, you can use that jargon as you usually would. Students will understand what you mean.</p>
<p>I wrote an article about <a target="_blank" href="https://zellwk.com/blog/creating-good-analogies">creating good analogies</a> if you’re interested in learning this skill.</p>
<h3 id="heading-wrapping-up">Wrapping up</h3>
<p>Pay attention to the words you use when you teach programming. If you use difficult words that don’t mean anything to your student, they won’t be able to get what you mean.</p>
<p>Replace difficult words with words that are simpler and easier to understand if you can.</p>
<p>Avoid using jargon that can mean different things in different contexts. This jargon makes things ambiguous and confusing.</p>
<p>Finally, use analogies to turn abstract concepts into concrete concepts.</p>
<p>Thanks for reading. Did this article help you in any way? If you did, <a target="_blank" href="http://twitter.com/share?text=Stop%20using%20big%20words%20and%20industry%20jargons%20(and%20what%20to%20do%20instead)%20by%20@zellwk%20?%20&amp;url=https://zellwk.com/blog/big-words/&amp;hashtags=">I hope you consider sharing it</a>. You might help someone out. Thank you!</p>
<p>This article was originally posted at <a target="_blank" href="https://zellwk.com/blog/big-words">zellwk.com.</a><br>Sign up for my <a target="_blank" href="https://zellwk.com/">newsletter</a> if you want more articles to help you become a better front-end developer.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ And the award for the best MOOC goes to…? ]]>
                </title>
                <description>
                    <![CDATA[ By Jérémy Brunet …Harvard’s CS50! ?? I’ve spent the last 18 months of my life working for my own EdTech startup named Peter. Peter was a Messenger bot built to help French k-12 students with their homework. We did a couple of great things, learned a ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/and-the-award-for-the-best-mooc-goes-to-308604e5bf2a/</link>
                <guid isPermaLink="false">66c3449442d4db64acf4cbda</guid>
                
                    <category>
                        <![CDATA[ education ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 30 Aug 2018 19:12:52 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*g3mKL_n531ZYBvvAOe2BcA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Jérémy Brunet</p>
<p>…Harvard’s CS50! ??</p>
<p>I’ve spent the last 18 months of my life working for my own EdTech startup named Peter.</p>
<p>Peter was a Messenger bot built to help French k-12 students with their homework. We did a couple of great things, learned a lot about education along the way, but at the end of the trail, it didn’t work out.</p>
<p><strong>From this experience, I know now how hard it is to build a good product in EdTech.</strong> Or to keep building something relevant to cohorts of users.</p>
<p>Sal Khan might be the most popular pioneer in EdTech. His <a target="_blank" href="https://www.khanacademy.org">Khan Academy</a> has been teaching millions of people around the world since 2006. His academy introduced me to the marvels of free Education in February 2014 (I was hooked on Math, JavaScript… and Cosmology!).</p>
<p>Then, <a target="_blank" href="https://www.freecodecamp.org/news/and-the-award-for-the-best-mooc-goes-to-308604e5bf2a/undefined">zach sims</a>’s Codecademy took over. There, I learned the basics of many popular programming languages. The UX is slick, making the sessions stimulating and very efficient.</p>
<p>And last but not least, I discovered a few weeks later that thousands of Massive Open Online Courses (MOOCs) were available.</p>
<p>At that time, I was sure I’d become a great developer if I took a few of them. <strong>But, it turned out I was dead wrong.</strong> I was very disappointed, as I expected to have the same blast in learning I had with Khan Academy and Codecademy.</p>
<p>However, <a target="_blank" href="https://www.edx.org/course/cs50s-introduction-computer-science-harvardx-cs50x">CS50 from Harvard University</a> stood out from the other MOOCs. CS50x is the MOOC version of the full-time on-campus CS50 course. Learning Computer Science with the CS50 course has been one hell of a ride. <strong>Their product is one the best I’ve ever seen.</strong> It combines a large catalog of memorable videos with a singular learning experience.</p>
<p>Being familiar with CS50 should be mandatory for every founder in EdTech, and I think everyone can draw significant inspiration from it. Now, I’ll share my thoughts, experience, and analysis of the course.</p>
<h3 id="heading-myth-takes">Myth takes ?</h3>
<p>From start to finish, CS50 is crazy good. It’s the only MOOC that kept fueling my momentum after my introduction to the EdTech world.</p>
<p>CS50 taught me something that excited me a lot - programming - in an even more exciting way.</p>
<p>After my introduction to programming languages, my expectations were sky-high. I’ve spent the last 6 months learning new skills with wonder.</p>
<p>I imagined MOOCs as the holy grail of EdTech. I could take one semester at one university, then move to another one to study something else. <strong>I thought a new era in Education had come where total freedom in learning reigned.</strong></p>
<p>But it hasn’t come. Not quite yet.</p>
<p>Many publishers don’t consider their MOOCs as a product, and the UX is non-existent. When students lose interest in the content, they quit. And I’ve been there a few times.</p>
<p>Here’s my (non-exhaustive) collection of bad memories about MOOCs:</p>
<ul>
<li>Comedians portraying teachers ??</li>
<li>Instructor teaching the entire MOOC with hard to understand English?⁉️</li>
<li>Pausing lectures to read the code and recreate examples ?? and, as a result, having no idea of what the instructor is coding ??‍</li>
<li>Green Screens! ??</li>
<li>Ghost Community ??</li>
<li>Week #1 assignment done in &lt; 5 minutes… ?✌️</li>
<li>Week #2 assignment impossible to do ?⚰️</li>
<li>Home-taped unedited 90+ minutes screencasts ??</li>
<li>Decors to recreate a classroom ??</li>
</ul>
<p>Some may not look that bad, but with a 6 - 8 weeks run (or longer), it’s quite tedious. CS50 avoids these kinds of mistakes and focuses on building a learning experience like no other.</p>
<p>CS50 is a marathon that kickstarts with a fantastic intro.</p>
<h3 id="heading-the-first-hour">The first hour ⏱</h3>
<p>Every MOOC looks interesting at first glance. But the learning experience sometimes turns out bland and disheartening for the students.</p>
<p>But CS50 learned how to ship fascinating educational content within the best framework.</p>
<p>The first thing I had to do after enrolling was to <a target="_blank" href="https://sites.google.com/site/os161ubc/os161-installation/install-virtualbox-and-the-cs50-appliance">install the CS50 appliance</a>. The tutorial is quite lengthy, but for my first hour in the class, it was thrilling!</p>
<p>The CS50 appliance consists of a virtual machine powered by VMware.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*bo3OXADoIwkZQMcV6FY0lQ.png" alt="Image" width="800" height="449" loading="lazy">
<em>Every CS50 student received a free 1-year license key to run the appliance on VMware ?</em></p>
<p>The desktop includes:</p>
<ul>
<li>Gedit for coding</li>
<li>Dropbox (in the home folder) to save the code sheets</li>
<li>Terminal to run the code</li>
<li>Google Chrome to browse the web and submit the assignments</li>
</ul>
<p>I haven’t even written one line of code or seen a second of the first lecture yet and I was already blown away.</p>
<p>Not a lot of MOOCs offers a UX as immersive as CS50 does<strong>.</strong></p>
<p>Sometimes it was buggy, but I was always excited to work with it. <strong>Launching the CS50 appliance on my laptop was Computer Science to me.</strong></p>
<p>Today, CS50 appliance is deprecated. They’ve replaced it with the CS50 IDE. After passing the MOOC, I have tried it and the interface is awesome.</p>
<p><strong>People at CS50 iterate to deliver major upgrades. This shows how committed they are to their product.</strong></p>
<p>After taking this first step, it was time for me to dive into my first lecture!</p>
<h3 id="heading-popcorn-time">Popcorn Time ?</h3>
<p>Here comes the best part of the course: the videos!</p>
<p>In CS50, you have 4 types of videos:</p>
<ul>
<li>Lectures: live-taped in the Sanders Theater of Harvard University</li>
<li>Sections: live-taped tutoring sessions in Harvard University</li>
<li>Shorts: short videos to explain one important concept</li>
<li>Walkthroughs: shorter videos to give hints about a problem set</li>
</ul>
<p><strong>Videos in MOOCs are pivotal.</strong> They constitute the main channel for teaching. Students watch them to learn.</p>
<p>When a MOOC fails in hooking the student to the classroom, videos are often to blame. But, when a MOOC succeeds in bridging the classroom experience so that the student feels they’re a part of it, great videos are always the reason.</p>
<p><strong>To deliver a rockstar experience, it’s mandatory to have great staff behind the scenes.</strong></p>
<p>CS50 has Professor David J. Malan, the teaching fellows (TFs), and many other support staff that no one can see.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*g3mKL_n531ZYBvvAOe2BcA.jpeg" alt="Image" width="800" height="533" loading="lazy">
<em>SHOWTIME ?</em></p>
<h3 id="heading-professor-malans-teaching-style">Professor Malan’s teaching style</h3>
<p>This is how Professor Malan presents the purpose of CS50:</p>
<blockquote>
<p>“The goal of the class ultimately is not to teach you programming, is not to teach you C or PHP or SQL or any number of the words and acronyms in the course’s description, but rather to teach you to solve problems more effectively and to think more methodically and more algorithmically, so to speak.” David J. Malan <a target="_blank" href="https://www.youtube.com/watch?v=zFenJJtAEzE&amp;t=5m56s">introducing CS50 in 2015 week 0 lecture</a>.</p>
</blockquote>
<p><strong>This makes a huge difference.</strong> CS50 will teach you how to code - it’s a great introduction to C - but more importantly, it will challenge your logic along the way.</p>
<p>All videos serve a very specific purpose. You can’t replace a lecture by a section, as they are complementary. You can learn a few things about programming by watching only shorts, but you’ll miss the point of the class.</p>
<p>Lectures are meant to feed the students’ mindset, so to speak.</p>
<p><strong>Professor Malan takes time to explain how to think with logic and prove how beneficial it is for programming.</strong></p>
<p>He would sometimes run chunks of code that were not working, and these bits were the best parts of his lectures. I saw the theater laughing along with him when an unexpected error prompted. Then, he would challenge his logic with relevant questions to try at the end coupled with a few fixes to debug his code.</p>
<p>He always starts his lectures with his catchphrase:</p>
<blockquote>
<p>This is CS50! ?</p>
</blockquote>
<p>Right after that, he goes on with “And this is week #n…” and his lecture begins. And it’s a real show!</p>
<p>He galvanizes his audience with his energetic storytelling. He has his signature expressions (“underneath the hood”, “at the end of the day”). Watching 5 minutes of his first lecture is enough to get familiar with his teaching.</p>
<p><strong>Professor Malan does more than lecturing. He performs live to prove his point. And this helps students remember a key concept in Computer Science.</strong></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*gXwZdGiLgxFMkrERx9pjFA.jpeg" alt="Image" width="800" height="533" loading="lazy">
<em>Memorable moment of week #0 lecture to explain algorithms ?</em></p>
<p>He often asks students to join him on stage to complete all sorts of challenges. These moments are both very instructive and entertaining to watch!</p>
<p>One of the funniest of the MOOC was the “Peanut Butter &amp; Jelly Demo”. CS50’s teaching fellow Rob joins Professor Malan on stage to illustrate what pseudocode is:</p>
<p>After that, nobody would forget what pseudocode is. ???</p>
<p><strong>Every time Professor Malan asked the students to come up on stage, I was super envious behind my screen.</strong></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*m3Y_4FLa1Tea1jcuezwkrg.jpeg" alt="Image" width="800" height="533" loading="lazy">
<em>One picture can speak a thousand words.</em></p>
<h3 id="heading-course-structure-and-highlights">Course structure and highlights</h3>
<p><strong>One of the best parts about the course? Professor Malan hosts every CS50 lecture and he nails it every time. ?</strong></p>
<p>There are two lectures per week, and the intensity he puts into them never drops. His lectures soon became my favorite moments of the class.</p>
<p>By week #3, I found myself binge-watching the weekly lectures. And the same viral effect affected the sections.</p>
<p>Sections were a must-watch for me for two reasons. First of all, I needed further explanations following the lectures. But the second reason was my Teaching Fellow (TF), Allison.</p>
<p>Like Professor Malan, Allison teaches with a lot of energy, good vibes and a lot of hand gestures. Each sections length was more than an hour, but was never a problem for me to focus. Her flow is natural, she interacts with the classroom, and here again I felt included.</p>
<p>Allison has signature expressions (“Extra Kudos!”, “Everyone good?”) which makes it easy to get comfortable with the section. She also shows a lot of support to the classroom. She repeats her favorite tips week after week to help us with our week’s problem set (better know as a pset).</p>
<p>Her most helpful advice? “Paper &amp; Pen” and “Sleep!!!!”</p>
<p>Pseudocode and going to sleep when I was stuck on my pset late at night saved me more than once.</p>
<p>Allison wasn’t the only great TF in the staff. Zamyla is great in the pset walkthroughs. Rob is also excellent in his sections and shorts (nothing beats his peanut butter and jelly sandwiches, though!).</p>
<p>Every student had his or her favorite TF.</p>
<p>But great hosts can’t do all the magic. To run a good show, you need more people.</p>
<h4 id="heading-the-tech">The tech</h4>
<p>Spoiler alert: it’s not a green screen behind the instructor!</p>
<p>CS50 mesmerized me with the setup and the technical effort they made to tape the videos.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*KndGlb65IQHe9Zmxp6JObA.jpeg" alt="Image" width="800" height="533" loading="lazy">
<em>View from the monitoring booth ?</em></p>
<p>Professor Malan takes great care at crafting the best videos possible.</p>
<p>The camera crew work like professionals and the output is flawless. They offer to the students the most comfortable viewing possible.</p>
<p>But hiring a filming crew, owning a majestic theater, and possessing a pair of Google Glasses are not required to teach. What’s very important here is to offer a true original learning experience to the viewers.</p>
<p>Think about the Khan Academy. <a target="_blank" href="https://www.quora.com/What-software-does-Khan-Academy-use-to-record-their-lectures">How much does it cost for Sal Khan to create a video?</a></p>
<p>It’s not about money but style, but rather how an instructor commits themselves to teach students and get great results. For Professor Malan, it means shooting and editing videos like a pro. For Sal Khan, <a target="_blank" href="https://www.youtube.com/watch?v=Ohu-5sVux28">it means recording on a black screen and writing on it in different colors while teaching.</a></p>
<p>His videos are as powerful as those in CS50: you need 10 seconds to understand what’s going on with the sound turned off.</p>
<p>And at the 11th second, you’ll want to turn the sound back on to learn more.</p>
<p>By contrast, somebody staring at the camera over a green wall doesn’t build a great context for learning. It’s uncomfortable to watch and dull after a few minutes.</p>
<p>These kinds of videos are lethal for MOOCs, they kill engagement and make the classroom boring so to speak.</p>
<p>Once my pset was done, I was happy for two reasons. The first was to have nailed something challenging I could be proud of. The second was to watch two new lectures and one new section!</p>
<h3 id="heading-pset-1-homework-0">Pset 1 - Homework 0 ?</h3>
<p>CS50 disrupted a traditional teaching method: homework.</p>
<p>When I was studying CS50, I organized my week as follows:</p>
<ul>
<li>Watch the lectures &amp; section?</li>
<li>Discover the pset ?</li>
<li>Read week’s notes ?</li>
<li>Solve the pset ?</li>
<li>Repeat ?</li>
</ul>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*fKyqihAoLrvVnI9wdBqEgg.jpeg" alt="Image" width="800" height="600" loading="lazy">
<em>From top to bottom, left to right: lectures notes (Week #0 to #3 missing), psets, quizzes, shorts notes, a book about C programming and a GDB cheat sheet ?</em></p>
<p>I liked to discover my pset as soon as possible to try to gauge the amount of trouble I’d need to go through. It was a helpful strategy for me.</p>
<p>But wait… When did “homework” turn into something exciting?!</p>
<p>Read what Professor Malan says about psets after he decided in his sophomore year to “step foot in a classroom called CS50”:</p>
<blockquote>
<p>“And at that point, did I finally realize that, my God, homework could actually be fun. Indeed, I was on those kids that on Friday evenings when the psets would be released, I would go back to my room and dive into the night’s psets.” David J. Malan <a target="_blank" href="https://www.youtube.com/watch?v=zFenJJtAEzE&amp;t=3m12s">introducing CS50 in 2015 week 0 lecture</a>.</p>
</blockquote>
<p>Yes, you read that right.</p>
<p>Everything I learned with CS50 was through completing exciting challenges.</p>
<p>How radical is it to <a target="_blank" href="https://cdn.cs50.net/2014/fall/psets/2/hacker2/hacker2.html">code a brute-force algorithm to decipher passwords</a>? Or writing <a target="_blank" href="https://cdn.cs50.net/2014/fall/psets/4/hacker4/hacker4.html#recover">a program to recover damaged pictures</a> like forensic specialists do in TV shows?</p>
<p>Psets are fun because they ask you to do something worth your time. They proved to me that I was on the right track, because I ran programs of my own that blew my mind.</p>
<p>So two weeks after taking CS50, I was able to brute force passwords. How many MOOCs can do that after 2 weeks?</p>
<p>This was far beyond my expectations, I felt like I was a bloody hacker! ?</p>
<p>The psets could be very challenging (my ??? trilogy: pse<a target="_blank" href="https://cdn.cs50.net/2014/fall/psets/4/hacker4/hacker4.html">t4 /</a> pse<a target="_blank" href="https://cdn.cs50.net/2014/fall/psets/5/pset5/pset5.html">t5 /</a> pse<a target="_blank" href="https://cdn.cs50.net/2014/fall/psets/6/pset6/pset6.html">t6) b</a>ut the reward was unique. They were two series of psets: standard &amp; hacker editions. I took the latter (available until pset #4) only to dive deeper into mad challenges.</p>
<p>The community moderators (shoutout to curiouswiki, Cliff B, Kareem and the others!) on Slack, Reddit or Stack Exchange never left me alone in the dark. Many students were active, too, and it was great to see so many people sticking together.</p>
<p>Notes were precious as well. People from the staff were in charge of writing the transcripts of every lecture. Besides the videos, I used to read these notes over and over and annotate them to crack my psets.</p>
<h3 id="heading-final-thoughts">Final Thoughts ?</h3>
<p>Enrolling in CS50 is one of the best decisions I’ve ever made.</p>
<p>CS50 is more than a course to broaden coding skills. Thanks to a rich learning path (<a target="_blank" href="http://cdn.cs50.net/2014/fall/lectures/0/w/lang/">reminds me of the 64 subtitles available, and I’m not joking!</a>), CS50 turned me into a fast learner. But more than anything else, CS50 demonstrates what I think education should always be like.</p>
<p>If I had crossed paths with CS50 10 years ago, I’d have gone right into Computer Science with passion.</p>
<p>CS50 contributes to fixing education. Places like Khan Academy or Codecademy do, too. They all show that education can be playful, fascinating, and rewarding.</p>
<p>If only more MOOCs were as great as CS50, it would help many people find the most fulfilling studies.</p>
<p>? C<em>lap if you liked my story! Interested in EdTech too? Hit the subscribe button to make sure not to miss my next story. Feel free to drop a comment below or to h<a target="_blank" href="https://twitter.com/dfatpunk">it me up on Twitter</a> ?</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Why you learn when you teach ]]>
                </title>
                <description>
                    <![CDATA[ The best way to learn is to teach. You’ve heard many people say this. But is it true? I knew teaching had benefits. For example, if you teach, people will know you exist. People may be able to learn from your experience. But learn? I was skeptical. B... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/why-you-learn-when-you-teach-d722e9b95902/</link>
                <guid isPermaLink="false">66c4c7a1bd556981b1bdc47a</guid>
                
                    <category>
                        <![CDATA[ learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Zell Liew ]]>
                </dc:creator>
                <pubDate>Tue, 19 Jun 2018 00:34:58 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*hrx28pc0ybLdcKG0WCi2qg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>The best way to learn is to teach.</p>
<p>You’ve heard many people say this. But is it true?</p>
<p>I knew teaching had benefits. For example, if you teach, people will know you exist. People may be able to learn from your experience. But learn? I was skeptical.</p>
<p>But I realized the statement is true. You learn best when you teach. I can vouch for it after teaching frontend development for many years.</p>
<p>This article explains my thoughts on why teaching others helps you learn.</p>
<p>To understand why teaching helps you learn, we have to first talk about learning. You can’t teach something when you haven’t learned it.</p>
<h3 id="heading-the-learning-process">The learning process</h3>
<p>Let’s say you want to learn JavaScript. All you know is you’re on one side of a cliff. The endpoint is on the other side of the cliff.</p>
<p>You don’t know how to cross the gap (yet).</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/G3z6p32GmyVuvO5ZJ3OUwqQeqRT8ie9k3wvH" alt="Image" width="800" height="600" loading="lazy"></p>
<p>When I tried to learn JavaScript, I read through countless books and tutorials. I even looked at source code to see how people coded. I also searched for best practices.</p>
<p>Each bit of material I come across acted as a tiny foothold for me to get to the other side. Some materials were easy to understand. Others were hard.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/8B5CXrKnpDkiKdQMEna8INa70DA4bEyLCWor" alt="Image" width="800" height="600" loading="lazy"></p>
<p>Sometimes the footholds were too far apart. I missed my step, I fell into the valley, and I tried again.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/ojSEDb1sjcst3LzzTWiHyFLpQMrONgR48Kvx" alt="Image" width="800" height="600" loading="lazy"></p>
<p>Sometimes I hit a wall. I didn’t understand articles I read. I fell into the valley, and I tried again.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Phb9L7IwVTRPurUWIiMQiGpiX8fmLzn1E2CT" alt="Image" width="800" height="600" loading="lazy"></p>
<p>After trying enough (and losing enough lives), I toned up my leg muscles. I could jump a little farther and higher than before. I tried the articles I couldn’t understand again.</p>
<p>And sometimes I succeeded in getting past the stage I was stuck at.</p>
<p>And I got to the other side.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Si-CsUhYe4dca6JMQVTVykmdQDCVXsz4W8yH" alt="Image" width="800" height="600" loading="lazy"></p>
<p>Only to realize there’s more to go…</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/741oMK-2Ct3JwojtIPVi9IQb8lFtjlPx8qCg" alt="Image" width="800" height="600" loading="lazy"></p>
<p>But that’s okay. There’s always more to go. That’s what makes learning fun.</p>
<h3 id="heading-teaching-helps-you-gain-perspective">Teaching helps you gain perspective</h3>
<p>I didn’t know how far I’d gone until I started teaching JavaScript. I thought I knew very little. Not enough to be “an expert” yet anyway.</p>
<p>But it turned out that I knew a lot. Enough to even make a <a target="_blank" href="https://learnjavascript.today/">super comprehensive course on JavaScript</a>.</p>
<p>So here’s a side benefit to teaching.</p>
<p>When you learn, you focus on moving from cliff to cliff. You have no idea how far you’ve gone because you don’t stop to think.</p>
<p>But when you teach, you stop.</p>
<p><strong>You pause, you look backward, and you realize how far you came. You gain perspective, and this perspective gives you confidence in your abilities.</strong></p>
<p>You know more than you give yourself credit for.</p>
<h3 id="heading-the-teaching-process">The teaching process</h3>
<p>When you teach, you try to help someone cross the cliff you crossed.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/pnfmUByEs-MVz1AmeFoWE81QEA9Ix1RLm1b9" alt="Image" width="800" height="600" loading="lazy"></p>
<p>One way to teach is to direct people to resources you went through. They will likely face the same difficulties you faced. They’ll hit walls, and they’ll miss their steps. Hopefully, they’ll gain enough strength to move past the obstacles themselves.</p>
<p>But this isn’t teaching. This is simply… pointing people to the resources you used. You can help shorten their learning curve, but you’re not teaching. Not yet.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Y94gTTToTLDwNAY76rT6qeDzNKZ4RlF1Tvfm" alt="Image" width="800" height="600" loading="lazy"></p>
<p><strong>To teach, you walk backwards. You stand beside the student and help them through the gap.</strong></p>
<p>You can point them to a tutorial while you wait for their questions. Sooner or later, they’ll ask questions that surprise you, like “Why this and not that?”</p>
<p>Sometimes, one way is better than the other. Sometimes, both ways are possible. And you learn there’s another way to cross the cliff.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/8eZmEb-0DsGexBYp4UGys4lRfUcmJE2WXxrc" alt="Image" width="800" height="600" loading="lazy"></p>
<p>Sometimes, you think of a better example to help them cross the chasm more easily. When you do this, you build another foothold for yourself.</p>
<p>That’s why you learn when you teach — <strong>you build more footholds.</strong></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Jh-2CwKCLeMGzhMcFAGqTJXa9mYSyv9TvR9b" alt="Image" width="800" height="600" loading="lazy"></p>
<p>Maybe one day, when you’ve answered enough questions, you’ll build so many footholds that you’ll fill the gap.</p>
<p>That’s when your knowledge is rock solid.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/9aXGdSJq-0cojKRgpQVy42Ay97PifIczwnGB" alt="Image" width="800" height="600" loading="lazy"></p>
<p>There’s no need for footholds anymore. You can simply walk across. Students you teach can walk across, too.</p>
<h3 id="heading-who-can-you-teach">Who can you teach?</h3>
<p>You don’t need to be an expert to teach. <strong>You can teach anyone who wants to cross the cliff you crossed.</strong></p>
<p>It’s best to help immediately because you know how it feels to go past the cliff. You know danger spots where students need to be aware.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/PWfNv-T7wGDijRo7Dm3ygtdxShbKDc0nHtEV" alt="Image" width="800" height="600" loading="lazy"></p>
<p>Sometimes people will ask you questions and you’ll go, “I don’t know”.</p>
<p>That’s okay. You may not be able to fill up all the gaps yet. But now you know you’re missing a piece. You can fill it up later by doing more research.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/DMeePXN1mMVjfU2JVq2t9LlzlNW91ZETQUBh" alt="Image" width="800" height="600" loading="lazy"></p>
<p>Sometimes you won’t be able to fill up the gap immediately. There are too many things you don’t know about.</p>
<p>That’s okay too. Maybe you’ll find the block of stone you need as you progress to another cliff. It’ll be in plain sight.</p>
<p>When you see it, you can go back and fill it up.</p>
<p>That’s another reason why you learn when you teach — <strong>you see gaps in your knowledge.</strong></p>
<h3 id="heading-want-to-learn-to-teach-better">Want to learn to teach better?</h3>
<p>Some developers are horrible at teaching. They’ll throw resources your way and ask you to figure it out yourself. Others talk in alien FOOBAR language that you’ll have a hard time understanding.</p>
<p>Don’t blame them. They’re doing the best they can. Maybe they’re not interested in teaching. And that’s okay.</p>
<p>But you can teach well if you want to.</p>
<p>I know a thing or two about teaching after writing tutorials for years. I want to share more of these things with you.</p>
<p>Would you be interested? If yes, I’d love to hear:</p>
<ol>
<li>Why you want to teach</li>
<li>What are your greatest obstacles to teaching</li>
</ol>
<p>Can’t wait to hear from you in the comments below :)</p>
<p>Thanks for reading. Did this article help you in any way? If I did, <a target="_blank" href="http://twitter.com/share?text=Why%20you%20learn%20when%20you%20teach%20by%20@zellwk%20?%20&amp;url=https://zellwk.com/blog/why-you-learn-when-you-teach/&amp;hashtags=">I hope you consider sharing it</a>; you might just help someone who felt the same way you did before reading the article. Thank you.</p>
<p><em>Originally published at <a target="_blank" href="https://zellwk.com/blog/why-you-learn-when-you-teach/">zellwk.com</a>.</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Learn Anything ]]>
                </title>
                <description>
                    <![CDATA[ By Yazeed Bzadough Set a target, learn just enough to hit it, teach someone, repeat. JavaScript’s my craft. Despite my young career, no other skill rivals the hours I’ve put into this language and its ecosystem. One question continues to pop up, howe... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-learn-anything-1f1324e5ef81/</link>
                <guid isPermaLink="false">66d461a647a8245f78752ada</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sun, 07 Jan 2018 10:33:05 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*TG8MtkhYGVnfR21hcOIsdg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Yazeed Bzadough</p>
<p><strong>Set a target, learn just enough to hit it, teach someone, repeat.</strong></p>
<p>JavaScript’s my craft.</p>
<p>Despite my young career, no other skill rivals the hours I’ve put into this language and its ecosystem.</p>
<p>One question continues to pop up, however. A question that can hinder anyone’s personal development…</p>
<blockquote>
<p>How Do I Learn X?</p>
</blockquote>
<p>I thought this question only haunted me, but experience proved otherwise. <strong>This question agitates anyone learning new stuff</strong>. I’ve met smart cookies who ask,</p>
<ul>
<li>“What should I learn?”</li>
<li>“How can I learn it?”</li>
</ul>
<p>Apply those two questions to any skill — programming, basketball, cooking, dancing, archery, Chinese, Chess, Checkers. <strong>Your end result is a confused newbie who’ll start, but never finish.</strong></p>
<p>Until recently I’d reply “Uhh, idk lolbro…just dew it.” But my perspective shifted after some reflecting and research.</p>
<p>We’re not lost because we’re dumb, nor do we procrastinate because we’re lazy.</p>
<h3 id="heading-were-overwhelmed">We’re Overwhelmed</h3>
<p>By asking “How do I learn <strong>X</strong>?”, you’ve just volunteered to drown in a sea of knowledge dug by countless people over many years.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*-lip49A_DUn3WwNpHhljRw.jpeg" alt="1*-lip49A_DUn3WwNpHhljRw" width="1600" height="1069" loading="lazy"></p>
<p>Don’t “learn” <strong>X</strong>,” but rather understand what it’s composed of and tackle one piece at a time. If you say “I want to learn programming!”, I ❤️ your enthusiasm, but you’ve already started down a slippery slope.</p>
<p>Like any large topic, _programming’s too general — _and trying to “learn” it shows a lack of focus that eventually blocks most people from taking action. In my opinion, that’s partly why programming’s a highly paid profession: most people get lost in the maze and give up.</p>
<p>Vague goals = abandoned goals.</p>
<p>So here’s what I think you should do instead.</p>
<h3 id="heading-define-x">Define “X”</h3>
<p>What are you trying to learn? How’s it used in the real world? Do your research and answer these questions to gain a better understanding of the big picture.</p>
<h3 id="heading-slice-it-thin">Slice it thin</h3>
<p>The Pie of Knowledge is big, so slice it thin if you want to eat. You never see doctors or lawyers knowing everything about their field. Absorbing all that information is impossible and has diminishing returns — they know enough to be effective at their <em>specialized</em> job. The same applies to engineers, mechanics, psychologists, chefs, etc. You specialize, not generalize.</p>
<p>Of course, you’ll need general knowledge to get started like everyone else. After that, pick your slice, dominate it and move on to another slice. Over many years, you master many slices.</p>
<h3 id="heading-practical-projects">Practical projects</h3>
<p>Once you’ve chosen a very specific target, it’s time to scream, aim, and fire. Find relevant work experience (full-time, intern, apprentice, volunteer). If you can’t, then make your own experience through personal projects.</p>
<p>However you prep, make sure the work is as real-world as possible. Look up enterprise-grade projects and try to create simplified versions of them. Start with small tasks and work your way up. Whatever technologies your industry’s using, try to get your hands on something similar and become proficient at them. It doesn’t matter if you or a boss is ordering the work, what matters is the work’s value to your portfolio.</p>
<p>A personal example…for one programming internship, the director loved my passion and ability to speak on my personal projects. He counted them in lieu of “real” work experience because I adequately demonstrated my skills.</p>
<h3 id="heading-learn-just-enough-to-be-useful">Learn just enough to be useful</h3>
<p>Countless times, I’ve made the mistake of acquiring knowledge without ever applying it. I’ve read lots of books and documentation, expecting to become a wizard at the end of it all.</p>
<p>I just wasted my time. It’s also a really sneaky way to procrastinate…you can’t blame someone who’s actually “reading the material”. But in truth, how much knowledge can you retain without applying any of it?</p>
<p>Instead, just keep grinding on your projects. When you get stuck (and it will happen <em>a lot</em>, believe me), go back and study until you can solve the problem. Once it’s fixed, keep moving until you’re stuck again, go back and study, rinse and repeat!</p>
<p>This, I think, is where most people give up. Getting good at something is pretty simple, conceptually.</p>
<ul>
<li>Study</li>
<li>Do</li>
<li>Fail</li>
<li>Repeat</li>
</ul>
<p>But I did forget one piece, arguably the most important one…</p>
<h3 id="heading-teach-someone">Teach someone</h3>
<p>I can’t describe how priceless this is.</p>
<p>You know those learning breakthroughs we get? You’re studying, it suddenly clicks and you’re like “Aha, I get it! Everything makes sense now!”</p>
<h4 id="heading-ive-had-more-aha-moments-teaching-than-i-ever-did-studying"><strong>I’ve had more “Aha!” moments teaching than I ever did studying.</strong></h4>
<p>Teaching requires you to digest the information you’re presenting intensely. It opens doors of thought you never knew existed. Helping someone else understand a concept demands you seriously know what you’re talking about. Otherwise, you ramble on in generalities, never actually helping the student progress.</p>
<p>I’ve done that with coworkers and stopped myself from saying “Sorry, I’m not 100% familiar with this. Let me research and get back to you”. Then we’ll Google the question and come to a conclusion together. Everyone walks away with a deeper understanding because we did it while communicating.</p>
<p>Even if you’re not “the teacher”, you learn 1000% faster just by bouncing ideas off your buddies. I did this with a friend while studying fundamental CS algorithms. Those concepts would’ve been too difficult for me to grasp in isolation. Next time you study, phone a friend!</p>
<h3 id="heading-in-closing">In Closing</h3>
<p>Set a target, learn <em>just enough</em> to hit it, teach someone, repeat. Please test this out and let me know what <em>doesn’t</em> work with it.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Building Online Communities: GitHub Teacher ]]>
                </title>
                <description>
                    <![CDATA[ By Gitter We talked to the GitHub Training team about the free GitHub courses they offer to both developers and non-developers, as well as about the community that formed around them on Gitter. Check out what they say and enroll in the course! What i... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/building-online-communities-github-teacher-4db781459189/</link>
                <guid isPermaLink="false">66c346e1fe2a6da72cef3363</guid>
                
                    <category>
                        <![CDATA[ community ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                    <category>
                        <![CDATA[ GitHub ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 04 Aug 2016 12:19:14 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*SmXFsylaToQViickiQWpRg.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Gitter</p>
<p><em>We talked to the GitHub Training team about the free GitHub courses they offer to both developers and non-developers, as well as about the community that formed around them on <a target="_blank" href="https://gitter.im/orgs/githubteacher/rooms">Gitter</a>. Check out what they say and enroll in the course!</em></p>
<p><strong>What is the GitHub Teacher? How did it come about?</strong></p>
<p>The GitHub Training team uses the @GitHubTeacher as the teaching persona for the various courses we offer. The account acts as a shared location for our trainers to create repos, manage collaborators, and their related organizations.</p>
<p><strong>What topics do you cover in your courses? Who are the courses aimed for?</strong></p>
<p>Our courses cover a breadth of job-relevant topics across the Git and GitHub ecosystem. Whether you are an experienced developer trying to find out what GitHub is all about, or a non-developer learning how to use GitHub for your internal documentation, cookbook, home repairs, or data compilation — we have you covered.</p>
<p>We invite anyone to take the <a target="_blank" href="https://github.github.io/on-demand/">Introduction to GitHub course</a> to see how they can use GitHub to make their lives easier. I may sound like I’m drinking the Kool-Aid, but take the class and I’m confident you’ll have ideas on how you could use it in your personal and professional life.</p>
<p><strong>Where do your students and teachers come from?</strong></p>
<p>All over the globe, just like our GitHub community. However, we haven’t (yet) been able to confirm that people have trained on Git or GitHub while visiting the Arctic or Antarctica (❤️ to all the developer polar bears and penguins out there!). It isn’t uncommon for our students to participate in training sessions during the late night / early hours in their local time zone. Our <strong>GitHub for Developers</strong> class is even offered in EMEA friendly time slots.</p>
<p>Our instructors are distributed around the globe, providing GitHub training for GitHub around-the-clock. The Training Team assists customers wherever they call home.</p>
<p><strong>Git is known to have a steep learning curve. How do you handle that?</strong></p>
<p>While it might be true that Git can take a while to master, our courses employ <a target="_blank" href="https://guides.github.com/introduction/flow/">GitHub Flow</a> and are delivered to enable even Git and GitHub novices to hit the ground running. Our classes focus on the everyday tasks associated with Git and GitHub. During the second day of our <strong>GitHub for Developers</strong> course, we tackle some of the more advanced Git concepts.</p>
<p><strong>How can GitHub be useful to non-developers? Do you see interest from them in learning about GitHub as well?</strong></p>
<p>GitHub really <em>is</em> for everyone. Though often associated with developers and software, authors, ranging from teachers to researchers, are discovering the ways Git and Markdown aid in authoring and versioning their content. But don’t take our word for it: explore <a target="_blank" href="https://github.com/showcases/">GitHub Showcases</a> to see what our amazing community is up to.</p>
<p><strong>Why do you think the reasons are that Git, and GitHub in particular, encourage a better workflow, over other source-control systems?</strong></p>
<p>GitHub is social. Our community plays a huge role in why GitHub excels over other source-control systems. The <strong>GitHub Flow</strong> and ease-of-use is welcoming to users that are new to our platform. The distributed nature of Git helps continuity of work in a world that can grind to a halt when internet connectivity is lost.</p>
<p>At the end of the day, we believe in the power of collaboration. GitHub provides a platform that allows anyone to contribute to projects that are near and dear to their heart, which was a lot more difficult to do before we showed up.</p>
<p><strong>What resources do you recommend for those wanting to gain better understanding of Git and the GitHub ecosystem?</strong></p>
<p><a target="_blank" href="https://services.github.com/training">GitHub Training</a> offers free courses every month to help anyone get a better understanding of Git and GitHub. In addition to our trainings, we have a metric-ton of videos on both <a target="_blank" href="http://youtube.com/user/github">YouTube</a> and <a target="_blank" href="http://vimeo.com/github">Vimeo</a>. If reading books is your cup of tea, we recommend checking out <a target="_blank" href="http://git-scm.com/book/en/v2">Pro Git</a>.</p>
<p><strong>Did you learn anything new yourself from teaching GitHub to those with little experience using it? Can you give an example?</strong></p>
<p>As a relatively new instructor, I’m most impressed with the workflows that our new users are coming to the platform with. Aside from the different workflows and environments our new users are coming to the table with, I’m amazed at the creativity and inquisitive nature of our learners. I think people intrinsically want to break something when they are trying it out, they throw things at GitHub that would stump their current source control systems and I love being able to identify how to solve their unique problems.</p>
<p><strong>How to sign up for a class? How often do they take place?</strong></p>
<p>Students can sign up for our classes on our <a target="_blank" href="https://services.github.com/training">Training website</a>. GitHub offers a selection of classes that increase in scope as the student progresses through them. We suggest that anyone new to Git and GitHub enroll in the <strong>Introduction to GitHub</strong> course (which is currently scheduled for the 15th of August).</p>
<p>After completing <strong>Introduction to GitHub</strong>, we encourage students to enroll in either <strong>GitHub for Everyone</strong>, which emphasizes the use of the <a target="_blank" href="http://desktop.github.com">GitHub Desktop</a>, or <strong>GitHub for Developers</strong>, which dives right into using GitHub with a command-line interface. Both <strong>GitHub for Everyone</strong> and <strong>GitHub for Developers</strong> have classes available in August and September.</p>
<p>Outside of the courses that focus on using GitHub while utilizing Git, we also offer a Git Essentials course which focuses on commonly used Git operations without relying on GitHub.</p>
<p>In addition to our scheduled Open Enrollment courses, students can also take our <a target="_blank" href="https://github.github.io/on-demand/">on-demand training</a> that is always available and can fit well into a busy schedule. The course takes them through the GitHub Flow and gives them an opportunity to work on a community driven project before jumping into the massive world of Open Source projects hosted by GitHub.</p>
<p>Similar to our Open Enrollment courses, we use <a target="_blank" href="https://gitter.im/orgs/githubteacher/rooms">Gitter</a> to provide students an opportunity to collaborate with fellow learners, as well as pose questions to the Training team.</p>
<p><strong>Anything else you’d like to add?</strong></p>
<p>Moving to <a target="_blank" href="https://gitter.im/orgs/githubteacher/rooms">Gitter</a> as the chat platform for our courses has strengthened our learning communities. Countless students jump at the opportunity to answer one anothers’ questions every class and it’s something we encourage.</p>
<p>See you in class,</p>
<p>❤️ GitHub Training</p>
<p>P.S. The Training Team developed the answers to all of these questions collaboratively using Issues and Pull Requests.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Scratch Has a Marketing Problem ]]>
                </title>
                <description>
                    <![CDATA[ By Steve Krouse At first, I avoided MIT’s Scratch programming language. It seems childish. When you load the Scratch homepage, you’re greeted by friendly cartoons that seem appropriate for preschoolers. The programming language itself isn’t even a pr... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/scratch-has-a-marketing-problem-f84626bd18ef/</link>
                <guid isPermaLink="false">66c35e50add0807b8e3fb91d</guid>
                
                    <category>
                        <![CDATA[ education ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learn to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 25 Jul 2016 19:31:01 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/0*oDbEFNhoM75KOnvF." medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Steve Krouse</p>
<p>At first, I avoided MIT’s Scratch programming language.</p>
<p>It seems childish. When you load the <a target="_blank" href="http://scratch.mit.edu">Scratch homepage</a>, you’re greeted by friendly cartoons that seem appropriate for preschoolers. The programming language itself isn’t even a proper <em>language</em>. Instead of typing, you drag and drop pre-made blocks into place. It’s more reminiscent of LEGO than real engineering.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/MQsBBQX-IqjsLdwzDPXse-W4okCjtM0Etdpg" alt="Image" width="800" height="459" loading="lazy"></p>
<p>Every student over the age of 12 seemed to agree with my diagnosis. “I did that in 2nd grade. It’s not real coding.” So I taught students Python, Java, HTML, CSS, and JavaScript — real programming languages that you type, not silly blocks.</p>
<p>However, there was a problem.</p>
<p>It’s hard to teach “real coding.” Really hard. With some students, it seemed impossible.</p>
<p>Before my eyes, the students that were excited to do “real coding,” began to label themselves as “bad at coding” the same way students have learned to label themselves “bad at math.” I felt like I was doing more harm than good, teaching students coding languages they weren’t ready for.</p>
<h4 id="heading-giving-scratch-a-second-look">Giving Scratch a Second Look</h4>
<p>So I went back to the drawing board, looking for the right programming language for my students. I scoured the Internet for books and tips on how to teach kids to code and everywhere I looked, there was Scratch. So I gave Scratch a try.</p>
<p>It turns out, typing is overrated. Programming isn’t like English. There aren’t a million different words, phrases, and sentence structures. There are only a few dozen, so creating blocks for them saves time, and more importantly, prevents 70% of errors new programmers face. In text-based coding, if you forget a semicolon, your program might not even run, but Scratch won’t even let you make that mistake. Block-based programming enables beginner programmers to focus 100% of their mental energy on the design and logic of their programs, not the semantics.</p>
<p>Even better, Scratch was designed to create video games and stories. Students enjoy making video games almost as much as they love playing them. This means that you don’t have to motivate students with the carrot and stick approach of homework, grades, and tests to use Scratch. It’s intrinsically motivating to make something that you can immediately share with your friends and family, so students continue to work on Scratch projects at home simply for the fun of it.</p>
<p>After this revelation, I was excited to share Scratch with the world, “Hey everyone! The search for the best first programming language is over. We’ve found it!”</p>
<h4 id="heading-scratch-seems-too-easy">Scratch Seems Too Easy</h4>
<p>As it turns out, I was late to the party. Everyone already knew about Scratch. Even worse, they actively avoided it because it’s “babyish.”</p>
<p>“No! You don’t understand,” I pleaded with students. “It’s actually really challenging. There’s a lot for you to learn in it before you’ll be ready for JavaScript.” But nobody wanted to hear it.</p>
<p>Last month, this brought a 12-year-old boy to tears in my class.</p>
<p>Sam represented himself as a true nerd, proudly telling the class he memorized over 150 digits of pi, and has been to many technology and science camps. When I suggested he start in Scratch, he shrugged.</p>
<p>“It’ll probably be too easy for me. I haven’t done it since I was in 3rd grade.”</p>
<p>“Just give it a shot,” I said. “If it’s too easy, we’ll move you to JavaScript.”</p>
<p>Ten minutes later Sam was crying. As I walked with him out of the classroom, I asked what was wrong.</p>
<p>“I’m terrible at this,” Sam shook his head. “I can’t do it.”</p>
<p>“Why do you think you can’t do it?” I asked, “It’s only been a few minutes.”</p>
<p>“Scratch is supposed to be easy and I couldn’t even do the first step.” Sam sighed heavily. “I really thought I was good at this.”</p>
<p>“I know it looks easy,” I said. “But Scratch is actually really hard. You can do incredibly complex stuff with it.”</p>
<p>“But, but, but…” Sam sobbed, looking hurt, “But why would they make it look so easy then? They make it look like it’s for babies!”</p>
<h4 id="heading-scratch-has-a-marketing-problem">Scratch Has a Marketing Problem</h4>
<p>Everywhere they look, students get the impression that Scratch was designed for young children and is easy. While this does a great job of making it seem inviting for younger students, it has a perverse psychological effect on older kids.</p>
<p>Older students don’t want to use Scratch because there’s nothing to gain from it and plenty to lose. If they’re good at it, congrats on being good at a little-kid language. If they’re bad at it, there’s no hope for them. They must be pitifully stupid.</p>
<p>Even code.org, a wonderful organization that’s done amazing work to promote CS education, makes this same mistake with their tagline, “Code.org: Anybody can learn.” They might as well say, “Code.org: You’d have to be an idiot not to get it.”</p>
<h4 id="heading-students-secretly-crave-challenges">Students secretly crave challenges</h4>
<p>When a student says, “I can’t do it. This is too hard,” it’s difficult not to reflexively reply, “No, it’s not. Look, it’s easy. You can do it.”</p>
<p>In our adult brains, this seems like the logical thing a student would want to hear. Easy is better than hard, right?</p>
<p>Wrong! Students crave hard. They seek it out wherever they can find it, athletic competitions, video games, chess, and debate. Hard things are great because:</p>
<ol>
<li>If you complete them, you’ve proven yourself. You did something that was outside of your ability, and that some of your peers couldn’t do. There’s a rewarding emotional high from completing a difficult task.</li>
<li>However, if you fail at a hard task, it means nothing. After all, it wasn’t easy. Many people can’t do it. Maybe if you practice some more and come back later, you can give it another go.</li>
</ol>
<p>So what do we do when a child comes to us, whining that a problem is too hard? We agree with them wholeheartedly. “Yes, this problem is really hard. You might not be able to complete it this time. Many students can’t do it. But if you keep working at it, I think you can get it.”</p>
<p>It’s not always the case, but students are usually excited to rise to the challenge.</p>
<p>The marketing solution for Scratch is counter-intuitive, but not impossible: tell kids Scratch is hard. This means removing all of the bright, primary colors, and childish cartoons. Replace them with harder, more standard adult colors and photos. Eschew rounded blocks for ones with hard edges.</p>
<p>Basically make Scratch look more like what kids imagine adult coding to look like.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/FuZvMFVNWy7vVNon7jajd4mdV6V8Z977f4Pv" alt="Image" width="800" height="450" loading="lazy"></p>
<p>However, if coding seems impossible, it could turn some students off from it entirely. Part of Scratch’s appeal is it’s accessibility. Potentially this means we should break Scratch into two products: leaving it the same for for true beginners that are younger than 12, and creating a new product that’s similar but seems more serious and real.</p>
<h4 id="heading-woofjs">WoofJS</h4>
<p>I now use <a target="_blank" href="http://woofjs.com">WoofJS</a>, a JavaScript framework we created at <a target="_blank" href="http://thecodingspace.com">The Coding Space</a>, to address this very program. It’s very similar to Scratch, but from within JavaScript, a “real” coding language. This way, students that think they are “done with Scratch” or “too old for Scratch” can get on board with learning similar concepts under new clothing. Woof serves as the bridge between Scratch and JavaScript that students are eager to walk across.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/StjpwCrPZdGq19dTHVWHZ4xccbb4Ly7UMu4W" alt="Image" width="800" height="594" loading="lazy"></p>
<p>When I asked one of our 11-year-old students why she liked Woof better than Scratch, she said, “It’s more challenging.”</p>
<p>“Oh, is that because you have to learn JavaScript syntax?” I asked.</p>
<p>“No,” she thought for a moment. “I’m not really sure why it’s hard. But it just seems harder which is cool.”</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ The Student Who Became the Teacher ]]>
                </title>
                <description>
                    <![CDATA[ By Steven Ward A few months ago I sat down to my first-ever pair programming session. I had been stuck on Free Code Camp’s counting cards JavaScript challenge for several days, and now I was about to have a seasoned programmer take a look. It was the... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-student-who-became-the-teacher-5d0fe62112b4/</link>
                <guid isPermaLink="false">66c362860cede4e9b1329cfb</guid>
                
                    <category>
                        <![CDATA[ death ]]>
                    </category>
                
                    <category>
                        <![CDATA[ education ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 21 Jun 2016 07:30:51 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*Zn6F3UDswmPw2Y2TIznijA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Steven Ward</p>
<p>A few months ago I sat down to my first-ever pair programming session. I had been stuck on Free Code Camp’s <a target="_blank" href="https://www.freecodecamp.com/challenges/counting-cards">counting cards JavaScript challenge</a> for several days, and now I was about to have a seasoned programmer take a look.</p>
<p>It was the middle of the night, and my three-year-old daughter was asleep in the same room, but I dared not move to the other room and risk waking up my six-<em>month</em>-old daughter and wife. I was nervous about this fact, but excited to have the chance to have an expert look at my code for the first time.</p>
<h4 id="heading-how-i-met-my-teacher">How I met my “Teacher.”</h4>
<p>When I first met Yoochan, <em>he</em> was <em>my</em> student<em>.</em></p>
<p>Yoochan knew even then what he wanted to do with his life. My first memory of him was of him scribbling in a notebook between classes, drawing what seemed to be a wireframe concept of a website. I asked what he was working on, and he sheepishly said it was a Wordpress theme, not expecting me to know what he was talking about. But I did.</p>
<p>Yoochan was serious about his studies, and poured himself into his General Education courses, while continuing to teach himself to code on the side. Other students in his cohort spent more time partying than studying, but Yoochan was busy selling custom Wordpress themes and devouring new programming languages. He wanted to create the next Facebook, and knew full well the amount of hard work and study that his dreams would require.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Cs1c6m3DcX9M6sb1r5HLNLF9DQCI87ezfk98" alt="Image" width="800" height="533" loading="lazy"></p>
<p>After his transfer to the US and my move to another job in another town, we kept in touch occasionally via Facebook. His posts about the tech world approached obsession, but the occasional complaints about finals and selfies on Spring Break were in the mix as well. We chatted a couple of times about life, and his successful transfer to a better school a year later, which also happened to get him closer to Silicon Valley, where his heart was leading him.</p>
<h4 id="heading-teaching-as-collaboration">Teaching as Collaboration</h4>
<p>Our goal was simple enough:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/ZPvs8jxUpTRqk66w4kM6IZisExrzzuncdR8-" alt="Image" width="336" height="225" loading="lazy">
<em>A description of the Counting Cards challenge from Free Code Camp.</em></p>
<p>Yoochan patiently explained how to setup ScreenHero, as I typed my responses to him instead of speaking, for fear of waking up my daughter. I showed him the objective of the lesson and the code I had already written.</p>
<p>We moved over to CodePen to test out a few variations. All along the way he was teaching me about the higher-level concepts at work in JavaScript, as well as a few CodePen shortcuts to make getting around easier.</p>
<p>We walked through my code line by line together. Rather than pointing out every error, he would just tell me what the purpose of a given command was, and ask if I thought there might be a better way. His natural skill as a teacher impressed me. But then something interesting happened.</p>
<p>After we had examined every line of code, cleaned it up and gotten it into shape, we clicked “run.”</p>
<p>It didn’t work.</p>
<p>We went back through it, found a couple more things to tweak, and ran it again.</p>
<p>It still didn’t work.</p>
<p>Then, it hit me: he didn’t know the answer.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/x8vw4ATkMW8XnVzB8BBpYnVFdCXHEfIniqQC" alt="Image" width="800" height="533" loading="lazy"></p>
<h4 id="heading-the-plot-twist">The Plot Twist</h4>
<p>OK, so, there’s one big thing that I failed to mention: while I was chatting from a house full of new life, this twenty-something was in a hospital room unable to sleep due to the cocktail of drugs swirling through his system. He was dying from cancer. But he didn’t want to talk about that. He wanted to talk about Silicon Valley acquisitions, exciting new startups, and, of course, code.</p>
<p>Sometime during his first semester at his new school, he had started experiencing stomach problems. It got bad enough that he went to student health services. They sent him home with some antacids. The problems got worse. He went back again, and still failed to get answers. Finally, he came back to Korea, where his stomach cancer was diagnosed almost immediately.</p>
<p>He dropped out of school and stayed in Korea to receive treatment, although you wouldn’t know it by his social media posts. I chatted with him a few times about some cool new app he’d found or one of his ideas. The conversation rarely, if ever, turned to cancer or his condition. At one point he was all better, had internships lined up in Seoul, and was ready to take the world by storm.</p>
<p>And then he wasn’t. Almost as soon as he’d started the internship, he had to quit and check back into the hospital.</p>
<p>Looking at his Facebook feed, it was always hard to tell how he was <em>really</em> doing, because so much of it was his blog posts about learning new programming languages, or some new idea he had for an app, or a website, or an E-commerce site.</p>
<p>I managed to visit him in the hospital last winter, where he filled me in on much of the backstory behind the very occasional vaguebooking that he did. It was a heartbreaking story, but Yoochan had nothing but optimism in his voice. He talked about what a blessing this whole experience was and how it would fuel his career.</p>
<p>Now he had a burning passion inside of him to help cancer patients, especially young ones like himself. He wasn’t quite sure what form that would take yet, but he was sure it would happen. Naturally, it would be an app. Or maybe a forum site. Or just a blog to start out.</p>
<p>I met his mom, and, as a parent myself, was in awe of her. She stood by his side, listening to him tell his story in a foreign tongue, which he had now nearly mastered — yet another reason to be proud of her over-achieving son.</p>
<p>They finally came to the right hospital, he said. They finally found the right treatment. He smiled at his mom and patted her hand as she choked back tears.</p>
<h4 id="heading-the-lesson">The Lesson</h4>
<p>I know exactly what it feels like to stand in front of people as the supposed “expert” on a topic only to be thrown a curveball question I didn’t expect and don’t know how to answer. It doesn’t mean I’m a bad teacher. Sometimes the question was just phrased in an awkward way that led me to misunderstand it. Or maybe I was just off my game, and the answer slipped my mind.</p>
<p>I recognized this instantly when it happened to Yoochan. I remember thinking, “Okay, this is awkward, how can I gracefully let him know it’s totally cool, and that I’ve learned a lot from him anyway?”</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/eLvwmpao96KtMsfxSrlGuAI4ZWiF-5rcZdPV" alt="Image" width="800" height="533" loading="lazy"></p>
<p>It turned out that I didn’t have to because Yoochan already knew something that had taken me several years of teaching to figure out: teaching is not just moving digital facts from one brain to another.</p>
<p>Real teaching is the analog act of taking someone by the hand and exploring a topic together. What makes a good teacher isn’t an encyclopedic knowledge of a topic. It’s the wisdom to use just enough of your knowledge to make the journey together interesting.</p>
<p>In the end, there is not that much difference between the student and the teacher. <em>Both</em> will gain something valuable from their time together.</p>
<p>Yoochan did not get embarrassed. He fessed up. I bounced some ideas off of him. We tried a couple of them, and they didn’t work either. Yoochan suggested stepping away for a bit and coming back to look at it the next day. That’s exactly what I did, and I managed to figure it out almost right away. I wasn’t proud of my solution, but it worked.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Nsj5A7sZw0yg8wbQSyWqDYiD1RJZr2ej7JD0" alt="Image" width="519" height="486" loading="lazy"></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/4ufHBcWGdywn75wBqEMXfpSdmXcBg2wzqFnV" alt="Image" width="507" height="304" loading="lazy"></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/v3kwYCAqTxZdh3OXWrS122sFk6PLBL5VKeBU" alt="Image" width="483" height="313" loading="lazy">
<em>Confession: I still don’t know what he meant by “refactoring the code.”</em></p>
<h4 id="heading-my-teacher-my-hero">My Teacher, my Hero</h4>
<p>I received confirmation a few hours ago that Yoochan died. It was not unexpected. His Facebook posts in recent weeks had gotten fewer and farther between. He announced that he was ceasing all of his development activities. Then, a few days later, an apology to his friends because his condition was a lot more serious than he had been saying.</p>
<p>He went to a new hospital “deep in the mountains,” where he would not have regular internet access. I wondered if it was hospice. His last couple of updates abandoned his normal practice of giving English translations in addition to the Korean. His last one was short and to the point. “This week. See you up there.”</p>
<p>Some might see it as cruel to use the term “lifelong learner” to describe Yoochan, but I see him as the term’s apex. How many college students do you know that, after receiving a diagnosis such as his, would have continued right on studying psychology, algebra, or chemistry?</p>
<p>I’m not suggesting that dedicating every spare moment of your life to learning is an end unto itself. I’m saying that finding subjects you love and can jump into head first will give you more <em>quality</em> time on this planet, irrespective of how much total time you have left. Yes, studies are coming out suggesting that continuing to learn new things is the key to delaying dementia and Alzheimer’s, but dementia 50 years from now was not of concern to Yoochan.</p>
<p>Personally, I think that in the last six months or so he knew full well what his future held, and his talk of being cured was his way of taking care of the rest of us. In the meantime, he could get a bit of enjoyment out of those painful, sleepless nights by reading up on the latest Elon Musk project or coding an iPhone app that popped into his head. Although he seemed conflicted about how to use his social media presence in this phase of his life (for example, he occasionally deactivated his Facebook profile without notice), <a target="_blank" href="https://github.com/seoyoochan">his GitHub account</a> was, and remains, in a sense, immortal.</p>
<p>Being able to do this thing that he loved in moments of loneliness and pain made life worth living.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/I7MLCx3KYsgHPKnR8C6d5O0ZH8SPfVX2MgZC" alt="Image" width="800" height="597" loading="lazy"></p>
<h4 id="heading-the-last-word">The Last Word</h4>
<p>I’m sorry, Yoochan, for making this final part all about <em>me</em>, but I’m the guy writing this memorial, and I have something to get off my chest.</p>
<p>I’m sorry for not checking in with you more frequently.</p>
<p>I’m sorry that this world of adulthood — which you spent far too little time in — did not have a cure for you.</p>
<p>I’m sorry I couldn’t get one of your tech heroes to visit you in the hospital. If only you had loved baseball as much as you loved code...</p>
<p>I’m sorry I did not bring my daughter to meet you at the hospital. I wanted her to meet you and remember you, then ask me about you and your story later in life, when she might be able to understand fully. I worried that it might be somehow bothersome, or depressing for you. I’m pretty sure I was wrong about that.</p>
<p>I’m sorry about a lot of things, but I will never forget you.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Q6FkSiCD-gUThZG9w8lVHds0xUu1c7kHPhkP" alt="Image" width="800" height="600" loading="lazy"></p>
<p>I know that you held deep religious beliefs about what happens after death. I do not share the strength of your convictions, but the one thing I do know for certain is that your life has informed the way I teach my students, and how I will raise my daughters.</p>
<p>Therefore, I can close this memorial not with sad regrets but a happy promise: I will do my best to instill these lessons from your life in all the young lives that I come into contact with by living according to your example. Then they will — by exemplifying those values themselves — pass them on to their own co-workers, students, and children.</p>
<p>Future generations may not know your name or your story, but they will benefit from your time on this planet. In that tiny, but tangible way, you will live on.</p>
<p>I think you would like that.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Learn to code like a Korean student learns English ]]>
                </title>
                <description>
                    <![CDATA[ By Stephen Mayeux If this is the first you’ve heard of me, then there’s only one thing you need to know: I am an ESL Teacher Turned Full Stack Developer. My career teaching English as a Second Language has spanned nearly a decade, so I have a refined... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-i-learned-as-an-esl-teacher-will-help-you-learn-how-to-code-32a348afdd00/</link>
                <guid isPermaLink="false">66c3655102b05aca345bb193</guid>
                
                    <category>
                        <![CDATA[ education ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ teaching ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 02 May 2016 06:29:24 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*02FdKVggHbC8WMPjRHExzg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Stephen Mayeux</p>
<p>If this is the first you’ve heard of me, then there’s only one thing you need to know: I am an ESL Teacher Turned Full Stack Developer.</p>
<p>My career teaching English as a Second Language has spanned nearly a decade, so I have a refined understanding of how adults learn a second languages.</p>
<p>I’ve watched thousands of students from different cultural, academic, and professional backgrounds acquire the difficult, rather quirky language that is English.</p>
<p>After years and years of dedication and commitment to learning, many of my students have gone on to become proficient — if not fluent — in English. I have also seen a lot of intelligent, hard-working people plateau at an intermediate level of English, then subsequently grow tired and frustrated by their lack of progress.</p>
<p>The successful language learners have several traits in common. My observations of them mastering English have helped me learn web development much quicker than I would have otherwise.</p>
<p>Let’s talk about some of the theoretical frameworks that attempt to explain second language acquisition, and lessons I’ve learned from my students.</p>
<h4 id="heading-if-its-easy-you-aint-doing-it-right">If It’s Easy, You Ain’t Doing it Right</h4>
<p>Stephen Krashen, linguist and professor emeritus at the University of Southern California, is arguably the godfather of modern second language acquisition.</p>
<p>In the 1970s and 80s, he developed a set of 5 hypotheses that have informed modern communicative teaching methods.</p>
<p>One of these is known as the <a target="_blank" href="https://en.wikipedia.org/wiki/Input_hypothesis"><em>input hypothesis</em></a>, which states:</p>
<blockquote>
<p>Learners progress in their knowledge of the language when they comprehend language input that is slightly more advanced than their current level.</p>
</blockquote>
<p>The exact thing could also be said for learning how to code!</p>
<p>Think back to the first month when you just started learning how to code. You probably started off with some tutorials on Codecademy, and followed along with the instructional prompts, only to feel “stuck” and unable to produce a website from scratch without copying and pasting.</p>
<p>I had probably gone through their JavaScript tutorials three times, and I still felt like I wasn’t learning anything. Why?</p>
<p>Because the hand-holding tutorials are much too easy after the first time around! They are great to get you familiar with the basic syntax of the language, but they won’t help you solve algorithms on your own.</p>
<p>Repeating these tutorials is unlikely to take you beyond your current level of understanding. I didn’t really start learning JavaScript until I ditched those tutorials and dived right into <a target="_blank" href="http://freecodecamp.com">Free Code Camp</a>’s basic algorithmic challenges.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/6h3-W0MuXEV4GMpOM3JKLugeyhKH6L3Ds59E" alt="Image" width="461" height="403" loading="lazy">
<em>If it’s easy, you’re doing something wrong.</em></p>
<p>It was tough, and each subsequent challenge was even more difficult than the last! I was constantly in a state of being challenged, just slightly above my current ability. And it worked!</p>
<p>My point is this: your coding journey is never going to feel “easy” or “simple”, and if it is, you have to stop what you’re doing and try more difficult challenges and projects. Get comfortable with feeling stuck and stumped for the long run, because that isn’t an obstacle. It’s a sign that you are about to learn more.</p>
<h4 id="heading-dont-aim-for-perfection-early-on">Don’t Aim for Perfection Early On</h4>
<p>Perfectionists do not make great language learners. They tend to do well on grammar and vocabulary tests and can recite all of the irregular past participles by heart. I think the perfectionist students actually know more about English grammar than native speakers do! Not that it really matters though. Why?</p>
<p>Because their spoken English kind of sucks.</p>
<p>I have met a lot of these students, and have been successful in helping many of them ditch their less-than-optimal study habits. But so many have this unrealistic ideal of what a “fluent” speaker of English should be able to do, including never making any grammatical mistakes whatsoever!</p>
<p>They excel when it comes to reading and writing, but their speaking skills are seriously hindered because they take forever wracking their brains thinking of the “best” way to say something.</p>
<p>Don’t do this when you learn to code — especially when you’re just starting out. You don’t have to remember all of the semantic HTML5 tags or all of the Bootstrap classes to make a website. Why would you have to do that when you could just find whatever you need in the API docs, Google, or Stack Overflow?</p>
<p>In my very early days of learning HTML and CSS, I actually made flashcards to help me remember this stuff, and I can’t believe what a waste of time it was. I probably spent two hours creating flashcards every night, and I wish I had skipped all of that and practiced coding instead!</p>
<p>Just because you have all this knowledge doesn’t mean you can actually use it appropriately to solve a particular problem.</p>
<p>Don’t be perfectionist in learning anything, especially coding! Learn enough to be dangerous, then start building something. You’ll pick up the particulars on an as-needed basis.</p>
<h4 id="heading-take-care-of-yourself">Take Care of Yourself</h4>
<p>In my <a target="_blank" href="https://medium.freecodecamp.com/south-korea-will-pay-you-to-learn-coding-5947fa625659#.to3kdfuq5">last Medium article</a>, I wrote about how South Korea is viable option for people who want a lot of free time to learn coding while making a decent living teaching English.</p>
<p>The bulk of my students are young people taking a gap year from university. They live with their parents and don’t need to get part-time jobs to support themselves.</p>
<p>Sounds like heaven!</p>
<p>The language institute where I teach is open from 7am — 10pm, and a lot of these young Koreans spend 10 hours or more each day at the center.</p>
<p>In addition to their regular classes at the school, they join extra study groups and hole themselves up for hours in the computer lab until closing time.</p>
<p>And even though they are taking a break from work and university, they are often sleep deprived because they are preparing for high-stakes tests that might determine the outcome of their professional lives.</p>
<p>I really admire the Korean work ethic, which was responsible for the country’s rapid development following the Korean War. But the human body can only function optimally with x amountOfSleep and y hoursOfWorkDone.</p>
<p>When it comes to learning a new skill, the Law of Diminishing Returns is at play. Students who regularly take breaks, meet friends, get enough sleep, and do exercise seem to do just as well — if not better — than students who use every second of their free time studying.</p>
<p>A lot of self-taught coders should heed this advice as well. For many of you, you have to balance your coding schedules on top of your busy work and family responsibilities.</p>
<p>And it’s true that you have to hustle hard and work your butt off if you really want to transition into web development. But if you find yourself yawning a lot and unable to focus, take a walk outside and get a breath of fresh air. Spend a couple of hours with your friends or family on the weekend and recharge your batteries.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/8gCAuoL1H1TOqBfYK2OKM-Krhu4kcSosTfDA" alt="Image" width="700" height="385" loading="lazy">
<em>Tom and Donna have great advice for self-taught coders.</em></p>
<p>Just remember to treat yourself from time to time, or risk getting scorched from the burn out.</p>
<h4 id="heading-your-advice">Your Advice</h4>
<p>Does any of this advice resonate with you? Do you want to add something to this list?</p>
<p>Share your questions and opinions in the comments below, and don’t forget to follow me if you haven’t already done so. Treat yourself.</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
