<?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[ Habit Building - 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[ Habit Building - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 23 May 2026 14:11:21 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/habit-building/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Stay Motivated While Learning to Code ]]>
                </title>
                <description>
                    <![CDATA[ Learning to code can be like preparing for a long battle. Ultimately, winning is not always determined by your initial strength, but by how well prepared you are and how long you can hold out. With programming, the greatest challenge is often not the... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-stay-motivated-while-learning-to-code/</link>
                <guid isPermaLink="false">66d45e04d1ffc3d3eb89ddb5</guid>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ motivation ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Damilola Oladele ]]>
                </dc:creator>
                <pubDate>Thu, 30 Jun 2022 17:54:56 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/06/cover-i-age-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Learning to code can be like preparing for a long battle. Ultimately, winning is not always determined by your initial strength, but by how well prepared you are and how long you can hold out.</p>
<p>With programming, the greatest challenge is often not the complexity of the language, but rather staying consistent and motivated through the learning process.</p>
<p>In order to stay consistent with your learning, you will need a lot of motivation and energy. The consistency with which you learn would help you to understand the complex concepts of any programming language and make the most of your time.</p>
<p>Having come from an absolutely non-technical background, I had to learn this late. After I took the first step into the transition, I struggled with everything relating to learning, particularly motivation.</p>
<p>This article will share the steps I have gathered over time to overcome my struggles with staying consistent and motivated.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/Testudo_formation-1.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-start-slowly-but-maintain-a-habit">Start Slowly but Maintain a Habit</h2>
<p>In the early stage of learning, you might only have a few free hours that you can dedicate to learning.</p>
<p>This is because most people are just opening themselves up to doing something they have never done before. Also, they might have tasks such as a full-time job which take a better part of their daily life. Therefore, adjusting and making time for learning might not be easy.</p>
<p>At this stage, you don't need to be concerned about the amount of time you have available to learn in one sitting. The most important thing is making time for a daily study session, regardless of its length, and persisting with it in spite whatever crops up in the way.</p>
<h2 id="heading-always-schedule-your-tasks">Always Schedule Your Tasks</h2>
<p>If you don't schedule your daily tasks, it's much easier to procrastinate and forget about them. It's easy to become engrossed in just one or few tasks and lose sight of the fact that there are other things you need to do. Often, this happens when you don't follow a set task list.</p>
<p>To prevent procrastination and forgetfulness, make sure you plan out your days by scheduling tasks. You can use the following tips as a guide in scheduling your tasks:</p>
<ol>
<li><p>Think of all the tasks you would like to accomplish.</p>
</li>
<li><p>Estimate how long it will take to accomplish each task.</p>
</li>
<li><p>Identify your peak hours of productivity.</p>
</li>
<li><p>Arrange the tasks in order of priority.</p>
</li>
<li><p>Make sure to bundle similar tasks together to improve your productivity.</p>
</li>
<li><p>To stay organized, schedule these tasks on your phone or computer and use reminder and task applications.</p>
</li>
<li><p>Schedule complex or difficult tasks during your peak productivity hours.</p>
</li>
<li><p>Make time for unexpected events in your schedule and plan for them ahead of time.</p>
</li>
</ol>
<p>Note that it is a good idea to schedule your tasks at the beginning of every week.</p>
<p>To learn more about how you can schedule your day for better productivity, consider reading <a target="_blank" href="https://www.calendar.com/blog/how-to-schedule-your-day-for-optimal-productivity/">this article by John Rampton, the co-founder and CEO of Calendar.</a></p>
<h2 id="heading-join-a-community-of-learners">Join a Community of Learners</h2>
<p>For most people, learning alone can be boring and tedious, and in no time, it can hurt your motivation. This is why having a community of like-minded people is always better.</p>
<p>This type of community will provide you numerous benefits, including, but not limited to:</p>
<ul>
<li><p>access to group study</p>
</li>
<li><p>access to different resources to help with your study</p>
</li>
<li><p>information on current technological trends</p>
</li>
<li><p>getting feedback on personal projects</p>
</li>
<li><p>an avenue to share your progress and measure your growth</p>
</li>
</ul>
<p>Find out if this type of community exists in your area. Alternatively, if you are unable to find one, you can join a remote learning community instead.</p>
<p>The following are some of the remote communities I have personally found useful and consider to be of great value:</p>
<ul>
<li><p><strong>100Devs:</strong> The 100devs community is a nonprofit organization founded and maintained by Leon Noel, a teacher and Managing Director of Engineering at ResilientCoders. The 100Devs community provides free lessons in full-stack web development to individuals. You can join the 100Devs community <a target="_blank" href="https://t.co/N1svwNfVRd">here</a>.</p>
</li>
<li><p><strong>100DaysofCode:</strong> 100DaysofCode is an online challenge where people dedicate 100 days to learning a programming language of their choice. In order to participate in 100DaysofCode, you must devote at least an hour a day to learning. And after that, you post a completed task on Twitter with the hashtag #100DaysofCode.</p>
</li>
<li><p><strong>Kevin Powell Community:</strong> The Kevin Powell Community of active learners is a community on discord created and maintained by Kevin Powell. Kevin is a teacher and software developer with years of experience. You can join the Kevin Powell Community on <a target="_blank" href="https://discord.gg/9NmT5HxN">discord</a>.</p>
</li>
<li><p><strong>Commit Your Code:</strong> The Commit Your Code community is created and maintained by Danny Thompson. The community has a lot of active learners as well as experienced developers who are more than willing to help you with your projects and mentorship. You can join the Commit Your Code community on <a target="_blank" href="https://discord.gg/3JvHFCCp">discord</a>.</p>
</li>
</ul>
<p>And of course the freeCodeCamp community has a <a target="_blank" href="https://forum.freecodecamp.org/">supportive and friendly forum</a> where you can ask questions and meet other developers.</p>
<p>After joining one or more of these communities, it is important to be on your best behaviour. Keep in mind to also be kind, provide value, and follow their rules.</p>
<h2 id="heading-find-a-study-partner">Find a Study Partner</h2>
<p>Being consistent and motivated may be hard even after scheduling your tasks and joining a study community. If this is the case, you might need a study partner.</p>
<p>You can benefit from having a study partner in the following ways:</p>
<ul>
<li><p>Makes sure you have accountability.</p>
</li>
<li><p>You can set up joint study sessions.</p>
</li>
<li><p>You can collaborate on joint projects.</p>
</li>
<li><p>You might find mentorship.</p>
</li>
<li><p>You can go through coding challenges together.</p>
</li>
</ul>
<h2 id="heading-use-an-efficient-study-technique">Use an Efficient Study Technique</h2>
<p>Programming languages are generally complex. Unless you have an effective study technique, it will be difficult to understand the concepts and apply them in practical contexts. This can make you frustrated and lessen your motivation to learn.</p>
<p>If you're learning new concepts or a new programming language, here are some study techniques you might have tried:</p>
<ul>
<li><p>repetitive reading, otherwise known as re-reading</p>
</li>
<li><p>highlighting</p>
</li>
<li><p>summarizing or making notes</p>
</li>
<li><p>cramming</p>
</li>
</ul>
<p>But there's lots of evidence from prominent scientists and psychologists that has proven that these techniques are less effective when compared to other study techniques you can use.</p>
<p>To make the best use of your time and ensure you remember what you have studied for a longer time, try the following study techniques:</p>
<h3 id="heading-active-recall">Active Recall</h3>
<p>Active recall is a study technique that involves retrieving already stored information from your brain.</p>
<blockquote>
<p>The mind is a vast storehouse or space; memories are objects stored in that space; and retrieving a memory is akin to searching for and finding an object in a physical space (Roediger, 1980).</p>
</blockquote>
<p>Using this technique involves reading a topic once and then converting concepts and ideas in the topic you have read into questions and then testing yourself on them.</p>
<h3 id="heading-spaced-repetition">Spaced Repetition</h3>
<p>This study technique, as its name suggests, involves spacing revisions of what you have learned by way of active recalling. This is in contrast to cramming, which involves memorizing all the concepts in a particular topic in a single sitting.</p>
<p>Essentially, spaced repetition helps you minimize the effect of The Forgetting Curve. It is a mode of learning by which you allow yourself to forget what you have learned. Then you try to retrieve those concepts from your brain by making active recalls at specific intervals over a period of time.</p>
<blockquote>
<p>The forgetting curve hypothesizes the decline of memory retention in time. This curve shows how information is lost over time when there is no attempt to retain it. (<a target="_blank" href="https://en.wikipedia.org/wiki/Forgetting_curve">Source</a>)</p>
</blockquote>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/The-Forgetting-Curve-and-Spaced-Repetition.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Using the above study techniques will help you make sure that you are not spending too much time understanding and remembering any topic or concepts.</p>
<p>In addition, you will have more time to complete other tasks on your list, as well as the opportunity to learn new skills that will be helpful in your professional development.</p>
<p>One popular tool you can use to help with active recall and spaced repetition is Anki. Learn how to use Anki <a target="_blank" href="https://leananki.com/how-to-use-anki-tutorial/#:~:text=You%20just%20open%20the%20app,spacebar%20to%20show%20the%20answer.&amp;text=Using%20Anki%20default%20settings%2C%20Anki,you%20to%20recall%20the%20card.">here</a>.</p>
<p>To learn more about the use of these efficient study techniques, watch the video below:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/ukLnPbIffxE" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<p> </p>
<h3 id="heading-pomodoro-timer">Pomodoro timer</h3>
<p>The Pomodoro study technique is ideal for people who struggle to concentrate on studying for a lengthy period of time.</p>
<p>One way to use this technique is to break your workday into 30 or 20 minute chunks separated by five minute breaks. These intervals are called Pomodoros.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/pomodoro.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-set-short-term-goals-and-stay-focused-on-achieving-one-goal-at-a-time">Set Short Term Goals and Stay Focused on Achieving One Goal at a Time</h2>
<blockquote>
<p>Success doesn't happen overnight.</p>
</blockquote>
<p>Trying to achieve too many objectives at the same time can be overwhelming. So it's always better to break your objective into shorter chunks of goals and focus on accomplishing one of the chunks or goals at a time.</p>
<p>For instance, let's say your goal is to be able to build a webpage with any of the popular JavaScript framework as a beginner. To do that, you'll need to learn various scripting and programming languages, tools, and skills. Here's what you should know to build a webpage:</p>
<ol>
<li><p>Understand the <a target="_blank" href="https://www.freecodecamp.org/news/learn-html-beginners-course/">basics of HTML</a>.</p>
</li>
<li><p>Understand the <a target="_blank" href="https://www.freecodecamp.org/news/learn-css-in-this-free-6-hour-video-course/">basics of CSS</a>.</p>
</li>
<li><p>Understand the use of <a target="_blank" href="https://www.freecodecamp.org/news/semantic-html-alternatives-to-using-divs/">semantic elements in HTML</a>.</p>
</li>
<li><p>Understand the use of <a target="_blank" href="https://www.freecodecamp.org/news/css-flexbox-and-grid-tutorial/">CSS Flexbox and Grid for layouts</a>.</p>
</li>
<li><p>Try building a simple static website with what you have learned so far.</p>
</li>
<li><p>Start learning the <a target="_blank" href="https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/">basics of JavaScript</a>.</p>
</li>
<li><p><a target="_blank" href="https://www.freecodecamp.org/news/javascript-projects-for-beginners/">Focus on building projects</a> with your knowledge of HTML, CSS and the basics of JavaScript you have learned so far.</p>
</li>
<li><p>Start learning advanced JavaScript concepts such as <a target="_blank" href="https://www.freecodecamp.org/news/how-javascript-implements-oop/">Objective Oriented Programming</a>, and <a target="_blank" href="https://www.freecodecamp.org/news/synchronous-vs-asynchronous-in-javascript/">Asynchronous Programming</a>.</p>
</li>
<li><p>Solidify you knowledge on the advanced concepts by building projects with them.</p>
</li>
<li><p>Learn the JavaScript framework of your choice. <a target="_blank" href="https://www.freecodecamp.org/news/learn-react-basics/">React</a>, <a target="_blank" href="https://www.freecodecamp.org/news/vue-js-full-course/">Vue</a>, and <a target="_blank" href="https://www.freecodecamp.org/news/learn-angular-full-course/">Angular</a> are all popular choices.</p>
</li>
<li><p>Finally you can build your favourite project using the framework you have learned.</p>
</li>
</ol>
<p>You might think that going through the steps above in the order they are stated would take you a few months. But it may take you much longer than that – and that's ok.</p>
<p>Also, don't try to skip any of these steps. Simply taking a crash web dev course likely won't be enough, and can set you up for disappointment and cause you to struggle much more than you would if you'd taken your time learning the concepts thoroughly.</p>
<p>On the other hand, making sure that you carefully go through each of the steps, one at a time, will help you to build the skills necessary to achieve your main goal. It will also prevent you from losing motivation, which is the likely result of having unrealistic expectations.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/a-step-at-a-time.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-dont-be-afraid-to-ask-for-help">Don't be Afraid to Ask for Help</h2>
<p>One of the reasons why people give up early when learning programming is because they encounter some sort of bug in their program that seems difficult to solve.</p>
<p>But you should know that no one knows it all when it comes to programming. Even software developers with decades of experience still encounter bugs they find very hard to solve on their own.</p>
<p>This is a major reason why collaboration is so important – even more so than developing your personal skills.</p>
<p>Whenever you find yourself in this situation, do not linger on the problem for too long. Use the internet to your advantage when searching for answers. In this regard, your best friend is Google. You can get the answer to almost everything related to programming on Google if you take your time and search deeply.</p>
<p>If you are unable to get the answer you need from searching on Google, then the next step to take is to go to the study community you belong to get help from others. They will typically be more than willing to help you, whatever the problem may be.</p>
<p>Take note of the following when seeking help from your community:</p>
<ul>
<li><p>Make sure to ask direct questions.</p>
</li>
<li><p>Make sure your questions are clear enough to understand.</p>
</li>
<li><p>Provide a copy of your code by putting them in a public remote repository such as <a target="_blank" href="https://github.com/">GitHub</a> or C<a target="_blank" href="https://codepen.io/">odepen</a> and provide the link to the repository.</p>
</li>
</ul>
<h2 id="heading-maintain-a-healthy-lifestyle">Maintain a Healthy Lifestyle</h2>
<p>I can't overemphasize the benefits of maintaining a healthy lifestyle. It will help your maintain energy and keep you fit for the next challenge.</p>
<p>There are several ways to maintain a healthy lifestyle, some of which are:</p>
<ul>
<li><p>Get regular exercise to help your cognitive abilities and general fitness.</p>
</li>
<li><p>Don't sit for lengthy periods of time.</p>
</li>
<li><p>Exercise your fingers regularly while you're studying.</p>
</li>
<li><p>Keep your eyes off your screen at regular intervals while you study.</p>
</li>
<li><p>Make time for your hobbies as a reward for your efforts.</p>
</li>
<li><p>Ensure you always sleep well and get a proper amount of rest.</p>
</li>
</ul>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Programming is a marathon, not a sprint. If you want to achieve any level of success, you have to take your time and study consistently.</p>
<p>Taking the steps discussed in this article will significantly improve your chances of reaching your goals.</p>
<p>If you enjoy this article, then you should give me a <a target="_blank" href="https://twitter.com/activus_d">shout-out</a>.</p>
<h2 id="heading-further-reading-and-references">Further Reading and References</h2>
<ol>
<li><p><a target="_blank" href="https://www.youtube.com/watch?v=ukLnPbIffxE">Retrieval creates learning</a>.</p>
</li>
<li><p><a target="_blank" href="https://en.wikipedia.org/wiki/Forgetting_curve">The forgetting curve.</a></p>
</li>
<li><p><a target="_blank" href="https://apps.ankiweb.net/">Download Anki, a powerful tool for active recall and spaced repetition</a>.</p>
</li>
</ol>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Create a Habit System and Stay Motivated as a Developer ]]>
                </title>
                <description>
                    <![CDATA[ Do you ever find it challenging to work on your project, side hustle, or even your hobby?  Have you ever had those moments where nothing feels exciting? You lay in bed thinking – is it me, or is my work that boring?  I have those days too. Some ]]>
                </description>
                <link>https://www.freecodecamp.org/news/create-a-habit-system-and-stay-motivated-as-a-developer/</link>
                <guid isPermaLink="false">66b99ccf94b336889c60046f</guid>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ motivation ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Shruti Kapoor ]]>
                </dc:creator>
                <pubDate>Thu, 28 Apr 2022 00:43:46 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/04/pexels-philip-ackermann-878151.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Do you ever find it challenging to work on your project, side hustle, or even your hobby? </p>
