DEV Community: Codacy The latest articles on DEV Community by Codacy (@codacy). https://dev.to/codacy 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%2Forganization%2Fprofile_image%2F3773%2Fce179b4b-b4f6-47d6-9301-3c335e49af99.png DEV Community: Codacy https://dev.to/codacy en Applications Open: A Fellowship Program for Open Source Developers Heloisa Moraes Wed, 20 Sep 2023 10:14:48 +0000 https://dev.to/codacy/applications-open-a-fellowship-program-for-open-source-developers-4afc https://dev.to/codacy/applications-open-a-fellowship-program-for-open-source-developers-4afc <p>Here at Codacy, we recognize the importance of the open-source software (OSS) community and are dedicated to nurturing and supporting it in any way we can.</p> <p>Throughout the history of our company and product, OSS has been at the heart of what we do and how we provide value. lifts the whole world and flattens mountains of knowledge disparity.</p> <p><strong>That’s why we’ve launched Codacy Pioneers—a fellowship program to fund, promote, and mentor innovative and creative OSS projects worldwide.</strong></p> <p>Supporting builders is part of our DNA. Through our platform, we help hundreds of thousands of developers with software insights. With Pioneers, we wanted to find new ways to help people build the future.</p> <p>Projects selected to participate in the program will receive a year-long monthly stipend, free access to the tools they need to work, widespread promotion, and mentorship from some of the brightest minds of today’s OSS community.</p> <p><a href="proxy.php?url=https://res.cloudinary.com/practicaldev/image/fetch/s--mkpPPfW3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5jh1jvscugtlq82pm0ah.png" class="article-body-image-wrapper"><img src="proxy.php?url=https://res.cloudinary.com/practicaldev/image/fetch/s--mkpPPfW3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5jh1jvscugtlq82pm0ah.png" alt="Presenting the 5 mentors of the Codacy Pioneers program" width="800" height="450"></a></p> <p>We’ve assembled an incredible roster of open-source superstars to mentor and guide our Pioneers on their journey, including:</p> <p>Vue framework creator <a href="proxy.php?url=https://twitter.com/youyuxi">Evan You</a><br> Enix co-founder <a href="proxy.php?url=https://twitter.com/jpetazzo">Jérôme Petazzoni</a><br> Prisma founder <a href="proxy.php?url=https://twitter.com/schickling">Johannes Schickling</a><br> CHAOSS community lead <a href="proxy.php?url=http://ikegahruth/">Ruth Ikegah</a><br> Nakazawa Tech CEO <a href="proxy.php?url=https://twitter.com/cpojer">Christoph Nakazawa</a></p> <p>With Pioneers, we want to inspire talented builders and tell their stories. We want to remove friction from the process of inventing the future.</p> <p>Do you have an open-source project you’re incredibly proud of? If so, we’d love to hear from you!</p> <p>Applications for the Pioneers program are open as of today and close on <strong>September 29</strong>.</p> <p>Pioneers will be selected no later than October 16, 2023, by our mentors and engineers.</p> <p>To apply for the program, head to our <a href="proxy.php?url=https://www.codacy.com/pioneers">Pioneers page</a> and fill out a quick questionnaire to inform us about your project.</p> <p><a href="proxy.php?url=https://www.codacy.com/pioneers"><img src="proxy.php?url=https://res.cloudinary.com/practicaldev/image/fetch/s--QGtAjei3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0v5oppc9oxebn90gm6u3.png" alt="Codacy Pioneers: click here to apply now" width="800" height="450"></a></p> <p>This type of initiative is very new to us. And while we don’t know what to expect, we know that helping builders is the right thing to do.</p> <p>Leave us a comment if you have any questions.</p> <p>Best of luck to all potential Pioneers!</p> opensource community github programming Code reviews in large-scale projects: best practices for managers Heloisa Moraes Tue, 31 Jan 2023 13:29:11 +0000 https://dev.to/codacy/code-reviews-in-large-scale-projects-best-practices-for-managers-45ad https://dev.to/codacy/code-reviews-in-large-scale-projects-best-practices-for-managers-45ad <p>Managing code reviews for large-scale projects can be challenging, as the volume and complexity of the code might seem overwhelming. However, code reviews are essential for guaranteeing the quality and maintainability of the codebase, as well as identifying and addressing performance bottlenecks.</p> <p>Today we’ll cover some best practices your team should follow when <a href="proxy.php?url=https://go.codacy.com/code-reviews-essential-guide" rel="noreferrer noopener">performing code reviews</a> on large-scale projects.</p> <h1 id="h-divide-and-conquer"><strong>Divide and conquer</strong></h1> <p>Break the codebase into smaller, manageable chunks and assign specific sections to different team members for review. This will make the process more manageable and ensure you don’t overlook areas of the code. There are several ways you can divide the codebase into manageable chunks:</p> <ul> <li> <strong>Functionality-based</strong>: Divide the codebase based on the different functionalities or features of the project. For example, you can divide a codebase into the frontend, backend, and database sections.</li> <li> <strong>Modularity-based:</strong> Divide the codebase based on the different modules or components of the project. This approach can be especially useful for projects with complex codebases.</li> <li> <strong>Team-based:</strong> Assign different sections of the codebase to different teams or team members. This way, they’ll view all areas of the codebase, and no one team member will be overwhelmed.</li> </ul> <h1 id="h-prioritize-high-risk-areas"><strong>Prioritize high-risk areas</strong></h1> <p>Identify the areas of the codebase that are most critical to the project's success and focus on these areas first. This will ensure you identify and address potential issues as soon as possible, reducing the risk of delays or setbacks. Here are some ways to identify high-risk areas in a codebase:</p> <ul> <li>Identify areas of the codebase that are most frequently changed or updated. These areas may be more prone to errors and should be reviewed more frequently.</li> <li>Look for areas of the codebase that are critical to the functionality or performance of the project. For example, you should consider high-risk the code responsible for handling user authentication or sensitive data.</li> <li>Identify areas of the codebase that are new or untested. New code is more prone to errors, and untested code may contain hidden bugs.</li> <li>Analyze the codebase using automated tools like <a href="proxy.php?url=https://www.codacy.com/product?utm_source=blog&amp;utm_medium=website&amp;utm_campaign=code-reviews-best-practices" rel="noreferrer noopener">Codacy Quality</a> for static analysis, which can help identify areas of the codebase that are most likely to contain errors or bugs.</li> </ul> <p>Once you have identified high-risk areas, prioritize these areas for review, focusing on them before moving on to lower-risk areas. However, prioritizing high-risk areas does not mean neglecting the rest of the codebase but rather focusing on the most critical areas first.</p> <h1 id="h-automate-where-possible"><strong>Automate where possible</strong></h1> <p>Automating certain aspects of the review process can make the process more efficient and effective. For example, automated tools can help to identify potential issues in the codebase and standardize the review process, making it more consistent and objective.</p> <p>With <a href="proxy.php?url=https://www.codacy.com/product?utm_source=blog&amp;utm_medium=website&amp;utm_campaign=code-reviews-best-practices" rel="noreferrer noopener">Codacy Quality</a>, your team can make sure the codebase adherence to coding conventions, such as style guidelines. They can also identify potential issues such as bugs, security vulnerabilities, or performance bottlenecks, guarantee code coverage and tackle technical debt.</p> <p>By <a href="proxy.php?url=https://blog.codacy.com/automated-code-reviews-part-of-workflow/" rel="noreferrer noopener">automating certain aspects of the code review process</a>, you can make the process more efficient and effective and also standardize the review process.</p> <h1 id="h-communicate-effectively"><strong>Communicate effectively</strong></h1> <p>Effective communication can foster a collaborative and productive work environment and make the code review process smoother. Here are some ways to effectively communicate when conducting code reviews:</p> <ul> <li> <strong>Set clear guidelines: </strong>Establish guidelines for what your team should review and how they should report and track issues. This can help your team understand the expectations and participate effectively.</li> <li> <strong>Make sure everyone understands their roles:</strong> Clearly communicate the roles and responsibilities of all team members involved in the code review process. Make sure everyone understands their role and how it contributes to the overall process.</li> <li> <strong>Encourage open communication:</strong> Create a culture of transparency and feedback by encouraging open communication between team members. This ensures that any issues or concerns are identified and addressed quickly and can also help to promote team learning and development.</li> <li> <strong>Use code review tools: </strong>Your code review tools should support communication and collaboration, like comments and annotations. This will allow your team to have an organized way to communicate and track the progress of the review process.</li> <li> <strong>Provide feedback and recognition:</strong> Regularly provide feedback and recognition for the team member’s efforts and contributions, and help them understand their work's impact on the project.</li> </ul> <h1 id="h-review-regularly"><strong>Review regularly</strong></h1> <p>Schedule regular code reviews throughout the development process rather than waiting until the end. This will help identify issues early on and allow for timely course correction, reducing the risk of delays. Here are some ways to conduct regular code reviews:</p> <ul> <li> <strong>Establish a schedule:</strong> Set up a schedule for code reviews, such as daily, weekly, or after each Sprint. This will help ensure all code is reviewed promptly and any issues are identified and addressed as soon as possible.</li> <li> <strong>Make it a part of the development process:</strong> Incorporate code reviews into the development process, such as having developers review their own code before submitting it.</li> <li> <strong>Use a pull-based review process:</strong> With a Pull Request review process, developers submit their code for review before they merge it into the main branch. This allows multiple sets of eyes to review the code and can help to identify issues early on.</li> <li> <strong>Encourage CI/CD practices: </strong>Automating the testing and deployment of code change, along with regular reviews, allows your team to catch issues early and fix them quickly before they become bigger problems.</li> </ul> <p>Keep in mind that reviewing code regularly throughout the development process also helps to promote a culture of quality and accountability.</p> <h1 id="h-rotate-the-reviewers"><strong>Rotate the reviewers</strong></h1> <p>Rotating the reviewers allows all the team members to be familiar with the different parts of the codebase and can provide valuable feedback. It also avoids bias in the review process, as different reviewers may have different perspectives and can identify issues others may have missed. Here are some ways to rotate the reviewers:</p> <ul> <li> <strong>Assign different reviewers for different sections of the code:</strong> This way, all team members are familiar with different parts of the codebase.</li> <li> <strong>Rotate reviewers for different projects:</strong> All team members will be familiar with the codebase of different projects and can provide valuable feedback.</li> <li> <strong>Rotate reviewers for different team members' code:</strong> By doing this, all team members will be familiar with the code written by their colleagues and understand their coding style and best practices.</li> </ul> <h1 id="h-focus-on-the-learning"><strong>Focus on the learning</strong></h1> <p>Code reviews are not only about finding bugs but also an opportunity for the team members to learn from each other. It's an excellent way to learn new coding practices, best practices, and problem-solving approaches. Here are some ways to focus on the learning during code reviews:</p> <ul> <li> <strong>Encourage sharing knowledge:</strong> Encourage your team to share their knowledge and best practices during the review process. This can help to promote learning and development among team members.</li> <li> <strong>Use code reviews as a mentoring opportunity:</strong> Code reviews are excellent for mentoring junior developers and providing constructive feedback on improving their code.</li> <li> <strong>Promote collaboration:</strong> Encourage your team to work together during the review process and share their thoughts and ideas.</li> <li> <strong>Use code reviews to promote best practices:</strong> Encourage your team to write readable and maintainable code and to follow best practices.</li> <li> <strong>Use code reviews as a way to learn new technologies:</strong> Use code reviews to learn new technologies and approaches and encourage your team to experiment with new tools and technologies.</li> </ul> <h1 id="h-webinar-level-up-your-team-s-code-reviews"><strong>🎥 [Webinar] Level Up Your Team’s Code Reviews</strong></h1> <p>Join our Engineering Manager Kendrick Curtis and our Lead Account Executive Mark Raihlin in a discussion about helping your team perform their best code reviews.</p> <p><a href="proxy.php?url=https://us02web.zoom.us/webinar/register/3416738839546/WN_aSfdNnpKSfesuufm7wUk3w" rel="noreferrer noopener"><img src="proxy.php?url=https://res.cloudinary.com/practicaldev/image/fetch/s--g2vwjUqy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.codacy.com/wp-content/uploads/2023/01/Webinar-Level-Up-Your-Teams-Code-Reviews-1024x576.png" alt="Webinar - Level Up Your Team’s Code Reviews" width="880" height="495"></a></p> <p><strong>Join us in our Webinar <em>Level Up Your Team’s Code Reviews</em>. See you there!</strong></p> <p><strong>👉 When: February 2nd, 2023, 4 pm UTC / 10 am CDT</strong><br><strong>👉 Where: </strong><a href="proxy.php?url=https://us02web.zoom.us/webinar/register/3416738839546/WN_aSfdNnpKSfesuufm7wUk3w" rel="noreferrer noopener"><strong>online</strong></a><strong> – </strong><em>registration needed</em></p> <p><a href="proxy.php?url=https://us02web.zoom.us/webinar/register/3416738839546/WN_aSfdNnpKSfesuufm7wUk3w" rel="noreferrer noopener">Save me a seat</a></p> management productivity devops webinar What NOT to do as a developer Heloisa Moraes Wed, 25 Jan 2023 10:40:00 +0000 https://dev.to/codacy/what-not-to-do-as-a-developer-1mp9 https://dev.to/codacy/what-not-to-do-as-a-developer-1mp9 <p><em>The following views were expressed by a member of our <a href="proxy.php?url=https://community.codacy.com/">Codacy Community</a></em></p> <p>Before I came to the industry side of the world, I was an academic. I was focused on computer science research (with a special love for software quality) and on teaching students at the university.</p> <p>From my years in academia, I was able to determine patterns in students when they were writing code. I saw the same patterns from junior to senior developers at different companies. Some of those patterns might be hindering your performance, so let’s take a look at what not to do as a developer:</p> <ul> <li><p><strong>Jumping into programming right away.</strong> Before writing your first lines of code, think about the problem and the proper solution. It might help brainstorm on a piece of paper!</p></li> <li><p><strong>Not updating your knowledge.</strong> Programming languages, frameworks, technologies, and techniques change every day. So you need to keep yourself updated and never stop learning.</p></li> <li><p><strong>Forgetting edge cases.</strong> Even if your code seems to be working and you added some tests, don’t forget to check for edge cases. It depends on the solution you are working on, but it might be negative numbers, empty strings, different input types, and everything else in between.</p></li> <li><p><strong>Not checking performance and complexity.</strong> Most of the time, there are better and simpler ways to go about a particular solution and piece of code. So always check the complexity of your code and if you can improve it. I discussed the Big-O notation in a previous post, so give it a read.</p></li> <li><p><strong>Not reviewing your code.</strong> Always review your code, both manually and automatically. With code reviews, your team can find issues early on, share knowledge, distribute ownership, and standardize development practices, among many other benefits. Plus, static code analysis tools like Codacy Quality can effectively reduce heavy lifting and tedious parts of the code review process.</p></li> </ul> <p>Free to share other things developers should not do 👇</p> programming discuss community motivation The true impact of technical debt Heloisa Moraes Thu, 05 Jan 2023 17:15:12 +0000 https://dev.to/codacy/the-true-impact-of-technical-debt-5bji https://dev.to/codacy/the-true-impact-of-technical-debt-5bji <p>Technical debt happens in all software projects, regardless of the programming languages, frameworks, or methodologies. It is a common metaphor for software’s accumulated backlog (like bugs, missing documentation, and legacy code).</p> <p>There are <a href="proxy.php?url=https://blog.codacy.com/4-types-technical-debt/" rel="noreferrer noopener">different types of technical debt</a>, and while some are beneficial to achieve a goal, you’ll need to pay that debt off sooner or later. To help in that process, we shared ways your team can start <a href="proxy.php?url=https://blog.codacy.com/how-to-tackle-technical-debt/" rel="noreferrer noopener">tackling technical debt</a> while delivering value at the end of each Sprint.</p> <p>If not addressed, technical debt will compound and cause greater issues in your software. It will impact not only the customer experience but also your team and your business. Today, we’ll dive deeper into the true impact of technical debt.</p> <h1 id="h-what-is-the-true-impact-of-technical-debt"><strong>What is the true impact of technical debt?</strong></h1> <p>The impact of accumulated technical debt extends broadly across different parts of an organization’s ecosystem. It can have serious consequences, like losing customers, making a product more vulnerable to security risks, increasing development costs, and negatively impacting your team’s morale.</p> <p><a href="proxy.php?url=https://res.cloudinary.com/practicaldev/image/fetch/s--YHXOIdqt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.codacy.com/wp-content/uploads/2023/01/the-impact-of-technical-debt-1024x1024.png" class="article-body-image-wrapper"><img src="proxy.php?url=https://res.cloudinary.com/practicaldev/image/fetch/s--YHXOIdqt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.codacy.com/wp-content/uploads/2023/01/the-impact-of-technical-debt-1024x1024.png" alt="the impact of technical debt" width="880" height="880"></a></p> <h2><strong>Technical debt impacts your code</strong></h2> <ul> <li> <strong>Increased number of bugs:</strong> Defects, issues, and bugs are typical consequences of technical debt. These bugs also impact the product, raising maintenance costs and affecting the customer experience.</li> <li> <strong>Increased complexity: </strong>When developers rush to meet a deadline, they may not develop clean and well-organized code. This will make the code more complex than it needs to be, making it more challenging to maintain and more prone to bugs and other issues.</li> <li> <strong>Decreased code quality:</strong> Poor design and development practices might allow developers to finish their work in time for tight deadlines. However, they also reduce code quality and create long-run issues. Low code quality will also make it difficult for developers to maintain the codebase, directly impacting the product.</li> </ul> <h2><strong>Technical debt impacts your product</strong></h2> <ul> <li> <strong>Decreased usability and functionality</strong>: Some features might fail to work correctly due to technical debt, impacting usability, customer satisfaction, and reputation. It can also increase the downtime of your product.</li> <li> <strong>Increased development cycles:</strong> Technical debt can also lead to delays in the development process, as developers may need to spend more time fixing issues and addressing other aspects of the codebase. This can impact the ability to meet deadlines, slow down the build process, and delay the release of new features and updates to the market. In addition, the delays impact customers and teams relying on delivery, like marketing and sales.</li> <li> <strong>Increased security problems</strong>: Poorly written code is often poorly secured, which can introduce unexpected vulnerabilities and increase the risk of serious events, such as data security breaches.</li> </ul> <h2><strong>Technical debt impacts your team</strong></h2> <ul> <li> <strong>Decreased development speed:</strong> Since developers need to spend time on technical debt, working on and delivering new features takes longer.</li> </ul> <ul> <li> <strong>Decreased team morale:</strong> As technical debt accumulates, it becomes more difficult to understand the codebase and the amount of work needed to add a new feature. As such, technical debt can also lower your team’s productivity considerably. Plus, the team’s morale decreases as the team spends more time fixing preventable problems. </li> <li> <strong>Decreased retention</strong>: Unhappy or demotivated developers are more likely to resign, impacting your team’s organization, workload, and overall performance.</li> </ul> <h2><strong>Technical debt impacts your business</strong></h2> <ul> <li> <strong>Decreased customer satisfaction:</strong> Technical debt almost always negatively correlates with customer satisfaction due to poor user experience. This translates into an increased expense due to more tickets and customer support and loss of sales and renewals due to lower client retention.</li> <li> <strong>Decreased innovation:</strong> When technical debt is severe, developers must continue servicing the issues instead of devoting time to building innovative new features with business value. The team will not be able to adapt quickly to opportunities or changes in the market.</li> <li> <strong>Increased costs:</strong> Technical debt can increase the cost of maintaining and improving the codebase over time. This can include the cost of fixing issues and improving performance and the cost of lost productivity due to delays. There are also customer support costs related to clients not being satisfied with the product.</li> <li> <strong>Decreased revenue:</strong> Customer dissatisfaction due to technical debt means less client retention and inefficient marketing spending. </li> <li> <strong>Brand and reputation: </strong>Ultimately, if technical debt is severe, it can affect the brand and reputation and undermine the business's survival.</li> </ul> <h1><strong>Codacy Quality: the best solution for tackling technical debt</strong></h1> <p>We run a DevOps Intelligence Platform that helps thousands of developers ship billions of lines of code per day by automating and standardizing code reviews. We’ve built a suite of products that help developers quantify and act on their software quality, engineering performance, and security.</p> <p>Codacy Quality is the best-in-class solution for static code analysis. Integrating seamlessly into your workflows, Codacy Quality helps engineering teams save time in code reviews and tackle technical debt. Quality supports 40+ programming languages and is available in free open-source and enterprise versions.</p> <p>If you’re looking for a static analysis tool that allows you to check your code quality and keep track of your technical debt, start a <a href="proxy.php?url=https://www.codacy.com/?utm_source=blog&amp;utm_medium=website&amp;utm_campaign=cost-tech-debt" rel="noreferrer noopener"><strong>free 14-day trial of Codacy Quality today</strong></a>.</p> <p><a href="proxy.php?url=https://res.cloudinary.com/practicaldev/image/fetch/s--RudyiWqa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.codacy.com/wp-content/uploads/2022/05/repository-dashboard-921x1024.png" class="article-body-image-wrapper"><img src="proxy.php?url=https://res.cloudinary.com/practicaldev/image/fetch/s--RudyiWqa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.codacy.com/wp-content/uploads/2022/05/repository-dashboard-921x1024.png" alt="Repository dashboard" width="880" height="978"></a>Dashboard of Codacy Quality</p> management leadership security devops 3 popular Python style guides that will help your team write better code Heloisa Moraes Wed, 28 Dec 2022 17:04:14 +0000 https://dev.to/codacy/3-popular-python-style-guides-that-will-help-your-team-write-better-code-1h0m https://dev.to/codacy/3-popular-python-style-guides-that-will-help-your-team-write-better-code-1h0m <p>A code style guide is a set of rules, standards, or best practices that outline how your team should write, format, and organize the source code. In an ideal world, your team’s source code should look like it was written by a single person, even if hundreds of developers collaborated on it. </p> <p>Being consistent with a style guide makes your code easier to read, debug, and maintain. It is also smoother to add new features or update legacy code, and new developers have an easier integration with the team.</p> <p>Many programming languages have more than one recommended style guide, and Python is no exception. To help you get started, here are 3 of the most popular style guides for Python that will help your team write code in a consistent way and improve your coding standards.</p> <h1 id="h-pep-8-style-guide-for-python-code"><strong>PEP 8 – Style Guide for Python Code</strong></h1> <p>Python has an excellent style guide called <a href="proxy.php?url=https://peps.python.org/pep-0008/" rel="noreferrer noopener">PEP 8</a> that covers most situations you and your team will find while writing Python. You can use it with <a href="proxy.php?url=https://peps.python.org/pep-0257/" rel="noreferrer noopener">PEP 257</a>, which focuses on semantics and conventions associated with Python docstrings.</p> <p>PEP 8 presents guidelines on naming Python objects, how to structure your code, when to include comments and whitespaces, and some general programming recommendations. This style guide will allow you to have consistency in your Python code, making it easier for everyone in your teams to understand and contribute to the codebase. </p> <p>However, PEP 8 is a generic Python guideline rather than strict rules that you should follow since it allows different approaches to achieve similar goals. So you’ll need to make sure that everyone in your team follows the same approach in the first place.</p> <h1 id="h-the-hitchhiker-s-guide-to-python"><strong>The Hitchhiker’s Guide to Python</strong></h1> <p>If you are looking for a community-driven style guide, <a href="proxy.php?url=https://docs.python-guide.org/" rel="noreferrer noopener">The Hitchhiker’s Guide to Python</a> is the one for you. However, remember that it might not always be updated and accurate since it depends on the community who writes it.</p> <p>This style guide aims to give novice and expert Python developers a best practice handbook for installing, configuring, and using Python. It includes recommendations for structuring your project and guidelines for code style, documentation, testing, logging, and more.</p> <h1 id="h-google-python-style-guide"><strong>Google Python Style Guide</strong></h1> <p>The <a href="proxy.php?url=https://google.github.io/styleguide/pyguide.html" rel="noreferrer noopener">Google Python Style Guide</a> defines the coding standards used at Google. This style guide has two parts, one focusing on language rules (conventions and coding standards) and the other on style rules (aesthetic formatting issues). It’s a great guide if you have a big team with many developers actively working on a large codebase.</p> <p>There is also a formatter for Python files called <a href="proxy.php?url=https://github.com/google/yapf/" rel="noreferrer noopener">yapf</a> that your team can use to avoid arguing over formatting conventions. Plus, Google also provides a <a href="proxy.php?url=https://google.github.io/styleguide/google_python_style.vim" rel="noreferrer noopener">settings file for Vim</a>, noting that the default settings should be enough if you're using Emacs. </p> <h1 id="h-conclusion"><strong>Conclusion</strong></h1> <p>When you’re working in a large team with other developers, everyone will have their style of writing code because no two developers write code the same way. If you’ve got different developers writing code differently, your codebase will be almost impossible to understand. Also, onboarding new developers might be harder, as they won’t know the best approach to use.</p> <p>This is where style guides come to the rescue. A style guide is a set of rules that developers follow when writing their code to ensure consistency among developers. In this article, we’ve covered 3 Python style guides your team can use in your Python projects.</p> <p><strong>Share your favorite Python style guide with us, and let’s keep the conversation going in </strong><a href="proxy.php?url=https://community.codacy.com/" rel="noreferrer noopener"><strong>our community</strong></a><strong>.</strong></p> emptystring 7 best practices for writing great software tests Heloisa Moraes Tue, 27 Dec 2022 11:33:25 +0000 https://dev.to/codacy/7-best-practices-for-writing-great-software-tests-16ab https://dev.to/codacy/7-best-practices-for-writing-great-software-tests-16ab <p>An important metric of code quality is how much of your codebase is covered by tests, as we saw in a <a href="proxy.php?url=https://blog.codacy.com/code-coverage-types/" rel="noreferrer noopener">previous article about code coverage</a>. However, having a good code coverage score isn’t enough. </p> <p>The quality of your tests influences their effectiveness and can significantly affect the quality of your product. Today, we’ll cover 7 best practices for writing great software tests. Those practices help you get the most out of your testing strategy, so keep reading.</p> <h1 id="h-what-makes-a-great-software-test"><strong>What makes a great software test?</strong></h1> <ul> <li> <strong>Simple and short:</strong> you should be able to understand and execute the tests; </li> <li> <strong>Goal-oriented: </strong>focusing on a single output gives clear purpose and meaning to the test;</li> <li> <strong>Consistent:</strong> all the tests should be consistent regarding the terms used;</li> <li> <strong>Valid:</strong> you should align the tests with the acceptance criteria defined for the requirements;</li> <li> <strong>Maintainable:</strong> tests should be easy to maintain and update when requirements change;</li> <li> <strong>Discoverable:</strong> you should be able to search and find a test using multiple criteria easily;</li> <li> <strong>Fast:</strong> you should be able to execute a test as quickly as possible to reduce effort;</li> </ul> <h1 id="h-best-practices-for-writing-great-tests"> <strong>Best practices for writing great tests</strong> </h1> <h2 id="h-1-treat-your-tests-with-the-same-importance-as-your-code"><strong>#1 – Treat your tests with the same importance as your code</strong></h2> <p>Your tests require the same care and attention you give the rest of your codebase. Like any other part of your code, tests should be regularly evaluated, maintained, and improved. </p> <p>You should also use comments in your tests and have a defined code review process. Tests take development time, so they should be planned, and you should design them to support and enhance your business' critical infrastructure.</p> <p>Finally, it would help if you kept your tests organized, as it allows avoiding repetitions. Get yourself and your team familiar with patterns for modularizing test cases.</p> <h2 id="h-2-make-your-tests-independent-of-each-other"><strong>#2 – Make your tests independent of each other</strong></h2> <p>Tests should never depend on each other. For example, if your tests have to be run in a specific order because some tests depend on others, you need to change your tests to avoid those dependencies.</p> <p>If, in your system, it’s unavoidable to have some tests dependent on others, try to isolate them as much as possible through pre-conditions. However, this is just in particular cases, and you should avoid it as much as possible.</p> <h2 id="h-3-your-tests-should-work-individually-or-in-parallel"><strong>#3 – Your tests should work individually or in parallel</strong></h2> <p>It’s only natural that your test suite grows along with your codebase. When your test suite gets larger, writing tests you can run individually or in parallel on multiple machines really pays off.</p> <p>This approach allows you to test only the parts of your code that you or your team changed. You can also better distribute testing resources across multiple machines, which helps you to get results faster. Finally, tests that can work individually or in parallel also mean that you can refactor them without fearing that change will affect other tests.</p> <h2 id="h-4-refactor-your-tests-regularly"><strong>#4 – Refactor your tests regularly</strong></h2> <p>As with any part of your codebase, you should regularly review and refactor your tests. As such, plan to survey your test suite from time to time to ensure your tests remain relevant and valuable.</p> <p>When you change, add, or remove functions to your code, verify if the tests still make sense. Usually, with these changes in the code, the data passed into functions also changes, and your tests need to reflect this modification.</p> <h2 id="h-5-minimize-waits-as-much-as-possible"><strong>#5 – Minimize waits as much as possible</strong></h2> <p>Tests that require “waiting” will likely cause more problems as services interact differently on various machines. In addition, if you run tests often, adding waits to a test suite can make it very slow.</p> <p>If you’re testing asynchronous code, it sometimes appears to require wait or sleep steps. However, it would be best if you tried to incorporate a library designed to handle asynchronous waits in your programming language.</p> <h2 id="h-6-test-across-the-boundaries-of-your-system"><strong>#6 – Test across the boundaries of your system</strong></h2> <p>Your test suite should always test both sides of a given boundary. Imagine the piece of code you will test as a rectangle. You’ll need to test what happens to points inside and outside the rectangle and at the boundaries. These boundaries are where your code might fail.</p> <p>If your code depends on external services, don’t forget to prevent problems by testing the boundary layers. This anticipation will allow you to have some control over code you might not have written and have no access to.</p> <h2 id="h-7-keep-track-of-your-code-coverage"><strong>#7 – Keep track of your code coverage</strong></h2> <p>Tools that keep track of code coverage, like <a href="proxy.php?url=https://www.codacy.com/product?utm_source=blog&amp;utm_medium=website&amp;utm_campaign=write-tests" rel="noreferrer noopener">Codacy Quality</a>, can tell you exactly which parts of your code are covered by tests. This will help you direct your efforts toward pieces of code that lack tests.</p> <p>To better enforce tests, you can also define thresholds where Pull Requests are not accepted if code coverage is below a specific percentage. Code coverage tools also allow you to track coverage over time, so you can report on and measure the results of your efforts.</p> <h1 id="h-live-talk-take-your-code-coverage-to-the-next-level"><strong>[Live Talk] Take Your Code Coverage to the Next Level</strong></h1> <p>If you missed our webinar, <strong><a href="proxy.php?url=https://www.youtube.com/watch?v=4QOi23YXg78" rel="noopener noreferrer">watch the recording</a></strong> to learn how you can leverage your code coverage. See how our engineers apply it in their day-to-day.</p> <p><a href="proxy.php?url=https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.codacy.com%2Fwp-content%2Fuploads%2F2022%2F10%2FTake-Your-Code-Coverage-to-the-Next-Level-1024x576.png" class="article-body-image-wrapper"><img src="proxy.php?url=https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.codacy.com%2Fwp-content%2Fuploads%2F2022%2F10%2FTake-Your-Code-Coverage-to-the-Next-Level-1024x576.png" alt="Take Your Code Coverage to the Next Level"></a></p> testing programming computerscience coverage 9 useful APIs for your next projects Heloisa Moraes Fri, 23 Dec 2022 12:23:50 +0000 https://dev.to/codacy/9-useful-apis-for-your-next-projects-4ak9 https://dev.to/codacy/9-useful-apis-for-your-next-projects-4ak9 <p>If you have a list of new software-related projects to start or complete in 2023, these tips will make your life easier!</p> <p>You probably already know what an API is. But if you need a refreshment, API stands for Application Programming Interface, and it’s a way for two or more pieces of software to communicate with each other.</p> <p>Here’s a list of useful and cool APIs you can use in your next projects:</p> <ul> <li> <strong><a href="proxy.php?url=https://brainshop.ai/" rel="noopener noreferrer">Brainshop</a></strong> – It helps you create chatbots based on AI. The basic plan is completely free.</li> <li> <strong><a href="proxy.php?url=https://cloudmersive.com/image-recognition-and-processing-api" rel="noopener noreferrer">Cloudmersive API</a></strong> – This advanced Machine Learning API helps you with your image recognition and processing needs.</li> <li> <strong><a href="proxy.php?url=https://countapi.xyz/" rel="noopener noreferrer">Count API</a></strong> – It allows you to create simple numeric counters.</li> <li> <strong><a href="proxy.php?url=https://www.currencyconverterapi.com/" rel="noopener noreferrer">Currency converter</a></strong> It’s a simple API for currency conversion.</li> <li> <strong><a href="proxy.php?url=https://flightapi.io/" rel="noopener noreferrer">Flight API</a></strong> – This API gives you all the information about flights: airport, ticket prices, schedule, and flight status, among others.</li> <li> <strong><a href="proxy.php?url=https://api.nasa.gov/" rel="noopener noreferrer">NASA APIs</a></strong> – It gives you access to different types of data about astronomy, space weather, the moon, mars, and much more.</li> <li> <strong><a href="proxy.php?url=https://openweathermap.org/api" rel="noopener noreferrer">OpenWeather</a></strong> – It gives you access to current weather data and hourly, 5-day, and 16-day weather forecasts.</li> <li> <strong><a href="proxy.php?url=https://randomuser.me/" rel="noopener noreferrer">Random user generator API</a></strong> – It allows you to generate placeholder user information. You can get profile photos, names, and more.</li> <li> <strong><a href="proxy.php?url=https://spoonacular.com/food-api" rel="noopener noreferrer">Spoonacular API</a></strong> - It allows you to access over 5k recipes, 2k ingredients, and 600k food products you can use to build a great food-related app.</li> </ul> <p>Find more interesting tips and discussions in the <a href="proxy.php?url=https://community.codacy.com/" rel="noopener noreferrer">Codacy Community</a>.</p> <p>Feel free to share the APIs you love and use the most 👇</p> gratitude We are doing a Code Coverage Webinar: what would you like to know? Heloisa Moraes Wed, 19 Oct 2022 10:05:04 +0000 https://dev.to/codacy/we-are-doing-a-code-coverage-webinar-what-would-you-like-to-know-4gl9 https://dev.to/codacy/we-are-doing-a-code-coverage-webinar-what-would-you-like-to-know-4gl9 <p>We’re really excited for next week’s Live Talk on how to <strong>Take your Code Coverage to the Next Level</strong>. It's only a week away, and you can register <a href="proxy.php?url=https://us02web.zoom.us/webinar/register/4016660923298/WN_0nByexsdRtOPl_IL171a6w">here</a>.</p> <p>If you're a developer, you probably know what code coverage is, and that a well-tested codebase is usually (but not always) a well-structured codebase. But are you leveraging your code coverage reports to achieve the best code quality possible?</p> <p>Your team can easily overlook code coverage, especially if they are unaware of its benefits and how it impacts their work.</p> <p>This webinar is made by developers, for the developer community, so your input is really important to us. </p> <h2> <strong>What would you like us to cover?</strong> </h2> <p><strong>(pun intended)</strong></p> <p>👉 Share your questions in the comments<br> 👉 Join us on October 25th to discuss code coverage with the engineering and product teams that built our <a href="proxy.php?url=https://www.codacy.com/product">Codacy Quality</a> product 🤖 and see some real examples of how to improve your line coverage</p> programming discuss performance testing Code Review Best Practices Heloisa Moraes Thu, 13 Oct 2022 17:08:40 +0000 https://dev.to/codacy/code-review-best-practices-4og7 https://dev.to/codacy/code-review-best-practices-4og7 <h2> We started a code review best practices thread in our <a href="proxy.php?url=https://community.codacy.com/t/code-review-best-practices/1019">community</a> </h2> <p>What about you? Share some of your best practices in the comments 👇 </p> <p>Code reviews are one of the most important aspects of today’s software development workflow. With that in mind, I want to share some code review best practices with you. It is not an exhaustive list, but it can be a good starting point for you and your team.</p> <h2> For code author </h2> <p>Aim for small changes<br> Group code changes that are related<br> Read through your code carefully<br> before submitting it for review<br> Run tests before submitting the code for review<br> Use commit templates<br> Describe the purpose of the code change<br> Add junior developers to the review to let them learn<br> Add experienced developers if you need them<br> Do not add too many reviewers<br> Be open to comments and suggestions<br> Show respect to the reviewers<br> Thank the reviewer for their comments and suggestions</p> <h2> For code reviewer </h2> <p>Give respectful and constructive feedback<br> Give clear and actionable suggestions or recommendations<br> Specify the changes that the author needs to make and their level of importance<br> Ensure traceability for decisions<br> Give feedback on time<br> Focus mainly on core issues<br> Talk directly with the author, if necessary<br> Reduce multitasking and task switching as it reduces productivity<br> Don’t forget that great feedback include praise<br> Use a code review checklist</p> <p>💡 If you want to dive deeper into code reviews, we created a guide that explains in detail what code reviews are and how to optimize them. We even give you checklists to help you become the best code reviewer you can be. <strong><a href="proxy.php?url=https://go.codacy.com/code-reviews-essential-guide">Check it out</a></strong>!</p> codereview devops programming discuss 16 Youtube channels for devs Heloisa Moraes Wed, 28 Sep 2022 12:07:36 +0000 https://dev.to/codacy/16-youtube-channels-for-devs-2950 https://dev.to/codacy/16-youtube-channels-for-devs-2950 <p>Here’s a short list of 16 Youtube channels for developers. Whether you are a junior developer or a tech lead, you’ll be able to learn something new from these channels.</p> <h2> <strong>For Android developers</strong> </h2> <p>Android Developers<br> CodingWithMitch</p> <h2> <strong>For iOS developers</strong> </h2> <p>CodeWithChris<br> Lets Built That App<br> Paul Hudson</p> <h2> <strong>For Web developers</strong> </h2> <p>Clever Programmer<br> CSS-Tricks<br> The Net Ninja<br> Traversy Media<br> Wes Bos</p> <h2> <strong>For all developers</strong> </h2> <p>Academind <br> Amigoscode<br> ArjanCodes<br> ForrestKnight<br> freeCodeCamp.org<br> Programming with Mosh</p> <p>Did you find this useful? There's a lot more tips like this in our <strong><a href="proxy.php?url=https://community.codacy.com/">Codacy Community</a></strong> - with over 500+ developers worldwide. Check it out, it's free to join!</p> webdev android ios programming 9 challenges of managing PRs and how to solve them Heloisa Moraes Wed, 14 Sep 2022 15:54:43 +0000 https://dev.to/codacy/9-challenges-of-managing-prs-and-how-to-solve-them-195f https://dev.to/codacy/9-challenges-of-managing-prs-and-how-to-solve-them-195f <p>Developers have been using Pull Requests to review code on branches before it reaches master for a very long time. However, this workflow is one of the most challenging and time-consuming parts of the software delivery process.</p> <p>Every Pull Request comes with different challenges, which can happen before, during, or after the PR is open. In a previous article, we gave you <a href="proxy.php?url=https://blog.codacy.com/13-tips-to-make-your-pr-easier-to-review/" rel="noreferrer noopener">13 tips to make your PR easier to review</a>. Today, we’ll cover how you can have a better PR workflow by solving 9 challenges you might face.</p> <h1 id="h-before-opening-the-pr"><strong>Before opening the PR </strong></h1> <h2 id="h-personnel-bottlenecks"><strong>Personnel bottlenecks</strong></h2> <p><strong>Problem:</strong>  To ensure that high-quality code gets merged into production, some teams only allow some developers to merge PRs. This is well-intentioned, but senior developers tend to get overburdened since they are more knowledgeable. Overwork also increases the likelihood of an error occurring during the review process.</p> <p><strong>Solution:</strong> Include everyone in the code review process. You can use the logic of pair programming in code reviews with senior and junior developers. Everyone will broaden their knowledge of the code base, and the reviews will serve as learning tools where junior developers can improve their skills.</p> <h2 id="h-difficulties-in-reaching-consensus"><strong>Difficulties in reaching consensus</strong></h2> <p><strong>Problem:</strong> Developers sometimes struggle between defending their individual ideas and incorporating contributions different from their vision, either because they don’t agree with the project's direction or the way other developers wrote the code. In those cases, reaching a consensus is challenging.</p> <p><strong>Solution:</strong> Having a shared vision with a clear roadmap about the project's future direction will help developers reach consensus faster. Plus, you can show developers that different ways of writing code are not inherently wrong. If it doesn’t compromise the quality and understandability of the code and if it’s following the agreed coding standards, it should get accepted.</p> <h2 id="h-too-extensive-pull-requests"><strong>Too extensive Pull Requests </strong></h2> <p><strong>Problem:</strong> The more lines of code you need to check, the higher the chance you’ll overlook something. Plus, developers don’t usually thoroughly review big PRs, because they are time-consuming and easier to get lost. As such, it’s fair to say that the bigger the PR, the poorer the code review will be.</p> <p><strong>Solution:</strong> Make smaller and self-contained Pull Requests. Because the PRs are small, it’s easier for reviewers to understand the context and reason with the logic, so the review is quicker and more thorough, and the PR is easier to merge, leading to fewer merge conflicts.</p> <h1 id="h-when-the-pr-is-open"><strong>When the PR is open</strong></h1> <h2 id="h-the-code-is-hard-to-understand"><strong>The code is hard to understand</strong></h2> <p><strong>Problem:</strong> Sometimes, developers write code in a way that makes it difficult to understand. If one developer writes unstructured and hard-to-maintain code that other developers cannot read, this will affect the speed of the code reviews and the overall team’s velocity.</p> <p><strong>Solution: </strong>Establish <a href="proxy.php?url=https://blog.codacy.com/coding-standards-what-are-they-and-why-do-you-need-them/" rel="noreferrer noopener">coding standards and guidelines</a> for your code structure and logic. They’ll help your team ship faster and more often since they lead to lower code complexity and more elegant design solutions. Plus, with coding standards, any developer can examine any part of the code, understand it, and change it independently of when and who wrote it.</p> <h2 id="h-lack-of-information-and-context-on-prs"><strong>Lack of information and context on PRs</strong></h2> <p><strong>Problem:</strong> When a reviewer opens a PR, all they have is what the author gave him. When there’s insufficient information on the PR description, the reviewer loses the context of the code, making the code review less effective and more time-consuming.</p> <p><strong>Solution:</strong> You’ll save everyone time by providing as much context as possible in a relevant and informative PR description. The most helpful descriptions explain the what, how, and why and give additional information that might help the reviewer in the code review process. </p> <p>💡Check out <strong>tip #6 on </strong><a href="proxy.php?url=https://blog.codacy.com/13-tips-to-make-your-pr-easier-to-review/" rel="noreferrer noopener"><strong>how to make your PR easier to review</strong></a>.</p> <h2 id="h-a-high-volume-of-prs"><strong>A high volume of PRs</strong></h2> <p><strong>Problem:</strong> When there are many PRs and not enough people to review them promptly, it can lead to triaging and work prioritization problems. Plus, PRs that are not checked for a long time, while others change the project in terms of functionality, will make it harder to merge without conflicts.</p> <p><strong>Solution:</strong> Set a daily limit on the number of PRs your team can open, and optimize your review workflow. Start by identifying long-running Pull Requests, and check if they still need to be reviewed or if the work doesn’t make sense anymore.</p> <h1 id="h-after-the-pr-is-open"><strong>After the PR is open</strong></h1> <h2 id="h-lack-of-response-from-the-author-of-the-pr"> <strong>Lack of response from the author of the PR</strong> </h2> <p><strong>Problem:</strong> The distributed nature of pull-based development means that a lack of responsiveness on behalf of the PR author hurts the entire code review process, making it slower than it should be.</p> <p><strong>Solution: </strong>Foster a culture where the PR author is ready to respond to comments once feedback starts appearing. By replying, the authors are helping everyone keep track of the feedback that has been seen and considered.</p> <h2 id="h-merge-conflicts"><strong>Merge conflicts</strong></h2> <p><strong>Problem: </strong>When two developers have made changes to the same set of lines of code, there is a conflict when merging, where the version controller doesn’t know which code to keep and which to discard.</p> <p><strong>Solution:</strong> You can avoid merge conflicts by improving your team’s communication. Use internal communication and project management tools to keep track of the changes and where in the codebase the developers are making them.</p> <h2 id="h-a-lengthy-review-process"><strong>A lengthy review process </strong></h2> <p><strong>Problem:</strong> A typical PR workflow implies a lengthy series of reviews and tests before you officially deploy the code into production. The process aims to ensure code quality and an alignment between the functionality and the project’s vision.</p> <p><strong>Solution:</strong> Improve the speed of the PR reviews by committing small and often. Plus, ensure that your team understands the importance of code reviews and that they have enough time to perform them. You can help them to meet your expectations by introducing a standard code review checklist.</p> <h1 id="h-live-talk-become-a-code-review-master"><strong>[Live Talk] Become a Code Review Master</strong></h1> <p>Would you like to hear an expert dive deeper into code reviews? Join <strong>Codacy CEO Jaime Jorge</strong> in an exclusive talk with <strong>Curtis Einsmann</strong>, creator of the <a href="proxy.php?url=https://curtiseinsmann.gumroad.com/l/code-review-course" rel="noreferrer noopener">Master the Code Review course</a>. Let's have an open talk and share our questions.</p> <p><a href="proxy.php?url=https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.codacy.com%2Fwp-content%2Fuploads%2F2022%2F09%2FBecoming-a-Code-Review-Master-1024x576.png" class="article-body-image-wrapper"><img src="proxy.php?url=https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.codacy.com%2Fwp-content%2Fuploads%2F2022%2F09%2FBecoming-a-Code-Review-Master-1024x576.png" alt="Becoming a Code Review Master"></a></p> <p><strong>Join us in our Talk </strong><strong><em>Become a Code Review Master</em></strong><strong>. See you there!</strong></p> <p><strong>👉 When: September 20th, 2022, 4 pm UTC / 11 am CDT</strong><br><strong>👉 Where: </strong><a href="proxy.php?url=https://us02web.zoom.us/webinar/register/9416619526958/WN_TcLTok1jTamydt426Kklsg" rel="noreferrer noopener"><strong>online</strong></a> – <em>registration needed</em></p> <p><a href="proxy.php?url=https://us02web.zoom.us/webinar/register/9416619526958/WN_TcLTok1jTamydt426Kklsg" rel="noreferrer noopener">Save me a seat</a></p> <p>&lt;!-- /wp:button --&gt;</p> devops programming computerscience management Ask Me Anything about Code Reviews Heloisa Moraes Mon, 12 Sep 2022 14:48:09 +0000 https://dev.to/codacy/ask-me-anything-about-code-reviews-52ci https://dev.to/codacy/ask-me-anything-about-code-reviews-52ci <h2> We are interviewing former AWS engineer and creator of "Master the Code Review", <a href="proxy.php?url=https://twitter.com/curtiseinsmann" rel="noopener noreferrer">Curtis Einsmann</a>. What should we ask him? </h2> <p>Hi Dev.to community, let's start an AMA thread.</p> <p>On September 20th, we will have a live talk: <strong>“Becoming a Code Review Master”</strong>, with Codacy CEO Jaime Jorge and guest speaker Curtis Einsmann, a software engineer at Gumroad and previously six years at Amazon Web Services. Curtis is an advocate of empathic and effective code reviews, and is passionate about helping developers and organizations level up in that space.</p> <p>What would you like to ask him? Post your questions in the comments.</p> <p>👉 Save your spot for the live talk <a href="proxy.php?url=https://us02web.zoom.us/webinar/register/8816627433311/WN_TcLTok1jTamydt426Kklsg" rel="noopener noreferrer">here</a></p> <p><a href="proxy.php?url=https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flg126u5mlpbqzeqpkany.png" class="article-body-image-wrapper"><img src="proxy.php?url=https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flg126u5mlpbqzeqpkany.png" alt="Image description" width="800" height="450"></a></p> webdev programming discuss ama