DEV Community: bellsofaba The latest articles on DEV Community by bellsofaba (@bellsofaba). https://dev.to/bellsofaba https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F770376%2F63eb7d96-9b66-4a23-99bd-430a47ffb2bc.jpg DEV Community: bellsofaba https://dev.to/bellsofaba en Data Structures and Algorithms: The Codex of Computer Science bellsofaba Wed, 15 Nov 2023 00:08:36 +0000 https://dev.to/bellsofaba/data-structures-and-algorithms-the-codex-of-computer-science-58bn https://dev.to/bellsofaba/data-structures-and-algorithms-the-codex-of-computer-science-58bn <p>Ever looked at a coding challenge and wondered what in the Elon Musk, Charles Babbage, and Alan Turing jargon is going on here?</p> <p>Well, it turns out, you are not alone. A lot of developers, programmers, and software engineers dread the famous data structures and algorithms path of learning.</p> <p>But what are they exactly? Is it possible for one to have a career in a coding-related job despite evading data structures and algorithms?</p> <p>Short answer… </p> <p>Yes.</p> <p><a href="proxy.php?url=https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExcDY2d3NjZTZkNG5ndzF1cng3dHFxbGM2N3Ryb3RmZ3dqY2NjcjdwaiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/fPRwBcYd71Lox1v7p2/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExcDY2d3NjZTZkNG5ndzF1cng3dHFxbGM2N3Ryb3RmZ3dqY2NjcjdwaiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/fPRwBcYd71Lox1v7p2/giphy.gif" alt="yay" width="480" height="480"></a></p> <p>Some limitations will catch up to you sooner or later.</p> <p>They lurk, waiting, like the synonymousness of life with the grim reaper—an inevitability that is the fate of everyone who has ever lived—a slow and eventual demise.</p> <p><a href="proxy.php?url=https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExeXdvdTNnOHhjMWplOHR0NXVhdnZwc2p4bW42eGVhbjF3NzZiMW5sNSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/h5NLPVn3rg0Rq/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExeXdvdTNnOHhjMWplOHR0NXVhdnZwc2p4bW42eGVhbjF3NzZiMW5sNSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/h5NLPVn3rg0Rq/giphy.gif" alt="Grim Reaper" width="500" height="296"></a></p> <p>Feign ignorance; circle to Mars on its first expedition if you must. But as far as the standards of securing the crème de la crème of tech jobs are concerned (disclaimer: this is subjective), you need your dose of DSA.</p> <p>But the oddity here is one you might not have seen coming; data structures and algorithms are not prerequisites for production-level code. </p> <p>Yay! Once more.</p> <p>Whew! Don’t scuttle off in victory just yet; let’s discuss the essentiality of DSA.</p> <h2> Why do you need Data Structures and Algorithms? </h2> <p>So what is the point? Here are a few reasons you can get behind.</p> <h3> The bedrock of software engineering </h3> <p>That’s right. There are software engineers and those who purport to be software engineers. Kidding. I had an incredible coding instructor who used to say that if you wrote a line of code, you were a software engineer. </p> <p>That’s it. No take-backs. </p> <p>Gatekeepers can suck it.<br> <a href="proxy.php?url=https://i.giphy.com/media/J1djusiGZ4ek0/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/J1djusiGZ4ek0/giphy.gif" alt="Suck it" width="225" height="199"></a></p> <p>But we often deal with this nagging remnant of our former selves. The one that heightens feelings of low self-esteem and excavates the often neglected Donning-Krueger effect, or better yet, the imposter syndrome that is familiar to specialists of various fields.</p> <p>One day, you feel confident enough to exclaim, "I just whipped up several lines of code and assembled this beauty of a specimen. I must be god."<br> <a href="proxy.php?url=https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExOWxkM3ZqM2JueWQwdGtpcWxzdHpjeHVlYm9rdjhlYXdqd3NwM25peiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/g05Yv2djSv4fgkbDH6/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExOWxkM3ZqM2JueWQwdGtpcWxzdHpjeHVlYm9rdjhlYXdqd3NwM25peiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/g05Yv2djSv4fgkbDH6/giphy.gif" alt="I am god" width="480" height="480"></a></p> <p>Another day you are stuck on a coding error, and no amount of consultation with the fairy god-father/mother nature of ChatGPT can get you unstuck. Not even its dinosaur predecessor, StackOverflow (kidding, please don't find me Neeson), can offer a solution. So the inertia of a reclusive, well-hidden secret reemerges to offer you a not-so-subtle reminder that you might just be a fraud.<br> <a href="proxy.php?url=https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExbGY0cTA5dmN2ZXZudnJiaTVvZXQ3a2p1Z2NtajN2OWV4MmhocXV2YiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/3xz2BK4Xo850NXjq8M/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExbGY0cTA5dmN2ZXZudnJiaTVvZXQ3a2p1Z2NtajN2OWV4MmhocXV2YiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/3xz2BK4Xo850NXjq8M/giphy.gif" alt="Fraud" width="450" height="338"></a></p> <p>Kidding again. </p> <p>Maybe you totally dumped Pomodoro, are acting on overdrive, and aren’t utilizing the presence of your coding duck to help you navigate your coding sessions.</p> <p>Well, this veered off...</p> <p>Really fast too, I might add.</p> <p>Still…</p> <p>Bring back your train of thought to what’s being discussed here...</p> <p>Data structures and algorithms are fundamentals that act as the foundation for all things software engineering.</p> <h3> Optimization </h3> <p>The word "optimization" might come off as fancy, but it simply refers to making something better than it already is. It is the process by which the status quo is improved so that it morphs into something else and becomes more efficient and effective.<br> <a href="proxy.php?url=https://i.giphy.com/media/TcZSnGWDJe0GKztvnl/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/TcZSnGWDJe0GKztvnl/giphy.gif" alt="Optimize" width="480" height="343"></a></p> <p>That’s another reason you need data structures and algorithms. It assists in making you think optimally so that your code comes off better. It’s not something noticeable in the short run. It compounds and offers you rewards years into your coding career.</p> <h3> Puzzle Master </h3> <p>That’s a term that is waiting to be yours if you can carefully maintain a relationship with data structures and algorithms. <br> <a href="proxy.php?url=https://i.giphy.com/media/xTiTnBELA6Mb1TeeOc/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/xTiTnBELA6Mb1TeeOc/giphy.gif" alt="Mr Robot" width="412" height="480"></a></p> <p>Maybe not in a generalized sense for every puzzle or how you might envision it, but you can be sure to notice a surge in your problem-solving skills in the long run. </p> <p>Crosswords and Sudoku games are in for a surprise.</p> <p>There are countless other reasons that make knowledge of data structures and algorithms an incredible arsenal for your utility belt (Cough cough! Go Batman. Go wreck up some jokers), but the aforementioned reasons should suffice for now.</p> <p>Anyway…</p> <p>This is a collection of data structures and algorithm notes to help beginner-level programmers better grasp the concepts of coding challenges and problem-solving. </p> <p>They are mostly my spin on all things data structures and algorithms from a beginner's standpoint, and I do not seek to offend any GPT-level coders out there. Whoever the shoe fits, wear it.</p> <p>With that being said, I will leave you with data structures and algorithms until the next lesson on the most common types of data structures and algorithms - Linked list, Queue, Stack, Tree, Prime Factors, Matrices, and more. </p> <h2> What are Data Structures? </h2> <p>Right off the bat, you can put one and two together and put a spin on the name to come up with a non-complicated name for it; it is simply the structure of data. This structure of data is structured or organized by special identifiers that make them easily fetchable after they have been stored on a computer. </p> <h2> What are Algorithms? </h2> <p>These, if Richard Feynman were to articulate them plainly, are a set of instructions that offer us guides to solving problems.</p> <h2> When these powers combine... </h2> <p>Together, they form indispensable components of what constitutes computer science. </p> <p>There are no David Goggins or Tony Robbins 's-level motivational sermons I can offer you to kickstart your passion for wanting to learn them.<br> <a href="proxy.php?url=https://i.giphy.com/media/s5uNqj8AblvucpAOWD/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/s5uNqj8AblvucpAOWD/giphy.gif" alt="Robbins" width="480" height="270"></a></p> <p>All I can say is that you need them so that you can excel in this realm of things. Additionally, you should have an innate and intense desire to learn, which is synergistic for a healthy neural network. You can choose to evade them instead. But what good would that do to you if your intention is to become a well-rounded software developer or engineer?</p> <p>See you in the next post for the types of data structures and algorithms. Spoiler alert: they are not a walk in the park. But hopefully, you knew that already, and nothing phases you. Because you are a go-getter. </p> <p>You go get!</p> <p>Live long and prosper.<br> <a href="proxy.php?url=https://i.giphy.com/media/IL4iTvQH0MjS/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/IL4iTvQH0MjS/giphy.gif" alt="Spock" width="500" height="377"></a></p> datastructures algorithms coding tech Using Node.js to Dynamically add HTML Content bellsofaba Tue, 13 Jun 2023 17:24:22 +0000 https://dev.to/bellsofaba/using-nodejs-to-dynamically-add-html-content-p3e https://dev.to/bellsofaba/using-nodejs-to-dynamically-add-html-content-p3e <p><strong>Introduction</strong></p> <p>Hi there, coder! Welcome to this tutorial. In it, you will follow an 8-step node.js lesson to learn how to create an application. This application responds to a collection each time a static html file is modified.</p> <p>Information is sent from the server to the static html page with the aid of what is known as ejs. In this regard, ejs will serve as middleware. A Body Parser will also assist us in gathering data from a form and sending it to the collection for storage.</p> <p>Let's get started!</p> <p><strong>Step 1: EJS Installation</strong><br> First on the list is ejs installation. To achieve this, you will need to locate your root directory. This is done via the terminal by using:<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight console"><code><span class="gp">cd &lt;name of directory&gt;</span><span class="w"> </span></code></pre> </div> <p>After locating your root directory, enter the following command. Also to be executed in your terminal.<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight console"><code><span class="go">npm install ejs </span></code></pre> </div> <p><strong>Step 2: Updating EJS as Your View Engine</strong><br> When you are done with installing your ejs, you will need to set it as your view engine. The code that follows will help you achieve this part of the process.<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight javascript"><code><span class="nx">app</span><span class="p">.</span><span class="kd">set</span><span class="p">(</span><span class="dl">'</span><span class="s1">view engine</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">ejs</span><span class="dl">'</span><span class="p">);</span> </code></pre> </div> <p><strong>Step 3: Directories Reorganization</strong><br> You are doing great. Consider this is your tap on the back. Now that you have updated your view engine. It means there would likely be ejs file usage. But then, there isn't any ejs file just yet. Don't fret.</p> <p>You will need to locate your files that have an extension of .html. When you do, rename them so that their new extension would go from .html to having extension names that end with .ejs. </p> <p>When your new .ejs files are ready, you will need to move them to a location called views. Views is a folder that is likely in your root directory.</p> <p><strong>Step 4: Utilize EJS Variables</strong><br> You deserve another tap on the back. You're are doing absolutely amazing. Let's move on to how we can use ejs variables. These would help in providing permission for you to get some data from your server file. </p> <p>Here is an example code.<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight html"><code><span class="cp">&lt;!DOCTYPE html&gt;</span> <span class="nt">&lt;html&gt;</span> <span class="nt">&lt;head&gt;</span> <span class="nt">&lt;title&gt;</span>Page Title<span class="nt">&lt;/title&gt;</span> <span class="nt">&lt;/head&gt;</span> <span class="nt">&lt;body&gt;</span> <span class="nt">&lt;</span><span class="err">%=</span> <span class="na">variableName</span> <span class="err">%</span><span class="nt">&gt;</span> <span class="nt">&lt;/body&gt;</span> <span class="nt">&lt;/html&gt;</span> </code></pre> </div> <p><strong>Step 5: Sending Data to EJS File</strong><br> Hopefully, you are getting the results you want. If not, please retrace these steps a notchback and pick up where you likely miss-stepped.</p> <p>The next thing you will need to do is to use the render function. <br> An ejs file and data will be given to the render function. </p> <p>Note: Keep in mind that this action should be done in your server file.<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight javascript"><code><span class="nx">app</span><span class="p">.</span><span class="kd">get</span><span class="p">(</span><span class="dl">"</span><span class="s2">/</span><span class="dl">"</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span> <span class="nx">res</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="dl">"</span><span class="s2">home</span><span class="dl">"</span><span class="p">,</span> <span class="p">{</span> <span class="na">variableName</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Discover the secrets of ancient civilizations!</span><span class="dl">"</span> <span class="p">});</span> <span class="p">});</span> </code></pre> </div> <p><strong>Step 6: Getting Form Data with Body Parser</strong><br> Now that you have sent data to the server file, you will need to capture form input values in your server file by installing a package known as Body Parser package. The following code is how you will achieve this. </p> <p>Note: This would be in your terminal.<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight console"><code><span class="go">npm install body-parser </span></code></pre> </div> <p>Next, you want to add the following code in your server file. It helps you to use Body Parser:<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight javascript"><code><span class="kd">const</span> <span class="nx">bodyParser</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="dl">'</span><span class="s1">body-parser</span><span class="dl">'</span><span class="p">);</span> <span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">bodyParser</span><span class="p">.</span><span class="nx">json</span><span class="p">());</span> <span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">bodyParser</span><span class="p">.</span><span class="nx">urlencoded</span><span class="p">({</span> <span class="na">extended</span><span class="p">:</span> <span class="kc">true</span> <span class="p">}));</span> </code></pre> </div> <p><strong>Step 7: Handling Form Submission</strong><br> This is the second to the last step in our process. Assuming you have a collection named data with items containing a title and content, you will want to update the route handlers in your server file as follows:<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight javascript"><code><span class="nx">app</span><span class="p">.</span><span class="kd">get</span><span class="p">(</span><span class="dl">"</span><span class="s2">/</span><span class="dl">"</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span> <span class="nx">res</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="dl">"</span><span class="s2">home</span><span class="dl">"</span><span class="p">,</span> <span class="p">{</span> <span class="na">data</span><span class="p">:</span> <span class="nx">data</span> <span class="p">});</span> <span class="p">});</span> <span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="dl">"</span><span class="s2">/</span><span class="dl">"</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span> <span class="kd">const</span> <span class="nx">inputTitle</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">inputTitle</span><span class="p">;</span> <span class="kd">const</span> <span class="nx">inputContent</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">inputContent</span><span class="p">;</span> <span class="nx">data</span><span class="p">.</span><span class="nx">push</span><span class="p">({</span> <span class="na">title</span><span class="p">:</span> <span class="nx">inputTitle</span><span class="p">,</span> <span class="na">content</span><span class="p">:</span> <span class="nx">inputContent</span> <span class="p">});</span> <span class="nx">res</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="dl">"</span><span class="s2">home</span><span class="dl">"</span><span class="p">,</span> <span class="p">{</span> <span class="na">data</span><span class="p">:</span> <span class="nx">data</span> <span class="p">});</span> <span class="p">});</span> </code></pre> </div> <p><strong>Step 8: Create the Home Template</strong><br> Now onto our last step. In your home.ejs file, display the title and content of each object in the data collection using a forEach loop. Include a form to submit new titles and content. Here's an example:<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight html"><code><span class="cp">&lt;!DOCTYPE html&gt;</span> <span class="nt">&lt;html&gt;</span> <span class="nt">&lt;head&gt;</span> <span class="nt">&lt;title&gt;</span>Page Title<span class="nt">&lt;/title&gt;</span> <span class="nt">&lt;/head&gt;</span> <span class="nt">&lt;body&gt;</span> <span class="nt">&lt;</span><span class="err">%</span> <span class="na">data.forEach(element =</span><span class="err">&gt; </span><span class="s">{</span> <span class="err">%</span><span class="nt">&gt;</span> <span class="nt">&lt;h2&gt;&lt;</span><span class="err">%=</span> <span class="na">element.title</span> <span class="err">%</span><span class="nt">&gt;&lt;/h2&gt;</span> <span class="nt">&lt;p&gt;&lt;</span><span class="err">%=</span> <span class="na">element.content</span> <span class="err">%</span><span class="nt">&gt;&lt;/p&gt;</span> <span class="nt">&lt;</span><span class="err">%</span> <span class="err">})</span> <span class="err">%</span><span class="nt">&gt;</span> <span class="nt">&lt;form</span> <span class="na">action=</span><span class="s">"/"</span> <span class="na">method=</span><span class="s">"post"</span><span class="nt">&gt;</span> <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">"text"</span> <span class="na">placeholder=</span><span class="s">"Title"</span> <span class="na">name=</span><span class="s">"inputTitle"</span><span class="nt">&gt;</span> <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">"text"</span> <span class="na">placeholder=</span><span class="s">"Content"</span> <span class="na">name=</span><span class="s">"inputContent"</span><span class="nt">&gt;</span> <span class="nt">&lt;button</span> <span class="na">type=</span><span class="s">"submit"</span><span class="nt">&gt;</span>Submit<span class="nt">&lt;/button&gt;</span> <span class="nt">&lt;/form&gt;</span> <span class="nt">&lt;/body&gt;</span> <span class="nt">&lt;/html</span> </code></pre> </div> <p><strong>Conclusion</strong></p> <p>You have made it to the end. Congrats. Hopefully, you have figured out how to build a node.js application that's responsive and does what you ask of it. Not the other way around. </p> <p>You have just elevated your node.js development game and can continue to do so moving forward. </p> <p>Go forth and prosper!</p> node javascript html tutorial Excavating Your Inner Problem-Solver: Embracing Coding Challenges bellsofaba Fri, 02 Jun 2023 07:16:23 +0000 https://dev.to/bellsofaba/excavating-your-inner-problem-solver-embracing-coding-challenges-3j3o https://dev.to/bellsofaba/excavating-your-inner-problem-solver-embracing-coding-challenges-3j3o <h2> How To Excel at Coding Challenges as a Beginner </h2> <p>Coding challenges. Whew! They are the bane of most beginner software developers. Considering the difficulty, anxiety, and, to some extent, time constraints that coding challenges are known for, this is not further from the truth. While it remains burdensome to most developers, it is a love-hate relationship for others. </p> <p>Depending on what side of the fence you belong to, it doesn’t change the fact that they are an essential component of what constitutes a well-rounded developer. If you are looking for a software developer job these days, odds are you already know how crucial it is that you become a well-rounded developer. </p> <p>Becoming a well-rounded developer is my hope for you. It is a feat reserved for people who dare to be different. It offers a difference between the bounty veteran developers gain at the top and the scraps at the bottom.</p> <p>Howdy coder! Brace yourself. Let’s journey to the top for the stamp of achievement. By embarking on this quest, you will create an awareness that will give you the boldness to traverse all the enchanting mysteries that shroud coding challenges. On this magical journey, you will unravel how algorithms beat it to a choreographed dance and how data structures churn out whispered secrets to offer you rewards. </p> <p>The rewards… </p> <p>The rewards are plenty, sandwiched in valleys of processes that serve as maps to various destinations—treasure troves hidden as solutions, waiting to be unraveled.</p> <p><a href="proxy.php?url=https://i.giphy.com/media/lMg0qBGvh0Hu0AMLj4/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/lMg0qBGvh0Hu0AMLj4/giphy.gif" alt="Little Pirate In Booty " width="320" height="270"></a></p> <h2> The Realm of Hopelessness </h2> <p>Admittedly, if you have recently ventured on your pilgrimage to coding challenges, they will, to a large extent, seem like behemoths—unscalable and intimidating. Another trait of theirs is the elusive and proud aura they exhibit. They intend to make fun of your cluelessness and desperately want to remain mischievous while leaving you bewildered. Huh!?</p> <p><a href="proxy.php?url=https://i.giphy.com/media/l4JA1COQqiZB6/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/l4JA1COQqiZB6/giphy.gif" alt="Cute Doggo" width="350" height="350"></a></p> <p>Luckily, you can shake off the feeling of hopelessness. The first thing you want to do is stay calm.</p> <p><a href="proxy.php?url=https://i.giphy.com/media/1luXLMeNxsaNFMUuOe/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/1luXLMeNxsaNFMUuOe/giphy.gif" alt="Michael Scott From the Office Panicking" width="480" height="480"></a></p> <p>Don’t resort to head-scratching and give in to the resolve of cluelessness. Being clueless when starting is normal and a part of the learning process. Celebrate a bit. There’s joy in shared misery. Yey! This misery is not exclusive to you, so you will do yourself a favor by not latching onto it. Do your time and get out. Get out so that you can help others. This moment is your toe-dipping phase. Or your learning foundation. And like all learning, two options lay bare for your consideration. </p> <h2> Your Options </h2> <p>The first choice is acceptance. You irrevocably accept what is to come. You embody a willingness to immerse yourself in a series of perplexing puzzles. I’m not going to lie to you. It will hurt. It will particularly hurt the brain. It is supposed to hurt. Compare this pain with the heart palpitations and muscle soreness you experience during exercise. </p> <p>Admittedly, you and I know why the brain hurts and will hurt at this stage. No? Just me? Maybe you do. Well, it doesn’t hurt to reiterate, does it? When you are new to coding challenges, your brain will feel strange due to its lack of use in problems that lean towards complexity. It will remain that way for a while unless the genius in you is Einstein-level, which makes you the exception. The light at the end of the tunnel is that after the hurt comes clarity. Yes. It gets better. </p> <p>It is either that or the second choice, nothingness—a void. It has one role, and that is to downplay and question what the aim of putting your brain through unimaginable confusion is. The former knows why a little discomfort is necessary for your interests—to unlock growth. The latter just wants to chill and confine your attempts at growing. </p> <p>Chilling (or resting) is phenomenal. It is a condiment for growth. But overchill is overkill. To overcome this hurdle, you’d have to downplay chilling and put it on pause. Coding hours are synonymous with deep work. These hours are for focus. So, consider this your invitation to embrace sturdiness with your hand on your wand (cough, keyboards). </p> <p>This invitation will herald a path that necessitates a headfirst dive in. Why? Because it is a captivating realm. There are no limits to the possibilities. You are allowed to employ all your artillery to arrive at a solution. In that regard, using both conventional and unconventional methods is equally important so that you can unravel your prowess at problem-solving. </p> <p>Remember that you need to be focused and avoid distractions for the best results, which will come as a complete surprise to you in the early days. During the coming days, weeks, or even months that will follow, you will gain more clarity on the mechanisms of coding challenges. </p> <p>That is how you unravel what is going on. We'll examine the strategies required for you to master coding challenges. In the meantime, why do you even need to bother to learn about coding challenges in the first place? You might have a myriad of valid reasons. </p> <h2> Why Coding Challenges Are Important </h2> <p>It is no secret that you will encounter so many challenges when you start having a go at coding. But despite the hurdles you will likely experience, there are many reasons why coding challenges are vital for you. A continuous trajectory of learning through coding challenges will provide you with a plethora of knowledge.</p> <h3> Problem-Solving Skills </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/DgLsbUL7SG3kI/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/DgLsbUL7SG3kI/giphy.gif" alt="Meeseeks from Rick and Morty" width="320" height="269"></a></p> <p>Problem-solving skills can be honed and nurtured when solving or attempting to solve coding challenges. Critical thinking is a requirement for breaking down questions into chunks. To arrive at a solution, you should know how to articulate what the question asks of you. </p> <p>By regularly solving coding challenges, you will witness an exponential upsurge in your understanding of questions that fall into the same category. If you don’t expose yourself to such problems daily, it becomes increasingly difficult to determine how to solve the challenges. Your consistency will get you closer to becoming a master at the craft.</p> <h3> Algorithmic Thinking </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/APqEbxBsVlkWSuFpth/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/APqEbxBsVlkWSuFpth/giphy.gif" alt="Cute Little Girl Performing Mental Calculations" width="434" height="480"></a><br> When you practice coding challenges daily, one of the incentives you gain is the ability to think algorithmically, logically, and systematically. Algorithmic thinking helps you develop the ability to think in terms of algorithms, which invariably helps with your understanding of the best way to approach various methods of data structures. That is how you can successfully pass coding challenges. </p> <h3> Development of Technical Skills </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/hHxTQkcjmHUTC/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/hHxTQkcjmHUTC/giphy.gif" alt="Tony Stark Working" width="245" height="155"></a><br> Coding challenges are multifaceted in terms of what encompasses their makeup. There are different programming languages, frameworks, and concepts. The best approach to tackling them is to pinpoint an area that exalts your strengths and hammer them down until you can wield and shape them. You have to keep having a go at it until it becomes second nature. That is how technical skills become ingrained in your subconscious.</p> <h3> Interview Preparation </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/yv1ggi3Cbase05a8iS/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/yv1ggi3Cbase05a8iS/giphy.gif" alt="Looney Toons" width="480" height="360"></a><br> Coding tasks during job interviews will initially seem daunting. Your best bet at mitigating this is to come prepared. Let me introduce you to the “7 Ps of Success” principle.</p> <p><strong>P</strong>roper<br> <strong>P</strong>lanning and <br> <strong>P</strong>reparation <br> <strong>P</strong>revent <br> <strong>P</strong>iss <br> <strong>P</strong>oor <br> <strong>P</strong>erformance. </p> <p>The <strong>7 Ps of Success</strong> emphasize the need to prepare for something you will inevitably face. This principle will ensure you are not hurled into a whirlwind of confusion and embarrassment when you need to face it. To adequately prepare for something, it all boils down to time allocation and preparation. It’s like not brushing or flossing your teeth and then dreading a visit to the dentist. A careful examination of the scenario will make you realize the disconnect. Get acquainted with the dentist as soon as possible so your teeth don’t fall out, or wait it out — an unpleasant scenario that will not be viable or pleasant for anyone in the long run. </p> <p>A better thing to do is to deal with the unpleasantries from the get-go. Make it a part of your curriculum to practice coding challenges daily. That is the only way to boost your technical skills and confidence in interviews. But if you are a snake oil salesman and can talk your way out of a coding interview, all the best.</p> <h3> Lifelong Learning </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/88ItEmRSOqJnQXSlOe/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/88ItEmRSOqJnQXSlOe/giphy.gif" alt="Kungfu Panda" width="480" height="480"></a><br> When you can reach the pinnacle of making coding challenges your own and not the other way around, rewards await you. There is a zenith of growth that becomes a part of your life. This growth becomes evident in the company you will keep (a league of extraordinary geeks), the remuneration packages you will attract, the curiosity your mind wanders for, the motivation that will become a part of your new makeup, and much more. These are equally important, and it’s up to you to use your discernment to prioritize what matters most to you. </p> <h2> How to Understand Coding Challenges </h2> <p>Understanding coding challenges is another area that needs further elaboration. When you decide to solve coding challenges daily, you will find your consistency at odds with what is going on. What is behind a coding problem? What does it say? What does it want from you? To understand all these, a couple of things emanate to shine a light on the task.</p> <h3> Foundations Mastery </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/TmVHwsPAveJiM/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/TmVHwsPAveJiM/giphy.gif" alt="Fast Crawling Baby" width="300" height="225"></a><br> Without adequate knowledge of a programming language, it will be best for you to bookmark this post or add it to your reading list in the hopes that you will revisit it later. That’s because until you have done the needful —learn your fundamentals—you will not be able to grasp the concept of coding challenges.</p> <p>However, I’d be remiss if I hastily chased you away after dedicating your time to reading this post. Instead, be happy to learn that there are quite a few coding challenges specifically curated to help beginners with foundational knowledge. You can refine your search on any coding challenge website by using the keywords: “foundation”, “tutorial”, or “beginner.” </p> <p>When it comes to crafting mastery, tools are an indispensable part of your kit. The same is true for coding challenges. Programming fundamentals are the tools that are necessary for getting over any kind of coding challenge. When you step into the fantastic world of coding, your foundational knowledge has to be top-notch. </p> <p>You must know the prerequisites that beginners need to know. To do so, you must first become acquainted with the mysticism of variables, loops, conditionals, functions, all data types, and the artful manipulation of data structures. </p> <p>A firm mastery of the above concept will give you a general overview and be your compass. </p> <h4> Where to Find Free Code Learning Resources </h4> <p>You can learn coding fundamentals from websites that offer free lessons. Some websites with free resources are listed below.<br> <a href="proxy.php?url=https://www.freecodecamp.org/">FreeCodeCamp</a>,</p> <p><a href="proxy.php?url=https://www.theodinproject.com/">The Odin Project</a></p> <p>And if you are looking for a <strong>free boot camp</strong> where you will find a vibrant community of supportive developers, (that's right, it's absolutely free), check out a <a href="proxy.php?url=https://leonnoel.com/100devs/">100Devs</a>. With a <a href="proxy.php?url=https://leonnoel.com/100devs/">100Devs</a>, you go through 30 Weeks of learning to become proficient at Full-Stack Web Development at no cost. </p> <p>Additionally, you can check out a couple of other paid resources that offer extra uniqueness. </p> <p><a href="proxy.php?url=https://www.programmingexpert.io/">Programming Expert</a>, </p> <p><a href="proxy.php?url=https://scrimba.com/">Scrimba</a> </p> <p>Lastly, you can check out <a href="proxy.php?url=https://code-squid.teachable.com/">Code-Squid</a>, a beloved project by a friend of mine with close to 4 decades of coding experience, Bob. </p> <p><strong>Important:</strong> Please note that the listed websites are all recommended for recommendation purposes only and are not affiliate links. You can explore more of their offerings if you are feeling generous. There's no harm in appreciating fellow developers who might become instrumental in your learning journey. </p> <h3> Compartmentalizing the problem </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/MFmT0MyjKpZtBdUQwH/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/MFmT0MyjKpZtBdUQwH/giphy.gif" alt="Rubix Cube Breaking Apart" width="480" height="480"></a></p> <p>Problem-solving requires determination and wit. In that regard, it is not in your best interest to hastily approach the problem. Remember, these are uncharted territories. The problem statement would involve acknowledging its tapestry. You will need to know what its components are. Is it a labyrinth, or is it pretending to be one? Pause and consider all the possibilities and constraints.</p> <p>Afterward, you will enter a mental state that carefully flips the problem on its head to dissect it. It is your operating table. And you are the surgeon. You will need to go Sherlock Holmes on it without any reservations. You have to let it know you are a master at solving puzzles.</p> <p>When you reduce the problem into chunks and pieces, you will realize that each piece holds a clue to the larger mystery. Properly weighing the inputs and the expected outputs will help you see that it is not the behemoth it purports to be. </p> <p>To further elaborate on how to break down the question into chunks, I have selected a beginner friendly <a href="proxy.php?url=https://www.codewars.com/kata/5715eaedb436cf5606000381/javascript">8 kyu level kata</a> from <a href="proxy.php?url=https://www.codewars.com/">Codewars</a>. This kata sheds light on how to break down a problem using the <strong>PREP</strong> method. <strong>PREP</strong> is an acronym for <strong>P</strong>arameters, <strong>R</strong>esults, <strong>E</strong>xamples, and <strong>P</strong>seudocode.</p> <p><strong>Question: Sum of positive</strong><br> <strong>Description:</strong> (Reworded for clarity)<br> Imagine you have an <strong>array</strong> of <strong>numbers</strong>. You are required to <strong>return the sum of all of the positive ones</strong>.</p> <p><strong>Example</strong> [1,-4,7,12] =&gt; 1 + 7 + 12 = 20</p> <p><strong>Note:</strong> <strong>If</strong> there are <strong>no positive numbers</strong> to sum, the <strong>default</strong> should be <strong>0</strong>.</p> <p><strong>Solution</strong><br> </p> <div class="highlight js-code-highlight"> <pre class="highlight javascript"><code><span class="kd">function</span> <span class="nx">positiveSum</span><span class="p">(</span><span class="nx">arr</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span> </code></pre> </div> <h4> Compartmentalizing the problem and determining the solution </h4> <p>As previously mentioned, the <strong>PREP</strong> approach to solving coding challenges is what we will use to solve this problem. </p> <p>The first thing we will tackle is parameters. </p> <p><strong>Parameters</strong><br> This coding challenge has one parameter for us: <strong>arr</strong>. It is contained in the brackets <strong>( )</strong> after our function name, <strong>positiveSum</strong>. In this case, the function takes an array <strong>(arr)</strong> as its parameter. Even though the <strong>arr</strong> does not explicitly have numbers stored, it is assumed to contain a list of numbers similar to those provided in the example.</p> <p><strong>Results</strong><br> The <strong>result</strong> is the <strong>intended outcome</strong> we hope to achieve from this coding problem. The result is what the function will return at the end of the coding challenge. The <strong>function</strong> must return the sum of all positive numbers in our array. Our example illustrates the predicted outcome. Also, remember that the result will be <strong>0</strong> if no positive values exist in the <strong>array</strong>.</p> <p><strong>Examples</strong><br> Our example is straightforward. It offers insight into the expected output when there are a set of inputs. In our example array;<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight javascript"><code><span class="nx">arr</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">4</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">12</span><span class="p">]</span> </code></pre> </div> <p>You’d notice three positive numbers, <strong>1, 7, and 12,</strong> out of the four integers in the array. After going through the <strong>array</strong>, we would pick out the positive numbers and ignore the negative number, <strong>-4</strong>. Afterward, we will add up the numbers:<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight javascript"><code><span class="mi">1</span> <span class="o">+</span> <span class="mi">7</span> <span class="o">+</span> <span class="mi">12</span> <span class="o">=</span> <span class="mi">20</span> <span class="c1">//Sum of positive numbers. </span> </code></pre> </div> <p>Carefully analyzing examples is an effective way to get a hint of the desired outcome. When you can weigh the inputs and determine their output, the pattern to arrive at the answer becomes clear. Following this pattern will show you the intriguing mechanisms of how the coding challenge works. </p> <p><strong>Pseudocode</strong><br> Our pseudocode is a working process or a layman's explanation of the processes involved. It tells us how to answer the question without literally writing the code. For our example, we will break it down into the following:</p> <blockquote> <p><strong>Initialize</strong> a variable and call it <strong>aggregate</strong><br> </p> </blockquote> <div class="highlight js-code-highlight"> <pre class="highlight javascript"><code><span class="kd">let</span> <span class="nx">aggregate</span> <span class="o">=</span> <span class="mi">0</span> </code></pre> </div> <blockquote> <p>Because this is where we will store our positive numbers. We need this because computers cannot mentally keep invisible numbers as we do in our heads. The initialized variable will be 0. </p> <p>Now you might be asking <strong>why have we initialized it to 0?</strong> We’ve done this for two main reasons:</p> <p>The first is that our outcome should be an integer. Secondly, 0 is a good starting point when we need to add positive elements(numbers) after going through the array. When we check our <strong>array</strong> and stumble across positive numbers, we <strong>add them to 0</strong>.</p> <p>After initializing our variable and setting it to <strong>0</strong>, we will need to <strong>check the entirety of our array</strong> to look for positive numbers. What helps us achieve this is a loop. Loops help us navigate the elements in an array. For our example, we will use a for loop. It will enable us to loop through the entire length of the <strong>array</strong> and check each element therein. <strong>A for loop has three sections.</strong> The <strong>first section is the initialization stage</strong>, the <strong>second is the condition stage</strong>, and the <strong>third part is the final statement</strong>.</p> <p>Next, our for loop will enable us to <strong>confirm if a number or an element in the array, (denoted by arr[i])</strong> is greater than <strong>0</strong>.</p> <p><strong>If</strong> it is &gt; greater than ** &gt; 0*<em>, we will **add it to our initialized variable</em>* which we have named <strong>aggregate</strong>. The <strong>+ operator</strong> will help us achieve this.</p> <p>After iterating through all the elements in the array, we will <strong>combine all the positive elements</strong> we find in the aggregate variable.</p> <p>Finally, we <strong>return the calculated aggregate</strong> of all the positive numbers. </p> </blockquote> <p>After everything is said and done, when these powers combine, we will form Captain... Oops, our function will look like it does below. </p> <p><strong>Solution</strong><br> </p> <div class="highlight js-code-highlight"> <pre class="highlight javascript"><code><span class="kd">function</span> <span class="nx">positiveSum</span><span class="p">(</span><span class="nx">arr</span><span class="p">)</span> <span class="p">{</span> <span class="kd">let</span> <span class="nx">aggregate</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="c1">// Initialize a variable called aggregate that will store the positive numbers in the array. This has been set to 0.</span> <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// Our for loop goes through each element in the array.</span> <span class="k">if</span> <span class="p">(</span><span class="nx">arr</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// We use an if statement to check if the current element is greater than 0. (positive).</span> <span class="nx">aggregate</span> <span class="o">+=</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span> <span class="c1">// If the element is positive, add it to the aggregate sum.</span> <span class="p">}</span> <span class="p">}</span> <span class="k">return</span> <span class="nx">aggregate</span><span class="p">;</span> <span class="c1">// Return the final sum of positive numbers.</span> <span class="p">}</span> </code></pre> </div> <p>Here is another <strong>summary</strong> of our code and what we did to arrive at a solution.</p> <blockquote> <pre class="highlight javascript"><code><span class="kd">let</span> <span class="nx">aggregate</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> </code></pre> <p>We initialized a variable called aggregate. This helped in storing our positive integers. To start on a clean slate, we set it to <strong>0</strong>.</p> <pre class="highlight javascript"><code><span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span> </code></pre> <p>This is a loop that iterated over the elements of the array. It started with <strong>i</strong> as <strong>0</strong> and continued until <strong>i</strong> reached the <strong>length</strong> of the <strong>array</strong>.</p> <pre class="highlight javascript"><code><span class="k">if</span> <span class="p">(</span><span class="nx">arr</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> </code></pre> <p>Inside the loop, we checked if the current element at index <strong>i</strong> was greater than <strong>0</strong>. If it was, it meant the number was positive.</p> <pre class="highlight javascript"><code><span class="nx">aggregate</span> <span class="o">+=</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span> </code></pre> <p>The current number in the array returned a positive number, so, we added it to the <em>aggregate</em> sum by using the shorthand <strong>+=</strong> operator. This accumulated the positive numbers.</p> <pre class="highlight javascript"><code><span class="k">return</span> <span class="nx">aggregate</span><span class="p">;</span> </code></pre> <p>Finally, after iterating through the entire array, we returned the <strong>aggregate</strong> sum as the result of the function.</p> </blockquote> <h3> Studying and Researching </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/fC3ZmX9FDtAu4/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/fC3ZmX9FDtAu4/giphy.gif" alt="Doggo Studying" width="430" height="284"></a><br> If you don’t study, you will not familiarize yourself with crucial concepts. The only way to know what is out there is by looking. Algorithms are known to be tricky, but they will appear even more so if you haven’t the slightest idea of what you are looking at. Therefore, I urge you to embrace studying things that are important but seem mundane and let them become a part of you. Or, you could utilize more effective tools like <a href="proxy.php?url=https://apps.ankiweb.net/">Anki</a> to make studying worthwhile.</p> <p>If you are familiar with the concepts of learning, you know that if it hurts, it only means you are experiencing growth in some way. If your learning starts becoming a little too comfortable, you know you have reached a plateau. You will need to push the boundaries to utilize more brain power. Consider exercise. When you are no longer experiencing any changes, you know it’s time to switch up your routine with something different. </p> <p>Constantly iterating your study pattern and refining your approach by immersing yourself in blog posts, video tutorials, documentation, textbooks, and more is how you expand your knowledge base. </p> <h3> Solving Incrementally </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/dXr0rbo8j6Yhwivo8f/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/dXr0rbo8j6Yhwivo8f/giphy.gif" alt="Bird Building" width="480" height="480"></a></p> <p>Let’s get back to the exercise analogy. I bet you can already tell I am a fitness person. There is a clever strategy for lifting heavy weights. Or for incorporating exercise into your workouts. It involves patience, time commitment, adequate nutrition, and more. But the most fundamental is what I have listed. </p> <p>As a gym newbie, even when you unintentionally skip the gym for too long, if a bit of an ego boost makes you rush to the heavy-weight section where you use too much of your energy to pick weights your body is not ready for, you will find out the hard way why that was a horrible idea. The next couple of days will be awful for you. </p> <p>You will experience what is known as delayed-onset muscle soreness, or DOMS. And if you choose to start with weights ideal for beginners, latching onto them for too long will cause your growth to plateau.</p> <p>Now, with coding, you should employ the same tactics to maneuver your way to the top. Abiding by this strategy will help you conquer even the most formidable coding challenges. Start with simple problems and then ascend to harder ones. </p> <p>Incrementally approaching coding problems is how you can make the biggest of them crumble before you. That is how to expand your intellect and solve different levels from several vantage points.</p> <h3> Reviewing Solutions Submitted By Others </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/bezxCUK2D2TuBCJ7r5/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/bezxCUK2D2TuBCJ7r5/giphy.gif" alt="Jim Carey Peeping" width="400" height="400"></a><br> When you solve a coding challenge, your solution is considered part of your repertoire. It is a win for you. But to understand the other ways you could have approached the challenge, you should look at the solutions submitted by others. Don't worry, it's not cheating. Looking at what other developers submitted will help you uncover a myriad of possible approaches. These approaches will help you broaden your horizons and explore new paths. Tapping into the perspective and logic of others is a limitless way to improve your versatility.</p> <h3> Communal Convergence </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/Fzb4nqyfrTA66u2HOD/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/Fzb4nqyfrTA66u2HOD/giphy.gif" alt="Friends" width="480" height="480"></a><br> As humans, we have been able to build cities and send rockets into space. The reason we have been able to achieve these feats isn’t attributable to our strengths. It is not because of our self-imposed position at the top of the food chain, either. It is due to our camaraderie and the ability to work collectively. Working together is how we can apply our wisdom to different specialties. </p> <p>On your coding odyssey, surround yourself with a diverse community of like-minded individuals. There are several programming communities, seminars, standups, study groups, and more that you can join. These will expose you to interactions and insights that will clarify any hurdles. </p> <h3> Reflection and Iteration </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/Lntt6Vee77UeiLf4aD/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/Lntt6Vee77UeiLf4aD/giphy.gif" alt="Refactoring" width="480" height="480"></a><br> To get better, you should harness your strength to reflect. Reflecting on the steps you used to arrive at the solution is one way to enhance your knowledge of the subject matter. With adequate reflection comes growth and improvement in areas you once thought unfathomable. Remember, your brain needs time to recuperate. </p> <p>Introspection will assist you in identifying easy areas and those that weren't—areas that put up a fight. With this, you adjust your strategy and concentrate on subjects that make you feel short. There is no harm in refining your study methods according to your strengths and weaknesses. Remember, our weaknesses are part of what makes us human. We all have them. </p> <h3> Persistence </h3> <p><a href="proxy.php?url=https://i.giphy.com/media/YsOQGFLy6l6aIqZ0ru/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/YsOQGFLy6l6aIqZ0ru/giphy.gif" alt="You are no quiter" width="400" height="250"></a><br> Without persistence, we are nothing. A valuable lesson can be learned from babies. They go from crawling to walking, and then running. We were all babies in the past. You can absolutely persevere. </p> <p>Make patience and persistence your hallmarks of strength. Don’t let them go. Engrave them in the depths of your subconscious as a constant reminder that you need to get better. Understand that the path to unraveling coding challenges is not a sprint but a marathon that requires time and effort. Embrace the virtue of patience, for Rome wasn't coded in a day.</p> <p>You automatically accept the challenges that come your way with unwavering resolve when you are persistent and do not waver in your pursuit of mastery. There will always be challenges along the way, but if you don't give up, it becomes a favor for yourself. Consider obstacles as catalysts that pique your curiosity rather than running away. Keep going despite the uncertainty and darkness by remembering that there is light at the end of the tunnel. You'll escape unscathed if you do that.</p> <h2> Conclusion </h2> <p><a href="proxy.php?url=https://i.giphy.com/media/nc20IGTi6pIDrHRfJ0/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/nc20IGTi6pIDrHRfJ0/giphy.gif" alt="Waving bye" width="480" height="270"></a><br> Make coding essential to your daily routine, like eating food. Through regular exposure and active learning, you will witness the gradual blossoming of your problem-solving skills. Each challenge conquered and each line of code written will deepen your understanding and illuminate the intricate workings of coding challenges.</p> <p>So, my tenacious companion, embrace the journey ahead with patience, persistence, and unwavering consistency. With these virtues as your allies, the realms of coding challenges will unveil their secrets, and you will emerge as a master of the craft that traverses all the known paradigms.</p> <p>Strive for what is feasible. Remember, you don’t have to be perfect. The best you can do is keep pushing the envelope and asking for help that you can use. If you keep doing that, sooner or later, you will move toward something that magnifies your coding prowess.</p> <p><a href="proxy.php?url=https://i.giphy.com/media/IL4iTvQH0MjS/giphy.gif" class="article-body-image-wrapper"><img src="proxy.php?url=https://i.giphy.com/media/IL4iTvQH0MjS/giphy.gif" alt="Spock" width="500" height="377"></a><br> Go forth and prosper!</p> algorithms beginners leetcode codewars How To Make Your Self-Taught Programmer Journey Not Suck bellsofaba Wed, 03 Aug 2022 03:58:20 +0000 https://dev.to/bellsofaba/how-to-make-your-self-taught-programmer-journey-not-suck-4047 https://dev.to/bellsofaba/how-to-make-your-self-taught-programmer-journey-not-suck-4047 <p><strong>JACK</strong>:</p> <p>Technology… boy we have come a long way. From the days of seeing video calls done on Sci-fi shows like Star Trek, waiting for the telephone operator to connect you with your destination, waiting for a family member to get off the internet so you can make a phone call, to receiving the ‘You’ve got mail’ notification, to witnessing all these features materialize right in the palm of our hands via our cellphones– it almost feels surreal, doesn’t it?</p> <p>Say you zap one of your ancestors from a few centuries ago and bring them to your current reality and introduce them to the wonders of today's living, imagine the bewilderment on their face. What about the look on your face reacting to their reaction? It’d be one priceless viral sensation waiting to explode. I bet you’d spend days trying to convince them it’s not witchcraft.</p> <p>It’s not witchcraft. It’s years and years of knowledge built upon existing concepts in order to make them better. That way our time on earth becomes a little less boring.</p> <h2> About Us </h2> <p><strong><a href="proxy.php?url=https://dev.to/rfornal">BOB</a></strong>:</p> <p>I’ve been writing code since I was ten years old; somewhere around 1978 I saw an advertisement for a computer that “will satisfy your lust for power.” From there, I got a Computer Science degree, leaving college in 1990 (the Internet was just starting to become a thing). I learned to write code in classes and from books.</p> <p>Out of college, I struggled to find my way; and in 1994, I accepted a position teaching computers to inmates in a prison that had recently opened. I spent a decade there and about 25 years total teaching computers in one form or another.</p> <p>Along the way, I taught myself to write frontend code. This was no different than most of the learning I had done since I was young.</p> <p>Then I ran into an opportunity to get back into development; to do what I love, “write code.” That was somewhere around 2010. I got to see some amazing tools and libraries come and go; all the while learning and exploring.</p> <p>In 2016, I left that position for <a href="proxy.php?url=https://www.leadingedje.com/">Leading EDJE, Inc</a> where I get to solve problems writing code every day.</p> <p><strong>JACK</strong>:</p> <p>Fairly new to the world of coding but not entirely a newbie to the world of programming in general (depending on when you have decided to give this a read) I am going through an online coding Bootcamp and learning Full Stack Web Development with a cohort of more than a thousand other self-taught programmers. We call ourselves 100Devs and we are a global community of enthusiastic individuals ready to add our quota to the tech industry.</p> <p>By the end of this article, if you still doubt my credibility and ask what right of passage I have to assert my experience and provide you tips on what to do to make your journey seamless, then I would have done a horrible job. </p> <p>And if you don’t want to take my word for it, take Bob’s. You would do yourself a massive disservice if you don’t take Bob’s. Bob has close to 4 decades of knowledge and experience in all things programming.</p> <h2> Why are we qualified to talk about this topic? </h2> <p><strong>BOB</strong>:</p> <p>All of my learning over the years has been self-taught. I did get a college degree, but that just added a polish to what I already knew. My communication and research skills benefited greatly from my time in school, but code has always been something deeply personal to me.</p> <p><strong>JACK</strong>:</p> <p>I have my stats. Stats that are verifiable by my online presence via <a href="proxy.php?url=https://twitter.com/Bellsofaba">Twitter</a>, <a href="proxy.php?url=https://github.com/bellsofaba">GitHub</a> and some few other projects and portfolios that didn’t make the cut for this article. </p> <p>I have also dedicated time to learning about coding daily by participating in the 100DaysofCode challenge on Twitter. </p> <p>I am not alone in this challenge as it is an ongoing and trending collection of tech - twitter posts that show up daily on your timeline. This is only contingent on an active following of the latest posts from tech twitter. </p> <p>It was via my earlier days of posting my 100DaysofCode challenge that Bob left me a rewarding and encouraging comment to keep up with my learning.</p> <h2> ALIENS… ALIENS DID IT </h2> <p><strong>JACK</strong>: </p> <p>Who’s responsible for all these innovations? A few episodes into watching NATGEO would have you fully immersed in the conspiracy theory of alien architects. It’s unattainable by humans. It’s lightyears ahead of our technology, it’s not something the human brain or cognitive ability can fathom let alone muster. Sigh. </p> <p>I doubt anyone reading this would subscribe to that degree of thinking but whatever rocks anyone's boat.</p> <h2> THE MARVELOUSNESS THAT IS YOU </h2> <p>Humans, by our sheer ingenuity, continue surpassing the expectations and raising the bar for what was seemingly impossible to achieve in the past. It’s admirable; it makes you wonder how further out we can venture. What else is possible? </p> <p>Over the last fifty years, technology has progressed rapidly to the point where we have begun taking it for granted. And why not? Its accessibility is all over the place; it's not just celebrities or the military that hold exclusivity to them anymore. </p> <h2> BAD TECH </h2> <p>The certainty is this, there are visible pros and cons associated with having techy things as part of our lives. On the one hand, life is easier on so many spectra. On the other hand, it has heightened dissociation from reality, aided the rise in cyber-related immoralities and multiplied tone deafness by a thousand fold, toning down empathy and making humans almost machine-like. </p> <h2> TECHNOLOGY PIONEERS </h2> <p>That’s not why we are here. Pardon the digression. You are here to get the magic combinations that would make your self-taught programmer journey worthwhile. You know, to reinforce your decision to thread on to the end (DISCLAIMER: There is no end to learning and improving your software-related knowledge) without quitting. But I was hoping to make a point - humans committed to their craft make impossible things seem possible and almost like magic. </p> <p>How do we do it? Is there a special god-mode switch that the likes of Thomas Edison, Nikola Tesla and Elon Musk have that we don’t? No. Turns out, they are just regular humans like you and me. We needn’t go that far to make comparisons with what software development entails. It’s pretty basic (or not) and with a consistent bout of determination, you would realize your goal in no time. However, there are tenets and etiquettes you have to abide by so that it is not too daunting.</p> <p>NOT LIKE RIDING A BIKE</p> <p><strong>BOB</strong>:</p> <p>I often preach the three things I see that most developers need, “Patience, Persistence, and Practice.” Learning to write code and do it well takes time and practice; at the same time a willingness to fail with some regularity.</p> <p><strong>JACK</strong>:</p> <p>When it comes to coding and programming, it is almost tedious, repetitive and at the start, to a large extent like gibberish. It doesn’t seem to make any sense at all. The syntax is not something you’d expect a human being to randomly know at any point. Dare I say, that you would both be right and wrong? </p> <p>Right, in the sense that you don’t randomly just know these things. On the other hand, it is usually a person like you and I that invents any of these languages. Take JavaScript, for example, Brendan Eich created it at Netscape.</p> <p>Several other languages and frameworks associated with programming exist today and they were all written by humans. Humanity consistently proves that we do know what we are doing. However, you have to approach certain things with finesse and a drive that is laser-focused. </p> <p>If you have attempted coding and stopped in the past, then you know that coding is not like riding a bike. It will not be waiting for you to set it all into motion say you take a long break and suddenly decide you want to have a go at it once more.</p> <p>You’d have to restart from somewhere in order to get close to the footing you previously were. In contrast to riding a bike, it’s more like Math – it requires a constant barrage of brain challenges directed at your neurons that make your synapses scream “what the HECK IS GOING ON? “</p> <p>The underlying fact is the difficulty involved. It is hard.</p> <p>But again, there is hope when you know how to hack it.</p> <h2> HACK IT </h2> <p>If you are at the very beginning, ready to take a full swing at this self-taught programmer stuff, I will tell you one thing that should resonate with you intensely, you’ve got this. </p> <p>In case you hadn't noticed, this article is a collaborative effort between Bob and I. And I have also had the pleasure of interviewing some Self-Taught Programmers whose journeys and valuable insights I will be sharing with you.</p> <h2> SLOW AND STEADY </h2> <p>The first thing you should consider is resetting your mind to a state of learning that is going to be slow, strenuous and challenging. This is manageable because you can employ what is known as the Pomodoro technique. That way, you can learn for hours, taking breaks in between without quitting or getting easily distracted.</p> <p>This helps you steer clear of burnout. Burnout is real, you cannot take what usually takes a few months and even years of learning material and cramp it all in a few days. That is the fastest way to dread what you are doing.</p> <p>So, each day, if you have the privilege of time, dedicate an hour or as much as you can comfortably spare to broaden your knowledge.</p> <p>Ultimately, you would want to liken your learning process to a marathon, as opposed to a sprint.</p> <h2> ROADMAP TO A LAND OF ADVENTURE </h2> <p>Having a roadmap is key. You should know the path for your journey. Where you are, where you intend to be in the short term and where you plan to be in the long term.</p> <p>Figure out what aspects of programming you would love to tackle. What things measure your strengths and which ones show you where you are lagging behind? </p> <p>There are generally two routes you can consider: </p> <ul> <li><p>Front-end web development. Here is a <a href="proxy.php?url=https://www.youtube.com/watch?v=WG5ikvJ2TKA&amp;list=LL&amp;index=67">YouTube video</a> that succinctly describes this concept in a summary.</p></li> <li><p>Back-end web development. Here is yet another <a href="proxy.php?url=https://www.youtube.com/watch?v=XBu54nfzxAQ&amp;t=431s">YouTube video</a> to help you understand what this entails.</p></li> </ul> <p>OR…</p> <p>You could combine both and learn full-stack web development. Sounds cool but again, that’s too much commitment for a beginner. If you are looking to work with startups, it wouldn’t necessarily be a bad idea as full-stack web developers are mostly sought out by start-ups and/or medium to small-scale companies where staff numbers are not as much and delegation of work is limited to a small number of employees.</p> <h2> Where to get Free Learning Resources </h2> <p>Welcome to the internet age where almost any information you are looking for can be found online. For FREE. That’s right, even learning that is as intense as programming. There are a lot of websites where you can go from learning the most basic programming concept to mastering them – depending on your commitment and ability to grasp information.</p> <p>Here are a few of the most recommended platforms where you can find full curriculums of learning:</p> <ul> <li><a href="proxy.php?url=https://www.freecodecamp.org/">freeCodeCamp</a></li> <li><a href="proxy.php?url=https://www.theodinproject.com/">The Odin Project</a></li> <li><a href="proxy.php?url=https://www.edx.org/cs50">CS-50</a></li> <li><a href="proxy.php?url=https://www.udemy.com/">Udemy</a></li> <li><a href="proxy.php?url=https://www.youtube.com/">YouTube</a></li> <li><a href="proxy.php?url=https://developer.mozilla.org/en-US/">Mozilla Developer Network</a></li> <li><a href="proxy.php?url=https://css-tricks.com/">CSS Tricks</a></li> <li><a href="proxy.php?url=https://javascript30.com/">JavaScript30</a></li> </ul> <p>There are a bunch of other websites where you can learn just about any web programming concepts for free. You just need to google them.</p> <h2> Hack it even further </h2> <p>These are a collection of habits you can build that would help you make the entire process of learning tolerable. And though you will not need to totally immerse yourself with learning basic concepts after landing your first tech job, the process of learning will not stop. These constitute the things you can add to your artillery of to-do list so that consistency becomes a daily routine for you.</p> <h3> Effective time management </h3> <p>Certain tasks require a repetition that is done on a regular basis. Learning on your own can be challenging because you are the author of how and when you study. There is also the question of how long you will need to study for so that it is adequate to learn something new and not too much that it becomes something you would dread.</p> <p>As such, setting up a quiet time each day that would see you use your time efficiently is something you should consider. If you have your hands full during the day and are too tired to dedicate any time to study at night, a better alternative to this would be to wake up a bit earlier in the morning.</p> <h3> Spaced repetition and active recalls </h3> <p>There is a unique way to enhance your learning process – without the need to learn everything from scratch each day. This is spaced repetition. Spaced repetition has been shown to be one of the most effective ways of making your studies fun and unforgettable. It involves short sessions that are spaced so that learning is broken down into segments. You can <a href="proxy.php?url=https://www.edapp.com/blog/how-spaced-repetition-works/#:~:text=Spaced%20repetition%20involves%20multiple%2C%20short,which%20can%20bore%20your%20learners">learn more about it here</a>. </p> <p>When you learn using spaced repetition, you will study less but retain more information than you typically would if you were to reread a chapter every time in order to remember it. </p> <p>An effective tool you can use for this is <a href="proxy.php?url=https://apps.ankiweb.net/">ANKI</a>. It is a software you can install on your computer and you get to set up questions and answers on a deck of cards that you will create. While using spaced repetition, you can incorporate active recalls as well. Simply look at this as the Feynamn method. This is where you flip the original learning process on its head and explain in simpler terms what you have just learned. It is like explaining complex contents to a 5 year old. <a href="proxy.php?url=https://en.wikipedia.org/wiki/Rubber_duck_debugging">Rubber duck debugging</a> might come into play for your active recalls as well.</p> <h3> Frustrations management </h3> <p><strong>BOB</strong>:</p> <p>For me, managing frustration is learning that “banging your head against the wall hurts” and clients aren’t really impressed with “how far a laptop can fly.” Knowing that my code will rarely work the first time is simply a first step in a larger process of understanding how to get better and improve not just the code, but your processes as well.</p> <p><strong>JACK</strong>:</p> <p>You will get pissed. Not once, not twice, but a whole lot. Learning to code and the urge to smash your PC or keyboard against the monitor are synonymous. But again, choose peace. </p> <p>When you stumble upon a programming concept that’s too difficult for you to traverse, take a step back and get away from it for some time. </p> <p>Your brain might be fogged at the time. This builds frustration towards the thing you are unable to get a hold on. At such moments, this might be your cue to log off for a bit. Get away from the screen. Take a walk, talk with someone about something unrelated and give your brain some time to adjust. <a href="proxy.php?url=https://twitter.com/leonnoel">Leon Noel</a> usually says “there is no need to bang your head against the keyboard. “</p> <p>After taking a break, so many people find that they get a sudden bout of clarity when they return to a coding challenge. And if you still don’t find a solution, break down the problem to little chunks and work your way up from there.</p> <p><a href="proxy.php?url=https://twitter.com/AzizliKanan">Kenan Azizli</a> mentioned one way he effectively deals with burnout and learning frustrations is to have a go at a coding challenge with other people. This is one unique way to look at it, as there are several people who can vividly explain a concept to you in ways you might not necessarily see from your point of reference.</p> <p>Kenan Azizli is a Software Engineer transitioning into the tech industry from being a Financial Analyst. They are also the host for <a href="proxy.php?url=https://twitter.com/chatwithhackers">chatwithhackers</a>, a podcast that discusses everything related to tech.</p> <p>Another useful insight was given by <a href="proxy.php?url=https://twitter.com/codEno_12">Eno</a>. </p> <p>On being asked how they deal with burnout, they gave two responses. </p> <p>"1 - C O M M U N I T Y</p> <p>Luckily, the people I met in the 100Devs community have been such a great support system. Knowing that I am not alone when it comes to burning out is such a relief. I have made good friends throughout my journey that I will get DMs here and there asking how I am doing when I don't show up for a couple of days.</p> <p>Burnout is going to hit anyone who decides to take coding seriously. There are just too many things to learn and I praise people who can go through the hardships alone. But I know I am not one of those people, so I rely on my friends when the difficult time arises. Of course, I do the same when I feel like one of my friends is showing signs of burnout. A simple "You got this" can really make a difference.”</p> <p>2 - Reminding myself that progress is progress and appreciate yourself</p> <p>The deeper we dive into code the more things we want to accomplish, at least for me. I have found myself setting a standard on how much I need to work every day (e.g. 3~5 hours at least of learning or creating projects). It's good when I am consistently meeting my standards, but when I don't, I feel terrible and it's a domino effect. It prevented me from feeling good about my accomplishments because I didn't complete task x or y. But that shouldn't be the case. Instead of focusing on what I didn't complete, I should have focused on what I did and the progress I made. </p> <p>So I try to pat myself on the back for the progress I made that day, even if it's only for 30 minutes. Because at least I am 30 minutes closer to my goal than I previously was!”</p> <p>Eno is a Software Engineer and a self-proclaimed pomodoro king. For the obvious reason that they effectively break down their studying into chunks that can go on for hours unend.</p> <p>At the end of the day, coming to terms that frustration will countlessly be a part of your learning process is something you have to embrace. It would happen again and again. How you intend to respond is what will determine how less hectic it would be in the future. </p> <h3> Motivation </h3> <p><strong>BOB</strong>:</p> <p>My motivation comes from a simple love of writing code and a passion for solving problems. I often tell people that if you are here just for the money, you will end up being miserable. Find your passion, lean toward your interests … you will get a much better return on your investment.</p> <p><strong>JACK</strong>:</p> <p>Having an insurmountable plethora of motivation will get you through your learning process from one stage to another. Ask yourself why are you doing what you are doing? Is it to be able to afford your dream job, your dream house, your dream vacation, a way to help other people automate difficult tasks?</p> <p>Whatever your reason, it is valid if it pushes you to become a better version of yourself. </p> <p><a href="proxy.php?url=https://twitter.com/itsBKokay">Brittany Keith</a> had this to chime in with regards to what motivates her. </p> <p>“That probably sounds silly, but I've started thinking of coding as modern day magic, rather than just something I want to do to get $$$. Thinking about all of the cool stuff I will be able to build once I am proficient has been more motivating than just thinking about a high salary.”</p> <p>Brittany Keith is a UX Designer &amp; Web Developer who’s passionate about education, problem solving, and usability and naps. </p> <p>It is clear that not everyone is entirely incentivized to learn coding for the sheer benefits alone. Like Brittany, there are a lot of other enthusiastic programmers who approach coding and all its perks as something to further their philanthropic cause.</p> <p><a href="proxy.php?url=https://twitter.com/AzizliKanan">Kenan Azizli</a> also had this to add in terms of motivation;</p> <p>“I have tried to learn to code for the last 9 years. Every single year, I would purchase some great programming books and even switch my favorite Windows devices to Mac solely because I thought only Macs could help me become the next Brin or Gates. The years passed and now I am 28 years old. Years will continue passing by, and one day I will be a 35-year-old Kanan. Now I have this choice, do I become a 35-year-old Kanan who is great at coding or a 35-year-old Kanan who is still thinking about starting to code? The choice is obvious. This is what helps me wake up in the morning and start coding.”</p> <p>The reasons vary for a lot of people. And whatever those reasons are, there is a vital trait that is needed to make ones drive a solidly tied knot that is devoid of inconsistency, and that, is discipline. </p> <p>You have to imbibe and imbody a discipline that helps you keep going when all hope seems to be lost. When none of the learning process seems to make any sense and when the feeling to give up is treading in the realms of quitting, discipline is one thing that will help get you through the trough of sorrow. Discipline gives you the boost to go hard on your goals. It helps you hold yourself accountable. That way, others will not do it for you.</p> <h3> Finding a Community </h3> <p><strong>BOB</strong>:</p> <p>I am co-authoring this article with a #100Devs Bootcamp member. I know that Jack talks about who and what they are in other parts of this article. However, I want to point out here the amazing community that I have watched come to live and evolve. This is a diverse group of people (in the thousands) from all over the world that simply want to learn, grow, and improve their lives. I have NEVER seen a community self-evolve the way this one has into an amazing, supportive, group of friends from all walks of life.</p> <p>Having a community is critical; the network and support can be critical to your learning process.</p> <p><strong>JACK</strong>:</p> <p>Community is everything in terms of coding. You just can’t comfortably do it on your own. On the off chance that you do attempt doing it on your own, well... here is a fair warning... it is going to be extremely lonely and difficult. Having a diverse range of devs to talk to cushions the blow in terms of the frustrations you would likely face. Earlier in this article, <a href="proxy.php?url=https://twitter.com/codEno_12">Eno</a> mentioned how having a <a href="proxy.php?url=https://leonnoel.com/100devs/">community</a> has helped them keep showing up.</p> <p>There are a lot of other communities you can find in your vicinity and online with regards to like mindedness and general support. Communities help you get in touch with people who are engrossed in the same thing as you are and those who understand the challenges you have as a software developer. You can collaborate on communities, attend hackathons together, solve different coding challenges together and recommend each other to jobs. </p> <p>Another reason communities are greatly helpful is that they help you deal with imposter syndrome. This is a feeling of inadequacy and not feeling good enough. A lot of developers and software engineers deal with this regularly. It is not exclusive to beginner software engineers either as senior software engineers also deal with it. Although, not as frequent. More on the topic can be found <a href="proxy.php?url=https://www.verywellmind.com/imposter-syndrome-and-social-anxiety-disorder-4156469">here</a>.</p> <h3> Networking </h3> <p><strong>BOB</strong>:</p> <p>Getting a job without networking is simply a numbers game. How many resumes you submit can directly impact the number of job offers you get over time … but there is no guarantee that it will be a job or company you are interested in. Take the time to learn to network properly so that people in the industry know who you are and what you are interested in. When the time comes to look for work, it’s amazingly helpful to have that network in place.</p> <p>From my perspective, having that network also provides insight into what the industry is doing, what the trends are over time.</p> <p><strong>JACK</strong>:</p> <p>This is actively putting yourself out there in the midst of other people who share the same profession or passion as you. Networking can introduce you to a whole other side of software engineering or coding in general. If you are good at it, you get to meet and communicate with folks in the industry who are passionate in helping others attain certain life and personal goals. </p> <p>If networking is not a strong suite of yours, you might want to dedicate some time to understanding people. A good resource is <strong>Dale Carnegie’s - How to win friends and influence people</strong>, self improvement book. It has the ins and the know-how of interacting with people in a way that is not pushy but modest.</p> <p>A few places to start your networking could be via <a href="proxy.php?url=https://www.meetup.com/lp/how-to-group-start">meetup</a>. It requires an online registration. However, meeting up with folks could be in person or online.</p> <p>Another great platform to meet and communicate with people is Lunchclub. Unlike meetup, meetings happen strictly online and you get to set up and communicate with people who share the same interests and passions as you do.</p> <h3> Build Stuff </h3> <p>Finally, when learning, feeling the need to over compensate your learning process and master every little thing becomes something you struggle with. If you can, and ideally, you should approach your learning by building new projects. </p> <p>This is the fastest way to maximally grasp most of the things that you will be learning. This way, you are fully implementing what you are learning and watching it come to life as opposed to learning without practicality and getting stuck in what is referred to as tutorial hell – learning and learning non-stop without the need to get any real project up and kicking. </p> <p><a href="proxy.php?url=https://twitter.com/RAllanVila">Alan Vila</a> and I had an extensive coffee chat about project based learning. He is a great advocate for project based learning as this was how he was able to successfully attain his learning and software engineering goals.</p> <p>I couldn't agree more as this is one route you can take to make your learning stick faster. It is only by practically applying knowledge you have learned that the concepts start to make sense to you. </p> <p>You can approach building projects on your own by getting right to it while using google to build up whatever you are looking to build from start to finish. Or, you could follow along with coding tutorials on YouTube. The downside to this is that it will not be as mentally stimulating as solely building something on your own.</p> <h2> conclusion </h2> <p>We have made it to the end. </p> <p>The major takeaway is that whatever you do on a regular basis adds up over time. Ideally, it should be your efforts towards becoming a software engineer - a software engineer that knows their whys, knows how to make routine a habit, has a passion to build things via code, can effectively work within a team, while also learning and sharing ideas in the process.</p> <p>Finally, I’d like to appreciate Bob for gracing this article with his years of knowledge. He has been both a friend and a mentor.</p> <p>Whenever you can, or if you ever need to talk with a Senior software engineer that is brimming with industry knowledge, expertise, and an experience that is older than I am (with regards to growth in the tech industry and all things that pertain to life in general) </p> <p>I urge you to reach out to Bob via <br> <a href="proxy.php?url=https://twitter.com/rfornal">Bob.ts</a> Twitter or one of his many socials. I am confident he’d be glad to show you the ropes and offer you some lifetime tips.</p> <p>Go ye forth and prosper. </p> <p>Prosper with vigor and an eagerness to watch yourself succeed in a terrain that is difficult but not too high nor steep for your goals.</p> <p>Prosper my kind friend.</p> software programming beginners webdev Giving Back to the Tech Community bellsofaba Wed, 27 Apr 2022 20:03:47 +0000 https://dev.to/bellsofaba/giving-back-to-the-tech-community-mkf https://dev.to/bellsofaba/giving-back-to-the-tech-community-mkf <p>This is a joint article, written by <a href="proxy.php?url=https://dev.to/rfornal">Bob Fornal</a> and <a href="proxy.php?url=https://hashnode.com/@bellsofaba" rel="noopener noreferrer">Jack</a></p> <h3> <strong>[BOB]</strong> An Idea </h3> <p>I’ve been a developer full time for about 12-years.</p> <p>Somewhere in the first few years, I had a conversation with my teammates about the resources we used daily when writing code: StackOverflow, Articles, YouTube, documentation, and more. Most of the resources are free for anyone to use.</p> <p>I realized during this conversation that I had a “responsibility to give back to the tech community” that I had been taking so much from.</p> <h2> <strong>[BOB]</strong> Conferences </h2> <p>Prior to getting into development, I taught computers. In fact, I taught for almost 25-years.</p> <p>So, being a teacher and loving to write code, it was a logical first step for me to get into the speaking circuit.</p> <p>I started with several meetups that I was familiar with, run by friends of mine.</p> <p>I had been attending several great conferences in and around Columbus, Ohio. I simply started applying when I saw their Call-For-Paper posts.</p> <ul> <li><a href="proxy.php?url=https://www.codemash.org/" rel="noopener noreferrer">CodeMash</a></li> <li><a href="proxy.php?url=https://stirtrek.com/" rel="noopener noreferrer">StirTrek</a></li> <li><a href="proxy.php?url=https://www.javascriptandfriends.com/" rel="noopener noreferrer">JavaScript and Friends</a></li> <li><a href="proxy.php?url=https://www.qaorthehighway.com/" rel="noopener noreferrer">QA or the Highway</a></li> <li>CodeCamp (no longer running)</li> </ul> <h2> <strong>[BOB]</strong> Articles </h2> <p>I started with my current company in December of 2016.</p> <p>They have always supported having their developers show their expertise via articles (or blogs). In fact, they will often pay for us to post articles. A few of mine have a link to <a href="proxy.php?url=https://www.leadingedje.com/" rel="noopener noreferrer">Leading EDJE</a> since I got paid to publish them.</p> <p>But the articles weren’t always on <a href="proxy.php?url=https://dev.to/">DEV.TO</a>.</p> <p>It used to be that someone from leadership asked a developer to write an article and we submitted a document that then got reformatted and posted on the company website.</p> <p>I was asked to write an article.</p> <p>The article I wrote was long, but detailed. I was asked to cut it down <strong>TO 25-PERCENT</strong> of the original. Not wanting to shred my article I started looking for a solution that would work better for our company.</p> <p>I eventually settled on <a href="proxy.php?url=https://dev.to/">DEV.TO</a>.</p> <h2> <strong>[BOB]</strong> #100DaysOfCode </h2> <p>In October of 2021, I was preparing a presentation for <a href="proxy.php?url=https://www.codemash.org/" rel="noopener noreferrer">CodeMash</a>. I was excited because this was to be the first in-person talk I gave in two years.</p> <p>I posted something on Twitter about how excited I was to be giving this talk. At that time, I had 70 or so followers.</p> <p>I checked back 5-days later to see that no one had Liked, Retweeted, or Posted on my tweet. I tell people that I felt like “I was screaming into the void.”</p> <p>No one heard me.</p> <p>Fifty-three at the time and working professionally for almost 38-years, I wasn’t too stressed by this revelation.</p> <p>I did however notice that #100DaysOfCode was all over my feed. And I saw that they were in the same position I was.</p> <ul> <li>Some people were posting about some amazing success.</li> <li>Some people were posting about their daily struggles.</li> <li>Some people were screaming for help, hoping someone would listen.</li> </ul> <p>I decided to start Liking and Replying.</p> <p>These replies when something like this …</p> <blockquote> <p>That looks great. Keep up the good work!</p> </blockquote> <p>… nothing complicated, right?</p> <h2> <strong>[JACK]</strong> #100DaysOfCode </h2> <p>After several years of chasing an unfathomable and not so clear career path, my mind snapped. </p> <p>I couldn’t keep up with the vagueness of what stood before me. </p> <p>Do I continue going down this path and remain uncertain about what it was I was chasing? Or do I get a grip and climb up the mountain that is Software Development? </p> <p>If you are reading this, then it’s not so hard to imagine the choice I went with. I chose certainty. </p> <p>Thus far, I can affirm that my convictions were right on this one. </p> <p>After deliberating for years, I finally took the plunge to transition into software development by the end of autumn of 2021. What changed was accepting that things wouldn’t change. Not until I did. </p> <p>I had considered joining boot camps (tuition deferment boot camps) but made the decision to go at it solo. </p> <p>Self-learning is accepting that the responsibility to excel in this field is mine. And down the road, pick up influences through networking. </p> <p>I welcomed the difficulty. I try convincing myself to go head first at problems and not relent despite what hurdles I encounter. Yet, what greeted me during my early days of learning HTML was something my mind hadn’t totally prepared me for. </p> <p>The doubts crept in on week 1.</p> <p>“Why does it look like long sets of math problems all over again?" </p> <p>"How was I supposed to have known that there should be a quote there?" </p> <p>"Where am I supposed to insert this class or id attribute?"</p> <p>"What am I doing? “</p> <p>“Will I be able to eventually grasp this much stuff?”</p> <p>"What are you doing Jack, are you sure you can do this?” </p> <p>Regardless, I chose to update the world and myself on my progress on a regular basis. </p> <p>Twitter, via the #100DaysOfCode hashtag came in handy.</p> <p>Enter Bob, Senior Solutions Developer (EJDE) on the opposite spectrum of gatekeepers. </p> <p>His encouraging words for me at the time were a lifeline. </p> <p>Software development is a very difficult terrain to plow through. But to a beginner, any words of encouragement no matter how little are enough to keep them going. I kept going. </p> <p>Here’s the link: <a href="proxy.php?url=https://twitter.com/rfornal/status/1473483755620814859?s=21" rel="noopener noreferrer">BOB replied to JACK’s post</a></p> <h2> <strong>[BOB]</strong> #100Devs </h2> <p>In January of 2022, I saw a bootcamp start up. It was a rather unique bootcamp, as I was to learn.</p> <p>What I saw the first week was <strong>thousands</strong> of terrified people on the first and second days of class.</p> <p>The teacher in me had to respond. The messages didn’t change, but my purpose did.</p> <p>Helping newer developers in the Tech Twitter community became somewhat of a mission to me.</p> <h2> <strong>[JACK]</strong> #100Devs </h2> <p>#100Devs, an agency with a FREE 30 - Week Software Engineering Bootcamp was back for a second cohort. </p> <p>Several thousand people who were impacted by the pandemic from all nooks and crannies of the world signed up. </p> <p>It was the start of the new year. And it wasn't short of enthusiastic, and terrified individuals all looking to move mountains. </p> <p>The agency offers a sense of belonging, community, purpose, freedom, and the best part, a flock of folks on the same boat.</p> <p>The catch? Be on your best behavior and encourage others in the same vein that you would like for yourself. </p> <p>I felt welcomed. The community works perfectly for self-learners. </p> <p>It adorns a structure that makes learning challenging, fun, and inclusive. And even though it remains free, it requires that folks push themselves. </p> <p>And the best way to do so is to dedicate ample time to calendars for progressing. That is because learning to learn is a requirement. </p> <p>Additionally, there's typing practice, helping others, and networking, among others. For networking, virtual coffee chats are ideal in a pandemic-riddled world. </p> <p>Bob, as did other Devs in the industry, opened up his schedules to the community. We flocked to whatever coffee chats there were and still do like a swarm of bees.</p> <h2> <strong>[BOB]</strong> Coffee Chats </h2> <p>One of the #100Devs requirements is to begin networking. The meetings they were to schedule were called “Coffee Chats.”</p> <p>In the first few months, I did hundreds of Coffee Chats.</p> <p>I learned to schedule responsibly on Calendly.</p> <p>I got to spend some 1-on-1 time getting to hear their stories.</p> <p>In my reflections, I came up with some advice about setting goals, finding companies, and learning to stand out during the hiring process.</p> <p>It has been a tremendous amount of fun.</p> <h2> <strong>[JACK]</strong> Coffee Chats </h2> <p>Networking is one of the tenets of building a solid career in any field. It allows access to a well of opportunities you might ordinarily not be able to come across on your own.</p> <p>It is no different in tech. To succeed, it is ideal to enquire about ideas, insights, and the experiences of others. </p> <p>Coffee chats are a great way to enhance acquaintanceships that may blossom. I reached out to Bob for a coffee chat. However, my first message to him wasn't about requesting a coffee chat. Rather, I chose to appreciate his words of encouragement during my early days of starting out. That's one way to go about it. </p> <p>To not come off as entitled, you should start these conversations by offering some kind of value. People have matters that they regularly tend to and wouldn't necessarily be available for a coffee chat. We all know of folks demanding a fee to offer 10 - 15 minutes of their time. But that's beside the point. </p> <p>During our coffee chat, Bob and I spoke at length. I received so much industry knowledge that resonated with my curiosity. He recommended approaching several companies to seek out information on the potential candidates they look for, falling in love with code and others. </p> <h2> Summary </h2> <p><strong>[BOB]</strong> Somewhere along the way, Jack reached out to me about a Coffee Chat. He pointed out that I had reached him in some way. In that early Twitter DM, I saw the seed of this joint article. I hope you enjoyed hearing about our journey.</p> <p><strong>[JACK]</strong> You can find the post I made about said coffee chat via this tweet I made <a href="proxy.php?url=https://twitter.com/bellsofaba/status/1496993159486017536?s=21&amp;t=8xJyZN2NKSXNmIKBfqYsEg" rel="noopener noreferrer">here</a>.</p> <p><strong>[JACK]</strong> If you take a peek at that tweet and those words don't speak volumes on how to improve professionally, mentally and personally, then I don't know what will.</p> <p>Thanks for reading.</p> webdev beginners career codenewbie