<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ojay</title>
    <description>The latest articles on DEV Community by Ojay (@oj_redifined).</description>
    <link>https://dev.to/oj_redifined</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F391902%2Feaab4ddc-8345-4f40-b3af-80bdb0043373.jpeg</url>
      <title>DEV Community: Ojay</title>
      <link>https://dev.to/oj_redifined</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oj_redifined"/>
    <language>en</language>
    <item>
      <title>Enforcing Git Branch Naming Standards: Tools and Tips for Developers</title>
      <dc:creator>Ojay</dc:creator>
      <pubDate>Mon, 16 Dec 2024 17:26:16 +0000</pubDate>
      <link>https://dev.to/oj_redifined/enforcing-git-branch-naming-standards-tools-and-tips-for-developers-1p27</link>
      <guid>https://dev.to/oj_redifined/enforcing-git-branch-naming-standards-tools-and-tips-for-developers-1p27</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Writing code is for humans, not just machines. Every aspect of software development, from variable naming to project structure, should prioritise clarity and collaboration. One often overlooked element of developer communication is branch naming. A clear and consistent branch naming convention can transform a chaotic Git workflow into a seamless, human-friendly process.&lt;/p&gt;

&lt;p&gt;In this article, we’ll explore how to implement branch naming conventions that enhance collaboration and productivity on GitHub. Whether you are working on a solo project or a large team, these practices will help you stay organised and efficient.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Branch Naming Matters
&lt;/h3&gt;

&lt;p&gt;Branch names are more than just labels. They:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Communicate the purpose of a branch at a glance.&lt;/li&gt;
&lt;li&gt;Help team members quickly understand ongoing work.&lt;/li&gt;
&lt;li&gt;Tie development efforts to specific features, fixes, or issues.&lt;/li&gt;
&lt;li&gt;Simplify code reviews, testing, and deployment processes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A poorly named branch can confuse collaborators and lead to mistakes, while a well-named branch sets the stage for smooth collaboration.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Simple Naming Convention
&lt;/h3&gt;