<p>Have you ever had those moments where nothing feels exciting? You lay in bed thinking – is it me, or is my work that boring? </p>
<p>I have those days too. Some weeks I am charged up and determined to take over the world. Other weeks, I feel low, bored, and stuck, and I feel like I don't have the motivation to write even one line of code.</p>
<p>This article will discuss what to do when you are not motivated and how to manage procrastination.</p>
<h2 id="heading-what-to-do-when-you-dont-have-motivation-to-work-on-anything">What to do when you don't have motivation to work on anything</h2>
<p>We must remember that motivation comes in many shapes and forms. Some days, motivation looks like creating art, whereas other days, it inspires you to create a blog post. </p>
<p>Some days motivation looks like going on a 7-mile hike, whereas other days, it is about taking care of yourself and working your butt off.</p>
<p>Acknowledge and appreciate each type of motivation and its form. Let it encompass you, take you on a ride, and bring you new experiences, joy, and fulfillment. Let yourself feel motivated – no matter what form it takes because motivation in one form bleeds into another.</p>
<p>Some days when I feel low, I pull out my paintbrushes, put on a Bob Ross painting tutorial, play my favorite show in the background, make myself a cup of tea, light a candle, and start painting. </p>
<p>It feels good to use this time to de-stress. I don't care too much about the quality – I care about how I feel in the moment. I feel relaxed, inspired, motivated, and like I am taking care of myself and feeling creative while I am doing it. </p>
<p>Even though I may not feel motivated to write code, I feel motivated to paint – and that's okay!</p>
<p>I then take that feeling to the next day, either to let my creativity work on my art or to help me create something else.</p>
<p>An important thing to remember is that motivation is fleeting. A burst of inspiration usually lasts 1 - 3 weeks. By only relying on motivation to fulfill your dreams and goals, you are not creating a strategy for being consistent. </p>
<p>What you need is discipline. <a target="_blank" href="https://www.freecodecamp.org/news/how-to-be-more-consistent-when-learning-to-code/">You need a system of habits</a>. A habit system keeps you going day after day and becomes part of your daily routine, even when motivation has left you.</p>
<h2 id="heading-what-is-a-habit-system-and-how-do-you-create-it">What is a habit system, and how do you create it?</h2>
<p>A habit system is a carefully thought-out daily routine of habits that take you closer to your goal. </p>
<p>It is a system of what you need to do, how long you need to do it, what ambiance you want to create before you do the things you need to do, and how you will put yourself in the right mental frame of mind. </p>
<p>For example, as a developer, think about what goals you have set for yourself? They may look like this:</p>
<ol>
<li>This week: create a feature for a project you are working on.</li>
<li>This month: learn TypeScript</li>
<li>This quarter: release project</li>
<li>This year: be proficient in React and TypeScript, speak at a conference, and create one blog every month.</li>
</ol>
<p>Now, think about how you will break down these goals into tasks, and by what deadline are you hoping to get it done. Work backward from that deadline, and see what tasks you can achieve in the short term to achieve that goal. </p>
<p>Here is an example of one of the above goals:</p>
<p><strong>Goal</strong>: create a feature for a project you are working on</p>
<p><strong>Deadline</strong>: 1 week from today.</p>
<p><strong>Steps</strong>:</p>
<ol>
<li>Research what I need – dependencies, stakeholders, assets.</li>
<li>What are the steps for creating this feature?</li>
<li>What are some open questions?</li>
<li>Who can help me?</li>
</ol>
<p><strong>Timeline</strong>:</p>
<p>Day 1: Research<br>Days 2 - 3: Development work + testing<br>Day 4: End to end testing + fixing any bugs.<br>Day 5: Deploy to staging env and get ready for demo.</p>
<p>The next step is to "make" the time to do these steps. You carve out in your calendar to make it happen. </p>
<p>Look at your calendar, and block out "focus time". This is the time when you will get these tasks done. </p>
<p>Next, create a system of "setting your mental frame". This is how you get yourself in the mood for getting work done.</p>
<h2 id="heading-my-habit-system">My Habit System</h2>
<p>I've developed my own habit system that I use to keep myself on track. I'll explain each part so you can adapt it to your own needs.</p>
<h3 id="heading-how-to-find-ideas">How to find ideas</h3>
<p>Often, I don't feel inspired to do anything because nothing is on my plate to do. I may have a lot of items in the backlog that I could work on, but I haven't given much thought to any of those ideas. And because I haven't "brought them on my plate," they don't feel as exciting. </p>
<p>So I go through my backlog or idealist and see if anything inspires me to overcome that. If not, I will browse blog articles on dev.to, freeCodeCamp, or Medium to see if any trending articles inspire creativity. </p>
<p>If not, I will find exciting conversations on Twitter. If that doesn't work, I will open Udemy or YouTube and find something to learn. </p>
<p>If none of that works, it is a signal that I need to chill out and take time to myself. I give myself a "creative" break – go on a walk, listen to a podcast. When something does inspire creativity during this break, I will write it down.</p>
<h3 id="heading-how-to-set-a-timeline">How to set a timeline</h3>
<p>Once I have a few ideas in mind, I will pick the one that excites me the most. I will put a soft deadline for me – often two weeks. Then I will work backward from the deadline and mark time in my calendar to work on that topic. </p>
<p>I usually set 1-hour slots in my calendar if my calendar is busy and longer if I have more time. Some weeks, I may only be able to carve out 2 hours, okay. </p>
<p>Once it is on my calendar, I will force myself to sit down and get myself ready for focused work hours.</p>
<h3 id="heading-how-to-set-a-mood">How to set a mood</h3>
<p>Setting a mood is crucial because having a good ambiance is vital for me and creates a stimulating environment. My stimulants are sound, smell, and sight.</p>
<p><strong>Sound</strong>: I put on a lofi or focus playlist. <a target="_blank" href="https://www.youtube.com/watch?utm_campaign=JSByte&amp;utm_medium=email&amp;utm_source=Revue%20newsletter&amp;v=csCp0Wd2-40.">This</a> is the one I commonly watch.</p>
<p><strong>Smell</strong>: I have candles and diffusers set up in my office to create a "focus vibe". Sometimes, when I need a kick, I will also use roll-on essential oils.</p>
<p><strong>Sight</strong>: I feel most motivated when someone else is working with me or when I am outside in nature. This is why my work desk faces a window where I can see trees, wind blowing, leaves rustling, and birds chirping. </p>
<p>In the youtube video I linked, the guy is also working, which makes me feel inspired to work. It's like having a working buddy. </p>
<p>I created <a target="_blank" href="http://twitch.tv/shrutikapoor?utm_campaign=JSByte&amp;utm_medium=blog&amp;utm_source=devto">a Twitch stream</a> and <a target="_blank" href="https://discord.gg/rgqyH75Saf?utm_campaign=JSByte&amp;utm_medium=blog&amp;utm_source=devto">discord server</a> for this reason. When sitting in my home office alone is not enough to motivate me, and I need external motivation, I go to a cafe. Lately, I have also been going to a neighborhood park to write, which has been very helpful in creating articles.</p>
<h3 id="heading-how-to-cut-out-distractions">How to cut out distractions</h3>
<p>This is very important to me because I have the attention span of a goldfish. If given a chance, I will merrily browse away on Twitter, keep clicking notifications, or keep scrolling on Instagram. </p>
<p>So during my focus time, I put my phone on silent, quit my email applications, and turn slack to Do not disturb mode. I tell myself that for the next 45 minutes, I will not look at my phone, answer emails, look at Twitter or open Slack. </p>
<p>If I need to stop getting distracted, I will log out of these applications. Out of sight, out of mind. 😄</p>
<h3 id="heading-how-to-get-things-going">How to get things going</h3>
<p>At this point, I have got my idea picked out, my vibe setup, my drink in my hand, my music playing, and the only thing I need to do is start typing. </p>
<p>I begin my Pomodoro timer. I work in 45-minute sessions with 15-minute breaks. I use the video I linked above as my Pomodoro timer. My goal is that I should work through the whole video by the end of the day. </p>
<p>Once the bell in the video hits "ding," I am ready. I start typing whatever comes into my head. I don't care much about polishing the content or code in the first go. This is a first go anyway. I will come back and revise the code or content repeatedly. </p>
<p>The idea here is to get it going and get the juices flowing. It's all about getting your mind to dump all the ideas out on the page.</p>
<h3 id="heading-dont-forget-to-take-a-break">Don't forget to take a break</h3>
<p>Once the timer is done, it's time to take a break. I force myself to get up, take a walk, go outside, make a new cup of tea, do an errand – anything as long as it is not scrolling away mindlessly on Twitter or Instagram. </p>
<p>This is the time for me to give myself a break. Sometimes towards the end of the break, around the 10-minute mark, I will check Slack, emails, or any urgent notifications on my phone. Sometimes, nobody needs me ☹️ so I get back to work for another 45-minute cycle.</p>
<h3 id="heading-wrap-it-up">Wrap it up</h3>
<p>I realized during these sessions that to have continuity and be motivated in the next session, I need to know what I have accomplished, where I left off, and what I have to do next. </p>
<p>For this, I will make notes at the end of the sessions, usually a revision of the above outline – what I did, what open questions I have, what I need to do in the next session, action items, and people I need to reach out to for help.</p>
<p>And so, the cycle repeats.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>I hope this article helped you get inspired to create a habit system for yourself to keep you on track. </p>
<p>If you would like to work together on Twitch or Discord, <a target="_blank" href="http://twitter.com/shrutikapoor08?utm_campaign=JSByte&amp;utm_medium=blog&amp;utm_source=Devto">DM me on Twitter</a> telling me what is your preferred work schedule:</p>
<ol>
<li>9 AM - 11 AM PST Weekdays</li>
<li>9 PM - 11 PM PST Weekdays</li>
</ol>
<p>In the next article, I will talk about what to do when motivation does not strike, no ideas come to mind, and you need to give yourself a jolt. Stay tuned. <a target="_blank" href="http://bit.ly/shrutinewsletter?utm_campaign=JSByte&amp;utm_medium=blog&amp;utm_source=Devto">You can also receive notifications about the next article directly in your inbox.</a></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Use Small and Sustainable Habits to Get Your First Dev Job ]]>
                </title>
                <description>
                    <![CDATA[ By Kenny Rogers Achieving a big goal like transitioning into a new career can be extremely challenging and overwhelming. The amount of information isn't the problem. We have access to more information than we ever have. The problem is knowing how to ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-small-sustainable-habits-to-get-your-first-dev-job/</link>
                <guid isPermaLink="false">66d45f688812486a37369ce5</guid>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ jobs ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 24 May 2021 21:30:43 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/05/FCC-Article-Cover--1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Kenny Rogers</p>
<p>Achieving a big goal like transitioning into a new career can be extremely challenging and overwhelming.</p>
<p>The amount of information isn't the problem. We have access to more information than we ever have. The problem is knowing how to effectively execute on the information available to us.</p>
<p>The more I progress in my life and career, the more convinced I am that the path to success does not lie in setting massive goals, and then cranking every day to reach them.</p>
<p>The path lies in choosing your goals, then designing simple systems built with small habits that will facilitate achieving those goals.</p>
<p>But one crucial component is to not measure your success when you reach your goal, but measure your success each time you successfully execute on your system.</p>
<p>This means that you are in a constant state of success instead of being in a state of failure 99% of the time with brief spurts of success.</p>
<p>This not only is better psychologically but leads to a higher likelihood of you actually achieving your goals.</p>
<p>In this article we'll go over how to apply this philosophy to the goal of getting your first developer job. Although I should note that even if you are already working as a developer, these strategies will still apply to anyone looking to build a more fulfilling, robust career.</p>
<p>This note is important, so I'll reiterate. We are not looking for short-term wins here, we are looking to design a system and build a collection of habits that you will continue throughout the life of your career as a developer.</p>
<p>These habits will allow you to not only land your first job, but as you progress further and further, they will help you grow your network, influence, and skills. The byproduct of this is finding work you enjoy that pays well, and having abundant opportunities at your disposal.</p>
<p>Most of the ideas here have been adapted from Tiny Habits by BJ Fogg, Atomic Habits by James Clear, and my own personal experience getting my first dev job without any experience or education.</p>
<p>I'm currently reading Tiny Habits right now and I really like the focus on simplicity here, so we'll focus a lot on Fogg's technique for this article.</p>
<p>Let's get to it.</p>
<h2 id="heading-overview-of-the-tiny-habits-method">Overview of the Tiny Habits Method</h2>
<p>Very briefly, let's go over the philosophy and methodology of Tiny Habits. At its core, the system follows the idea that the best way to make consistent, lasting change is to make that change tiny – embarrassingly so.</p>
<p>Fogg argues that motivation is a poor tool to rely on when making lasting change. It fools us into thinking we can make significant change, because significant change is possible for a short time when we feel motivated.</p>
<p>The problem is that motivation doesn't last. So when the motivation wanes, you don't stick to the large, ambitious goal you set for yourself. Then you feel like a failure, so your motivation tanks more, and the cycle repeats itself for most of the big changes you want to make.</p>
<p>Instead, you should create the smallest possible action you can in working towards your goals.</p>
<p>So instead of trying to create a habit of doing 50 pushups per day, set a habit to do two.</p>
<p>Again, the idea rests on the habits being very very small. The point is that it should take almost no effort at all to do it. Then you instill the habit, and gradually increase the amount that you do.</p>
<p>As a general rule, the habit should take less than 30 seconds to complete.</p>
<p>Another crucial concept focuses on celebrating your wins immediately. You want to make the connection in your brains between successfully completing the habit and positive emotions.</p>
<p>It's cheesy, but I do a little mini dance every time I complete mine, a little something like this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/05/image-55.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The other key component of creating Tiny Habits is the recipe. Tiny Habit recipes follow this formula:</p>
<p>After I [anchor action], I will [tiny habit].</p>
<p>This anchor action is crucial. This is a task that you already complete and that is already a solid part of your schedule that you anchor your new habit to.</p>
<p>It should be in the same location and have the same context as your new tiny habit.</p>
<p>So here's an example of a bad anchor and tiny habit:</p>
<p>After I take the dog out, I will floss one tooth.</p>
<p>Because the location and context are so different, this is unlikely to stick. Here's a better option:</p>
<p>After I brush my teeth, I will floss one tooth.</p>
<p>Again, I highly recommend you check out Fogg's book, Tiny Habits, for a much more thorough exploration of this method.</p>
<p>For now, let's look at how we can apply this method to launching a successful dev career.</p>
<h2 id="heading-tasks-to-focus-on">Tasks to Focus On</h2>
<p>We want to focus on three main components for building out our dev career:</p>
<ol>
<li>Develop your skills</li>
<li>Establish an online presence</li>
<li>Start networking</li>
</ol>
<p>Let's briefly go over these, and then we'll cover how to translate them into the Tiny Habit methodology.</p>
<h3 id="heading-develop-your-skills">Develop Your Skills</h3>
<p>This one is pretty self-explanatory. You need to grow your development skills if you want to be a developer. The key here is to make sure you <a target="_blank" href="https://www.freecodecamp.org/news/how-to-learn-from-coding-tutorials-and-avoid-tutorial-hell/">don't get stuck in tutorial hell forever</a>.</p>
<p>Tutorial hell is appealing because following tutorials and courses does not take nearly as much mental or creative energy as building something from scratch does.</p>
<p>So you fool yourself into thinking you are learning when all you are really doing is copying what someone else did.</p>
<p>But building that out, having it work smoothly, and then seeing the finished product makes your brain feel good, so the habit solidifies and the cycle continues.</p>
<p>Here you want to start building the tiny habit of writing your own code and building your own things so you can replace that feedback loop with a more useful one.</p>
<h3 id="heading-establish-an-online-presence">Establish an Online Presence</h3>
<p>Building an online presence encompasses a few different things. The most important are social media and your portfolio site. When I say social media I mean Twitter and LinkedIn.</p>
<p>Say what you want about them – and I definitely have my issues – but they are invaluable when trying to start and grow a career.</p>
<p>As with most things, the key to growing on these platforms is to be consistent. So this is a perfect fit for the Tiny Habits framework, too.</p>
<p>Engagement on these platforms is huge, especially at the beginning when your account is still small, so you really want to make sure you are showing up every day.</p>
<h3 id="heading-start-networking">Start Networking</h3>
<p>Finally we have networking. Although there is some networking included in our online presence component because of interacting with other people, the <a target="_blank" href="https://www.freecodecamp.org/news/networking-for-aspiring-developers/">networking we want to focus on here is more direct</a>.</p>
<p>When you are first starting out, it can be very helpful to start reaching out to companies you admire directly, telling them so, and introducing yourself.</p>
<p>This is a bit of a secret weapon because very few people do it, but it's very powerful.</p>
<p>Let's look at how we can create some Tiny Habits around these three main goals. Remember, the goal is to start embedding the habit in your brain. Then you can increase the amount of each of these things over time.</p>
<h2 id="heading-how-to-develop-tiny-habits">How to Develop Tiny Habits</h2>
<p>You'll need to come up with the anchor actions on your own. Anchor actions are specific to each person, because they consist of things you already do as part of your routine.</p>
<p>So I'll give you recommended Tiny Habits, along with my anchors, but ultimately you'll need to come up with your own.</p>
<p>For skill development, I recommend something very simple:</p>
<p><strong>After I take my first sip of coffee, I will write one line of code in my own project.</strong></p>
<p>Remember, the anchor action should be specific to you. I already make coffee before I start working in the morning, so the first sip is my anchor.</p>
<p>Don't discount this because of the simplicity and ease of the task. That's the point. Make it ridiculously easy to start and the snowball will grow as you gradually increase the task.</p>
<p>Now, for online presence:</p>
<p><strong>After I check my email, I will write one thoughtful reply on Twitter.</strong></p>
<p>Again, I'm using what is an existing part of my routine and then anchoring my habit to that.</p>
<p>Finally, for networking:</p>
<p><strong>After I check Twitter, I will write down one person I want to reach out to.</strong></p>
<p>Same concept here.</p>
<p>These are just examples, and I recommend you start with just these three for a few days while you get used to how this works. Then you can gradually start to expand the habits and start to add more for the particular tasks you have.</p>
<p>Please don't overcomplicate this or try to add anything more. The goal is to make it so small and so easy that it feels stupid and pointless to not do it. These will begin to compound as you begin to build that habit and execute on it every day.</p>
<p>And don't forget the celebration! That part is crucial for forming the pathways in your brain that will make executing on these actions sustainable and fun.</p>
<h2 id="heading-wrapping-up">Wrapping up</h2>
<p>So much of why people struggle to make progress on their goals is because they go too big too fast or struggle with information overload.</p>
<p>This simple system solves both of those problems, but we naturally resist it because it seems too small to make a difference.</p>
<p>In reality, when we go overboard for a day or two, then burn out for a week or two, we are taking one step forward and two steps back. No matter how big the steps are, we aren't making progress.</p>
<p>But when we implement the Tiny Habits method, we might be taking miniature little baby steps, but we're taking them every day and always forward.</p>
<p>Finally, if you would like a step-by-step walkthrough on how to land that first web developer job, I have a free 10-day email course at <a target="_blank" href="https://LaunchYourDevCareer.com">LaunchYourDevCareer.com</a>. It covers a lot of what we talked about here plus a lot more in order to give you a concrete path to that first job.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 9 Habits I Wish I Had as a Junior Developer ]]>
                </title>
                <description>
                    <![CDATA[ By Tom Hombergs Have you ever sat down and taken an inventory of your habits? Habits are what make us who we are.  Good habits help you to become who you want to be. Bad habits will slowly turn you into someone you don't want to be. After more ]]>
                </description>
                <link>https://www.freecodecamp.org/news/good-habits-for-junior-developers/</link>
                <guid isPermaLink="false">66d4614937bd2215d1e245ed</guid>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Junior developer  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 08 Sep 2020 18:23:13 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/09/my-life-journal-WI30grRfBnE-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Tom Hombergs</p>
<p>Have you ever sat down and taken an inventory of your habits? Habits are what make us who we are. </p>
<p>Good habits help you to become who you want to be. Bad habits will slowly turn you into someone you don't want to be.</p>
<p>After more than 12 years as a software developer, I've grown some habits that I'm proud of and some that I'd rather get rid of. </p>
<p>Most of the time, I wasn't aware of my habits, but looking back, it's pretty clear to me which habits were helping me grow and which were hindering me. </p>
<p>This drove me to take an inventory and write about good developer habits to maybe inspire you to do the same.</p>
<p>If you're starting as a developer, have a look at the habits outlined below and ask yourself if they would help you become who you want to be. Be conscious of your habits and actively nurture them to become a great software developer.</p>
<h1 id="heading-volunteer-for-things-you-dont-know">Volunteer for Things You Don't Know</h1>
<p>At the start of your career, you don't know a lot. You come into that new project and feel like an impostor because they're paying you money even though you don't understand half of the acronyms, technologies, and frameworks they're throwing around in each meeting. </p>
<p>And you only faintly know the other half because you googled them.</p>
<p>Replace "At the start of your career" with "At the start of any new project", and you have a pretty good summary of a software development career. </p>
<p>Every new project, we start over. There are new people to meet, new requirements to understand, and new frameworks to learn. Every single time. </p>
<p>This is why it's important to learn new stuff. If you just keep doing the things you know, you'll never be confident about starting a new project. There will always be the fear of the unknown.</p>
<p><strong>If you make it a habit to volunteer for tasks you don't know anything about, you will constantly learn new things.</strong> </p>
<p>If the build needs fixing and you've never worked with the build system, get on it! You'll learn about build management.</p>
<p>If there's a bug in the JavaScript frontend and you've only worked on the Java backend so far, fix it! You'll learn new Javascript idioms.</p>
<p>Doing stuff you're not confident about doing is a great way to grow. Be sure to manage other people's expectations towards you, though. Don't pretend you're an ace. Tell them you haven't done it before but you would like to learn.</p>
<h1 id="heading-ask-to-pair-up">Ask to Pair Up</h1>
<p>If you're stuck and can't get started with a task because you're unfamiliar with the context, ask someone with experience in the topic to pair up with you. </p>
<p><strong>A pairing session is a great way to kick off the work on a task.</strong> Discuss the requirements with your partner until you have an understanding of what is expected. Then, discuss the solution. </p>
<p>What's the context? Which codebase(s) do you have to touch? What are the explicit and implicit conventions in the codebase? </p>
<p>But you can take pairing even further. <strong>Instead of just pairing up to kick off a task, schedule more time with your partner</strong>. After kicking off the topic, start working on it together. You drive, your partner gives advice, then the other way around. </p>
<p>This way, you even get to learn how your partner thinks and solves problems. You can only profit from it! Even if it's just a new IDE shortcut you learned.</p>
<p><strong>A note on working from home:</strong> due to working from home, I struggled with things that would not have been a problem before. I hesitated to ask teammates to pair up with me. What was a simple tap on a teammate's shoulder in the office became a high barrier when working remotely and communicating with video conferencing software. </p>
<p>If that is a problem in your team, talk about it with your teammates (in a retro, for example) and it will be much easier afterward. Turns out it's just a habit to re-learn.</p>
<h1 id="heading-talk-about-what-youre-doing-and-what-youre-not-doing">Talk about What You're Doing (and What You're Not Doing)</h1>
<p>I don't remember how often I have eagerly taken on a task, thinking I'd be done within a day, but I end up still working on it a week later. </p>
<p>It gets better with experience, but I still find myself making too optimistic estimations. There are just too many reasons to make an optimistic estimation:</p>
<ul>
<li>the pressure to deliver this new feature quickly because the deadline is looming,</li>
<li>the pressure to look good among peers,</li>
<li>things just not working as I expect them to (this is the one that's most commonly throwing me off, even with years of experience),</li>
<li>and a lot more ...</li>
</ul>
<p>Chances are that most of your estimations end up being too optimistic. What can you do about that?</p>
<p><strong>You can manage expectations along the way.</strong> </p>
<p>Continuously talk about what you're doing and what is holding you up. With "continuously" I don't mean that you should provide a status update to the whole team every 15 minutes. But make sure the relevant people know where you stand at the start or the end of the day, at least.</p>
<p>So, if your manager / team / project manager / product manager / stakeholder expects results from you, give them a quick update every day: "This is what I've been doing. This is the next step. This is a problem I'm facing. These are the options." </p>
<p>This will let everyone know of your progress. No one will blame you if you're hitting a wall, as long as you kept them in the loop.</p>
<p>This will make discussions of the type "Why did that take so long?" a thing of the past. As an added benefit, the status update will trigger discussions that can help solve problems. </p>
<p>In the best case, this status update is ritualized in the team. It's commonly called "daily standup" where every team member quickly updates the rest of the team about their progress and problems. </p>
<p>But even if you have a daily ritual like that, take a couple of minutes to think if anyone should be updated that is not part of the daily ritual. Should they be included? Or should they be updated through some other mechanism?</p>
<p><strong>Make it a habit to regularly update the people that have an interest in the results of your work.</strong> </p>
<h1 id="heading-write-a-blog">Write a Blog</h1>
<p>I'm probably not the first person you've heard saying this, but I'll say it nevertheless: write a blog! </p>
<p>It doesn't even have to be public. It can be a couple of pages in a company wiki or a collection of GitHub repositories with example code and a couple of lines of explanatory text.</p>
<p>Why? </p>
<p><strong>Because writing with the intention to teach others (even if it's just future you) is a great way of learning and growing.</strong> </p>
<p>Write about how you solved a gnarly problem. Write about how to use that new and shiny framework you always wanted to try. Or write a journal of what you did each week (this will also help with the "talking about what you're doing" habit because you can look up what you've been doing).</p>
<p>I have started a blog a couple of times. It's hard to keep the motivation up in the beginning, because no one will read your blog posts. It feels strange to write into a void. So I stopped. </p>
<p>Then, I started <a target="_blank" href="https://reflectoring.io">my current blog</a> 3 years ago, writing without an audience for half a year. I noticed only then that my <code>robots.txt</code> file didn't allow search engines to index my blog! </p>
<p>So I changed my <code>robots.txt</code> file and people actually started to read my stuff. Not many, but it gave me the motivation to continue. So, I pulled through, tuned my writing skills along the way, and grew my blog to &gt; 200,000 page views a month.</p>
<p>All because I started writing about frameworks <em>I</em> wanted to learn and problems <em>I</em> had solved so that <em>I</em> could look my articles up again when <em>I</em> needed them. Not because I wanted to create a big audience. </p>
<p>Blogging is a chore at first but can grow to be very rewarding if you stick to it. If you do it with the intention of learning and teaching, you will not only learn a lot, but other people will notice your blog eventually and it will open a whole world of opportunities.</p>
<h1 id="heading-have-a-notebook-and-a-system">Have a Notebook and a System</h1>
<p>I've only recently grown to be a big fan of notebooks. Not a computer notebook, but a real, paper notebook. I take it (and a pen!) wherever I go, so I can take notes about whatever strikes me as important at any time.</p>
<p>I take notes when I listen to a talk, or when I'm waiting for the bus, thinking about what I could make for dinner this week. </p>
<p>I also use the notebook to maintain lists: books I want to read, frameworks I want to try out, features I want to add to my side projects. Most importantly, I use it to take notes while reading books, because that conserves the learnings from the book.</p>
<p>I'm writing down everything that weighs on my mind. <strong>If I don't write it down, it will keep my mind busy</strong>, sometimes to the extent that I'm getting anxious and have trouble sleeping. </p>
<p>The reason I'm getting anxious without my notebook is that I don't trust my memory. If you have a great memory and can recall everything that you have thought about a week ago, you probably don't need a notebook. If your memory is as patchy as mine, though, it will make a world of a difference to your peace of mind.</p>
<p><strong>To build trust in your notebook, you need a system</strong>. You need to convince your mind that whatever you put into the notebook will not be lost.</p>
<p>Create an index on the first couple of pages of the notebook to make the information retrievable. Then, make it a habit to review your notes regularly and process them. </p>
<p>To process the notes I'm taking while reading a book, for instance, I review the notes whenever I'm done with the book and write a book review on my blog. Almost no one reads these reviews, but the process of writing the review makes the things I learned stick so much better.</p>
<h1 id="heading-keep-notes-about-your-wins">Keep Notes about Your Wins</h1>
<p>Having a notebook can also help with the next habit: documenting your achievements.</p>
<p>As I said, my memory is patchy at the best of times. I can usually remember what I had for lunch yesterday, but if I'm deep in focus and spending brain power on some gnarly problem, the halftime of my memory goes down considerably. </p>
<p>That's why I like to document my achievements at the end of the day. It's usually not big achievements, but small wins - like having beaten a bug, or having finished one of the many steps towards adding a new feature to the software I'm working on. I also document personal wins like having stuck to my morning workout routine. </p>
<p>I just create a list of bullet points each evening in my notebook, but it'll also work with a digital medium like a spreadsheet or whatever you're most comfortable with - as long as you stick with it.</p>
<p>Over time, the achievements aggregate. You might want to mark the ones that are most important to you so you can easily find them later. </p>
<p>Then, on an occasion like a <strong>performance review,</strong> you go through that list, <strong>find the achievements that are relevant to that occasion, and list them out to prepare.</strong> Performance reviews always work out better when you're prepared.</p>
<p>Having a list of your achievements also helps in every-day situations to talk about what you've been doing (see habit "Talk about what you're doing").</p>
<h1 id="heading-have-a-time-slot-for-important-tasks">Have a Time Slot for Important Tasks</h1>
<p>At the end of the day, I often feel I haven't accomplished anything. While it helps to document your wins or even just the things you did, you still need to actually do those things.</p>
<p>It happens quickly that you go from meeting to meeting and suddenly the day is over. After a meeting, you want to continue the task you started before the meeting, but just when you've warmed up, the next meeting starts. And after that meeting, you have to start over, because you lost the context.</p>
<p><strong>Context switching is killing productivity.</strong></p>
<p>If there's one thing I learned to be productive, it's having a dedicated time slot for things you want to get done. If you don't have a pre-planned time slot for a task, chances are slim that you will get started on it. It will be eaten up by every-day work or other planned work.</p>
<p>There isn't a single way to implement a time management habit, and, to be honest, I'm hopping from one productivity method to the next every couple of months. But the core is always the same: block some time in your day for the things you want to get done most.</p>
<p>I block an hour in the morning, before work, to write articles for <a target="_blank" href="https://reflectoring.io">my blog</a> (or for other blogs, like this one). Most days, I also block an hour in the evening, when the kids are in bed, to work on any side project I might have.</p>
<p>Currently, I have a Trello board with <a target="_blank" href="https://reflectoring.io/organizing-work/#my-system-for-organizing-work">one column for every day of the week</a> where I put the tasks I want to do in the morning and the evening. Once a week, I update that board with the things I want to do in the next week, so I don't have to waste my precious blocked time with thinking about what to do next.</p>
<p>I have a very similar Trello board for my software developer job. Every morning, I think of the things I want to do and put them into the column for the day. </p>
<p>I also block at least 2 hours of focus time in my calendar every day, so that my co-workers don't try to schedule any meetings at that time. That's when I get through my list of tasks.</p>
<p>It doesn't really matter how you manage your time, <strong>but it's important to do it and to make it a habit</strong>. Otherwise your days will be eaten up by things that are not important to you.</p>
<h1 id="heading-when-stuck-take-a-break">When Stuck, Take a Break</h1>
<p>As software developers, we tend to get stuck a lot. And boy, does it piss me off when I'm stuck and don't see a way out. </p>
<p>It's such obvious advice to take a break when you're stuck, but it's so hard to do. "I'm so close to solving the problem, I can't take a break now!" </p>
<p>Also, taking a break now would mean I would have to warm up to the topic again later. Why should I deliberately switch contexts when context switching is the number one source of wasted time?</p>
<p>When you're stuck, you're not thinking straight. You're thinking about how stupid it is to be stuck with this problem, how easily your teammates would probably solve it, and why they always get the easy tasks. But you're not thinking about how to solve the problem.</p>
<p>Take a break and work on something else for a time. Or even better, try again the next day. Getting some distance to the problem will allow you to see solutions you were blind to before. </p>
<p>If you haven't tried this before, you won't believe how often a problem is "just solved" the next morning. Mostly because you see a path to a solution that you haven't seen before.</p>
<p>Now, it's easy to say to take a break, but how do you identify that you're currently in "stuck mode" and then persuade yourself to quit working on the problem for a time?</p>
<p>I'm honestly not very good at this myself, because I usually WANT THIS DUMB TASK OUT OF THE WAY so I can show that I've achieved something!</p>
<p>But what I found that helps me is to <strong>divide my day into 30-minute slices and have a quick recap after each of those slices.</strong> This technique is called the Pomodoro technique based on those tomato-shaped kitchen timers. </p>
<p>After each pomodoro unit, I'm asking myself if I'm still working in a "solution mode", or if I'm stuck and should work on something else for a while.</p>
<p>A nice benefit of the pomodoro technique is that you can use the end of a unit as a trigger for other habits. </p>
<p>I use it as a trigger to stand up from my chair to stretch my muscles and drink some water, for example. This is sometimes called "habit stacking", because you're stacking one habit on top of another, and it's very effective. </p>
<p>If you want to read more on habits, I can warmly recommend the book "Atomic Habits" by James Clear.</p>
<h1 id="heading-dont-chase-silver-bullets">Don't Chase Silver Bullets</h1>
<p>I wrote a <a target="_blank" href="https://reflectoring.io/book">book</a> on a specific architectural style and I regularly get emails saying "I love that architecture style and I want to apply it to all of my projects! How can I do that?".</p>
<p>Can you guess my answer to that question?</p>
<p>There is no single architectural style that applies to all problems out there. </p>
<p>You build a plain CRUD API when it's a small project. You build a more sophisticated Hexagonal Architecture if you have a complex domain model. And you apply any of a hundred different styles when you're building microservices in a specific context.</p>
<p>Similarly, there is no single framework you should use for every single project. And there is no single best programming language or coding style. </p>
<p>Don't fall for silver bullets. They don't exist. </p>
<p><strong>Having an opinion is good if it's backed with good arguments.</strong> "This is the best architecture style" or "I've always done it like this" are not good arguments and people will see through them.</p>
<p>Just imagine you have a developer on your team that has an opinion on everything and always wants to do things their way, "because it's the best way". You would get tired of that very quickly. Don't be that person.</p>
<h1 id="heading-build-those-habits">Build Those Habits!</h1>
<p>Wow, this article got longer than I expected. I hope it provided some inspiration on what to think about when growing your software developer career. I certainly haven't mastered all of those habits, but I'm trying to get a bit better every day.</p>
<p>Pick the habit that resonates most with you and try to consciously apply it in your everyday work. </p>
<p>Let me know <a target="_blank" href="https://twitter.com/TomHombergs">on Twitter</a> how it works out! I'd be thrilled to get your feedback.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Quantify and Visualize Your Learning with the Pomodoro Technique ]]>
                </title>
                <description>
                    <![CDATA[ By Ingrid Arreola We are a few months into a global pandemic which has forced many of us to adjust almost every aspect of our lives.  Our daily routines have been turned upside-down and many of us continue to spend more time at home.  This increased ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-quantify-and-visualize-learning-with-the-pomodoro-technique/</link>
                <guid isPermaLink="false">66d45f314a7504b7409c33fb</guid>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 24 Aug 2020 20:38:03 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9910740569d1a4ca1da3.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Ingrid Arreola</p>
<p>We are a few months into a global pandemic which has forced many of us to adjust almost every aspect of our lives. </p>
<p>Our daily routines have been turned upside-down and many of us continue to spend more time at home. </p>
<p>This increased time at home offers an opportunity for growth and learning. When the pandemic began, I started to review how I was spending my extra time at home. I tracked this data, established a learning routine, and finally visualized the results. </p>
<p>This article is an overview of how I used the Pomodoro technique to track my learning. In it, we'll break down how to quantify your learning progress, and visualize the results.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-117.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-learning-how-to-learn"><strong>Learning how to learn</strong></h2>
<blockquote>
<p><em>“Learning is creating a pattern in your brain. The more you practice, the stronger and the more available it will be for you in the future.” — Barbara Oakley</em></p>
</blockquote>
<p>Our brains process information in several ways as we learn new subjects. There are two primary ways that we think: focused mode and diffused mode. </p>
<p>When we first begin to learn something new, we have to focus and concentrate. Diffused mode, on the other hand, allows us to make imaginative connections between ideas. This includes time when we are relaxed and our thoughts travel broadly. </p>
<p>The Pomodoro Technique is a tool that helps us enter focused mode.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/mathew-schwartz-8rj4sz9YLCI-unsplash.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>There are two primary ways that we think: via the focused mode and the diffused mode. When we first begin to learn something new we have to focus and concentrate.</em></p>
<h2 id="heading-what-is-the-pomodoro-technique"><strong>What is the Pomodoro Technique?</strong></h2>
<p>The Pomodoro technique helps us do focused work by:</p>
<ol>
<li>Shutting off all distractions and finding a quiet place to do work.</li>
<li>Setting a timer for 25 minutes. I have downloaded an app called "Be Focused Pro" which allows me to track this data.</li>
<li>Focus on the task, or the learning activity.</li>
<li>Take a break and repeat the process after the 25 minutes are up.</li>
</ol>
<p>I learned to establish a learning routine with the Pomodoro technique. 25 minutes is tangible and short enough to focus on a desired learning activity. </p>
<p>Learning is an investment, and its value compounds over time. 25 minutes a day may seem short, but multiply that over a week, a month, a year and you will see results.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/pomodoro.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Be Focused Pro App. Start a Pomodoro. It has settings that allow you to export to csv.</em></p>
<h2 id="heading-your-learning-goal"><strong>Your Learning Goal</strong></h2>
<p>Think about what you'd like to learn – what is that topic or language that you're curious about? </p>
<p>After you've established your subject, think about the new skills that you need to acquire. It's important to break down the topic into pieces to achieve your learning goals. </p>
<h3 id="heading-bringing-in-the-pomodoro-technique">Bringing in the Pomodoro technique</h3>
<p>The Pomodoro technique helps you take a step-by-step approach towards new skill acquisition. And here's how.</p>
<p>Think about your learning goal and break it apart into smaller chunks. This exercise will help you space out your learning over several days, weeks, or months. Remember that we all learn at different speeds. </p>
<p>You build a solid foundation as you begin to put in time to learn and practice your new skills. This exercise is also helpful to develop milestones that you can quantify. The Pomodoro Technique helps you quantify that progress and analyze learning patterns.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/glenn-carstens-peters-RLw-UC03Gwc-unsplash.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Think about your learning goal and break it apart into smaller chunks.</em></p>
<h2 id="heading-tools-to-track-data"><strong>Tools to Track Data</strong></h2>
<p>Several apps exist that help you use the Pomodoro Technque. As I mentioned, I have downloaded the "Be Focused Pro" app. The greatest benefits are that you can enter a name for your task, create tags and notes, and add a "due date." </p>
<p>This data helps you understand the amount of time spent completing a project or goal. You can download a csv of your data, which includes a time stamp, the name of the activity, the duration of your pomodoro task, and metadata.</p>
<p>There is a new row of data created every time that you complete a Pomodoro. The app has analytics such as the amount of Pomodoro's completed in a day, a week, or a custom date field. </p>
<p>The ability to download a csv is a great feature because you can transform your own data. This allows you to create a data set that best suits your purposes. You can understand your learning patterns, track progress, and visualize the various components.</p>
<p>After you have completed a few Pomodoro's you can export the data as a csv. This file will serve as the foundation and includes:</p>
<ul>
<li>Start Date: timestamp of when you started</li>
<li>Duration: amount of time for the Pomodoro, the default is 25 minutes</li>
<li>Assigned Task: the name of the activity</li>
<li>Task State: indicates whether the activity is completed or if it is ongoing</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-119.png" alt="Image" width="600" height="400" loading="lazy">
<em>The data export from the app Be Focused Pro.</em></p>
<h2 id="heading-introspection"><strong>Introspection</strong></h2>
<p>Before you begin to clean up and transform this data, take a step back and ask yourself a few questions.</p>
<ul>
<li>What am I most interested in understanding about this data?</li>
<li>Do I want to understand how long it takes me to complete a learning goal?</li>
<li>Am I interested in the length of time required to complete the various phases of my goals?</li>
<li>Am I more interested in seeing the progress of my various goals?</li>
<li>Do I want to build something that serves more as motivation? Should I focus on what I've accomplished and the goals I am working towards?</li>
<li>What time frame do I want to focus on and how much granularity do I need? Minutes, months, or days?</li>
<li>Do I want to look at the time of day that I do the most Pomodoro activities? Will this knowledge help me organize my schedule so that I can focus during my productive hours?</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/aaron-burden-AXqMy8MSSdk-unsplash.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Before you begin to clean up and transform this data, take a step back and ask questions.</em></p>
<p>The answer to your questions will guide the data transformation and clean-up. These questions help identify gaps in your current data structure. I wanted to explore the following:</p>
<ul>
<li>How has the pandemic impacted my learning?</li>
<li>What day(s) or hour(s) am I most productive in?</li>
<li>What general activities consume most of my learning time?</li>
<li>How can I track progress for my various courses on Pluralsight, Data Camp, and other learning platforms?</li>
</ul>
<h2 id="heading-data-transformation"><strong>Data Transformation</strong></h2>
<h3 id="heading-data-cleanup"><strong>Data Cleanup</strong></h3>
<p>After completing the exercise I spent time cleaning the data in the csv. I focused on the time stamp and created new columns of data, which included:</p>
<ul>
<li>Month</li>
<li>Day</li>
<li>Year</li>
<li>Minutes</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-120.png" alt="Image" width="600" height="400" loading="lazy">
<em>Date Cleanup</em></p>
<h3 id="heading-new-data-created"><strong>New Data Created</strong></h3>
<p>I created new columns of data that served as categories for my learning activities. I wanted to collect information such as the "Type" to separate the various "Assigned Tasks." </p>
<p>I also created a "Learning Platform" column to distinguish the course websites. I wanted granularity with these courses. The creation of the "Learning Skill" column specified the skill(s). "Course Title" referred to the name of the course, or the title of a project. </p>
<p>The new categories included:</p>
<ul>
<li>Type</li>
<li>Learning Platform</li>
<li>Learning Skill</li>
<li>Course Title</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-122.png" alt="Image" width="600" height="400" loading="lazy">
<em>New columns created included: type, assigned task, learning platform, learning skill, and course title</em></p>
<h3 id="heading-data-for-waffle-chart-visualization"><strong>Data for Waffle Chart Visualization</strong></h3>
<p>The final data piece is optional and I used it to create my desired visual component within Tableau. </p>
<p>The Tableau community shares tips and tools, and I downloaded the waffle chart spreadsheet from Andy Kriebel's website. I did add a column to Andy's sheet so that my data set would translate appropriately.  </p>
<p>The "minutes" columns helps visualize the progress percentage. This final piece is a spreadsheet that has several data fields including:</p>
<ul>
<li>Row</li>
<li>Column</li>
<li>Progress</li>
<li>Minutes</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-123.png" alt="Image" width="600" height="400" loading="lazy">
<em>"Waffle Chart" spreadsheet that creates the visualization in Tableau</em></p>
<h3 id="heading-data-import"><strong>Data Import</strong></h3>
<p>You are ready to import the data once the various pieces are transformed. I created two Google spreadsheets so that I could continue adding data over time and easily refresh on Tableau. </p>
<p>The google spreadsheets include:</p>
<ul>
<li>2020 Pomodoro: data from the initial csv as well as the columns created:</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-128.png" alt="Image" width="600" height="400" loading="lazy">
<em>2020 Pomodoro - Google Spreadsheet</em></p>
<ul>
<li>2020 Focused Mode Waffle Chart: data specific for the creation of a waffle chart in Tableau:</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-132.png" alt="Image" width="600" height="400" loading="lazy">
<em>2020 Focused Mode Waffle Chart - Google Spreadsheet</em></p>
<h2 id="heading-visualization"><strong>Visualization</strong></h2>
<p>Take a step back and revisit your questions from the introspection exercise. The answer to your questions help the data transformation and clean-up. </p>
<p>These questions will also help guide your data exploration. The main themes of my questions included: </p>
<ol>
<li>How had my learning changed over time? </li>
<li>At what time am I most productive and learning?</li>
<li>What is the progress of my courses and projects? </li>
</ol>
<p>As I began exploring data visualizations, I focused on these three themes:</p>
<ul>
<li>Patterns Across Months</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/Patterns_Months.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Visualization breaking down the pattern across months</em></p>
<ul>
<li>Patterns Across Days/Hours</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/Patterns_Day_Hour.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<ul>
<li>Learning Progress</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/Learning_Progress.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Play around with several chart and graph types until you find the form that best suits your purpose. The final step is to bring all the pieces together into one cohesive structure.</p>
<p>I finished by creating a dashboard in Tableau. First I took a broad look at the Pomodoro Activity Types. Next, I viewed how it has changed over time and examined these patterns across days/hours. </p>
<p>The bottom portion focuses on progress. I wanted an easy way to scroll through the status of the various courses/projects I am working on. <a target="_blank" href="https://public.tableau.com/profile/ingrid.arreola#!/vizhome/QuantifySelfFocusedMode/FocusedMode">You can explore the dashboard on Tableau Public here</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/Dashboard_Quantify_Self.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-just-get-it-done">Just get it done</h2>
<p>25 minutes a day of learning leads to positive change and growth over time. The effectiveness of the Pomodoro method compounds and helps build knowledge, experience, and new skills. </p>
<p>Each time that you focus and do a Pomodoro activity you are learning and can begin to build powerful habits. </p>
<p>Next monitor your growth and learn about the patterns, so that you become a better learner. What will you focus on and where will the learning lead you? What will you learn? What will you build? </p>
<p>Finally, share your work, along with any lessons learned.</p>
<blockquote>
<p><em>"Make it a habit. Figure out when and where you're most comfortable doing deliberate practice. One you've made your selection, do deliberate practice then and there every day. Why? Because routines are a godsend when it comes to doing something hard. A mountain of research studies show that when you have a habit of practicing at the same time and in the same place every day, you hardly have to think abut getting started. You just do." - Angela Duckworth</em></p>
</blockquote>
<p>If you're interested in getting started, these resources can help you:</p>
<ul>
<li><a target="_blank" href="https://docs.google.com/spreadsheets/d/1NE6Jc7IFmVzfxR8r9VA-VRcvBi_B6wy6oBzNiUQVi2U/edit?usp=sharing">Ingrid's 2020 Pomodoro Google Sheet</a>: this is a skeleton of the spreadsheet I used for this project.</li>
<li>Be Focused Pro App: <a target="_blank" href="https://apps.apple.com/us/app/be-focused-pro-focus-timer/id953426154">this is a link to the app I use on a daily basis</a>. The instructions covered in this article are applicable to this particular app. There are many more apps out there as well.</li>
<li><em><a target="_blank" href="https://bookshop.org/books/learning-how-to-learn-how-to-succeed-in-school-without-spending-all-your-time-studying-a-guide-for-kids-and-teens/9780143132547">Learning To Learn</a></em> by Barabra Oakley, Alistair McConville, and Terrence Sejnowski is a great book that teaches you the science behind learning. The <a target="_blank" href="https://www.coursera.org/learn/learning-how-to-learn/">Coursera course "Learning How to Learn"</a> is available for free. </li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Make Programming a Daily Habit ]]>
                </title>
                <description>
                    <![CDATA[ Coding has been a hot topic over the last few years. A lot of people want to start programming and become a developer. So how can you develop a coding habit? A few days ago, I started to read The Power Of Habit by Charles Duhigg. This book made me ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-make-programming-a-daily-habit/</link>
                <guid isPermaLink="false">66bb920d0eaca026d8cfa5eb</guid>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Gaël Thomas ]]>
                </dc:creator>
                <pubDate>Sun, 26 Jan 2020 08:51:01 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/01/how-to-make-programming-a-daily-habit.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Coding has been a hot topic over the last few years. A lot of people want to start programming and become a developer. So how can you develop a coding habit?</p>
<p>A few days ago, I started to read <em>The Power Of Habit</em> by Charles Duhigg. This book made me think a lot about why some people struggle with programming daily. I think it's because of the habit process. Most people don't know how habits work and need concrete examples.</p>
<p>In this article, I'm going to explain what a habit is and give you some advice to help you create a daily programming habit.</p>
<h2 id="heading-what-is-a-habit">What is a habit?</h2>
<p>Before starting, it's essential to define what a habit is and how you form one.</p>
<p>If we check the definition of the word "habit" on Google, we find this:</p>
<blockquote>
<p>"Habits are routines of behavior that are repeated regularly and tend to occur subconsciously" ― <a target="_blank" href="https://en.wikipedia.org/wiki/Habit">Wikipedia</a></p>
<p>"a behavior pattern acquired by frequent repetition or physiologic exposure that shows itself in regularity or increased facility of performance" ― <a target="_blank" href="https://www.merriam-webster.com/dictionary/habits">Meriam-Webster Dictionary</a></p>
<p>"a recurrent, often unconscious pattern of behavior that is acquired through frequent repetition" ― <a target="_blank" href="https://www.thefreedictionary.com/habits">The Free Dictionary</a></p>
<p>"something that you do often or regularly, often without thinking about it" ― <a target="_blank" href="https://www.macmillandictionary.com/dictionary/british/habit">MacMillan Dictionary</a></p>
</blockquote>
<p>As you can see, a habit is an automatic process in your life. Take brushing your teeth, for example.</p>
<p>It's interesting to define the components of a habit to understand how it works.</p>
<p>Each habit includes three components: a cue, a routine, and a reward.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/07/the-habit-loop.jpg" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://charlesduhigg.com/keep-your-resolutions-this-year/">The Habit Loop</a></em></p>
<h3 id="heading-what-is-the-cue">What is the cue?</h3>
<p>The cue is an event in your life that triggers a habit. Every time you do something automatically, it was started by a cue.</p>
<p>Most of the time, a cue is defined by time, an emotional state, a location, or an action.</p>
<p>For example, if I'm working and suddenly smell coffee from my colleague's direction, my habit "Taking a coffee break" is triggered. </p>
<h3 id="heading-what-is-the-routine">What is the routine?</h3>
<p>The routine is what you are doing while the habit process is running. You can define whatever you want it to be in this part. As I said previously, it can be, "I'm going to take a coffee break."</p>
<h3 id="heading-what-is-the-reward">What is the reward?</h3>
<p>The reward is the final element of the process. In other words, what this routine has done for you. For the coffee break example, the reward is "Thanks to the caffeine, I feel less tired, and I am more dynamic."</p>
<p>The more positive and pleasant the reward is for yourself, the more your brain will save the habit.</p>
<blockquote>
<p>"This process within our brains is a three-step loop. First, there is a cue, a trigger that tells your brain to go into automatic mode and which habit to use. Then there is the routine, which can be physical or mental or emotional. Finally, there is a reward, which helps your brain figure out if this particular loop is worth remembering for the future. Over time, this loop—cue, routine, reward; cue, routine, reward—becomes more and more automatic. The cue and reward become intertwined until a powerful sense of anticipation and craving emerges. Eventually, whether in a chilly MIT laboratory or your driveway, a habit is born." ― Charles Duhigg, The Power of Habit: Why We Do What We Do in Life and Business</p>
</blockquote>
<h3 id="heading-a-little-exercise">A little exercise</h3>
<p>Here's something you can do: take one of your daily habits and try to define the cue, the routine, and the reward. Once you do, you're ready to read the next part on how to create your daily programming habit.</p>
<h2 id="heading-how-to-make-programming-a-daily-habit">How to make programming a daily habit</h2>
<p>All you have to do to make programming a daily activity is to create a routine.</p>
<p>You are free to define what you want for each part of this exercise, but I will give you a few tips to help you.</p>
<p>For the cue, you can try to define something based on time:</p>
<ul>
<li>Every morning right after I wake up</li>
<li>When I come back from my job</li>
<li>During my lunch break</li>
<li>[Insert a time-based cue]</li>
</ul>
<p>Routine will be our most straightforward element to define. You can just say, "I want to code for 30 minutes," "I'm going to learn [Insert a skill] for 30 minutes," or many more.</p>
<p>Finally, one of the most critical parts will be the reward. As I recommended in the first part of <a target="_blank" href="https://herewecode.io/blog/how-to-improve-your-programming-skills/">my first productivity article</a>, you need to establish goals for yourself. It's going to help you define a reward. Every time you practice your habit, you are closer to your goal.</p>
<p>Try to determine a long term goal, and inside of that, a lot of small goals.</p>
<p>For example, you can say:</p>
<ul>
<li>I'm getting closer to my goals for the week.</li>
<li>I'm getting a little closer to my final goal.</li>
<li>If I code right after waking up, I'll make myself breakfast as a reward.</li>
<li>[Insert a reward]</li>
</ul>
<h3 id="heading-a-challenge-that-can-help-you">A challenge that can help you</h3>
<p>One of the best ways to get into a habit is to follow a <a target="_blank" href="https://www.100daysofx.com/">100DaysOfX challenge</a>. This challenge is designed to help you create a pattern and commit to it every day by sharing what you did on Twitter, Instagram, or your blog.</p>
<p>The reason I'm telling you about this challenge is that it became famous on Twitter with the <a target="_blank" href="https://www.100daysofcode.com/">100DaysOfCode</a>.</p>
<p>I strongly recommend that you read the rules on the site and get started. You'll see, at first, it may seem big and impossible, but you'll find it fun to do.</p>
<p>Besides, you will most certainly get support on Twitter, which will motivate you. </p>
<blockquote>
<p>"Are you passionate about self-improvement? Eager to change your habits, have tried to do so many times, but had difficulties changing them? Life always seems to get in the way, there is not enough support, and you feel like you're alone in it? Find yourself thinking, "What's the use of all this self-improvement if I always seem to go back to where I started from?" ― <a target="_blank" href="https://www.100daysofx.com/">100DaysOfX</a></p>
</blockquote>
<p>If I recommend this challenge to you, it's because I'm doing it. I'm thrilled with the results, and I'm only starting. </p>
<p>For my part, I'm doing the 100DaysOfReading challenge. I always wanted to start reading but I never took the time to do it. Thanks to this challenge, I'm on day 17, and already finished one and a half books.</p>
<p>My habit loop:</p>
<ul>
<li>Every day before lunch or before sleeping (the cue).</li>
<li>I read 20 pages or more (the routine).</li>
<li>I am approaching my long-term goal of reading daily. I am close to my short-term goal of finishing the book. It makes me happy because I have always wanted to read daily (the reward).</li>
<li>I publish a quote from the book I'm reading with some explanations and motivational text <a target="_blank" href="https://twitter.com/gaelgthomas/">on my Twitter</a> (the commitment).</li>
</ul>
<p>Here are some tips that can help you to create your programming habit.</p>
<h3 id="heading-plan-your-tasks">Plan your tasks</h3>
<p>To work every day and achieve my monthly goals, I plan all my tasks the evening before. I put on paper what I want to make, and every time I do it, I'll scratch it off my list. I recommend that you do this with your daily programming habit because it's going to motivate you and satisfy you a lot when you finish all your goals.</p>
<p>If you need more structure in your work, define what you are going to do, how, when, and why.</p>
<p>For example, I'm going to create a landing page for my website (what I'm going to do). I will use Vue.JS to build it (how). I will do it between 8am and 10am (when). It's going to help me better understand Vue.JS and help me to start getting my visitor's email addresses.</p>
<h3 id="heading-code-your-dream-project">Code your dream project</h3>
<p>What could be better than coding daily while working on the project of your dreams? If you need motivation, it's an excellent way to program every day. Don't be afraid to take the initiative. Doing it a little bit every day will motivate you even more and give you results in a short time.</p>
<h3 id="heading-find-the-field-you-want-to-work-in">Find the field you want to work in</h3>
<p>The world of programming is vast – web, software, AI, embedded, and much more.</p>
<p>One of the significant difficulties is to define what you want to do as a programmer.</p>
<p>It's not easy for everyone, but choosing a topic and sticking to it can be a good motivation factor to practice daily.</p>
<p>For example, if you choose web programming, just focus on that. Even though it's still a big topic, you removed software, AI, embedded, and everything else. That's a good start.</p>
<p>To go further, you can choose between the front-end and back-end.</p>
<p>I'm telling you all this because often, when you start, you get demotivated fast because there are too many things, and you can't focus on a specific theme.</p>
<h3 id="heading-a-good-environment">A good environment</h3>
<p>Something that can motivate you in your daily programming habit is a pleasant working environment. I do not recommend working in your bed. You're going get tired easily.</p>
<p>Try to work at a desk or a table and do whatever you need to feel comfortable in that space. It will make you want to work more efficiently.</p>
<h2 id="heading-further-reading">Further reading</h2>
<p>If you are interested to know more about the habit process, I invite you to read <em>The Power of Habit</em> by Charles Duhigg. This book helped me a lot while writing this article, and a lot of the examples I gave you were inspired by it.</p>
<p>I've also heard about <em>Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones</em> by James Clear. This book offers a framework to improve your daily habits. The author tries to provide practical guidance on how to make changes.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Do you plan to make programming a daily habit? Are you going to commit to 100DaysOfCode?</p>
<p>Feel free to share this article if you liked it.</p>
<p>If you want more content like this, you can <a target="_blank" href="https://twitter.com/gaelgthomas/">follow me on Twitter</a>, where I tweet about web development, self-improvement, and my journey as a full stack developer!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How a simple cron job can save you from a ransomware attack ]]>
                </title>
                <description>
                    <![CDATA[ It’s 2019, and ransomware has become a thing. Systems that interact with the public, like companies, educational institutions, and public services, are most susceptible. While delivery methods for ransomware vary from the physical realm to communicat... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/cronjob-ransomware-attack/</link>
                <guid isPermaLink="false">66bd8f21ffb0fc5947cc9120</guid>
                
                    <category>
                        <![CDATA[ beginner ]]>
                    </category>
                
                    <category>
                        <![CDATA[ cybersecurity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ data ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ terminal ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Victoria Drake ]]>
                </dc:creator>
                <pubDate>Tue, 19 Nov 2019 14:13:32 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/11/cover-3.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>It’s 2019, and ransomware has become a thing.</p>
<p>Systems that interact with the public, like companies, educational institutions, and public services, are most susceptible. While delivery methods for ransomware vary from the physical realm to communication via social sites and email, all methods only require one person to make one mistake in order for ransomware to proliferate.</p>
<p>Ransomware, as you may have heard, is a malicious program that encrypts your files, rendering them unreadable and useless to you. It can include instructions for paying a ransom, usually by sending cryptocurrency, in order to obtain the decryption key. </p>
<p>Successful ransomware attacks typically exploit vital, time-sensitive systems. Victims like public services and medical facilities are more likely to have poor or zero recovery processes, leaving governments or insurance providers to reward attackers with ransom payments.</p>
<p>Individuals, especially less-than-tech-savvy ones, are no less at risk. Ransomware can occlude personal documents and family photos that may only exist on one machine.</p>
<p>Thankfully, a fairly low-tech solution exists for rendering ransomware inept: back up your data!</p>
<p>You could achieve this with a straightforward system like plugging in an external hard drive and dragging files over once a day, but this method has a few hurdles. Manually transferring files may be slow or incomplete, and besides, you’ll first have to remember to do it.</p>
<h2 id="heading-instead-use-cron">Instead, use cron</h2>
<p>In my constant pursuit of automating all the things, there’s one tool I often return to for its simplicity and reliability: <code>cron</code>. Cron does one thing, and does it well: it runs commands on a schedule.</p>
<p>I first used it a few months shy of three years ago (Have I really been blogging that long?!) to create <a target="_blank" href="https://victoria.dev/blog/how-i-created-custom-desktop-notifications-using-terminal-and-cron/">custom desktop notifications on Linux</a>. Using the crontab configuration file, which you can edit by running <code>crontab -e</code>, you can specify a schedule for running any commands you like. Here’s what the scheduling syntax looks like, from the <a target="_blank" href="https://en.wikipedia.org/wiki/Cron">Wikipedia cron page</a>:</p>
<pre><code class="lang-sh"><span class="hljs-comment"># ┌───────────── minute (0 - 59)</span>
<span class="hljs-comment"># │ ┌───────────── hour (0 - 23)</span>
<span class="hljs-comment"># │ │ ┌───────────── day of the month (1 - 31)</span>
<span class="hljs-comment"># │ │ │ ┌───────────── month (1 - 12)</span>
<span class="hljs-comment"># │ │ │ │ ┌───────────── day of the week (0 - 6) </span>
<span class="hljs-comment"># │ │ │ │ │</span>
<span class="hljs-comment"># │ │ │ │ │</span>
<span class="hljs-comment"># │ │ │ │ │</span>
<span class="hljs-comment"># * * * * * command to execute</span>
</code></pre>
<p>For example, a cron job that runs every day at 00:00 would look like:</p>
<pre><code class="lang-sh">0 0 * * *
</code></pre>
<p>To run a job every twelve hours, the syntax is:</p>
<pre><code class="lang-sh">0 */12 * * *
</code></pre>
<p>This <a target="_blank" href="https://crontab.guru/">great tool</a> can help you wrap your head around the cron scheduling syntax.</p>
<p>What’s a scheduler have to do with backing up? By itself, not much. The simple beauty of cron is that it runs commands - any shell commands, and any scripts that you’d normally run on the command line. As you may have  gleaned from my other posts, I’m of the strong opinion that you can do just about anything on the command line, including backing up your  files. Options for storage in this area are plentiful, from near-to-free  local and cloud options, as well as paid managed services too numerous  to list. For CLI tooling, we have utilitarian classics like <code>rsync</code>, and CLI tools for specific cloud providers like AWS.</p>
<h2 id="heading-backing-up-with-rsync">Backing up with <code>rsync</code></h2>
<p><a target="_blank" href="https://en.wikipedia.org/wiki/Rsync">The <code>rsync</code> utility</a> is a classic choice, and can back up your files to an external hard  drive or remote server while making intelligent determinations about  which files to update. It uses file size and modification times to  recognize file changes, and then only transfers changed files, saving  time and bandwidth.</p>
<p>The <a target="_blank" href="https://download.samba.org/pub/rsync/rsync.html"><code>rsync</code> syntax</a> can be a little nuanced; for example, a trailing forward slash will  copy just the contents of the directory, instead of the directory  itself. I found examples to be helpful in understanding the usage and  syntax.</p>
<p>Here’s one for backing up a local directory to a local destination, such as an external hard drive:</p>
<pre><code class="lang-sh">rsync -a /home/user/directory /media/user/destination
</code></pre>
<p>The  first argument is the source, and the second is the destination.  Reversing these in the above example would copy files from the mounted  drive to the local home directory.</p>
<p>The <code>a</code> flag for archive mode is one of <code>rsync</code>’s superpowers. Equivalent to flags <code>-rlptgoD</code>, it:</p>
<ul>
<li>Syncs files recursively through directories (<code>r</code>);</li>
<li>Preserves symlinks (<code>l</code>), permissions (<code>p</code>), modification times (<code>t</code>), groups (<code>g</code>), and owner (<code>o</code>); and</li>
<li>Copies device and special files (<code>D</code>).</li>
</ul>
<p>Here’s another example, this time for backing up the contents of a local directory to a directory on a remote server using SSH:</p>
<pre><code class="lang-sh">rsync -avze ssh /home/user/directory/ user@remote.host.net:home/user/directory
</code></pre>
<p>The <code>v</code> flag turns on verbose output, which is helpful if you like realtime  feedback on which files are being transferred. During large transfers,  however, it can tend to slow things down. The <code>z</code> flag can help with that, as it indicates that files should be compressed during transfer.</p>
<p>The <code>e</code> flag, followed by <code>ssh</code>, tells <code>rsync</code> to use SSH according to the destination instructions provided in the final argument.</p>
<h2 id="heading-backing-up-with-aws-cli">Backing up with AWS CLI</h2>
<p>Amazon  Web Services offers a command line interface tool for doing just about  everything with your AWS set up, including a straightforward <a target="_blank" href="https://docs.aws.amazon.com/ja_jp/cli/latest/reference/s3/sync.html"><code>s3 sync</code> command</a> for recursively copying new and updated files to your S3 storage  buckets. As a storage method for back up data, S3 is a stable and  inexpensive choice.</p>
<p>The <a target="_blank" href="https://docs.aws.amazon.com/ja_jp/cli/latest/reference/s3/index.html#directory-and-s3-prefix-operations">syntax for interacting with directories</a> is fairly straightforward, and you can directly indicate your S3 bucket as an <code>S3Uri</code> argument in the form of <code>s3://mybucket/mykey</code>. To back up a local directory to your S3 bucket, the command is:</p>
<pre><code class="lang-sh">aws s3 sync /home/user/directory s3://mybucket
</code></pre>
<p>Similar to <code>rsync</code>, reversing the source and destination would download files from the S3 bucket.</p>
<p>The <code>sync</code> command is intuitive by default. It will guess the mime type of  uploaded files, as well as include files discovered by following  symlinks. A variety of options exist to control these and other  defaults, even including flags to specify the server-side encryption to  be used.</p>
<h2 id="heading-setting-up-your-cronjob-back-up">Setting up your cronjob back up</h2>
<p>You can edit your machine’s cron file by running:</p>
<pre><code class="lang-sh">crontab -e
</code></pre>
<p>Intuitive  as it may be, it’s worth mentioning that your back up commands will  only run when your computer is turned on and the cron daemon is running.  With this in mind, choose a schedule for your cronjob that aligns with  times when your machine is powered on, and maybe not overloaded with  other work.</p>
<p>To back up to an S3 bucket every day at 8AM, for example, you’d put a line in your crontab that looks like:</p>
<pre><code class="lang-sh">0 8 * * * aws s3 sync /home/user/directory s3://mybucket
</code></pre>
<p>If you’re curious whether your cron job is currently running, find the PID of cron with:</p>
<pre><code class="lang-sh">pstree -ap | grep cron
</code></pre>
<p>Then run <code>pstree -ap &lt;PID&gt;</code>.</p>
<p>This  rabbit hole goes deeper; a quick search can reveal different ways of  organizing and scheduling cronjobs, or help you find different utilities to run cronjobs when your computer is asleep. To protect against the possibility of ransomware-affected files being transferred to your back up, incrementally separated archives are a good idea. In essence, however, this basic set up is all you really need to create a reliable, automatic back up  system.</p>
<h2 id="heading-dont-feed-the-trolls">Don’t feed the trolls</h2>
<p>Humans are fallible; that’s why cyberattacks work. The success of a ransomware attack depends on the victim having no choice but to pay up in order to return to business as usual. </p>
<p>A highly accessible recent back up undermines attackers who depend on us being unprepared. By blowing away a system and restoring from yesterday’s back up, we may lose a day of  progress; ransomers, however, gain nothing at all.</p>
<p>For further resources on ransomware defense for users and organizations, check out <a target="_blank" href="https://www.us-cert.gov/Ransomware">CISA’s advice on ransomware</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Good habits to have as an aspiring/junior developer - and habits to avoid ]]>
                </title>
                <description>
                    <![CDATA[ When you're learning to code, it can be easy to pick up some nasty habits along the way. Here are some tips to avoid common bad habits, and the good habits to keep in mind. The good habits Let's start with the positive shall we? These are the best ha... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/good-habits-to-have-as-an-aspiring-junior-developer-and-those-to-avoid/</link>
                <guid isPermaLink="false">66c8c8dfc4cede4e0083f739</guid>
                
                    <category>
                        <![CDATA[ best practices ]]>
                    </category>
                
                    <category>
                        <![CDATA[ coding ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Chris Blakely ]]>
                </dc:creator>
                <pubDate>Fri, 13 Sep 2019 10:36:36 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/09/Good-habits-arrow-6x4.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>When you're learning to code, it can be easy to pick up some nasty habits along the way. Here are some tips to avoid common bad habits, and the good habits to keep in mind.</p>
<h2 id="heading-the-good-habits">The good habits</h2>
<p>Let's start with the positive shall we? These are the best habits that often impress me when working with Junior Developers (and all developers for that matter).</p>
<h2 id="heading-commitpush-code-often">Commit/Push code often</h2>
<p>Chances are you'll have come across terms like "Git", and "GitHub", "source control" whilst on your coding journey. If you haven't:</p>
<p>1) Where have you been?!?</p>
<p>2) You can learn about it here: <a target="_blank" href="https://www.freecodecamp.org/news/how-you-can-learn-git-and-github-while-youre-learning-to-code-7a592ea287ba/">https://www.freecodecamp.org/news/how-you-can-learn-git-and-github-while-youre-learning-to-code-7a592ea287ba/</a></p>
<p>Source control is a marvellous thing. It's a backup of your code, allows you to track changes, and let's you quickly roll back when you have that "oh s<em>*</em>! everything is broken!" moment whilst coding.</p>
<p>Not to mention it makes life much, much easier when working as part of a team. I can't imagine working on code collaboratively without it - sharing code over email and slack?! <strong><em>Quivers</em></strong>.</p>
<p>A good habit to have is to <strong>commit code often,</strong> even for your own side projects as practice. Personally I like to "<strong>check in</strong>" my code when I have a completed a small part of my project. For example, if I were creating a TODO list app, I would commit and push my code when I have added the '<em>new todo button'</em>, or when I've completed the '<em>checkbox functionality'.</em> </p>
<p>There are no hard and fast rules as to <em>when</em> to check in code. Other good times to commit code are:</p>
<ul>
<li>If you are about to finish up for the day (see a very important rule below)</li>
<li>Before you do a major refactor or code change</li>
<li>If there is a fire in the building (Just kidding, safety first)</li>
</ul>
<p>There is only 1 important rule to follow when committing code.</p>
<blockquote>
<p>The code must build successfully and the tests must pass</p>
</blockquote>
<p>Does that count as 2 rules? Anyways, this is important. Something that is guaranteed to bring any development team to a halt is broken code. So before you commit your code, make sure the code builds and the tests pass!</p>
<p>Lastly, make sure to use <strong>good commit messages</strong>. "Fixed bug" isn't as clear as "Fixed issue with 'save todo' button not calling onClick function correctly". This will not only be helpful for yourself but your teammates as well.</p>
<h2 id="heading-use-clear-naming-for-variables-functions-and-files">Use clear naming for variables, functions, and files</h2>
<p>Ah naming. The one thing in web development that we all thought was easy, is sneakily difficult at times. Naming is important though, as it makes our code easier to read and understand. </p>
<p>When choosing a name for your variables, functions and files, try to make it as descriptive as possible. Why?</p>
<ul>
<li>It makes it easy to quickly skim over code. If you see a method called <code>getUsers()</code> Without having to look at that method, you can be pretty sure that it's going to return a list of users.</li>
<li>Helps enforce <strong>separation of concerns.</strong> Oooh a fancy new term! Don't worry, this just means keeping related things together. For example in a Node.js app, if you have a <code>/users</code> endpoint and a <code>/products</code> endpoint, you might keep the <code>users</code> logic in the same file ( <code>usersService.js</code> for example ) and keep the <code>products</code> logic in another file. Wouldn't this make it easier to find things?</li>
</ul>
<p>Here's a simple function which is badly named (as are the parameter names) can you guess what it does?</p>
<pre><code class="lang-js">
<span class="hljs-keyword">const</span> function1 = <span class="hljs-function">(<span class="hljs-params">x, y</span>) =&gt;</span> {
    <span class="hljs-keyword">return</span> x + y
}
</code></pre>
<p>This function could either <strong>add 2 numbers</strong> or <strong>concatenate 2 strings,</strong> but it's original intent is not clear. Let's say its intention was to add numbers, but another unsuspecting developer comes along and uses it to concatenate 2 strings. It might be ok for now, but later if we refactor this function to <em>validate the numbers,</em>  then the code calling this function to concatenate strings will break. Oh no!</p>
<p>Here's the function with better naming:</p>
<pre><code class="lang-js">
<span class="hljs-keyword">const</span> addNumbers = <span class="hljs-function">(<span class="hljs-params">num1, num2</span>) =&gt;</span> {
    <span class="hljs-keyword">return</span> num1 + num2
}
</code></pre>
<p>Now it's a bit clearer on what the function does, and what the parameters are.</p>
<h2 id="heading-practice-debugging">Practice debugging</h2>
<p>Would you believe that web developer's spend just as much time (if not more) fixing bugs? Yes, there will be bugs. And the best way to identify and fix a bug is to <strong>debug the code.</strong> Debugging is the process of "stepping" through your code, line by line, until you discover something you didn't expect. </p>
<p>Luckily for us web developers, many IDE's come with built in debuggers that makes this really easy (here's a VS Code guide to setting up debugging for different languages. For other IDE's you can check out Google <a target="_blank" href="https://code.visualstudio.com/docs/editor/debugging">https://code.visualstudio.com/docs/editor/debugging</a>)</p>
<p>So how do you effectively debug your code? Here's a few pointers:</p>
<ul>
<li><strong>Replicate the issue</strong> - replicate the bug a few times so you understand exactly what it is that causes the bug</li>
<li><strong>Think</strong> - before you dive into the code and start aimlessly scavenging around, stop and think. Why would this be happening? What area's of the code are related to this?</li>
<li><strong>Investigate the code</strong> - once you've had an idea of what areas of the code this is likely to affect, start digging in. After reading over the code, you might spot the issue. Hurray! If not, time to get out debugger out.</li>
<li><strong>Debug</strong> - Fire up the debugger, and go through the code line-by-line. Keep an eye on variable values (and how they change) and which functions get called (and which don't). Are the correct branches in an <code>if</code> statement being called? Are events being triggered correctly? Are calculations being performed correctly?</li>
</ul>
<h2 id="heading-plan-before-coding">Plan before coding</h2>
<p>You have just awoken from a good nights sleep. You're eating breakfast and all of a sudden an awesome new side project idea comes to you. What a fantastic idea it is! A revelation!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/09/image-88.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You burst out of your chair towards your laptop, cornflakes flying everywhere, and start frantically coding. (Or is this just me? OK moving swiftly along...)</p>
<p>While it is often tempting to jump straight into your IDE and start coding, a bit of planning can go a long way.</p>
<ul>
<li>Reduces the amount of "wasted" code </li>
<li>Reduces code changes</li>
<li>Gives you solid goals to work towards</li>
<li>It's an impressive skill for junior developers to have - it shows your critical thinking!</li>
</ul>
<p>I won't go into too much detail here, as I've written a more comprehensive article on this topic here: <strong><a target="_blank" href="https://www.freecodecamp.org/news/a-walk-through-the-developer-thought-process/">How Developers Think: A Walkthrough of the Planning and Design Behind a Simple Web App</a></strong></p>
<p>Here's a quick summary from the above article for now:</p>
<ul>
<li>"<strong>What does it do?</strong>" - write out the features you want your app to have</li>
<li>"<strong>What does it look like?</strong>" - make a quick sketch or wireframe with what your app should look like</li>
<li>"<strong>How do I position and style the elements?</strong>" - once you have your wireframes, start thinking about how you will position everything on the page</li>
<li>"<strong>How does it behave?</strong>" - next, start thinking about how your app behaves. Thinking about the features, and what happens when the user clicks and action</li>
<li>"<strong>What will my code look like?</strong>" - with your behaviours and features in mind, start planning your code. What components will you need? will you need event handlers? state objects?</li>
<li>"<strong>What do I need to test? And what can go wrong?</strong>" - think about the tests, edge cases and the parts of your code that could go wrong</li>
</ul>
<h2 id="heading-the-not-so-good-habits">The not so good habits</h2>
<p>Now let's look at some of not so good habits that are easy to pick up. If you do some of these now, don't panic. We all do at some point! With some practice you can overcome them - and I'll give you some pointers on how to do this.</p>
<h2 id="heading-blindly-copying-and-pasting-code">Blindly copying and pasting code</h2>
<p>Put your hand up if you've ever encountered an issue or got stuck while coding? <em>_**raises hand</em>.**_ Obviously, we hit problems all the time whilst coding. It's part of the game and it's our job to figure out how to overcome these problems. </p>
<p>Most of the time we resort to using Google, StackOverflow, or similar in search of answers to our problems. Now, there is nothing wrong with this approach - arguably, it should be encouraged as it's one the best/quickest way for a developer to solve a problem themselves.</p>
<p>The problem is, when we <strong>copy/paste code blindly without understanding it.</strong> </p>
<blockquote>
<p>But if it works, what's the problem?!</p>
</blockquote>
<p>A valid point. Here's the reasons why this can cause issues:</p>
<ul>
<li>What happens when the code has to be changed? It'll be difficult to change code we don't understand</li>
<li>If we don't understand the code, how can we be sure it truly solves the problem?</li>
<li>Can we be sure it doesn't affect other parts of the codebase in a negative way?</li>
</ul>
<p>So, how can we avoid this?</p>
<ul>
<li><strong>Reading</strong> - read through it line by line, and take the time to understand the code</li>
<li><strong>Type -</strong> type it out instead of copying and pasting. This will force you can read/analyse each line as you type</li>
</ul>
<p>There is nothing wrong with copying and pasting, as long as we understand exactly what the code does. If a senior developer is code reviewing our work, and we can't explain what is happening because the code was copy/pasted, that won't look too good.</p>
<h2 id="heading-not-writing-tests">Not writing tests</h2>
<p>This is arguably the worst habit that can be picked up when learning to code. A lot of tutorials walk us through the "<strong>happy path</strong>" of creating an app, which makes it easy to neglect the test writing. Why are test's so important? </p>
<ul>
<li><strong>Test's prove your code works</strong>. Nobody can argue about functionality working if the test passes!</li>
<li><strong>Makes it easy to check that new features haven't broken anything</strong>. While coding, run your tests regularly. A few tests broken? <strong>You know early in the development process where stuff went wrong.</strong> As opposed to, finding out tomorrow when you come across it by accident</li>
<li><strong>A seat belt for refactoring.</strong> Write your code. Write your tests. Refactor your code. Run the tests. Tests pass? Everything still works, happy days! Now try changing your code without having a suite of tests to run. How can you prove <strong><em>everything</em></strong> works as it should?</li>
</ul>
<p>So make sure to test your code. You don't have to test things like small side projects all the time, but it's good to practice now an again. When you get a job, you'll be aiming to have test coverage for most of your functionality and features. Practice those tests!</p>
<p>There are many great tutorials on how to test your code, depending on your current projects and tech stack, try Googling "testing with {insert language}" or "How to test {insert language} apps". <a target="_blank" href="https://medium.com/welldone-software/an-overview-of-javascript-testing-in-2019-264e19514d0a">Heres a good overview of testing JavaScript</a>.  </p>
<h2 id="heading-leaving-out-documentation">Leaving out documentation</h2>
<p>Documentation. The boring "red tape" that comes with all projects. As someone once said:</p>
<blockquote>
<p>All developers hate writing it, but all developers want it</p>
</blockquote>
<p>Which is true. Have you ever returned to an old side project and forgotten what it did? How much harder would it be if you were trying to use a third party library and there was no documentation to explain how it worked? This becomes especially more apparent when working in a large product company. What if another team needs to integrate with your code, but is unsure of the API?</p>
<p>It's important stuff, so here's some tips to practice:</p>
<ul>
<li>README's - GitHub lets you add a readme to your project. This is the perfect place to store documentation for the project, as it's easy to find</li>
<li>Include what the app does and how to run it - This gives the read a good place to start</li>
<li>Explain other "important things" - such as complicated logic, third party libraries and API's, or configuration settings</li>
</ul>
<hr>
<h3 id="heading-thanks-for-reading-want-more-articles-like-this"><strong>Thanks for reading! Want more articles like this?</strong></h3>
<p>Hopefully this has given you an insight into one creating good coding habits. If you'd like to be updated when I release more articles like this, feel free to join the mailing list over at <a target="_blank" href="https://www.chrisblakely.dev/#sign-up">chrisblakely.dev</a>! Or reach me over at <a target="_blank" href="https://twitter.com/chrisblakely01">Twitter</a> if you fancy a chat :)</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to teach yourself to learn again ]]>
                </title>
                <description>
                    <![CDATA[ By Clark Jason Ngo This is a story of how I struggled to learn when I came back to school to study again for my master's (check my blog about master's) after 5-years of working in corporate. Through others, I learned a lot and improved my day-to-day ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/cjn-how-to-teach-yourself-to-learn-again/</link>
                <guid isPermaLink="false">66d45e12230dff01669057d1</guid>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 28 Jun 2019 12:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/06/Back-to-School-Memes1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Clark Jason Ngo</p>
<p>This is a story of how I struggled to learn when I came back to school to study again for my master's (<a target="_blank" href="https://www.freecodecamp.org/news/cjn-why-i-abandoned-my-mba-to-get-a-masters-in-computer-science/">check my blog about master's</a>) after 5-years of working in corporate. Through others, I learned a lot and improved my day-to-day life. It was a great transformation.</p>
<h2 id="heading-struggle-1-studying">Struggle # 1 - Studying</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/06/image-161.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><strong><em>I understand the concept, but it's not sticking in my head.</em></strong></p>
<p>I listened to lectures, videos, and textbooks. What did I get? Nothing and sometimes boring.</p>
<p>I had to think of something to retrain my brain.</p>
<p><strong>Tip 1: Writing / Typing increase knowledge retention by 50%</strong>.<br>I used to do this a lot during high school and college. I think most people know about this. But it is still a good reminder.</p>
<p><strong>Tip 2: Blog about it. This would improve your communication skills in conveying your ideas.</strong></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/06/image-162.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>You might say: But wait, I'm not a writer and my grammar is bad. =(</em><br>I am not good at writing either. I remember my high school and college days, I would have someone proofread my papers and my paper would be drenched in red ink. Ouch!</p>
<p><em>You might say: Someone already blogged about insert topic.</em><br>I always believe each person's perspective is different. Also, this blogging is really for yourself. Don't mind them.</p>
<p><em>You might say: I'm shy.</em><br>Well. Another piece of advice is just to place it in draft purgatory. I have like 72 drafts consisting of ideas or notes.</p>
<p><em>You might ask: What do I blog?</em><br>I found an interesting blogger before who blogs about complex technical stuff and a very simple blog post about MacBook's HDMI port. The HDMI port blog post? It was only an image and a few sentences.</p>
<p>It could be:</p>
<ul>
<li>text with pictures and an experience. Example <a target="_blank" href="https://www.freecodecamp.org/news/cjn-cashcycle-angelhack-seattle-hackathon-2018-d3f42a26ddcb/">here</a>.</li>
<li>text with memes and your journey. Example <a target="_blank" href="https://www.freecodecamp.org/news/cjn-why-i-abandoned-my-mba-to-get-a-masters-in-computer-science/">here</a>.</li>
<li>guides or instructions. Example <a target="_blank" href="https://www.freecodecamp.org/news/cjn-google-sheets-as-json-endpoint/">here</a>.</li>
<li>power point style. Example <a target="_blank" href="https://www.freecodecamp.org/news/cjn-understanding-hello-world-in-nodejs/">here</a>.</li>
<li>purely visual. Example <a target="_blank" href="https://www.freecodecamp.org/news/cjn-bubble-sort-visualized/">here</a>.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/06/image-160.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em><strong>It doesn't have to be perfect and you'll improve in no time.</strong></em></p>
<p><em>You might ask: What's your secret?</em><br>Be curious. Aside from that, I have tons of stories and I just keep blogging. I didn't use my weakness in grammar/writing as an excuse to not try blogging. I use <a target="_blank" href="https://www.grammarly.com/">Grammarly</a> to fix my sentences.</p>
<p><em>You might ask: Where to blog?</em><br>Right now an easy blog site where you can write stuff down and have a clear blog post like this is in <a target="_blank" href="https://medium.com/">Medium</a>, a blogging site. I used to blog there until they graciously accepted me here, freeCodeCamp News, as an author here.</p>
<p><strong>Tip 3: Learn something. Teach it right away.</strong></p>
<p><em>You might say: I'm no expert.</em><br>Thing is. You learned something and that makes you more than a beginner. You can say... You're now an experienced beginner.</p>
<p>How can an experienced beginner help?<br>Easy. Help other beginners.</p>
<p>It can be through:</p>
<ul>
<li>Explaining high-level concepts.</li>
<li>Pointing them in the right direction on what resources to check out.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/06/image-169.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><strong>Tip 4: Read... Zzz.</strong><br>I'm a guy who does not like to read so much. I just remembered reading Harry Potter or Penguin Classics.</p>
<p>Now listen closely, this would rewire your brain to read again.<br>First, a scenario. You are given a book and It's a thousand pages thick.</p>
<p><em>Your goal: read the entire book.</em><br><em>In your mind: What now? A thousand pages?!</em><br>What you will happen: you will try to read as much as you can then you get sick of reading it.</p>
<h2 id="heading-enter-rewiring-your-brain">Enter rewiring your brain.</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/06/image-164.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Change your goal: read a chapter a day.<br><em>You might say: It's too long and I might not be consistent with reading a chapter.</em></p>
<p>Change your goal: read a paragraph a day.<br><em>You might say: There might be a chance that there are too many sentences. I don't think I can stay consistent.</em></p>
<p>Change your goal: read a sentence a day.<br><em>You might say: Uh. Sure? That's all? I can do that.</em><br>Haha, you fell into my trap. This is a Jedi Mind Trick. Your brain would be tricked into reading the next sentence.</p>
<p>Lesson: Keep your goals as small as possible. This preserves your energy to study and decrease the likelihood of mental stress.</p>
<p><strong>Tip 5: Speak up! Do presentations.</strong></p>
<p>If you got guts, create small talks for your friends and classmates.</p>
<p>Here's a video of my presentation in a conference:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/RxCFErjEmgs" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<p>I had tons of opportunities to practice presenting with different tech terms at the technology club at my school, <a target="_blank" href="https://www.cityu.edu/">City University of Seattle</a>.</p>
<p><strong>Tip 6: Reading while on commute.</strong><br><em>You might say: I get motion sickness.</em><br>Two options:</p>
<p>Option 1 - Jedi Mind Trick. Read for 5 minutes. Then slowly increase the read time as you get comfortable.</p>
<p>Option 2 - Bring other materials. Study base on energy levels.<br>Status - Energetic: Read a physical book or ebook. Use a laptop/tablet.<br>Status - Somewhat tired from screen display: Watch an educational video .<br>Status - Very tired from screen display: Read a physical book.<br>Status - Dead eyes: Listen to a podcast.<br>Status - No energy: Sleep.</p>
<p><strong>Tip 7: Go to local meetups.</strong><br>Learn the next exciting thing and get to the change to network with like-minded people.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/06/image-166.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Bonus: You might get a mentor along the way.<br>Mentors have helped me big time in giving me a path to follow.<br>Mentors do come in all shapes and sizes. They could be with you for a short-term or long-term, and physically or virtually.</p>
<p><strong>Tip 7: Join or create a study group.</strong><br>You are hitting two birds in one stone. You socialize and learn at the same time.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/06/image-165.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-struggle-2-too-much-distraction">Struggle # 2 - Too Much Distraction.</h2>
<p><strong><em>I'm so guilty of social media. I keep scrolling and scrolling. News Feed. Memes. Videos.</em></strong>  </p>
<p>One time, I was with my local study group. I told my friend that I struggle with social media addiction. I got the greatest advice ever.</p>
<p><strong>Tip # 1 Clean your social media to defeat your endless scrolling.</strong></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/06/image-163.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Who to lose:</em></p>
<ul>
<li>Unfriend everyone who you don't know.</li>
<li>Schoolmate? Batchmate? If you just like their posts and don't interact such as commenting, unfollow them. You'll just envy their beach photos.</li>
<li>Nonsense post? Unfollow.</li>
<li>Too much negativity? Unfollow.</li>
<li>Too much drama? Unfollow.</li>
<li>Pages with no value-added content. Unfollow.</li>
</ul>
<p><em>Who to keep:</em></p>
<ul>
<li>Current classmates</li>
<li>Mentors</li>
<li>Close friends</li>
<li>Family and relatives</li>
</ul>
<p><em>Who to add/follow:</em></p>
<ul>
<li>Inspirational people</li>
<li>Educational and informative bloggers</li>
<li>Pages that promote awareness</li>
<li>Pages that give tips and tricks related to your field.</li>
</ul>
<p>What do you gain:</p>
<ul>
<li>More time. Right now, I wake up, check my social media and I would have less than 10 notifications.</li>
<li>More quality. I tend to have more energy to interact with them now.</li>
</ul>
<p><strong>Tip # 2 Let's bring in some fun.</strong><br>For my downtime, I watch films related to technology. Also, I still use my social media for fun such as NBA, Legend of Zelda or other video games.</p>
<p>Next, I started to follow a lot of funny pages that are related to my field, technology. I have tons of these in my Instagram feeds. lol.</p>
<p>This way I'm having fun and learning at the same time.</p>
<p>How? </p>
<p>If I didn't understand the meme/joke, It means I lack the knowledge and would happily google for it to understand.</p>
<p>I current possess 90+ tech memes in my local machine. Whoops!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/06/image-167.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://github.com/clarkngo">https://github.com/clarkngo</a></em></p>
<p><strong>Conclusion</strong></p>
<p>Try to integrate small tidbits of learning in your day-to-day life.</p>
<p>Jedi Mind Trick your brain.</p>
<p>And... This feels like a good stopping point. Feel free to reach out to me to ask more of my study hacks. =)</p>
<p><strong>Reach out here:</strong></p>
<p><a target="_blank" href="https://twitter.com/djjasonclark">Twitter</a></p>
<p><a target="_blank" href="https://www.linkedin.com/in/clarkngo/">LinkedIn</a></p>
<p>Till next time!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ This New Year Resolution will change your life: Learn to Code with #100DaysOfCode ]]>
                </title>
                <description>
                    <![CDATA[ By Alexander Kallaway Quick intro to #100DaysOfCode It’s a challenge and a community that has grown around it over the last couple of years. Thousands of people have taken the challenge and improved their coding skills. The problem it solves is: when... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/this-new-year-resolution-will-change-your-life-learn-to-code-with-100daysofcode-562ef2c7ca33/</link>
                <guid isPermaLink="false">66c3632fc00e5b110b38047c</guid>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 19 Dec 2018 07:21:47 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*Qwn9JZ8GNzRDs7GpETYYMQ.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Alexander Kallaway</p>
<h3 id="heading-quick-intro-to-100daysofcode">Quick intro to #100DaysOfCode</h3>
<p>It’s a challenge and a community that has grown around it over the last couple of years. Thousands of people have taken the challenge and improved their coding skills.</p>
<p>The problem it solves is: when people start learning to code, it’s very difficult to commit to a consistent course of action and code every day. Often the efforts, despite their best intentions, are sporadic. It’s very dangerous in the beginning of their learning journey, because if they take a long break they might quit and never come back to learning.</p>
<p>#100DaysOfCode is a challenge that anyone can commit to.<br>There are 2 main rules:</p>
<ol>
<li>Code a minimum of an hour every day for the next 100 days</li>
<li>Tweet your progress every day with the #100DaysOfCode hashtag and the day number</li>
</ol>
<p>The rules are not as strict as they may seem. You can adjust the time, or skip some days if needed. The main goal is not to ‘survive at all costs’ but to teach your own brain to be consistent, and to develop a ‘coding habit’.</p>
<p>Another great rule to adopt is:<br>Encourage at least 2 other people in the challenge (“hundreders”) by commenting on or liking their work and updates on Twitter.</p>
<p>This is one of the ways you can increase the value you are getting from the whole experience: on top of improving your coding skills, you are also making new friends and establishing yourself as a node (pun intended) in the tech industry network.</p>
<p>Sounds good? Let’s commit to the #100DaysOfCode together!</p>
<h4 id="heading-click-herehttpstwittercomintenttweettexti27m20publicly20committing20to20the20100daysofcode20challenge20starting20january20320201920join20me20ka11awayampurlhttpsmediumcomka11awaythis-new-year-resolution-will-change-your-life-learn-to-code-with-100daysofcode-562ef2c7ca33amphashtags100daysofcode">?C<a target="_blank" href="https://twitter.com/intent/tweet?text=I%27m%20publicly%20committing%20to%20the%20100DaysOfCode%20Challenge%20starting%20January%203,%202019.%20Join%20me!%20@ka11away&amp;url=https://medium.com/@ka11away/this-new-year-resolution-will-change-your-life-learn-to-code-with-100daysofcode-562ef2c7ca33&amp;hashtags=100DaysOfCode">LICK HERE</a></h4>
<p>to join us for #100DAYSOFCODE<br>Starting January 3rd, 2019!?</p>
<h3 id="heading-new-year-resolutions-caveat">New Year Resolutions Caveat</h3>
<p>Make sure you don’t commit to more than 1 major (and 1 minor) New Year Resolution. If you spread yourself too thin, you will — as many others do — find yourself back at the starting point around Mid-January or February.</p>
<p>Instead, do the opposite of what your brain might be telling you. Push down the excitement of changing everything about your life in an instant. Decide on <strong>one thing</strong> you will do, and cultivate and foster the excitement for it. Plan out in details what you will learn, when you will study, and so on. All of that helps you stick to the habit.</p>
<p>I think learning to code is one of the best skills one might decide to develop. It brings with it the freedom, the finances, the enjoyment of work and so much more. So, my biased advice is: make one resolution and let that be <strong>learning to code or improving your existing coding skills</strong>.</p>
<p>Read on to learn more about habits and get some #100DaysOfCode community updates!</p>
<h3 id="heading-not-just-for-beginners"><strong>Not Just For Beginners</strong></h3>
<p>The challenge is definitely not only for people starting to learn to code. It benefits people no matter what their skill level is. If you are just starting out, don’t feel that you need to ‘only work on projects’ — you can use any resources you want to learn.</p>
<p>If you are not new to coding, you can use the challenge to:</p>
<ul>
<li>Learn a new framework</li>
<li>Learn a new programming language</li>
<li>Get a lot of practice in a specific area or problem type you decide on</li>
<li>Contribute to Open Source</li>
<li>Get better at refactoring code</li>
</ul>
<p>Remember that the #100DaysOfCode challenge is designed to be taken multiple times. Each time you plan, do it, then analyze the results. These are called rounds. Each round you will get better at planning and execution, which will lead to more results in the same period of time.</p>
<h3 id="heading-be-kind-to-yourself"><strong>Be Kind To Yourself</strong></h3>
<p>To be more specific: feel free to bend the challenge rules to meet your needs.</p>
<p>This is the point I wanted to address the most. I often see people restarting the challenge because they’ve missed a day, or people who say they can’t do the challenge because they don’t have a whole hour to spare every day, and so on.</p>
<p>I want you to be kind to yourself, to understand the ultimate goal of the challenge — to develop a coding habit. Everything else is secondary. Life will get in your way. Things will happen, late nights out, laptop breakdowns, and more. Don’t be deterred by that.</p>
<p>I suggest that if you find that you’re asking yourself “Should I restart the challenge or continue?” and you are more than one week ‘in’, the answer should almost always be: <strong>continue</strong>.</p>
<p>If someone tells you that you’re doing it wrong or not really doing the challenge, just ignore them. It’s the same people who like to judge others like: “Oh, they are not a real developer because the do or don’t do X”.</p>
<h3 id="heading-make-a-plan-but-dont-overthink">Make A Plan, But Don’t Overthink</h3>
<p>Before starting the challenge, write a quick plan. Write down what you want to learn (such as JavaScript, React, Python or CSS) and 3–4 resources you will use as you go along. The goal is to never have a day when you have to wonder: “What should I work on today?” because that is a slippery slope to breaking a newly formed coding habit.</p>
<h3 id="heading-reach-out-to-the-100daysofcode-community">Reach out to the #100DaysOfCode Community</h3>
<p>If you feel stuck or struggling with something as you go through or plan your challenge, don’t hesitate to reach out to the community with your questions and thoughts — tweet using the #100DaysOfCode hashtag.</p>
<p>We currently have more than 4000 people in our Slack. <a target="_blank" href="https://join.slack.com/t/100xcode/shared_invite/enQtNDA4MjgzMTY5MTA3LTEyMjBhYzMzYzM5NTFjZDU0MGMxZjA3Zjk5NTVjMTA1ZjRmNDNiMGNiNDIzMjg2Yjk4OTRhZGUwZmJjNDFmY2E">Click on this link</a> for the Slack Invite!</p>
<p>Remember that the more social connections you have in this journey of learning to program, the smoother that journey will be and, also, you will get there faster!</p>
<p><strong>Learn more about the challenge on the official website: <a target="_blank" href="https://www.100daysofcode.com/">www.100DaysOfCode.com</a>.</strong></p>
<h3 id="heading-identity-based-habits"><strong>Identity-Based Habits</strong></h3>
<p>This is probably the most powerful concept I’ve learned this year. It comes from James Clear’s book: “Atomic Habits”.</p>
<p>The idea is that we often fail to acquire a certain habit because we don’t think of ourselves as a person who would do that. For example, you want to start exercising, but you don’t consider yourself “a fit person”. All the effort you put into forcing yourself to exercise gets nowhere, because eventually you get tired and “bounce back” to your regular lifestyle.</p>
<p>The key is to start thinking of yourself as a different, new kind of person you want to be, and then your efforts will just keep backing up your new belief.</p>
<p>Let’s say you think you are “not a technical person” and you decide to learn to code. If you keep that belief, whenever doubts will come to your head, you will think: “yes of course I struggle with learning to program, it’s because I am not a technical person”.</p>
<p>However if, when you start the #100DaysOfCode challenge, you were to change that one belief — just decide that from now on, you are a technical person, a hacker, a computer genius in the making. Then, when you code for an hour every day, you will be proving to yourself that you indeed were correct in the new belief you’d chosen for yourself.</p>
<p>Don’t rush to make a decision on whether you are ‘not meant to be a coder’. An example that will give some perspective on this: you wouldn’t expect that if you picked up a violin today for the first time, you would be a great player next week. Same with learning foreign languages. Yet, I see people judging themselves as ‘not fit’ for coding after they try it out for a week.</p>
<p>Nothing great happens overnight. It will be more like a sliding wave of daily effort, which you get at riding better slowly but surely. It’s unstoppable.</p>
<p>If you want to learn more about habit formation: this year I’ve given a talk at a free remote conference <a target="_blank" href="https://www.byteconf.com/">ByteConf</a> React, where I’ve tried to crystallize everything I’ve learned so far about habits and self-improvement strategies and techniques. It’s available on <a target="_blank" href="https://www.youtube.com/watch?v=kFjQAasFWUw">YouTube</a> ?</p>
<h3 id="heading-lets-commit-to-100daysofcode-together">Let’s commit to #100DaysOfCode together!</h3>
<h4 id="heading-click-herehttpstwittercomintenttweettexti27m20publicly20committing20to20the20100daysofcode20challenge20starting20january20320201920join20me20ka11awayampurlhttpsmediumcomka11awaythis-new-year-resolution-will-change-your-life-learn-to-code-with-100daysofcode-562ef2c7ca33amphashtags100daysofcode-to-join-us-for-100daysofcode-starting-january-3rd-2019">?C<a target="_blank" href="https://twitter.com/intent/tweet?text=I%27m%20publicly%20committing%20to%20the%20100DaysOfCode%20Challenge%20starting%20January%203,%202019.%20Join%20me!%20@ka11away&amp;url=https://medium.com/@ka11away/this-new-year-resolution-will-change-your-life-learn-to-code-with-100daysofcode-562ef2c7ca33&amp;hashtags=100DaysOfCode">LICK HERE</a> to join us for #100DAYSOFCODE starting January 3rd, 2019!?</h4>
<p>Thank you so much for reading this article! A lot more to come in the New Year! If you are interested in learning to code, habit formation, self-improvement (and a bit of nerdy sci-fi and space stuff), sign up for my newsletter:? h<a target="_blank" href="https://www.dotheoppo.site/">ttps://www.dotheoppo.site</a> ? …subscription form is below the projects :)</p>
<p>If you have questions, concerns or you are afraid the ‘coding is not for you’, DM me on <a target="_blank" href="https://twitter.com/ka11away">Twitter</a> and I will do my best to help!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to make time for 100 Days Of Code ]]>
                </title>
                <description>
                    <![CDATA[ By Scott Spence Life moves pretty fast. If you don’t stop and look around once in a while, you could miss it. — Ferris Bueller My time at freeCodeCamp was a fun and exciting one. When I first began with freeCodeCamp, I’d often come across this mess... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-make-time-for-100-days-of-code-776cd6e0de49/</link>
                <guid isPermaLink="false">66d8522e62a291dea89878fa</guid>
                
                    <category>
                        <![CDATA[ coding ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sun, 11 Mar 2018 16:17:17 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*Ff06p9UuznT-O6Kj63DI8A.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Scott Spence</p>
<blockquote>
<p>Life moves pretty fast. If you don’t stop and look around once in a while, you could miss it. — Ferris Bueller</p>
</blockquote>
<p>My time at freeCodeCamp was a fun and exciting one. When I first began with freeCodeCamp, I’d often come across this message, which also sounded like a preamble —</p>
<blockquote>
<p>Let’s pick up a new skill and get a new job, all in a few months.</p>
</blockquote>
<p>You will see a lot of articles like “Hey all, I was a school teacher before, and now I’m earning $100k as a engineer for x startup”. If you’re starting out in web development and you surround yourself with other people who want to achieve things — they will, you know, achieve. And so will you!</p>
<p>There’s a bit of expectation vs. reality here. If you are the kind of person that can memorize a ton of information relating to your chosen field, then you’re onto a winner. As for myself, it’s about repetition and repetition, until it becomes a <strong>habit</strong>. And there’s a lot to be said about habits.</p>
<p>Forming habits takes time though. On <a target="_blank" href="https://github.com/spences10/100-days-of-code/commit/7dbefb608862401d4cb9e6ed11f539b44bedcdae">December 30, 2016,</a> I decided to take part in the #100DaysOfCode challenge. I couldn’t give you an idea of how I felt then, but reviewing the log entries I seemed pretty confused and a little frustrated with it all.</p>
<p>At the end of it, it’s definitely been an enriching and life changing experience for me. Along the way I have met some truly awesome and inspiring people, happy to help with any issues or problems you may have. The support I found not just in the #100DaysOfCode community but the web dev community as a whole is truly amazing.</p>
<p>I’m going to go over some steps I have taken to help me with learning to code (<a target="_blank" href="https://scottspence.me/about">again</a>) and cracking <strong>#100DaysOfCode</strong>.</p>
<h3 id="heading-having-patience">Having Patience</h3>
<p>Being patient is essential — instant gratification doesn’t work all the time. This will soon come to light if you start to compare yourself to how other people (your cohorts) are progressing. You may start to wonder why you’re not progressing as fast as other people appear to be. This might probably add to any anxiety you may have, whether you can do something or not. Do not concern yourself with this and instead use that energy to focus on what you need to do, and code.</p>
<h4 id="heading-different-people-progress-at-different-rates-and-learn-in-different-ways"><strong>Different people progress at different rates and learn in different ways</strong></h4>
<p>As for myself, I have found that I’m a visual learner. I’ve known this for a long time actually, where to be able to ‘join up’ concepts and paradigms that I need to see in action. This is why I will always gush about courses by Kent C. Dodds or Wes Bos, as they are great at explaining complex subjects, among many others. Their <a target="_blank" href="https://egghead.io/instructors/kentcdodds">content on egghead.io</a> and <a target="_blank" href="http://wesbos.com/courses/">wesbos.com</a> are awesome at explaining concepts simply and visually.</p>
<h4 id="heading-your-mileage-may-vary-though-so-find-out-what-works-for-you-and-stick-with-it"><strong>Your mileage may vary though. So find out what works for you, and stick with it!</strong></h4>
<p>I have discovered recently that splitting my time between projects wasn’t really helping me. So I decided to work on one particular project each time I sat down to code. The first time I did this, I was struggling for hours with little to nothing show for it. It felt futile and I was getting anxious about not moving on. It was at this point when I would usually switch context and work on something else. I found though that pushing that little bit more was all I needed.</p>
<p>This was such a <strong>psychological win</strong> for me, and gave me the confidence to do more. It has paid dividends, as I now have 6+ demos of projects I have made on <a target="_blank" href="https://scottspence.me/portfolio">my portfolio</a>.</p>
<h3 id="heading-avoiding-distractions">Avoiding Distractions</h3>
<p>I get distracted by things like Slack, email and Twitter. These apps should not be opened, as it will eat up your time. You have a set amount of time to get something done. This will come to light when you have finished reading your Twitter updates and Slack messages, only to realize you have fifteen minutes left to complete the task you set out to do.</p>
<p>I noticed this soon into starting #100DaysOfCode. What I did was turn off all my phone notifications. If you need to check something then check it. But don’t let your phone dictate where your attention needs to be directed.</p>
<p>I turned off all browser notifications for Slack and Gmail. My phone is left in another room on “Do Not Disturb” while I work. While in Do Not Disturb mode my phone will not make a noise, unless someone on my stared contacts list calls me. I pick up the phone in the afternoon to check for missed calls, listen to voice mails and return any calls if needed.</p>
<h3 id="heading-making-time">Making time</h3>
<p>Saying that you don’t have the time to do 1–2 hours of coding a day isn’t going to help. Yes it’s tough, but it’s not about having the time. It’s about <strong>making</strong> the time to do it.</p>
<h4 id="heading-if-its-important-to-you-you-will-make-time-for-it"><strong>If it’s important to you, you will make time for it.</strong></h4>
<p>You’re the only one that can make these things happen. Often I get asked “So what do you like to do”? I struggle to answer this, as all I have been doing for the last 18 months is learning to code!</p>
<h3 id="heading-creating-balance">Creating Balance</h3>
<p>It’s the key to everything. I am not perfect here — this journey has taken its toll on my health. Towards the end of 2016 I was 95 kg, and today as on February 26th I’m 115 kg.</p>
<p>This weight gain is a mixture of illness at the start of 2017 and bad diet choices thereafter. In the past I consciously opted for ‘healthy’ foods, spending that little extra time deciding what to eat.</p>
<p>While being ill at the start of 2017, I developed a bit of an addiction to cereals (granola) ?. It was quick to prepare and easy to eat, and I got a quick boost from it.</p>
<p>Quick and easy soon became the norm after that. I have identified this now and am making an effort to reduce this, while also making time for my development.</p>
<p>You need to have a balanced diet too! ?</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*LifkJ_IhMQIQ1klyj49jxw.png" alt="Image" width="800" height="597" loading="lazy">
_my hack-diet weight stats for the last 15 months: [https://www.fourmilab.ch](https://www.fourmilab.ch" rel="noopener" target="<em>blank" title=")</em></p>
<h3 id="heading-using-tools">Using Tools</h3>
<p>I use some tools to help me ‘get on’ with what I’ve set out to do.</p>
<p>A while back I started using <a target="_blank" href="https://en.todoist.com/">Todoist</a><strong>.</strong> This is great for when you’re scrolling through your Twitter feed and find a link to a really neat looking tutorial or post you want to read, but don’t want to go down the rabbit hole of working out where to document it. I usually add such links to Todoist and come back to it when I get the capacity to work on it.</p>
<p><a target="_blank" href="https://wakatime.com/">WakaTime</a> is a great tool for quantifying your coding — pretty handy when doing #100DaysOfCode.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*iWTNGimlb7LCuw3kPofXwQ.png" alt="Image" width="800" height="267" loading="lazy">
<em>stats yo!</em></p>
<p><a target="_blank" href="https://www.rescuetime.com/">RescueTime</a> is handy for helping you identify your productivity black holes and give you a nice breakdown of where your time is spent on your computer and mobile.</p>
<h3 id="heading-using-life-hacks">Using Life hacks…</h3>
<p>They’re called hacks, so everyone can think they’re used for “cheating the system”. In reality they’re some helpful rules to aid you if you need to find some extra time.</p>
<p>Get up early. I’ve taken to getting up an hour earlier than I used to, to squeeze an hour and a half out of the morning. I have an MI band that I have set to vibrate to wake me at that time, so I do not disturb my wife.</p>
<p>Go to bed early. Sleep is important kids — anyone that says otherwise obviously doesn’t get enough sleep.</p>
<h3 id="heading-and-some-good-luck">…and some Good luck ?</h3>
<p>When I finished my last (VBA) contract in October, I used that time to fully immerse myself in web development.</p>
<p>At the time (which was good timing actually) I started a build to learn project with two other remote developers — one in Egypt, and one in Serbia. We were all participating in the <a target="_blank" href="https://medium.com/chingu">Chingu</a> Voyage, and this has been a real eye opener for me. It has given me the confidence to get all my portfolio projects ready for potential employers to view.</p>
<p>While taking part in the project, I got to treat it as a full time job — which my WakaTime stats will attest. This was one of the triggers for me that I should start applying for jobs as a junior dev.</p>
<h3 id="heading-thanks-for-reading">Thanks for reading</h3>
<p>If there is anything I have missed, or if you have a better way to do something then please let me know.</p>
<p>Find me on <a target="_blank" href="https://twitter.com/ScottDevTweets">Twitter</a> or <a target="_blank" href="https://github.com/spences10/ama">Ask Me Anything</a> on GitHub.</p>
<p>This was originally posted on my <a target="_blank" href="https://blog.scottspence.me/make-time-for-100doc/">blog</a>.</p>
<blockquote>
<p><strong>You can read other articles like this on <a target="_blank" href="https://thelocalhost.blog/">my blog</a>.</strong></p>
</blockquote>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ (Not quite) 100 Days of Code — A Postmortem ]]>
                </title>
                <description>
                    <![CDATA[ By JS At the end of last year, I wrote about my experience coding and making daily commits to GitHub for 30 consecutive days. I also pledged to keep the streak going for as long as I could. I am happy to report that I made it through 90 straight ]]>
                </description>
                <link>https://www.freecodecamp.org/news/not-quite-100-days-of-code-a-postmortem-d27124f023f2/</link>
                <guid isPermaLink="false">66c35c1cc5e11f7a9c40687b</guid>
                
                    <category>
                        <![CDATA[ coding ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Habit Building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sat, 22 Apr 2017 14:05:47 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*OVHrWU4rKjMbV7lQBjNV1Q.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By JS</p>
<p>At the end of last year, I wrote about my experience coding and making daily commits to GitHub for 30 consecutive days. I also pledged to keep the streak going for as long as I could. I am happy to report that I made it through 90 straight days! It was an incredible experience, and I learned a ton.</p>
<p>The following is an overview of the projects I completed and some lessons I learned along the way. I hope it motivates some of you to make your own daily commitment to code.</p>
<h3 id="heading-completed-freecodecamps-front-end-certification"><strong>Completed freeCodeCamp’s Front-End Certification</strong></h3>
<p>I had worked on the more basic freeCodeCamp material ages ago. I still had to complete eight intermediate and advanced front-end projects and a series of small coding challenges before I could claim my certification.</p>
<p>The projects covered a wide variety of topics and proved quite challenging at times. I used an API to display the local weather, and for another I built a working clone of the children’s game Simon. The combination of good resources and the patience of some more experienced friends helped me finish them to earn my certification.</p>
<p>These projects taught me how to organize and write clean code. I honed my JavaScript skills and learned how the language differs from other more classically object-oriented languages such as Ruby and Python.</p>
<p>A few weeks after I earned my certification, I went back and refactored some of the initial projects. I applied the <a target="_blank" href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY</a> principle and included some functional programming concepts I had subsequently learned. It was great fun trying to eliminate all of the <code>for</code> loops in my code.</p>
<h3 id="heading-wrote-a-widely-shared-for-me-anyway-article-about-learning-javascript"><strong>Wrote a widely-shared (for me, anyway) article about learning JavaScript</strong></h3>
<p>After finishing my first blog, which freeCodeCamp was kind enough to publish on its Medium page, I had the itch to write something else.</p>
<p>Because it can be so hard to figure out which learning resources are actually worthwhile, I decided to put together a <a target="_blank" href="https://medium.freecodecamp.com/a-beginners-javascript-study-plan-27f1d698ea5e">study plan for beginners looking to learn JavaScript</a> based on what I had found useful. The article was again published by freeCodeCamp and currently has over 15 thousand views and 700 recommends.</p>
<p>Not exactly ‘viral,’ sure, but for someone who had never done <em>any</em> public writing as recently as six months ago, it was exhilarating to see my article resonate with a bunch of people.</p>
<h3 id="heading-learned-react">Learned React</h3>
<p>In addition to completing the freeCodeCamp Front-End Certification, I also began learning React. Thanks to a few great tutorials (shout out to the excellent Wes Bos course, <a target="_blank" href="https://reactforbeginners.com/">React for Beginners</a>), I was able to finish a few React projects. These included a live-searchable recipe repository. I also became comfortable using the <a target="_blank" href="https://github.com/facebookincubator/create-react-app">create-react-app CLI</a> tool to scaffold React applications.</p>
<h3 id="heading-broke-my-streak-on-day-91">Broke my streak on Day 91</h3>
<p>With progress so great, why did I stop? The path I paved for myself had slowed down. I felt intimidated by some of the upcoming projects on freeCodeCamp, so I shifted my efforts to learning D3.js, a data-visualization library. At the time, it proved to be a bit too impenetrable for me despite multiple attempts to grasp it.</p>
<p>Also, I didn’t have a compelling personal project to work on, and needed a break from the grind of working full-time and coding at night for multiple hours.</p>
<p>The most important thing I learned about keeping a streak like this going is to <em>always know what to work on tomorrow</em>. When you sit down at your computer, you should already have a clear idea of what you’re going to do. If you make that decision ahead of time, it removes a barrier to getting started.</p>
<p>Take a moment before you decide to stop coding for the day and make sure you have something concrete to do tomorrow. I stuck to this plan for the vast majority of my streak and it was a major factor in my success. It was only when I stopped planning ahead that I eventually missed a day.</p>
<h3 id="heading-a-completely-worthwhile-experience">A completely worthwhile experience</h3>
<p>At the beginning of my not-quite #100DaysOfCode, I had some familiarity with the Ruby on Rails ecosystem and HTML/CSS with only a few hours of JavaScript under my belt.</p>
<p>Three months later, I gained a good, foundational knowledge of JavaScript, learned React, got a bunch of cool projects in my GitHub portfolio, and had two articles published on freeCodeCamp’s Medium page. I am a far better developer today than I was when I started this daily coding experiment a few months ago.</p>
<h3 id="heading-next-steps">Next steps</h3>
<p>Having taken a pretty substantial break, I want to continue working on React projects, dip my toes into some backend JavaScript, and learn more about algorithms and data structures. I also hope to keep writing.</p>
<p>If you enjoyed this article and want to continue the discussion, come find me on <a target="_blank" href="http://www.twitter.com/j_speda">Twitter</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