&lt;p&gt;Here’s a flexible structure for naming your branches:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;type&amp;gt;/&amp;lt;scope&amp;gt;/&amp;lt;short-description&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;type&lt;/strong&gt;: What kind of work is being done? (e.g., feature, fix, chore, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;scope&lt;/strong&gt;: Which part of the project does this branch affect? (e.g., ui, api, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;short-description&lt;/strong&gt;: A concise description of the branch’s purpose.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Examples of Common Branch Types
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Feature Development&lt;/strong&gt;&lt;br&gt;
Used for building new features.&lt;br&gt;
Example: feature/ui/login-page&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bug Fixes&lt;/strong&gt;&lt;br&gt;
Used for resolving bugs in the code.&lt;br&gt;
Example: fix/api-endpoint-error&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Chores&lt;/strong&gt;&lt;br&gt;
Used for non-feature tasks like refactoring or updating dependencies.&lt;br&gt;
Example: chore/update-dependencies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hotfixes&lt;/strong&gt;&lt;br&gt;
For urgent fixes to production.&lt;br&gt;
Example: hotfix/security-patch&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Releases&lt;/strong&gt;&lt;br&gt;
For preparing production releases.&lt;br&gt;
Example: release/1.0.0&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Narrowing Down Features
&lt;/h3&gt;

&lt;p&gt;Sometimes, work on a feature needs to be divided into specific tasks like UI implementation and API integration. For these cases, specify the scope:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UI Work&lt;/strong&gt;: feature/ui/login-page&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Work&lt;/strong&gt;: feature/api/login-endpoint&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This division makes it easier for teams to work in parallel without conflicts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enforcing the Convention
&lt;/h3&gt;

&lt;p&gt;To ensure developers follow the naming convention:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Document It&lt;/strong&gt;: Include the rules in a &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Templates&lt;/strong&gt;: Add a checklist in your pull request template.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set Up Automated Checks&lt;/strong&gt;: Use GitHub Actions or pre-push hooks to validate branch names.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Adopting a branch naming convention is a small change with a big impact. It fosters better communication, reduces errors, and improves productivity across teams. As you implement this in your projects, remember: writing code is for humans. Every practice that enhances clarity and collaboration brings you closer to creating great software.&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>opensource</category>
      <category>developer</category>
    </item>
    <item>
      <title>Enforcing Git Branch Naming Standards: Tools and Tips for Developers</title>
      <dc:creator>Ojay</dc:creator>
      <pubDate>Mon, 16 Dec 2024 17:26:16 +0000</pubDate>
      <link>https://dev.to/oj_redifined/enforcing-git-branch-naming-standards-tools-and-tips-for-developers-5cj8</link>
      <guid>https://dev.to/oj_redifined/enforcing-git-branch-naming-standards-tools-and-tips-for-developers-5cj8</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Writing code is for humans, not just machines. Every aspect of software development, from variable naming to project structure, should prioritise clarity and collaboration. One often overlooked element of developer communication is branch naming. A clear and consistent branch naming convention can transform a chaotic Git workflow into a seamless, human-friendly process.&lt;/p&gt;

&lt;p&gt;In this article, we’ll explore how to implement branch naming conventions that enhance collaboration and productivity on GitHub. Whether you are working on a solo project or a large team, these practices will help you stay organised and efficient.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Branch Naming Matters
&lt;/h3&gt;

&lt;p&gt;Branch names are more than just labels. They:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Communicate the purpose of a branch at a glance.&lt;/li&gt;
&lt;li&gt;Help team members quickly understand ongoing work.&lt;/li&gt;
&lt;li&gt;Tie development efforts to specific features, fixes, or issues.&lt;/li&gt;
&lt;li&gt;Simplify code reviews, testing, and deployment processes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A poorly named branch can confuse collaborators and lead to mistakes, while a well-named branch sets the stage for smooth collaboration.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Simple Naming Convention
&lt;/h3&gt;

&lt;p&gt;Here’s a flexible structure for naming your branches:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;type&amp;gt;/&amp;lt;scope&amp;gt;/&amp;lt;short-description&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;type&lt;/strong&gt;: What kind of work is being done? (e.g., feature, fix, chore, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;scope&lt;/strong&gt;: Which part of the project does this branch affect? (e.g., ui, api, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;short-description&lt;/strong&gt;: A concise description of the branch’s purpose.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Examples of Common Branch Types
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Feature Development&lt;/strong&gt;&lt;br&gt;
Used for building new features.&lt;br&gt;
Example: feature/ui/login-page&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bug Fixes&lt;/strong&gt;&lt;br&gt;
Used for resolving bugs in the code.&lt;br&gt;
Example: fix/api-endpoint-error&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Chores&lt;/strong&gt;&lt;br&gt;
Used for non-feature tasks like refactoring or updating dependencies.&lt;br&gt;
Example: chore/update-dependencies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hotfixes&lt;/strong&gt;&lt;br&gt;
For urgent fixes to production.&lt;br&gt;
Example: hotfix/security-patch&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Releases&lt;/strong&gt;&lt;br&gt;
For preparing production releases.&lt;br&gt;
Example: release/1.0.0&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Narrowing Down Features
&lt;/h3&gt;

&lt;p&gt;Sometimes, work on a feature needs to be divided into specific tasks like UI implementation and API integration. For these cases, specify the scope:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UI Work&lt;/strong&gt;: feature/ui/login-page&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Work&lt;/strong&gt;: feature/api/login-endpoint&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This division makes it easier for teams to work in parallel without conflicts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enforcing the Convention
&lt;/h3&gt;

&lt;p&gt;To ensure developers follow the naming convention:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Document It&lt;/strong&gt;: Include the rules in a &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Templates&lt;/strong&gt;: Add a checklist in your pull request template.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set Up Automated Checks&lt;/strong&gt;: Use GitHub Actions or pre-push hooks to validate branch names.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Adopting a branch naming convention is a small change with a big impact. It fosters better communication, reduces errors, and improves productivity across teams. As you implement this in your projects, remember: writing code is for humans. Every practice that enhances clarity and collaboration brings you closer to creating great software.&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>opensource</category>
      <category>developer</category>
    </item>
    <item>
      <title>My Journey as a Backend Developer: Tackling Complex Problems and Embracing the HNG Internship</title>
      <dc:creator>Ojay</dc:creator>
      <pubDate>Fri, 05 Jul 2024 23:56:18 +0000</pubDate>
      <link>https://dev.to/oj_redifined/my-journey-as-a-backend-developer-tackling-complex-problems-and-embracing-the-hng-internship-10gd</link>
      <guid>https://dev.to/oj_redifined/my-journey-as-a-backend-developer-tackling-complex-problems-and-embracing-the-hng-internship-10gd</guid>
      <description>&lt;p&gt;Hey there! I'm a passionate software developer from Nigeria, and today, I want to share a recent challenge I faced and how I overcame it. I believe that a big part of being a backend developer is not just about writing code, but also about solving problems and continuously learning. Plus, I want to tell you all about the exciting journey I'm about to start with the HNG Internship and why I chose this path.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Challenge: Optimizing Database Performance
&lt;/h3&gt;

&lt;p&gt;Recently, I was working on a project that required handling a large volume of data in a PostgreSQL database. Everything seemed to be running smoothly until we started experiencing significant performance issues. Queries that used to take milliseconds were now taking seconds, and the overall user experience was deteriorating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step-by-Step Solution
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Identifying the Bottleneck
&lt;/h4&gt;

&lt;p&gt;The first step in solving any problem is understanding its root cause. I started by using the PostgreSQL slow query log to identify which queries were taking the most time. It turned out that several of our JOIN operations were causing delays due to the large datasets involved.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Analyzing and Optimizing Queries
&lt;/h4&gt;

&lt;p&gt;Next, I analyzed these slow queries to see if they could be optimized. I found that some of the JOIN operations were unnecessary and could be replaced with simpler subqueries. Additionally, I made sure to use indexes effectively. By adding indexes to the columns used in the WHERE clause and JOIN operations, the query performance improved significantly.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Implementing Caching
&lt;/h4&gt;

&lt;p&gt;Despite optimizing the queries, there were still some performance issues due to the sheer volume of data being processed. To tackle this, I implemented caching. By caching the results of frequently accessed queries, I was able to reduce the load on the database and speed up response times for users.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Database Sharding
&lt;/h4&gt;

&lt;p&gt;For a more long-term solution, I explored database sharding. This involved splitting the large dataset into smaller, more manageable pieces, and distributing them across multiple servers. By doing so, each query had to process less data, further improving performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lessons Learned
&lt;/h3&gt;

&lt;p&gt;This experience taught me a lot about database optimization and the importance of efficient query design. It also reinforced my belief that problem-solving is at the heart of backend development. No matter how complex the issue, there's always a way to break it down and find a solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Embarking on the HNG Internship
&lt;/h3&gt;

&lt;p&gt;I'm thrilled to share that I've been accepted into the &lt;a href="https://hng.tech/internship" rel="noopener noreferrer"&gt;HNG Internship&lt;/a&gt;! This is a fantastic opportunity for me to learn, grow, and connect with other passionate developers. The HNG Internship is known for its rigorous training and hands-on projects, and I can't wait to dive in.&lt;/p&gt;

&lt;p&gt;One of the main reasons I chose to join the &lt;a href="https://hng.tech/internship" rel="noopener noreferrer"&gt;HNG Internship&lt;/a&gt; is the emphasis on real-world experience. As someone who thrives on tackling challenging problems, I believe this internship will provide me with the perfect platform to sharpen my skills and take my career to the next level.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Being a backend developer is an exciting journey filled with challenges and opportunities for growth. By sharing my experiences and solutions, I hope to inspire others to embrace problem-solving and continuous learning. I'm looking forward to the incredible journey ahead with the HNG Internship and can't wait to see where this adventure takes me!&lt;/p&gt;

&lt;p&gt;Thank you for reading, and if you're interested in learning more about the HNG Internship or hiring talented developers, check out &lt;a href="https://hng.tech/hire" rel="noopener noreferrer"&gt;HNG Tech&lt;/a&gt; for more information.&lt;/p&gt;

</description>
      <category>postgressql</category>
      <category>backend</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I failed a coding Interview 😞</title>
      <dc:creator>Ojay</dc:creator>
      <pubDate>Sun, 02 Oct 2022 21:44:59 +0000</pubDate>
      <link>https://dev.to/oj_redifined/i-failed-a-coding-interview-4jd6</link>
      <guid>https://dev.to/oj_redifined/i-failed-a-coding-interview-4jd6</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;“Hi Oj, thanks for meeting Matt today for a second interview. After careful consideration, we decided not to move forward at this moment…”  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a response I received from a CTO looking to hire a React Native developer. So, what did I learn?&lt;/p&gt;

&lt;p&gt;As a Nigerian living in Nigeria who is trying to switch jobs with an offshore company or start a career with an offshore company, It can be discouraging to hear comments like "So you have to be in the US for this job" or "we assumed you are in the US" despite the remote tag in the job description and even after a series of conversations with recruiters/hiring managers and attempting to pitch yourself and your skills; this could even be after you have scheduled a call or gotten on a brief Introductory call.&lt;/p&gt;

&lt;p&gt;But, unlike so many prior interactions with recruiters/hiring managers, this was not the case this time, because this specific company was more concerned with your competency than your location. After an initial introductory call with the CTO, who seemed very cool, I believed this could be a good team to work with because the personality of an organisation's leader can reveal a lot about its working culture. I was already imagining myself working with this amazing team.&lt;/p&gt;

&lt;p&gt;I was thrilled to learn more about the technical interview requirements, which turned out to be a React test rather than the more conventional algorithms test. I believe myself to be a proficient React developer and have worked with a few teams.&lt;/p&gt;

&lt;p&gt;Fast forward to the feedback after the technical Interview.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Hi Ojonugwa, Thank you for taking the time to interview at XYZ company (intentional omission). Unfortunately, we will not be moving forward at this time. I wish you the best in your future endeavours.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Feedback like this can cause you to go to bed earlier than you intended. Could it be that I was nervous or rusty from attending live-in technical interviews? I thought about it for a while before deciding to contact the CTO once more.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Hello, Apologies for bothering you, but is it possible for me to retake the technical interview?  I believe it would only be reasonable to request the opportunity to participate in another technical interview given that I consider myself to be a good developer and have been a part of a few teams that have developed decent products that have scaled. I admit to feeling nervous during my most recent attempt because it had been a year since my last live coding interview, hence the performance. I look forward to your response :).”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To my amazement, the CTO agreed to a second interview.&lt;/p&gt;

&lt;p&gt;This time, I practiced a little based on my prior experience and concentrated on the nervousness that comes with technical interview time limits.&lt;/p&gt;

&lt;p&gt;Fast forward to the feedback after taking the second technical Interview.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Hi Oj, thanks for meeting Matt today for a second interview. After careful consideration, we decided not to move forward at this moment. Feedback was similar, we believe you are a knowledged developer, but the way you structure your components and your problem-solving procedures can be improved. Thanks again for being interested in XYZ company (intentional omission), best of luck!”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This time, instead of being hard on myself, I opted to carefully consider the CTO's feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So What did I learn?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Technical interviews focus on your problem-solving approach rather than merely your ability to complete the given tasks.&lt;/li&gt;
&lt;li&gt;Try to demonstrate your technical prowess in your code rather than applying the quick fix to the task at hand.&lt;/li&gt;
&lt;li&gt;As much as possible, communicate your steps and intentions aloud.&lt;/li&gt;
&lt;li&gt;Prior to the interview, enquire as much as you can about the requirements and the other things they expect to see from you outside your ability to do the task at hand.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Importantly, honest and detailed feedback should drive you to continue learning and improving your competence.&lt;/p&gt;

</description>
      <category>interview</category>
      <category>developer</category>
      <category>hiring</category>
      <category>reactnative</category>
    </item>
    <item>
      <title>What Software organisations mean by Development, Testing, Staging, and Production environments</title>
      <dc:creator>Ojay</dc:creator>
      <pubDate>Tue, 26 Apr 2022 05:25:55 +0000</pubDate>
      <link>https://dev.to/oj_redifined/what-software-organisations-mean-by-development-testing-staging-and-production-environments-4jl9</link>
      <guid>https://dev.to/oj_redifined/what-software-organisations-mean-by-development-testing-staging-and-production-environments-4jl9</guid>
      <description>&lt;p&gt;I couldn't understand why we had these environments separated when I first joined my first software development team; it seemed logical to me that if everything worked well, we could move from the Development environment to the Production environment, but understanding why these environments are set in place quickly changed my mind.&lt;/p&gt;

&lt;p&gt;So let's take a look at the different environments, their uses, and why it is important to use them. It will become clear why we have these environments once you understand what they are intended for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Development Environment
&lt;/h2&gt;

&lt;p&gt;On your local PC, This is where you will&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Carry out all of your code updates using a number of productivity tools that may or may not be deployed to production alongside your code.&lt;/li&gt;
&lt;li&gt;Create new commits and branches, as well as see a copy of your teammates' commits and branches.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The developer keeps this environment up to date and contains the most recent version of the application. It'll be linked to a local database and (or) a data source via an API, allowing you to write code without affecting the real data. Because numerous employees will be working in the development environment on separate machines, you'll most likely be in charge of branch merging.&lt;/p&gt;

&lt;p&gt;It's important to note that nothing you do in the development environment affects what users see when they visit the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test or QA (Quality Assurance) Environment
&lt;/h2&gt;

&lt;p&gt;This environment gives software testers access to the most recent version of the application from development, allowing them to completely test it. Following that, testers are given the responsibility of &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Raising Bug awareness (if any are found)&lt;/li&gt;
&lt;li&gt;Checking out developers' most recent bug fixes.&lt;/li&gt;
&lt;li&gt;Submit a report on a common revision so that developers are aware of the issues discovered and whether specific concerns raised by testers have been addressed in the development code previously.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Staging Environment
&lt;/h2&gt;

&lt;p&gt;To imitate the production environment, fresh versions of the application are constructed, tested, and reviewed in the staging environment before going live. Hardware and servers that are similar to those used in the production environment are commonly evaluated during the staging phase of the software lifecycle. In contrast to the development site, the staging site serves as a final Product Testing zone separate from the development and production environments.&lt;/p&gt;

&lt;p&gt;When doing significant updates, the staging environment helps you to discover and resolve any issues that may surface. All data migrations and configuration changes will also be tested here.&lt;/p&gt;

&lt;p&gt;This is when you can also show a client how things work and look if you have one. They'll be able to see how everything will operate once it's online, and they'll be able to provide you with any input you require.&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Environment
&lt;/h2&gt;

&lt;p&gt;This is the most recent version of the application that is available to end-users. Except for scheduled updates, this version should not be changed.&lt;/p&gt;

&lt;p&gt;Users use this environment, and organisations make money in this environment, so any errors at this stage must be avoided at all costs. That's why you need to finish all of the tests in the other two environments first.&lt;/p&gt;

&lt;p&gt;It's worth noting that most small software teams (and startups) have only three environments (dev, stage, and production), whereas large corporations have a testing or quality assurance (QA) environment between development and staging.&lt;/p&gt;

&lt;p&gt;If you found this post useful, please like and share it, and leave your thoughts and questions in the comments section below.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>discuss</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Stop Thinking Plenty Before You Act (The Analysis Paralysis Syndrome)</title>
      <dc:creator>Ojay</dc:creator>
      <pubDate>Mon, 11 Jan 2021 06:55:33 +0000</pubDate>
      <link>https://dev.to/oj_redifined/stop-thinking-plenty-before-you-act-the-analysis-paralysis-syndrome-8pk</link>
      <guid>https://dev.to/oj_redifined/stop-thinking-plenty-before-you-act-the-analysis-paralysis-syndrome-8pk</guid>
      <description>&lt;p&gt;Growing up I was so Logical that I analyzed every gesture, word, action, decision, and situation from every person I found myself with or every place I found myself due to my melancholic nature. Omo! it was so bad that I did not make certain decisions, take necessary actions, or make important requests because I felt I already knew the outcomes of such situations with my analogy and It was going to turn out against my favor.&lt;/p&gt;

&lt;p&gt;If you're like the excessively thinking me or you find yourself sometimes overthinking stuff without acting and your answer is yes to most (if not all) the questions below, then this article is specifically for you. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Do you ask questions like: What If I don't match up or I don't have what It takes? What if the reply to this request turns out to be a no?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do you feel the need for 100% certainty before jumping into action?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do you decline to apply for a job with a large number of applicants already&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Analysis paralysis (or paralysis by analysis) describes an individual or group process when overanalyzing or overthinking a situation can cause forward motion or decision-making to become "paralyzed", meaning that no solution or course of action is decided upon. A situation may be deemed as too complicated and a decision is never made, due to the fear that a potentially larger problem may arise. A person may desire a perfect solution, but may fear making a decision that could result in error, while on the way to a better solution.&lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/Analysis_paralysis"&gt;https://en.wikipedia.org/wiki/Analysis_paralysis&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  You can ride above your Temperament and self-esteem
&lt;/h2&gt;

&lt;p&gt;As described by Tim LaHaye in his famous book "Why you act the way you do", he classifies humans into four temperaments: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Sanguines&lt;/li&gt;
&lt;li&gt;The Cholerics&lt;/li&gt;
&lt;li&gt;The Melancholy&lt;/li&gt;
&lt;li&gt;The Phlegmatic&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The first two being on the extroverted side and the latter two on the introverted side. Everyone has a blend of each of these temperaments, of which two are dominant and you will agree with me that temperaments have a major influence on all our actions.&lt;/p&gt;

&lt;p&gt;Someone who is an Introvert has a lot of reserved time for thoughts and analogy, this could turn out to be both an advantage and a disadvantage. They often find themselves with the problem of overthinking before acting. Thinking or analysis in itself is not bad because they keep us from acting out of impulse or current emotions, but it turns to be detrimental when it is prefixed with the word &lt;strong&gt;"over"&lt;/strong&gt;, because then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We seek perfection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We draw conclusions and &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We dread rejections&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes you feel under-qualified for certain things. This reminds me of me when I got close to OJ (a beautiful lady during my undergraduate days), gosh! she was so beautiful and good looking I felt so lucky to be her friend. I wanted more (not just on a friendship base), I wanted a relationship, and guess what? you should know the answer by now. I had one job but I literally blew it up, all I needed to do was ask, instead, I found myself asking questions like, do you have what it takes to be in a relationship with her? could she be getting more attention from other guys? don't you think she likes you only as a friend?.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The good thing is you can ride above your temperament and self-esteem&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Perfection is a Journey
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If I had to understand everything about connecting people before I began, I never would have started Facebook. &lt;br&gt;~Mark Zuckerberg FOUNDER OF FACEBOOK&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this article  &lt;a href="https://www.cnbc.com/2017/05/31/mark-zuckerberg-the-idea-of-a-single-eureka-moment-is-a-lie.html"&gt;Mark Zuckerberg: ‘The idea of a single eureka moment is a dangerous lie’&lt;/a&gt; he the founder of Facebook stated that &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;It can be tempting to believe that change-makers whose work affects generations must be extraordinary prodigies; that each one has a remarkable “a-ha” moment when a brainstorm is suddenly transmuted into a single, brilliant idea, obvious in its genius.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think now is the right time to remove such a mindset and give it a rethink.&lt;br&gt;
For me, perfection is determined by your legacy and what you're remembered for. It is usually after you're dead and long gone that your work can be qualified as being 'perfect'.&lt;/p&gt;

&lt;p&gt;Think of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; The benefits of what you're about to initiate&lt;/li&gt;
&lt;li&gt;How many positive outcomes it brings about when it succeeds&lt;/li&gt;
&lt;li&gt;The people that will connect the dots and pick up from where you're likely going to stop.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Your conclusion should come only after the outcome of your action
&lt;/h3&gt;

&lt;p&gt;Consciously and unconsciously our parents passed down the gene of playing it safe because it's the working prototype of life and anything other than that can turn out to be catastrophic.&lt;/p&gt;

&lt;p&gt;In Africa when you deviate from the norm you're seen as strong-headed, ignorant, inexperienced, foolish.&lt;br&gt;
An adage in my tribe (Igala, a tribe in Kogi state, north-central of Nigeria) goes this way "Akamagbo onwu chuku imoto" which literally translates to "Death comes to a child that does not hearken" talking based on their personal experiences with failure and how you should play it safe. &lt;/p&gt;

&lt;p&gt;Unfortunately, this has been integrated into our societal cultures and is now the default amongst us, so we often draw conclusions before we even start. &lt;br&gt;Tony Cletus the head of Marketing at  &lt;a href="https://www.happierco.com/"&gt;Happierco&lt;/a&gt; said something that struck home.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Why not give it a shot, you can always revert to the default&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Leave the conclusion to be the Job of the outcome.&lt;/p&gt;
&lt;h3&gt;
  
  
  Rejections are Inevitable feedbacks you get in Life
&lt;/h3&gt;

&lt;p&gt;What's the worst that can happen? you get a NO as a reply, the situation doesn't turn out as expected. Just so you know, this is normal in life.&lt;/p&gt;

&lt;p&gt;Every now and then we celebrate successful people and their achievements but seldom talk about their processes, rejections, and failures. Elon Musk the CEO and founder of  Tesla (electric cars),  SpaceX (rocket technology),  SolarCity ( energy services), amongst others is the top trend of celebration on his achievement as the World's richest man after surpassing Jeff Bezos (Amazon Boss) as of this writing.&lt;/p&gt;

&lt;p&gt;Elon Musk Tweeted on his Twitter handle on his fair share of rejection along the way.&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--i4-MwH4d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1295975423654977537/dHw9JcrK_normal.jpg" alt="Elon Musk profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Elon Musk
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/elonmusk"&gt;@elonmusk&lt;/a&gt;
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      &lt;a href="https://twitter.com/wintonARK"&gt;@wintonARK&lt;/a&gt; During the darkest days of the Model 3 program, I reached out to Tim Cook to discuss the possibility of Apple acquiring Tesla (for 1/10 of our current value). He refused to take the meeting.
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      20:46 PM - 22 Dec 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1341485211209637889" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1341485211209637889" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1341485211209637889" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;The Feedback he got after rejected by apple IMO was there was no better person to achieve the Tesla dream than himself. Sometimes we're rejected based on wrong perceptions of us, other times rejections are feedback for growth. Either way after a short feeling of disappointment (this is normal due to our human nature), convert it to a growth process and challenge yourself to achieve more.&lt;/p&gt;

&lt;p&gt;Rejections always happen, sometimes we anticipate it other times it takes us by surprise (This always hits harder). This can be an opportunity to take out time to: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cool off&lt;/li&gt;
&lt;li&gt;Reach out to supportive people&lt;/li&gt;
&lt;li&gt;Improve and &lt;/li&gt;
&lt;li&gt;Re-energise your self-esteem&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Farmers who wait for perfect weather never plant. If they watch every cloud, they never harvest.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Make that Proposal&lt;/li&gt;
&lt;li&gt;Apply For that Job&lt;/li&gt;
&lt;li&gt;Start that project&lt;/li&gt;
&lt;li&gt;Make that request and keep requesting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Further reading suggestion&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
 &lt;a href="https://dev.to/unicodeveloper/what-are-you-asking-for-5dba"&gt;What Are You Asking For?&lt;/a&gt; &lt;br&gt;&lt;br&gt;
 &lt;a href="https://dev.to/tonycletus/fuck-imposter-syndrome-2089"&gt;Fvck Imposter Syndrome!&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Please Like and also share if you found this article useful.&lt;/p&gt;

</description>
      <category>motivation</category>
      <category>growth</category>
      <category>devlife</category>
    </item>
    <item>
      <title>Browser Console, JavasScript Quick Playground</title>
      <dc:creator>Ojay</dc:creator>
      <pubDate>Thu, 21 May 2020 14:35:16 +0000</pubDate>
      <link>https://dev.to/oj_redifined/browser-console-javasscript-quick-playground-ld9</link>
      <guid>https://dev.to/oj_redifined/browser-console-javasscript-quick-playground-ld9</guid>
      <description>&lt;p&gt;As a newbie in JavaScript one issue has always been to do a quick run on a snippet of JavaScript syntax, object, function, method, etc. The list goes and not properly informed there is this temptation to create a mini Vanilla project, create an HTML file alongside with a JS file and accompanied with the usual getElementById to represent your JavaScript result on the DOM. This was my struggle and the struggle of several JavaScript newbies. &lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Table of Contents&lt;/strong&gt;
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Prerequisite&lt;/li&gt;
&lt;li&gt;What is a Browser console?&lt;/li&gt;
&lt;li&gt;Using a Browser Console&lt;/li&gt;
&lt;li&gt;Conclusion.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Prerequisite
&lt;/h2&gt;

&lt;p&gt;As a newbie you really shouldn't be bordered about prior Knowledge for using the console as a playground for your JavaScript code even if you just started with JavaScript 30mins ago 😉. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Browser Console?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---f-3mPXB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/92y8l7kx2pyae6p1bqis.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---f-3mPXB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/92y8l7kx2pyae6p1bqis.png" alt="Brower Console" width="800" height="507"&gt;&lt;/a&gt;&lt;br&gt;
A Browser Console is a component of the browser that gives access but not limited to information associated with a web page such as&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Network requests&lt;/li&gt;
&lt;li&gt;JavaScript, CSS, security errors&lt;/li&gt;
&lt;li&gt;Error, warning and informational messages explicitly logged by JavaScript code running in the page context&lt;/li&gt;
&lt;li&gt;Write a snippet of JavaScript code and see the instant result.
It also enables you to interact with a web page by executing JavaScript expressions in the context of the page. Most times your errors always come under the console, when you use &lt;strong&gt;console.log&lt;/strong&gt; or any of the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Console"&gt;console&lt;/a&gt; equivalent methods.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the purpose of this article, we would be looking at how to leverage the Console as a &lt;em&gt;REPL (read–eval–print loop)&lt;/em&gt; i.e write snippet JavaScript code and see the instant result then repeat.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using a Browser Console
&lt;/h2&gt;

&lt;p&gt;When you want to do a quick play with JavaScript code, it is as easy as launching a browser, open the console, and start playing. &lt;/p&gt;

&lt;h3&gt;
  
  
  Launching the console
&lt;/h3&gt;

&lt;p&gt;You can launch the console when in your chrome browser like this, go to the three vertical dot menu &amp;gt;  more tools &amp;gt; developer tools&amp;gt; finally select the console tab. An easier shortcut is to press the Ctrl+Shift+I (or ⌘+shift+I on a mac) from the keyboard. Note that this process is almost similar across major browser platforms with the exception of some like firefox.&lt;/p&gt;

&lt;p&gt;For Firefox from the Web Developer submenu in the Firefox Menu (or Tools menu if you display the menu bar or are on macOS), select "Browser Console". An easier shortcut is to press the Ctrl+Shift+J (or ⌘+Shift+J on a Mac) from the keyboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using the console History and code suggestion
&lt;/h3&gt;

&lt;p&gt;Playing around with a long snippet of code could get all tiring as it can't be compared to using an actual Text Editor or IDE for writing code. The good news is it suggests syntax just like most Text editor so you don't have to type for long. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0_w6ZX4I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e50vghnlw8yvtss23za3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0_w6ZX4I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e50vghnlw8yvtss23za3.png" alt="Alt Text" width="880" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A slight error can cause you to lose a large could you have been typing another good news is consoles support history just like a terminal using up and down arrow key from the keyboard. These histories are consistent even after you close the browser and re-open it. &lt;br&gt;
To clear the console right-click in the console and select &lt;strong&gt;clear console history&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CY8mhVNB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2q5gfufzgke4i77zo9fe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CY8mhVNB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2q5gfufzgke4i77zo9fe.png" alt="Clear console history" width="436" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, you can clear whatsoever mess you have in the console using &lt;strong&gt;clear()&lt;/strong&gt; command or press Ctrl+L from the Keyboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The browser console can be a great tool in improving your skill as a JavaScript Developer, it can be of help to test JavaScript syntax (ES5, ES6, etc.), functions, methods, concepts (Hoisting, block scope, etc.), the list goes on. &lt;/p&gt;

&lt;p&gt;As a beginner writing your short JavaScript codes in the Console REPL can be a big win in the long run as you get to demo what you just learn from an article without going through the process of opening a text editor or an IDE, test a function to see the result before inputting it into your large codebase, test or practice challenges to improve your skills on data structures and algorithms.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>browser</category>
    </item>
  </channel>
</rss>
