<?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: KWAN</title>
    <description>The latest articles on DEV Community by KWAN (@kwan).</description>
    <link>https://dev.to/kwan</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%2F1188109%2F946a4d9f-042b-41ac-91f4-dc29c8fdb7b3.png</url>
      <title>DEV Community: KWAN</title>
      <link>https://dev.to/kwan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kwan"/>
    <language>en</language>
    <item>
      <title>How to Prepare for a Certification in any Tech Career</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Fri, 09 Jan 2026 09:04:45 +0000</pubDate>
      <link>https://dev.to/kwan/how-to-prepare-for-a-certification-in-any-tech-career-21lh</link>
      <guid>https://dev.to/kwan/how-to-prepare-for-a-certification-in-any-tech-career-21lh</guid>
      <description>&lt;p&gt;As AI evolves, programmers must understand how to improve themselves and how to raise their values. Certifications are an effective way to acquire new skills while studying and to gain recognition in the job market. While certifications from platform like Udemy are useful for learning new skills, there are many certifications that significantly enhance professional capabilities.&lt;/p&gt;

&lt;p&gt;In this article, I will outline the most essential certifications and explain how to prepare for them.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fcw0i28fnbd459zeuyu0s.webp" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fcw0i28fnbd459zeuyu0s.webp" alt=" " width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Role and Importance of Certifications
&lt;/h3&gt;

&lt;p&gt;There are many AI tools available to help developers with debugging, problem-solving, planning, and learning new technologies. However, these tools tend to level the playing field, bringing many developers to the same baseline. What was once considered essential to be a developer has changed, and now more than ever, proving your value is a necessity.&lt;/p&gt;

&lt;p&gt;Heres a few reasons why choose a certification:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Competitive Advantage: Candidates with certifications have an edge when applying for jobs.&lt;/li&gt;
&lt;li&gt;Salary Increase: Certified professionals often earn more than non-certified professionals.&lt;/li&gt;
&lt;li&gt;Up-to-Date Knowledge: While preparing for a certification, professionals learn new skills or improve existing ones.&lt;/li&gt;
&lt;li&gt;Skill Validation: Certifications serve as proof of acquired knowledge and mastered skills.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best Certifications to Boost Your Tech Career
&lt;/h3&gt;

&lt;p&gt;Choosing the right certification depends on your career direction and the technologies you currently work with. Professionals who use Java might choose the Java SE Associate if it is their first certification, or the Professional version for more advanced validation. Programmers who frequently work with cloud computing can pursue AWS certifications such as Solutions Architect, AI Practitioner, Developer, Practitioner, or CloudOps, as well as Google Cloud certifications like Cloud Engineer or Data Practitioner.&lt;/p&gt;

&lt;p&gt;There are many other certifications that can be considered complementary. The HashiCorp Certified Terraform Associate is the most suitable certification for those who work with Terraform or other infrastructure management tools. The GitHub Foundations certification is essential for mastering Git, while GitHub Actions is the best choice for learning how to manage triggers and pipeline integration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where to Find Free Learning Resources
&lt;/h3&gt;

&lt;p&gt;It is important to know what kind of certification you are about to pursue. Before investing in any advanced materials, using free resources can be a great strategy to understand the certification or to serve as a complementary study resource.&lt;/p&gt;

&lt;p&gt;As free resources we can list:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt;: It is a platform with many free courses and a wealth of videos, making it a valuable resource both for certification preparation and for general learning.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;: A blog-style site where people of any knowledge level can write articles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/"&gt;Dev.To&lt;/a&gt;: It serves the same purpose as Medium but does not require an account to read articles. Additionally, there is a large number of high-quality technical articles covering a wide range of topics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.w3schools.com/" rel="noopener noreferrer"&gt;W3&lt;/a&gt;: W3 is not only a learning platform, despite being well-known for its tutorials and testing environment, but it also offers AWS quizzes that you should try. W3 provides a large amount of high-quality, free materials.&lt;/p&gt;

&lt;p&gt;There are other resources where you can learn or test your knowledge. &lt;a href="https://skillbuilder.aws/" rel="noopener noreferrer"&gt;AWS SkillBuilder&lt;/a&gt; is an excellent tool for learning AWS-related topics. &lt;a href="https://cloud.google.com/learn/training" rel="noopener noreferrer"&gt;Gloogle&lt;/a&gt; also provides a learning platform that can be used to prepare for certifications. To learn more about Git you can use the &lt;a href="https://learn.github.com/learning" rel="noopener noreferrer"&gt;Github Learn&lt;/a&gt; platform, which offers a wealth of free content and many instructional videos. To test the knowledge you have gained before the certification exam, you can take a practice test on &lt;a href="https://www.examprepper.co/exams" rel="noopener noreferrer"&gt;Examprepper&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Choose the Certification That Best Fits You
&lt;/h3&gt;

&lt;p&gt;Choosing the right certification should be a strategic decision, not a random one. The first step is to clearly define your career goals and understand your current role or the role you want to move into.&lt;/p&gt;

&lt;p&gt;If you work primarily with Java, certifications such as Java SE Associate or Java SE Professional make sense, depending on your experience level. For professionals dealing with cloud computing, certifications from AWS or Google Cloud are a natural fit.&lt;/p&gt;

&lt;p&gt;Use free resources to explore the certification scope. Platforms like AWS SkillBuilder, Google Cloud Training, GitHub Learn, and other free learning resources help you understand the exam objectives, difficulty level, and relevance to your career.&lt;/p&gt;

&lt;p&gt;Certifications should support long-term growth, not just add another badge to your CV.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;Certifications remain a powerful way to stand out in an increasingly competitive and AI-driven market. They can help boost your career, develop new skills, and provide a competitive advantage.&lt;br&gt;
There are many free resources available, so even if you cannot afford advanced materials or mentoring, you can easily find free courses and practice tests.&lt;/p&gt;

&lt;p&gt;Article written by &lt;a class="mentioned-user" href="https://dev.to/walteralleyz"&gt;@walteralleyz&lt;/a&gt;, and originally published at &lt;a href="https://dev.to/walteralleyz/how-to-prepare-for-a-certification-in-any-tech-career-5g74"&gt;https://dev.to/walteralleyz/how-to-prepare-for-a-certification-in-any-tech-career-5g74&lt;/a&gt; on Jan 4, 2026.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>cloud</category>
      <category>aws</category>
      <category>certification</category>
    </item>
    <item>
      <title>Debugging with AI: A Practical Approach for Modern Developers</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Fri, 05 Dec 2025 14:16:29 +0000</pubDate>
      <link>https://dev.to/kwan/debugging-with-ai-a-practical-approach-for-modern-developers-14mf</link>
      <guid>https://dev.to/kwan/debugging-with-ai-a-practical-approach-for-modern-developers-14mf</guid>
      <description>&lt;p&gt;Debugging is the backbone of software development. Learn how to handle it properly and how to use AI to help you, can be a great opportunity to boost your productivity and speed up your performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use AI to Debug
&lt;/h2&gt;

&lt;p&gt;Debugging is the backbone of software development. When it goes wrong, productivity and motivation drop. Many developers rush the fixing process by trying to write more code without fully understanding the root cause. This strategy - or the lack of some - can lead to more issues and even creating more complex bugs. Debugging isn't just about eliminating errors, it's about building reliable software, prevent chaos in production and fixing the chaos created by the poor design and lack of good debugging practices.&lt;br&gt;
AI has become a great and powerful ally in this process. Instead of digging in endless lines of code or unclear stack traces, developers can use smart tools that help analyze problems and spot unusual patterns, either during debugging or even before deploying code to production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security and Data-Sharing Considerations
&lt;/h2&gt;

&lt;p&gt;Before we get further in this discution, is important to highlight the responsible use of AI. Even when integrating your favorite tool, we cannot rely on it blindly, especially when dealing with sensitive or confidential information. So, ask yourself:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does this code contains API keys, passwords, user data or secrets?&lt;/li&gt;
&lt;li&gt;Would I be violating an NDA or company policy by sharing this?&lt;/li&gt;
&lt;li&gt;Does this code expose business logic or proprietary information? If the answer for all these questions is NO, then you're probably using your AI assistant safely.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can discover more about this topic in my other article &lt;a href="https://kwan.com/blog/prompt-engineering-boost-your-productivity-with-ai/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How AI Enhances the Debugging Process
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;AI never gets tired&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI can scan logs, read code, generate explanations, analyze stack traces, and comes up with a solution faster than any human. It is useful not only in debugging process, but also beforehand, helping you scan the development code to find common pitfalls, flaws, missing validations, security breaches in libraries, and suggesting known fixes. The other benefit of AI, is its impact on the way developers think. When we have to explain the bug to AI, we can think clearly, isolating the context, and in many cases, they can reveal the issue more easely. AI can also help you understanding configuration errors and infraestructure-related problems.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Eliminating repetitive checks&lt;/em&gt;&lt;br&gt;
Bugs arise from missing validations, misconfigured files, or security vulnerabilities. AI assistance is ideal to deal with it, as it can scan flaw patterns, generate input validations and create unit tests. What would be a pain for the developer, now can be automated.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Targeted Tests&lt;/em&gt;&lt;br&gt;
Another strong suit of AI is the test generation. However, the AI can go further by memorizing the context. With this feature, the assistant can generate missing tests for methods, classes, API endpoints, even for edge cases and invalid inputs. AI can empowers developers to prevent errors in the future.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Prevent future Issues&lt;/em&gt;&lt;br&gt;
When dealing with the application context, AI can prevent future bugs by suggesting missing behaviors, validations or by elucidating the bugs created by the code.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Using AI as a learning tool&lt;/em&gt;&lt;br&gt;
AI can function not only as an assistant, but also, helping developers understand how to fix a bug and how it occurred. AI can also suggest best practices in the architecture, explain it and highlight the differences between architectures. AI can make simple to understand hard concepts related to software development and project patterns.&lt;/p&gt;

&lt;h2&gt;
  
  
  Debugging scenario - AI in action
&lt;/h2&gt;

&lt;p&gt;Imagine an undesired NullPointerException is thrown, the old fashion way is to speculate, investigate the stack trace, search on the web for documentation or ask on forums. It still works, of course, but with AI we can speed up this process. Now, we can let AI analyze our code, validate some snippets, analyze the context, point out where a variable might be uninitialized, suggest potential fixes such as adding null checks or refactoring the logic. By explaining the error and work together with the Assistant, we can fully understand the root cause, speed up the fixing and prevent similar problems in the future.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ChatGPT&lt;/em&gt;&lt;br&gt;
ChatGPT is a LLM (Large Language Model) AI, designed for general-purpose use. It can help you understanding issues, debug context, review the application flow and identify architecture flaws. However, it's not made for code developing, test automation, or discovery. Its primary use it is more oriented toward learning. That said, it's still a great tool.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Github Copilot&lt;/em&gt;&lt;br&gt;
Now we're talking about a powerful tool design for code assistance. Github can come up with inline code solutions, fix code while the developer is writing it. Copilot is supported by many IDEs, can hold the application context and works in the cloud. Can also integrate with pipelines and can generate high-quality boilerplate code.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tabnine&lt;/em&gt;&lt;br&gt;
Tabnine is another AI-powered code assistant that provides code completions while maintaining context and prioritizing privacy, helping prevent data leaks. Although it is not as strong as Copilot when working with ecosystems or pipelines, Tabnine can boost developer productivity by offering clear explanations and assisting with unfamiliar libraries or frameworks. &lt;/p&gt;

&lt;p&gt;However, Tabnine’s IDE integration is less seamless. When using GitHub Copilot or Tabnine, developers should remain aware that AI suggestions are not always correct. It is important to test thoroughly and verify sources before deploying any code generated with AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Assistant Should You Choose Next?
&lt;/h2&gt;

&lt;p&gt;Choosing the right AI assistant depends on your goals, and the type of code you're working with.&lt;br&gt;
&lt;em&gt;ChatGPT&lt;/em&gt; is the best for learning, understanding complex issues and getting explanations about code or architecture. But it's not designed for production-ready code generation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Copilot&lt;/em&gt; excels at generating code inline while you write, integrating seamlessly with IDEs, and producing boilerplate or pipeline-friendly solutions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tabnine&lt;/em&gt; prioritizes privacy and context, offers strong suggestions for unfamiliar libraries or frameworks, and works well in multi-language projects, though its IDE integration is less smooth and it is not as tightly connected to pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AI will not replace developers, but developers who learn how to use AI effectively will absolutely outperform those who ignore it. AI is not a threat, instead we should look at it as an opportunity, a tool and an assistant. Debugging shouldn't be a painful ritual of guesswork and frustation, bringing us hours of blind investigation and making us waste hours of work. With the right precautions, understanding the pros and cons, knowing what we can share and what not, AI can reduce time spent fixing issues, improve code quality, and help developers understand their applications more deeply. AI is not a magic wand and should not be fully relied upon. It won’t solve every problem in your application, nor will it deploy code for you. AI cannot think independently. As developers, we must understand how to use it effectively. Like any tool, we need to learn how to work with it, what suggestions to accept, and what to filter.&lt;/p&gt;

&lt;p&gt;This article was originally written and published by &lt;a href="https://dev.to/walteralleyz/"&gt;Walter Santos&lt;/a&gt; on November 25, 2025.&lt;/p&gt;

&lt;p&gt;Republished here with the author’s permission to amplify knowledge sharing within the KWAN community.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>coding</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>Kubernetes' Management Revolution: From Infrastructure to Applications</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Fri, 17 Jan 2025 09:23:45 +0000</pubDate>
      <link>https://dev.to/kwan/kubernetes-management-revolution-from-infrastructure-to-applications-17oi</link>
      <guid>https://dev.to/kwan/kubernetes-management-revolution-from-infrastructure-to-applications-17oi</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Kubernetes has transformed how organizations manage their infrastructure, but its real power lies in its ability to place applications at the center of the management process. By abstracting away the complexities of the underlying infrastructure, Kubernetes enables developers and DevOps teams to focus on delivering scalable, reliable, and efficient applications. Now, let’s explore how Kubernetes shifts the focus from infrastructure to applications, revolutionizing modern development workflows.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Application-Centric Paradigm
&lt;/h2&gt;

&lt;p&gt;Traditionally, infrastructure management revolved around provisioning and maintaining hardware, virtual machines, and other foundational components. While this approach ensured systems were operational, it often left application developers wrestling with deployment bottlenecks and scaling challenges.&lt;/p&gt;

&lt;p&gt;Kubernetes changes this paradigm by prioritizing the application lifecycle adding a new layer between the infrastructure and the applications. Core concepts such as Pods, Deployments, and Services abstract the complexities of infrastructure. Developers define how their applications should behave, and Kubernetes ensures those expectations are met. This shift allows teams to concentrate on delivering value through applications rather than managing the underlying systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Kubernetes Supports Application-Centric Management
&lt;/h2&gt;

&lt;p&gt;Kubernetes provides a rich ecosystem of features tailored to application-centric management. At its heart is declarative configuration, where desired application states are specified in YAML. Kubernetes’ control plane works continuously to match the current state with the desired state, ensuring reliability and self-healing capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kubernetes’ key features
&lt;/h3&gt;

&lt;p&gt;– &lt;strong&gt;Scalability&lt;/strong&gt;: Kubernetes automatically scales applications up or down based on resource utilization or custom metrics.&lt;/p&gt;

&lt;p&gt;– &lt;strong&gt;Resilience&lt;/strong&gt;: Applications remain available through automatic failover and pod rescheduling.&lt;/p&gt;

&lt;p&gt;– &lt;strong&gt;Portability&lt;/strong&gt;: Kubernetes’ container-based approach ensures applications run consistently across environments, from development to production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Applications
&lt;/h2&gt;

&lt;p&gt;Kubernetes simplifies application management with powerful tools and extensions that enhance flexibility and automation. One such tool is Helm, a package manager for Kubernetes that enables teams to package and deploy applications as Helm charts, making deployments reproducible and standardized across environments.&lt;/p&gt;

&lt;p&gt;Operators are another cornerstone of Kubernetes application management. These controllers extend Kubernetes’ capabilities to handle complex application behaviors. Examples include the External Secrets Operator, which integrates external secret management tools like HashiCorp Vault or Azure Key Vault, and KEDA (Kubernetes Event-Driven Autoscaling), which automatically scales applications based on custom metrics or events.&lt;/p&gt;

&lt;p&gt;These tools empower teams to manage applications more efficiently, reducing manual effort and focusing on delivering value.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges and Best Practices
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2Falfiewd29umwd3govuee.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="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%2Falfiewd29umwd3govuee.jpeg" alt="Helm: The package manager for Kubernetes" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adopting Kubernetes is not without its challenges. Teams often face a steep learning curve, particularly when transitioning from traditional infrastructure management to a containerized, application-centric approach. Common challenges include:&lt;/p&gt;

&lt;p&gt;– Understanding Kubernetes’ architecture and YAML configurations.&lt;/p&gt;

&lt;p&gt;– Balancing cost and resource allocation in dynamic scaling scenarios.&lt;/p&gt;

&lt;p&gt;– Integrating Kubernetes with existing CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;Best practices to address these challenges include:&lt;/p&gt;

&lt;p&gt;– &lt;strong&gt;Invest in training&lt;/strong&gt;: Equip your teams with the knowledge needed to maximize Kubernetes’ potential.&lt;/p&gt;

&lt;p&gt;– &lt;strong&gt;Start small&lt;/strong&gt;: Begin with non-critical workloads to build confidence and expertise.&lt;/p&gt;

&lt;p&gt;– &lt;strong&gt;Leverage community tools&lt;/strong&gt;: Helm, operators, and open-source projects can significantly simplify the journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future of Application-Centric Management
&lt;/h2&gt;

&lt;p&gt;As Kubernetes evolves, so does its ecosystem. Emerging trends such as GitOps, where application configurations are managed through version-controlled repositories, and serverless computing, which abstracts infrastructure even further, complement Kubernetes’ capabilities.&lt;/p&gt;

&lt;p&gt;Organizations that embrace Kubernetes’ application-centric approach position themselves for success in a rapidly changing tech landscape. By focusing on innovation and efficiency, Kubernetes enables teams to deliver scalable, reliable applications that meet the demands of modern users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kubernetes’ Management Revolution: From Infrastructure to Applications – Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Kubernetes has fundamentally changed the way organizations think about managing applications. By placing applications at the center of the management process, it enables developers and DevOps teams to focus on innovation rather than infrastructure complexities. Tools like Helm and operators such as External Secrets Operator and KEDA showcase how Kubernetes enhances application scalability and reliability while simplifying workflows. As Kubernetes continues to evolve, embracing its application-centric capabilities will remain essential for organizations aiming to thrive in a rapidly changing tech landscape.&lt;/p&gt;

&lt;p&gt;Let's connect on social media, follow us on &lt;a href="https://www.linkedin.com/company/kwancommunity/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Article written by Bruno Correia, and originally published at &lt;a href="https://kwan.com/blog/kubernetes-management-revolution-from-infrastructure-to-applications/" rel="noopener noreferrer"&gt;https://kwan.com/blog/kubernetes-management-revolution-from-infrastructure-to-applications/&lt;/a&gt; on January 16, 2025.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>developer</category>
      <category>devops</category>
    </item>
    <item>
      <title>Are Agile Misapplications Damaging Your Project Management?</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Fri, 10 Jan 2025 09:13:24 +0000</pubDate>
      <link>https://dev.to/kwan/are-agile-misapplications-damaging-your-project-management-50j3</link>
      <guid>https://dev.to/kwan/are-agile-misapplications-damaging-your-project-management-50j3</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Agile remains a powerful approach to project management, but agile misconceptions and misapplications can lead to frustration and inefficiency, creating the perception that ‘Agile is dead.’ To overcome this, we must find a balance: embracing flexibility while staying true to Agile’s core principles.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Agile inaccuracies – misunderstandings and misapplications of Agile principles – pose a significant threat to its effectiveness and can tarnish its reputation. Agile itself remains a robust and transformative approach to project management and product development. However, these inaccuracies often lead to frustrations and inefficiencies, giving rise to the perception that “Agile is dead” or that it simply doesn’t work. To navigate this, we must strike a balance: embracing flexibility while preserving the integrity of Agile principles. But where should we draw the line?&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Misunderstandings and Inaccuracies in Agile Practices
&lt;/h2&gt;

&lt;p&gt;Many agile misapplications originate from a lack of understanding of Agile concepts. Even seasoned professionals, myself included, sometimes fall prey to these misconceptions. Recognizing and addressing them is crucial. Below are some of the most prevalent misunderstandings:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Agile as a Methodology
&lt;/h3&gt;

&lt;p&gt;One of the most widespread inaccuracies is treating Agile as a methodology. Agile is not a methodology but a mindset – a set of four values and twelve principles outlined in the Agile Manifesto. It serves as a guiding philosophy that informs how methodologies, frameworks, and practices should be applied.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Scrum as a Methodology
&lt;/h3&gt;

&lt;p&gt;Scrum is often mistakenly referred to as a methodology, but it is a framework. Unlike a methodology, which is prescriptive and requires strict adherence to predefined processes, a framework provides a structure that teams can adapt to their context. Scrum emphasizes empirical process control, with transparency, inspection, and adaptation at its core.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Mixing Roles Across Frameworks
&lt;/h3&gt;

&lt;p&gt;A common error is blending roles from one framework into another without considering their unique purposes. For instance, incorporating a Product Owner role in a Kanban environment might work, but it’s important to remember that the Product Owner is a Scrum-specific role. Misapplying roles can create confusion and dilute the intent behind each framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Adopting Practices Without Understanding Their Origins
&lt;/h3&gt;

&lt;p&gt;Simple example: Practices like Story Points, User Stories, and Definition of Ready (DoR) are frequently attributed to Scrum, but they originated elsewhere:&lt;/p&gt;

&lt;p&gt;Story Points and User Stories come from Extreme Programming (XP).&lt;br&gt;
Definition of Ready has its roots in Kanban’s explicit policies, emphasizing clarity before starting work.&lt;/p&gt;

&lt;p&gt;While these practices can complement Scrum, they are not inherently part of it.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Focusing on Speed Over Value
&lt;/h3&gt;

&lt;p&gt;A major misinterpretation of Agile is equating it with “going faster.” This mindset often leads teams to prioritize velocity over delivering customer value. Agile’s true aim is to create value incrementally and iteratively, ensuring that what is delivered meets customer needs. To learn more about this specific topic, check this article.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Misuse of Metrics
&lt;/h3&gt;

&lt;p&gt;Metrics like velocity and burndown charts are often misapplied. When used incorrectly, they incentivize undesirable behaviors, such as inflating estimates or rushing incomplete work to “hit the numbers.” Additionally, reliance on vanity metrics (e.g., total tasks completed) can distract from meaningful progress.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Top-Down Agile Transformation
&lt;/h3&gt;

&lt;p&gt;Organizations frequently attempt Agile transformations through top-down mandates, expecting teams to adopt practices without buy-in or adaptation. This “Agile in name only” approach often creates resistance and results in superficial change, rather than fostering a truly Agile culture.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Failing to Adapt to Context
&lt;/h3&gt;

&lt;p&gt;Rigidly applying frameworks without tailoring them to the organization’s unique context is a recipe for failure. Agile thrives on adaptability, and forcing one-size-fits-all solutions undermines its effectiveness.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Impact of These Inaccuracies
&lt;/h2&gt;

&lt;p&gt;These misunderstandings affect individuals, teams, and organizations in various ways:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Individuals&lt;/strong&gt; often struggle to reconcile what they learn from guides and books with what they encounter in real-world Agile environments. This disconnect creates frustration and hinders their ability to grow as Agile practitioners.&lt;br&gt;
&lt;strong&gt;Teams&lt;/strong&gt; face inefficiencies, misaligned expectations, and rework due to unclear roles, metrics, or processes.&lt;br&gt;
&lt;strong&gt;Organizations&lt;/strong&gt; risk failed Agile transformations, wasted investments, and disillusionment with Agile altogether. Misguided efforts can leave leadership skeptical about Agile’s value, further impeding progress.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Do These Inaccuracies Persist?
&lt;/h2&gt;

&lt;p&gt;Several factors contribute to the persistence of Agile inaccuracies:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Language Barriers
&lt;/h3&gt;

&lt;p&gt;For many, English is not their first language, and Agile documentation is predominantly available in English. Misinterpretations of terms or concepts – even in official translations – can propagate inaccuracies.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Borrowing Without Understanding
&lt;/h3&gt;

&lt;p&gt;Practices and terms from one framework are often borrowed and applied elsewhere without fully understanding their intent. This creates hybrid approaches that may work in specific contexts but lead to confusion when generalized.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Commercial Pressures
&lt;/h3&gt;

&lt;p&gt;Consultants and trainers sometimes prioritize selling Agile solutions over ensuring their accurate implementation. This leads to organizations adopting half-baked practices or misaligned strategies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Drawing the Line: Balancing Purity and Pragmatism
&lt;/h2&gt;

&lt;p&gt;Agile’s flexibility is one of its greatest strengths, but it’s also a double-edged sword. To achieve true agility, we must balance adaptability with a solid understanding of Agile’s core principles. As the saying goes, “A rose by any other name would smell as sweet,” but if you misidentify the flower entirely, you risk planting weeds instead.&lt;/p&gt;

&lt;h3&gt;
  
  
  For Individuals
&lt;/h3&gt;

&lt;p&gt;If you’re new to Agile, take the time to learn its foundational principles. Seek mentorship from experienced practitioners who can help you differentiate between textbook Agile and real-world adaptations. Build your knowledge incrementally, and don’t be afraid to question practices that seem inconsistent with Agile’s values and principles.&lt;/p&gt;

&lt;h3&gt;
  
  
  For Teams
&lt;/h3&gt;

&lt;p&gt;Teams must align on their understanding of Agile practices and their origins. Regular retrospectives can be an excellent forum for addressing inaccuracies and refining approaches. Encourage open discussions about what’s working, what’s not, and why.&lt;/p&gt;

&lt;h3&gt;
  
  
  For Organizations
&lt;/h3&gt;

&lt;p&gt;Organizations embarking on Agile transformations should:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Invest in Education&lt;/strong&gt;: Provide training that goes beyond frameworks and practices, focusing on Agile’s underlying principles.&lt;br&gt;
&lt;strong&gt;Engage Competent Coaches&lt;/strong&gt;: Work with coaches who prioritize understanding and contextualization over selling predefined solutions.&lt;br&gt;
&lt;strong&gt;Promote Organizational Agility&lt;/strong&gt;: Agile is not just for IT teams. Foster collaboration and adaptability across all departments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Addressing the Root Causes
&lt;/h2&gt;

&lt;p&gt;To counteract Agile inaccuracies, it’s essential to address their root causes:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Improve Access to Accurate Information
&lt;/h3&gt;

&lt;p&gt;Ensure that translations and localized resources are accurate. Encourage Agile communities to create and share high-quality content in multiple languages.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Emphasize Contextualization
&lt;/h3&gt;

&lt;p&gt;When teaching or implementing Agile, stress the importance of adapting practices to the specific needs of the team or organization. Avoid promoting a one-size-fits-all approach.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Focus on Principles Over Processes
&lt;/h3&gt;

&lt;p&gt;Teach teams and organizations to prioritize Agile’s values and principles over rigid adherence to frameworks or practices. This mindset shift can prevent many of the common pitfalls.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are Agile Misapplications Damaging Your Project Management? – Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Are Agile misapplications damaging your project management? They certainly pose a threat. Agile’s survival and effectiveness depend on our collective ability to distinguish between foundational principles and contextual adaptations. Missteps will happen, but they should be opportunities for learning, not excuses for abandoning agility altogether.&lt;/p&gt;

&lt;p&gt;Adaptation is at the heart of Agile. However, true adaptation requires a deep understanding of the why, what, how, and when behind Agile practices. Without this understanding, adaptations risk becoming distortions, undermining Agile’s potential to deliver value and foster collaboration.&lt;/p&gt;

&lt;p&gt;Whether you’re an individual practitioner, part of a team, or leading an organizational transformation, the key is to stay grounded in Agile’s essence. Learn, question, and grow—and always strive to align your actions with Agile’s principles. Only then can you ensure that Agile remains a powerful force for innovation and improvement in the modern world.&lt;/p&gt;

&lt;p&gt;Let's connect on social media, follow us on &lt;a href="https://www.linkedin.com/company/kwancommunity/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Article written by Ricardo Picoto, and originally published at &lt;a href="https://kwan.com/blog/are-agile-misapplications-damaging-your-project-management/" rel="noopener noreferrer"&gt;https://kwan.com/blog/are-agile-misapplications-damaging-your-project-management/&lt;/a&gt; on January 3, 2025.&lt;/p&gt;

</description>
      <category>agile</category>
    </item>
    <item>
      <title>Top Most Common Job Scams That Target IT Professionals and How To Avoid Them</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Fri, 03 Jan 2025 10:59:53 +0000</pubDate>
      <link>https://dev.to/kwan/top-most-common-job-scams-that-target-it-professionals-and-how-to-avoid-them-1nf1</link>
      <guid>https://dev.to/kwan/top-most-common-job-scams-that-target-it-professionals-and-how-to-avoid-them-1nf1</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Did you find a job offer on the internet that sounded too good to be true? Well, it probably is. The internet is filled with scammers trying to prey on innocent people looking for work, and if you think that developers and other IT professionals are not a target… think twice. In this article, find about the most common job scams that target IT professionals, so you can learn how to recognize fraudulent work opportunities and how to avoid them.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this article you’ll be able to find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What Is a Job Scam and How Common Are They?&lt;/li&gt;
&lt;li&gt;Job scam formats that target IT professionals&lt;/li&gt;
&lt;li&gt;How to Know If a Job Is a Scam&lt;/li&gt;
&lt;li&gt;Tips on How to Avoid Job Scammers&lt;/li&gt;
&lt;li&gt;What To Do if You’ve Been a Victim of a Job Scam&lt;/li&gt;
&lt;li&gt;What other types of job scams are there?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As most job seekers turn to online platforms to search and apply for work offers, they often face fraudulent employment opportunities. Scammers have always been around, but the increased development and use of the internet and technology have allowed them to become viciously creative.&lt;/p&gt;

&lt;p&gt;Looking for a job is a hard task in itself. The growing trend of online job scams makes it even harder, and anyone can fall victim to them. They prey on people’s vulnerabilities to recruit unsuspecting victims.&lt;/p&gt;

&lt;p&gt;There are ways to protect yourself from scams but, to do so, you must first understand what a job scam is and what drives this industry.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is a Job Scam and How Common Are They?
&lt;/h2&gt;

&lt;p&gt;A job scam is a deceptive job offer designed to trick individuals looking for genuine employment. Scammers often aim to exploit job seekers by extracting money, obtaining personal information, or getting unpaid work under false pretenses.&lt;/p&gt;

&lt;p&gt;In the US, reports of &lt;a href="https://www.idtheftcenter.org/publication/itrc-trends-in-identity-report-2023/" rel="noopener noreferrer"&gt;job scams increased 118%&lt;/a&gt; in 2023, in comparison with the previous year, according to a report by the Identity Theft Resource Center. Consumers reported &lt;a href="https://consumer.ftc.gov/consumer-alerts/2023/04/you-got-job" rel="noopener noreferrer"&gt;losses of around $367 million&lt;/a&gt; to these scams in 2022, a value that continues to escalate.&lt;/p&gt;

&lt;p&gt;In Portugal, the scenario is no different. In an interview, Revolut’s head of the FinCrime department stated that job scams are increasingly growing and using tactics such as asking people to pay in advance for paid training, administration, and installation fees, or to buy necessary equipment, such as a laptop or smartphone.&lt;/p&gt;

&lt;p&gt;This year, &lt;a href="https://leitor.jornaleconomico.pt/noticia/portugueses-burlados-com-falsas-ofertas-de-emprego-perdem-em-media-3-762-euros" rel="noopener noreferrer"&gt;1200% more cases were reported&lt;/a&gt; than in 2023. The average reported loss per user is estimated at €3,762, with the most targeted age group being 20 to 35 years old.&lt;/p&gt;

&lt;h2&gt;
  
  
  Job scam formats that target IT professionals
&lt;/h2&gt;

&lt;p&gt;But what scams specifically target IT professionals? We have identified four types of scams you should be especially aware of.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fake Email Job Offers
&lt;/h3&gt;

&lt;p&gt;Scam email job offers are particularly harmful especially if you’ve been applying to many different jobs at the time, and not keeping tabs on your applications. Basically, scammers will pretend to be a recruiter or employer claiming that they’ve received your resume and that you’re the perfect candidate for the job (how convenient!).&lt;/p&gt;

&lt;p&gt;You might not even remember sending an application to said company, and you might not even recognize the sender’s email or the company’s name. But in desperate times, you might feel tempted to accept the offer anyway.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2F5q94bzbykf3em5dt326r.jpg" class="article-body-image-wrapper"&gt;&lt;img src="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%2F5q94bzbykf3em5dt326r.jpg" alt="Image description" width="746" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In these situations, the scammer will require access to sensitive information such as your driver’s license, Social Security number, and bank account information. Said information allows them to harm you in many different ways, from stealing your money to stealing your identity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Social Media Job Scams
&lt;/h3&gt;

&lt;p&gt;Most of us use social media, which makes social media platforms the perfect place for scammers to share fake job opportunities. Platforms such as LinkedIn or Facebook have their tactics to block profiles that advertise fake job ads, but seasoned scammers can easily work around them.&lt;/p&gt;

&lt;p&gt;Other platforms, such as X (formerly known as Twitter) allow scammers to share fake job listings through shortened URL links (bit.ly or ow.ly) which can easily link to unverified and dangerous websites outside the platform.&lt;/p&gt;

&lt;p&gt;The best way to avoid falling for social media job scams is to make sure the recruiter or the company seems legit. Investigate their pages, check for the number of followers, and even try to see if more than one profile comes up when researching the employer’s name.&lt;/p&gt;

&lt;h3&gt;
  
  
  Information Material Scams
&lt;/h3&gt;

&lt;p&gt;Securing a job involves getting a leg up on your competitors. Scammers take advantage of this by posing as recruitment experts who promise to optimize your candidacy by feeding you essential information to prepare for a specific interview. Provided you pay a fee, of course.&lt;/p&gt;

&lt;p&gt;Not only will you not receive any life-changing material, but you’ll also realize that this type of information is already available on the employer’s website, job listings, and many other free sources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fake Career Consulting “Experts”
&lt;/h3&gt;

&lt;p&gt;Scammers posing as career consultants might reach out to you to praise your resume. Amidst compliments, they’ll mention that it could be better with some additional work. In exchange for a fee, they can either improve your resume themselves or refer you to an “expert”.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fwqu62mpa9w1xlqmidhy9.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fwqu62mpa9w1xlqmidhy9.png" alt="Image description" width="729" height="627"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In these situations, there are no experts, you won’t receive an improved resume, and you won’t ever get your money back.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Know If a Job Is a Scam
&lt;/h2&gt;

&lt;p&gt;While there isn’t a foolproof method to detect whether a job is a scam or not, there are many different warning signs that you can be on the lookout for. Some of the most prevalent ones include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unprofessional contact&lt;/strong&gt;. Legitimate companies usually handle recruitment or other professional contacts using company email domains (i.e. &lt;a href="mailto:john@company.com"&gt;john@company.com&lt;/a&gt;). Be wary of potential employers reaching out to you via non-company email domains or platforms such as WhatsApp or Telegram.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Poorly written emails&lt;/strong&gt;. Companies often employ professionals to handle social media and email accounts, so well-written emails with curated information are expected from legit employers. Scam emails, on the other hand, tend to contain vague details and obvious spelling and language errors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment requirements&lt;/strong&gt;. Always doubt an employer who asks you for money upfront, whether it is to purchase start-up equipment from the company, pay a registration fee, or finance some sort of training. Also, be wary of companies asking for your bank account information, before you start working with them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment methods&lt;/strong&gt;. Scammers have their preferred payment methods that often simulate using cash. They might insist you only pay via gift cards, cryptocurrency, shady payment apps, or wire transfers. This leaves little trail and makes it almost impossible to get your money back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Premature contract signings&lt;/strong&gt;. If a company sends you an employment contract to sign in advance, they might be trying to scam you. Especially if they’re asking you for sensitive information such as your Social Security number or bank details.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slightly altered websites&lt;/strong&gt;. Pay close attention to the company websites, as they might be using slightly altered ones. For instance, you might be interested in a job listing at microsoft.com and end up being scammed at a job listing from micro-soft.com.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent contact attempts&lt;/strong&gt;. Scam callers will try to reach you persistently, showing a sense of urgency in hiring you and pressuring you into accepting the job offer. They’ll also try to make you feel bad about potentially losing the opportunity to work with them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unrealistic pay&lt;/strong&gt;. If a company is offering huge paychecks for entry positions that require virtually no skills, it’s probably a scam.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unfamiliar interviewing software&lt;/strong&gt;. Virtual interviews are standard nowadays, and legitimate companies typically use well-known platforms like Zoom or Google Meet. If an employer is trying to convince you to install unfamiliar software just to conduct an interview, you’re likely being scammed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tips on How to Avoid Job Scammers
&lt;/h2&gt;

&lt;p&gt;By now you should understand what job scams are and how they work. However, there are still a few more things you can do to avoid job scammers and all of the stress that comes with dealing with them.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fhxqpfto7185ohn5e1lzn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fhxqpfto7185ohn5e1lzn.jpg" alt="Image description" width="600" height="740"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First (and I can’t stress this enough!), if your recruiter is asking for money, run the other way. You should never have to pay for the flimsy promise of a job.&lt;/p&gt;

&lt;p&gt;Not only should you not disclose any personal or sensitive information, but you should also consider using a separate email and phone number for job searching. In this case, if you do get scammed, your main accounts will remain safe.&lt;/p&gt;

&lt;p&gt;You should also conduct your research on a company whether you’ve initiated the conversation (applied to a job opportunity) or not. Don’t feel pressured to respond right away. Instead, take time to check the company’s original website to see if they have current job openings and research the name of the recruiter and whether their social media presence is verifiable.&lt;/p&gt;

&lt;p&gt;You can even try connecting with the company directly! Shoot them an email and ask them about any job opportunities you might have found on other websites. The safest information will always come from the source.&lt;/p&gt;

&lt;p&gt;Has a suspect company or recruiter tried offering you some work? Check for potential complaints! Job listing platforms often have review sections where candidates share their experiences with employers. Take advantage of that to understand whether the employer is legitimate or just another scammer.&lt;/p&gt;

&lt;p&gt;Never click on links or open any type of unverified document, not unless you know for sure that the source is reputable. Also, don’t fill out any questionnaires or forms with interview screening questions that ask for personal information.&lt;/p&gt;

&lt;p&gt;Another way to minimize the risk of being scammed while job hunting is to be selective regarding the online platforms you use. Stick to platforms such as Indeed or LinkedIn and, even then, stay alert and do your due diligence when applying for job opportunities.&lt;/p&gt;

&lt;p&gt;Last, but certainly not least, trust your gut. If you still feel suspicious about a job offer after conducting your research, then you’re better off trusting yourself and declining it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What To Do if You’ve Been a Victim of a Job Scam
&lt;/h2&gt;

&lt;p&gt;If you’ve fallen victim to a job scam, here are a few steps to minimize the consequences:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Block communications from the scammer, so they’re unable to scam you any further;&lt;/li&gt;
&lt;li&gt;Inform your bank if a scammer stole your bank information, asked you to send a check, or processed a charge on your credit card. They might be able to cancel any transfers or reverse unwanted charges;&lt;/li&gt;
&lt;li&gt;Turn on identity fraud monitoring and credit alerts to receive real-time notifications whenever someone uses your information to, for example, apply for a credit card;&lt;/li&gt;
&lt;li&gt;Report the scam. In Portugal, you can submit an online scam report at &lt;a href="https://queixaselectronicas.mai.gov.pt/Queixas/Burla" rel="noopener noreferrer"&gt;https://queixaselectronicas.mai.gov.pt/Queixas/Burla&lt;/a&gt; and provide details about the scam, including the type of scam, contact information, a description of the scam attempt and any screenshots or evidence you have. If you have suffered a financial loss or the attempted scam was particularly serious you should file a complaint with the Judicial Police at &lt;a href="https://eportugal.gov.pt/servicos/apresentar-uma-queixa-crime-a-policia-judiciaria" rel="noopener noreferrer"&gt;https://eportugal.gov.pt/servicos/apresentar-uma-queixa-crime-a-policia-judiciaria&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What other types of job scams are there?
&lt;/h2&gt;

&lt;p&gt;Besides the job scams targeting IT professionals that have already been mentioned, there are many others that could also affect your family or friends. Therefore, we’ve compiled a list of the top 5 most common job scam types:&lt;/p&gt;

&lt;h2&gt;
  
  
  Work-From-Home Job Scams
&lt;/h2&gt;

&lt;p&gt;Generating income from home has become more appealing to job-seekers. Aware of the rising popularity of remote work, scammers take many different approaches in placing ads that promise exceptional pay for work from home. Some of the most common fake work-from-home job offers include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shipping schemes&lt;/strong&gt;. These scams are also known as postal fraud and they consist of receiving packages, getting rid of original receipts and casings, repackaging the received goods, and reshipping them. Scammers offer attractive salaries for these types of jobs and even promise to cover the shipping fees. However, the candidates mostly end up shipping potentially stolen or illegal items, without receiving the promised compensation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Equipment purchases&lt;/strong&gt;. You’ve made it through the selection process for a remote job and the final step includes submitting a mandatory payment for your remote work equipment (computers, monitors, and peripherals), that’ll be reimbursed on your first paycheck. Except you won’t receive said equipment. Or a reimbursement. Or a paycheck.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;img-10&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Envelope stuffing&lt;/strong&gt;. A company asks you to fill envelopes at home for a high weekly pay or an appealing commission. Sounds easy, right? The problem is that they’ll also ask you to pay a small fee to cover the supplies that you’ll need. But instead of receiving them in the mail, what you’ll get is some form of communication telling you that you’ll only get paid if you trick others by recruiting them into the scam.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data entry scams&lt;/strong&gt;. We’ve all seen these data entry job ads that promise a lot of money for little to no work and without the need for any particular skill. The scam here occurs when the scammer employer asks you to pay upfront registration, processing, or training fees or even share your bank account information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reselling merchandise&lt;/strong&gt;. Scammers count on the fact that many people like having side hustles and reselling merch is the perfect opportunity to reel victims in. The job is to purchase luxury items – clothes, appliances, gadgets, or beauty items – at discounted prices and resell them for profit. The issue is that you buy the inventory, but you’ll never receive it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Assembling crafts and products&lt;/strong&gt;. For the most creative job seekers, the idea of being paid for doing craft projects at home must sound amazing. Well, it isn’t. In these scenarios, scamming companies make you buy craft supplies, purchase the product’s materials, and even pay an upfront enrollment fee. The issue is that, in the end, they’ll reject your finished products, even if they’re an exact match to the initial project.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Top 5 Most Common Job Scam Types and How To Avoid Them – Final Considerations
&lt;/h2&gt;

&lt;p&gt;You can never be 100% safe from job scams as scammers are constantly reinventing their techniques to keep up with tech developments and new safeguards. However, hopefully, using our tips and tricks you can remain safe while job hunting. Are you currently looking for a job in the tech field? Look no further! With the help of KWAN, you can safely start your new career. Just take a look at our &lt;a href="https://kwan.com/careers/" rel="noopener noreferrer"&gt;Careers Page&lt;/a&gt; to find our current opportunities and feel free to contact us!&lt;/p&gt;

&lt;p&gt;Let's connect on social media, follow us on &lt;a href="https://www.linkedin.com/company/kwancommunity/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Article written by Raquel Santos, and originally published at &lt;a href="https://kwan.com/blog/top-most-common-job-scams-that-target-it-professionals-and-how-to-avoid-them/" rel="noopener noreferrer"&gt;https://kwan.com/blog/top-most-common-job-scams-that-target-it-professionals-and-how-to-avoid-them/&lt;/a&gt; on December 23, 2024.&lt;/p&gt;

</description>
      <category>career</category>
      <category>scams</category>
    </item>
    <item>
      <title>Turning Mistakes into Triumphs: Lessons from Sports Legends for Success</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Fri, 27 Dec 2024 11:20:55 +0000</pubDate>
      <link>https://dev.to/kwan/turning-mistakes-into-triumphs-lessons-from-sports-legends-for-success-4g4f</link>
      <guid>https://dev.to/kwan/turning-mistakes-into-triumphs-lessons-from-sports-legends-for-success-4g4f</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Discover the hidden power of mistakes and learn how to turn setbacks into success. Explore lessons from sports legends like Michael Jordan and Tom Brady, whose resilience and focus transformed failures into historic victories. Whether in life or work, this article reveals how embracing mistakes can lead to greatness.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you make a mistake, what’s your reaction? For me, mistakes used to hit my confidence hard. They made me question whether I was capable of achieving my goals. It didn’t matter how much I had accomplished before—my mistakes always felt louder than my successes.&lt;/p&gt;

&lt;p&gt;As a sports enthusiast, I spend most weekends watching games. Over time, I noticed how the most successful athletes dealt with challenges in their careers. They all had their share of failures—missed opportunities, bad decisions, and losses. Yet, these moments didn’t define them. Instead, they found ways to grow stronger from their mistakes.&lt;/p&gt;

&lt;p&gt;Take Michael Jordan, for example. Widely regarded as the greatest basketball player of all time, Jordan won six NBA titles and never lost in the Finals. Yet, when reflecting on his success, he shared these powerful words:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I’ve missed more than 9,000 shots in my career. I’ve lost almost 300 games. Twenty-six times, I’ve been trusted to take the game-winning shot and missed. I’ve failed over and over and over again in my life. And that is why I succeed.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even the most successful basketball player of all time had to fail repeatedly to achieve greatness. This completely shifted the way I thought about mistakes.&lt;/p&gt;

&lt;p&gt;But then I wondered: what about the other players? Many have surely missed more shots and lost more games than Jordan. Why didn’t they succeed? What makes Jordan’s mistakes different? What’s the secret?&lt;/p&gt;

&lt;p&gt;I didn’t get to see Michael Jordan play in real time, but I found the answer by watching another legendary athlete: Tom Brady, the most successful player in NFL history. His story, particularly his performance in Super Bowl LI, offered a powerful lesson about turning mistakes into triumphs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Super Bowl Game
&lt;/h2&gt;

&lt;p&gt;The Super Bowl is the pinnacle of the NFL season, where the AFC and NFC champions face off to crown the league’s victor. In 2017, the New England Patriots, led by quarterback Tom Brady and coach Bill Belichick, faced the Atlanta Falcons, an underdog team led by league MVP Matt Ryan and coach Dan Quinn.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Biggest Mistake
&lt;/h2&gt;

&lt;p&gt;The game didn’t start well for the Patriots. The Falcons’ defense was prepared to stop Brady and his teammates, while their offense managed to score two touchdowns in the first half.&lt;/p&gt;

&lt;p&gt;This left Brady in a tough situation. With only a few minutes left in the half, he knew his team needed to score to build momentum for the second half. However, during this critical drive, he made a costly mistake:&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fmdkpyv32845rzayy9y0l.gif" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fmdkpyv32845rzayy9y0l.gif" alt="Image description" width="400" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In a high-pressure moment, Brady attempted a pass to a teammate covered by two Falcons defenders. One of the defenders intercepted the ball and sprinted toward the end zone. Brady was the last line of defense but failed to stop him from scoring.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2F9r2q5o229y4ci6meyhlx.gif" class="article-body-image-wrapper"&gt;&lt;img src="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%2F9r2q5o229y4ci6meyhlx.gif" alt="Image description" width="400" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This mistake not only gave the Falcons more points but also presented a psychological hurdle. Yet, Brady displayed remarkable composure, returning to the field to secure a field goal before the half ended.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Biggest Deficit in History
&lt;/h2&gt;

&lt;p&gt;In the second half, the Falcons’ offense struck again on their second possession, extending their lead to an imposing 28-3. At that point, the broadcast highlighted a sobering fact: no team had ever overcome a 25-point deficit in the Super Bowl.&lt;/p&gt;

&lt;p&gt;Despite the overwhelming odds, Brady didn’t give up. After the Falcons scored, he stepped in front of his teammates and delivered a motivating speech.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fmri6kdzxmyrzxsfj8mza.gif" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fmri6kdzxmyrzxsfj8mza.gif" alt="Image description" width="400" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The situation didn’t shake his confidence—in himself or in his team. Brady knew there was still time to fight back and seize victory, and the only way to come back was to be better on the next play.&lt;/p&gt;

&lt;p&gt;Inspired by his leadership, the Patriots answered with a touchdown. However, another mistake followed—the team failed to convert the extra point, leaving the score at 28-9 and the deficit still daunting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Overcome
&lt;/h2&gt;

&lt;p&gt;Fueled by Brady’s leadership, the Patriots began to chip away at the deficit. Play by play, they advanced down the field, scoring critical touchdowns while their defense stopped the Falcons’ once-dominant offense.&lt;/p&gt;

&lt;p&gt;With under a minute left in regulation, Brady orchestrated a drive that ended with a touchdown and a game-tying two-point conversion, forcing overtime—the first in Super Bowl history.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Victory
&lt;/h2&gt;

&lt;p&gt;In overtime, the Patriots won the coin toss, giving Brady the ball. He methodically led his team down the field, setting the stage for running back James White to score the game-winning touchdown.&lt;/p&gt;

&lt;p&gt;The Patriots completed the greatest comeback in Super Bowl history, winning 34-28.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Historic Achievement
&lt;/h2&gt;

&lt;p&gt;Brady’s performance in Super Bowl LI was nothing short of legendary. He threw for a record-breaking 466 yards and was named the game’s MVP. This victory marked his fifth Super Bowl title, surpassing his childhood idol, Joe Montana, and solidifying his place as one of the greatest athletes in sports history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overcoming Every Situation
&lt;/h2&gt;

&lt;p&gt;“You make your mistakes, your mistakes never make ya. I’m too obsessed with goin’ down as a great one. But if you wait too long, they gon’ find someone to replace ya.” – Mac Miller, “Goodspeed”&lt;/p&gt;

&lt;p&gt;After watching Brady’s comeback, I wondered how he managed to overcome such a difficult situation. He never looked defeated in that game.&lt;/p&gt;

&lt;p&gt;I realized the answer lies in how American football reflects real-life experiences. Let me explain:&lt;/p&gt;

&lt;p&gt;Like in life, the NFL is a game of cycles. Each team gets opportunities to attack and defend. As the leader of the Patriots’ offense, Brady’s mistake handed the Falcons a significant advantage. Similarly, in life, when we’re pursuing a goal, the path isn’t always smooth—mistakes happen, setting us back and making success feel even more distant – and &lt;a href="https://kwan.com/blog/does-agile-mean-being-fast-scrum-framework-nfl-and-other-agile-concepts/" rel="noopener noreferrer"&gt;NFL games can be used as examples for IT projects too&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Brady, however, had a clear goal: to become the most accomplished player in American sports history, surpassing Michael Jordan’s five NBA championships. To achieve that, he couldn’t afford to lose this game. After the mistake, he didn’t dwell on it or the daunting score deficit. Instead, he quickly shifted his focus to the next play (the next cycle).&lt;/p&gt;

&lt;p&gt;What set Brady apart wasn’t just his skill—it was his resilience. His ability to let go of setbacks, recalibrate, and focus on the ultimate goal made him extraordinary. Winning wasn’t just about this game; it was about solidifying his legacy – if you have trouble recalibrating and focusing after a mistake, here are &lt;a href="https://kwan.com/blog/growing-mindset-5-tips-to-learn-from-mistakes/" rel="noopener noreferrer"&gt;5 tips to help you&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;They Don’t Care About Your Mistakes&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Somebody gotta be watchin’ you, but no one is. It’s kinda crazy that life could be this simple.” – Mac Miller.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After the halftime, I wondered how Brady managed public criticisms after his performance. I watched this game at a bar in Brazil. I remember people in that bar criticizing him after the halftime, with a lot of bad comments about Brady’s performance; the atmosphere in the stadium for sure was worse.&lt;/p&gt;

&lt;p&gt;We can gain insight from someone who shared the same Patriots culture as Brady: Michael Lombardi, a former NFL General Manager who worked closely with him. In &lt;a href="https://www.youtube.com/watch?v=iF1dtB3QM0E&amp;amp;t=660s" rel="noopener noreferrer"&gt;his podcast&lt;/a&gt;, Lombardi reflected on a lesson he shared with his son after he was fired from another NFL team:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Nobody will care about you getting fired. Nobody cares. What matters from this point forward is how you do an autopsy on what happened, how you understand what went down, make notes, and learn.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Brady didn’t let public opinion distract him. He focused on learning and being the best he could in every moment. In the end, those people who criticized his performance had to change their opinion because Brady made a perfect comeback and was elected the best player of the game.&lt;/p&gt;

&lt;p&gt;So in the end, what really matters isn’t your mistake—it’s how you act after it happens. If you dwell on your mistakes and let them ruin your confidence, that’s what people will remember. But if you learn and overcome, they’ll respect your growth – I discussed this mentality of focusing on yourself in &lt;a href="https://kwan.com/blog/positive-mindset-a-key-element-that-helped-me-adjust-to-a-new-country/" rel="noopener noreferrer"&gt;this article&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Turning Mistakes into Triumphs: Lessons from Sports Legends for Success: Final Thoughts
&lt;/h2&gt;

&lt;p&gt;If there’s one takeaway from this article, let it be this: if you have a goal, you can’t be afraid of making mistakes. That’s just how life works. On the path to success, setbacks are inevitable—they’re life’s way of testing whether you’re ready to achieve your dreams.&lt;/p&gt;

&lt;p&gt;Both Brady and Jordan wanted to be the best in their sports. To get there, they faced countless challenges, losses, and criticisms. But instead of letting those moments define them, they used each as an opportunity to grow stronger.&lt;/p&gt;

&lt;p&gt;They found ways to turn defeat into victory. That’s what made them extraordinary.&lt;/p&gt;

&lt;p&gt;So, if you’re going through a tough time, maybe life is testing you. And if it feels like the biggest challenge you’ve ever faced, take it as a sign—because a historic victory might be just around the corner.&lt;/p&gt;

&lt;p&gt;Let's connect on social media, follow us on &lt;a href="https://www.linkedin.com/company/kwancommunity/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Article written by Heitor Anjos, and originally published at &lt;a href="https://kwan.com/blog/turning-mistakes-into-triumphs-lessons-from-sports-legends-for-success/" rel="noopener noreferrer"&gt;https://kwan.com/blog/turning-mistakes-into-triumphs-lessons-from-sports-legends-for-success/&lt;/a&gt; on December 10, 2024.&lt;/p&gt;

</description>
      <category>careerdevelopment</category>
      <category>career</category>
    </item>
    <item>
      <title>Mentoring for Women in IT: How to Get the Most Out of It</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Sun, 22 Dec 2024 18:47:03 +0000</pubDate>
      <link>https://dev.to/kwan/mentoring-for-women-in-it-how-to-get-the-most-out-of-it-3dl2</link>
      <guid>https://dev.to/kwan/mentoring-for-women-in-it-how-to-get-the-most-out-of-it-3dl2</guid>
      <description>&lt;p&gt;In recent years, we have seen considerable progress in the inclusion of women in technology. However, challenges remain, and the presence of women in leadership positions, especially in IT, is still far from being proportional. To address this scenario, a powerful resource has proven to be effective: mentoring for women in IT.&lt;/p&gt;

&lt;p&gt;Mentoring not only bridges the gap between technical knowledge and personal development, but also provides crucial support for women to navigate environments that are often dominated by men. At KWAN, we are proud to offer a mentoring program specifically focused on our female employees, helping to strengthen their professional journey in the IT sector.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Foriricqqqhm9ady40bol.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Foriricqqqhm9ady40bol.png" alt="Image description" width="594" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Mentoring for Women in IT Boosting Women's Careers
&lt;/h2&gt;

&lt;p&gt;Historically, the technology sector has been predominantly dominated by men. This raises important questions about the need to create a more inclusive and welcoming environment for women. Mentoring plays a vital role in this context. When women in IT get direct support from other experienced professionals, they feel more confident to develop their careers, explore new challenges, and even aspire to leadership positions.&lt;/p&gt;

&lt;p&gt;In a sector that requires constant updating and innovation, mentoring is not just a technical guide, but also an emotional and strategic support. As discussed in the article Gender Equality in IT: What's Left to Do?“, the lack of female representation in leadership positions is a significant obstacle. Mentoring can be instrumental in changing this situation, encouraging women to believe in their potential while offering practical tools for growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mentoring for Women in IT at KWAN: A Strategic Tool
&lt;/h2&gt;

&lt;p&gt;At KWAN, we believe that the development of our employees goes beyond simple technical training. Our mentoring program is focused on helping women build support networks and prepare for the unique challenges of the IT sector. By connecting female employees with experienced female mentors, we have managed to create an environment of continuous learning and mutual growth.&lt;/p&gt;

&lt;p&gt;This support is even more relevant if we consider that, as mentioned in this article “Why do we need more women in technology?”, gender diversity is fundamental to technological progress and innovation. The presence of women in IT brings new perspectives and solutions that are crucial to the sector's progress.&lt;/p&gt;

&lt;p&gt;Our mentoring program not only strengthens participants' technical skills, but also addresses crucial topics such as leadership, communication, and self-confidence. Through open and honest conversations, we provide women with the support they need to pave their own ways in the tech world.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 Steps to Make the Most of Mentoring for Women in IT
&lt;/h2&gt;

&lt;p&gt;To fully exploit the benefits of mentoring, both mentees and mentors need to be engaged and prepared. Here are five key steps to get the best out of this process.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Set Clear Goals
&lt;/h3&gt;

&lt;p&gt;Before starting mentoring, think about what you want to achieve. Do you want to improve your technical skills? Do you want to develop leadership skills? Having clarity about your goals helps to guide the sessions and measure progress.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Communicate Openly
&lt;/h3&gt;

&lt;p&gt;The basis of a successful mentoring relationship is communication. Don't be afraid to share challenges, concerns or even failures. Your mentor is there to support, not judge.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Be Proactive
&lt;/h3&gt;

&lt;p&gt;Mentoring is a two-way street. Don't expect your mentor to take all the initiative. Be willing to ask questions, look for additional resources, and implement what you have learned.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Accept and Apply Feedback
&lt;/h2&gt;

&lt;p&gt;Feedback is a powerful tool to grow. Listen carefully to your mentor's suggestions and make the necessary changes. This shows commitment and willingness to evolve.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2F3iwgjyai04gn0tq6zmpy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="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%2F3iwgjyai04gn0tq6zmpy.jpg" alt="Image description" width="750" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Build a Trust Relationship
&lt;/h3&gt;

&lt;p&gt;Effective mentoring goes beyond career issues. Let your mentor get to know your background, your values, and your passions. A trust-based relationship strengthens learning and the impact of mentoring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Checklist for Being a Good Mentee
&lt;/h2&gt;

&lt;p&gt;Being a good mentee requires preparation and commitment. Here's a practical checklist to make sure you get the most out of your experience:&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fr2om39qr1dsdmx8tk8e4.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fr2om39qr1dsdmx8tk8e4.png" alt="Image description" width="586" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Research your Mentor:&lt;/strong&gt; Have an idea of their experience and areas of specialization. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prepare for the Sessions:&lt;/strong&gt; Bring relevant questions and topics to discuss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set Clear Goals:&lt;/strong&gt; Set short-term and long-term goals with your mentor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Take Notes:&lt;/strong&gt; Write down the main issues discussed and the recommended actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Track Your Progress:&lt;/strong&gt; Review your progress on a regular basis and adjust your goals if necessary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show Gratitude: &lt;/strong&gt;Acknowledge your mentor's time and effort. A simple “thank you” makes a difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mentoring for Women in IT:Why it Matters and How to Get the Most Out of It – Final Thoughts
&lt;/h2&gt;

&lt;p&gt;In an industry as dynamic as the tech one, it's imperative that women continue to take their place, and mentoring is an essential tool in this process. Programs like KWAN's are actively breaking down barriers, building a more inclusive community, and preparing women to lead the future of technology.&lt;/p&gt;

&lt;p&gt;So, whether you're getting started in the field or already have an established career, look for a mentor who can provide the support, the guidance, and the inspiration you need to move forward. Together we are shaping the future of technology, and every step towards equality is a breakthrough for society as a whole.&lt;/p&gt;

&lt;p&gt;Let's connect on social media, follow us on &lt;a href="https://www.linkedin.com/company/kwancommunity/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Article written by Conie Menezes, and originally published at &lt;a href="https://kwan.com/blog/mentoring-for-women-in-it-how-to-get-the-most-out-of-it/" rel="noopener noreferrer"&gt;https://kwan.com/blog/mentoring-for-women-in-it-how-to-get-the-most-out-of-it/&lt;/a&gt; on December 9, 2024.&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>womenintech</category>
    </item>
    <item>
      <title>Top Tips to Start Developing The Maturity of a Team in Agile Methodologies</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Tue, 17 Dec 2024 15:17:26 +0000</pubDate>
      <link>https://dev.to/kwan/top-tips-to-start-developing-the-maturity-of-a-team-in-agile-methodologies-4p3i</link>
      <guid>https://dev.to/kwan/top-tips-to-start-developing-the-maturity-of-a-team-in-agile-methodologies-4p3i</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Agile methodologies in software development offer significant advantages, such as flexibility, rapid value delivery, and improved communication between teams. In this article, I will explore these advantages and provide guidance on selecting the most suitable agile methodology, team training, and creating an agile environment to promote team growth.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages of Using Agile Methodologies
&lt;/h2&gt;

&lt;p&gt;Agile methodologies offer significant advantages in software development:&lt;/p&gt;

&lt;h3&gt;
  
  
  Flexibility and Adaptability
&lt;/h3&gt;

&lt;p&gt;They allow for quick responses to changes in requirements, easily adjusting to new client needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rapid Delivery of Value
&lt;/h3&gt;

&lt;p&gt;They deliver small incremental blocks of functionality frequently, allowing clients to start using parts of the product sooner and ensuring continuous value delivery and feedback from clients and stakeholders, aligning the final product with their expectations and needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Better Communication and Collaboration
&lt;/h3&gt;

&lt;p&gt;They promote daily meetings and transparency, keeping all team members aligned and facilitating the quick identification of obstacles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Focus on Quality
&lt;/h3&gt;

&lt;p&gt;They implement continuous testing and practices like TDD and continuous integration, ensuring high quality and facilitating software maintenance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Risk Reduction
&lt;/h3&gt;

&lt;p&gt;Incremental delivery and continuous feedback allow for early identification and mitigation of issues, reducing the risk of major failures.&lt;/p&gt;

&lt;p&gt;These points make agile methodologies an effective choice for software development, helping teams deliver high-quality products efficiently and aligned with client needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the Appropriate Agile Methodology
&lt;/h2&gt;

&lt;p&gt; - Scrum: principles, roles, artifacts, and ceremonies.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Kanban: principles, implementation, and use of boards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;XP (Extreme Programming): practices and values.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Comparison between Scrum, Kanban, and XP for different types of projects.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Among the various options available, you should choose the one that best suits your team to ensure a smoother adaptation in its initial phase. Considering the backlog to deliver and the number of people involved in each stage of the “production line,” align expectations well about where you want to go with this implementation.&lt;/p&gt;

&lt;p&gt;If you're interested in learning more about the agile mindset, we have this &lt;a href="https://kwan.com/blog/aplicando-o-manifesto-agil-a-construcao-de-um-mindset-agil/" rel="noopener noreferrer"&gt;article&lt;/a&gt; on our blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Team Training and Education
&lt;/h2&gt;

&lt;p&gt;  - Workshops and training on agile methodologies.&lt;/p&gt;

&lt;p&gt;  - Relevant certifications (CSM, PSM, etc.). (For the PO, it is very important to have this background to align processes with the facilitator training the team.)&lt;/p&gt;

&lt;p&gt;   - Continuous learning resources (books, online courses, webinars).&lt;/p&gt;

&lt;p&gt;From personal experience, this part is extremely important. Without adequate knowledge, it’s unclear where you want to go or what maturity you want to achieve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defining Roles and Responsibilities
&lt;/h2&gt;

&lt;p&gt;   - Role of the Scrum Master.&lt;/p&gt;

&lt;p&gt;   - Role of the Product Owner.&lt;/p&gt;

&lt;p&gt;   - Role of the development team.&lt;/p&gt;

&lt;p&gt;   - Importance of collaboration and communication among team members.&lt;/p&gt;

&lt;p&gt;Each team member has their own responsibilities, but since they should also think as a team, the delivery is done together by everyone, not just with each person doing their part and that’s it. It’s a broad collaboration among everyone, and this mindset is essential for progress.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fn5v59j4y83ce3bvwbljq.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fn5v59j4y83ce3bvwbljq.png" alt="Image description" width="297" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sprint Planning and Execution
&lt;/h2&gt;

&lt;p&gt;   - Sprint Planning: how to set goals and select tasks.&lt;/p&gt;

&lt;p&gt;  - Daily Stand-ups: importance and best practices. (In my team, we haven’t reached this advanced step yet XD)&lt;/p&gt;

&lt;p&gt;  - Sprint Review and Retrospective: how to assess progress and continuously improve.&lt;/p&gt;

&lt;p&gt;This is of enormous importance: knowing how to measure what the team can deliver at the end of the sprint - it’s important at this step to have defined the team’s “Definition of Done”, what is considered done and ready to deliver to the client.&lt;/p&gt;

&lt;p&gt;Ideally, maintain an effort capacity that is comfortable for the entire team, with all those truly involved in the hands-on process giving input on this capacity, avoiding overload and consequently demotivation in the development of tasks chosen for the sprint.&lt;/p&gt;

&lt;p&gt;I have often felt overwhelmed, and it completely changes how I can develop my work. Although I can work under pressure, being constantly pressured and powerless is not pleasant.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Agile Tools
&lt;/h3&gt;

&lt;p&gt;  - Project management tools (JIRA, Trello, Asana, Confluence).&lt;/p&gt;

&lt;p&gt;   - Communication and collaboration tools (Slack, Microsoft Teams).&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fmki0uf91smg4yxrslonv.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fmki0uf91smg4yxrslonv.png" alt="Image description" width="800" height="468"&gt;&lt;/a&gt;&lt;br&gt;
   &lt;br&gt;
These tools are necessary for the proper functioning of the process as a whole, keeping everything more organized and recorded in the best possible way, reducing the chance of errors or misunderstandings due to lack of notes, documentation, etc.&lt;/p&gt;

&lt;p&gt;An excellent reading recommendation for a deeper understanding of tools is this &lt;a href="https://kwan.com/blog/procura-uma-app-para-gestao-de-tarefas-na-sua-empresa-ou-startup-temos-20-sugestoes/" rel="noopener noreferrer"&gt;article&lt;/a&gt;, available on our blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating an Agile Environment
&lt;/h2&gt;

&lt;p&gt;   - Organizational culture and agile mindset.&lt;/p&gt;

&lt;p&gt;   - Importance of transparency and trust.&lt;/p&gt;

&lt;p&gt;   - Encouraging experimentation and continuous learning.&lt;/p&gt;

&lt;p&gt;Here’s the "Achilles' heel" of the entire process: everything looks good in theory, but practice is where difficulties are encountered, especially at the beginning of a process in a team that has never worked this way. Initially, deliveries tend to be smaller until the team fully understands the process and adapts to the new environment. Without training and the implementation of an agile culture, the process simply won't move forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoring and Continuous Improvement
&lt;/h2&gt;

&lt;p&gt;   - Agile metrics: Velocity, Lead Time, Cycle Time.&lt;/p&gt;

&lt;p&gt;   - Constant feedback and how to use it for improvements.&lt;/p&gt;

&lt;p&gt;   - Adjustments and adaptations based on data and feedback collected in retrospectives.&lt;/p&gt;

&lt;p&gt;With the information constantly gathered by the tools mentioned earlier, there is a wealth of data on the progress of sprints, deliveries, efforts made, and the feelings of team members about the deliveries and the new process. All this information serves as a basis for planning, improvements, adaptations, process corrections, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Change Management and Resistance
&lt;/h2&gt;

&lt;p&gt;   - Identifying and addressing resistance to change.&lt;/p&gt;

&lt;p&gt;   - How to involve stakeholders and gain their support.&lt;/p&gt;

&lt;p&gt;   - Strategies for dealing with common challenges and obstacles.&lt;/p&gt;

&lt;p&gt;As not everything is perfect in life, agile methodology is no different! We may encounter many obstacles before reaching agile maturity, a long path depending on the team's sentiment and actions. It is up to the PO and the agility facilitator to identify the roadblocks and the best way to use them to pave a beautiful road towards continuous improvement and successful team deliveries, relying on external support if necessary, but mainly through conversation among team members and their adaptability. Only this way can we achieve the goal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Success Stories and Lessons Learned
&lt;/h2&gt;

&lt;p&gt;  - Case studies from sprints in retrospectives.&lt;/p&gt;

&lt;p&gt;  - Main lessons learned from problems, risks, delays, unmet deliveries, etc.&lt;/p&gt;

&lt;p&gt;  - Outline future actions to prevent recurrence.&lt;/p&gt;

&lt;p&gt;Retrospective ceremonies are essential for gradually developing the team's maturity. We can see what we did well to continue doing it, what went wrong to learn from it, and plan a strategy to address the issue better, preventing it from happening again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mentoring or Facilitator
&lt;/h2&gt;

&lt;p&gt;   - Importance of having experienced mentors.&lt;/p&gt;

&lt;p&gt;   - How to seek and offer mentoring within the team.&lt;/p&gt;

&lt;p&gt;   - Development of agile leadership skills.&lt;/p&gt;

&lt;p&gt;At my project, thanks to our dear facilitator, the sprints have been better and little by little the teams are maturing in agility, each at their own pace and with their own difficulties, which is perfectly normal at the beginning of the process.&lt;/p&gt;

&lt;p&gt;The training provided by her and everyone's awareness of each stage of the agile process organization were and are essential.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top Tips to Start Developing the Maturity of a Team in Agile Methodologies - Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I hope that with these topics I have provided good material on where to start developing a team's maturity in the use of agile methodologies.&lt;/p&gt;

&lt;p&gt;Remember that everything depends on how your company works, the people involved in the process, as well as your goals for the project.&lt;/p&gt;

&lt;p&gt;Let's connect on social media, follow us on &lt;a href="https://www.linkedin.com/company/kwancommunity/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Article written by Paula Schunck, and originally published at &lt;a href="https://kwan.com/blog/top-tips-to-start-developing-the-maturity-of-a-team-in-agile-methodologies/" rel="noopener noreferrer"&gt;https://kwan.com/blog/top-tips-to-start-developing-the-maturity-of-a-team-in-agile-methodologies/&lt;/a&gt; on November 6, 2024.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>scrum</category>
    </item>
    <item>
      <title>Swift Testing: A Comprehensive Overview</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Fri, 13 Dec 2024 09:31:10 +0000</pubDate>
      <link>https://dev.to/kwan/swift-testing-a-comprehensive-overview-41ni</link>
      <guid>https://dev.to/kwan/swift-testing-a-comprehensive-overview-41ni</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Let’s deep dive into Swift testing, get to know the strengths of XCTest and the exciting new SwiftTesting API introduced at WWDC24. While XCTest remains a staple, it struggles with concurrency and customization. Enter SwiftTesting, a modern approach that uses powerful macros to streamline code and enhance test organization. Discover how these advancements are transforming testing, making it more efficient and developer-friendly in the evolving Swift ecosystem.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Most Used Framework
&lt;/h2&gt;

&lt;p&gt;XCTest is the go-to framework for unit testing in the Apple ecosystem. Originally written by Apple in 1998 in Objective-C, it was integrated into Xcode in 2013, providing tools for writing and making assertions. It still works like a charm despite Swift’s evolution and the introduction of incredible new APIs. However, the XCTest framework isn’t quite what we needed once upon a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges with the Competition
&lt;/h2&gt;

&lt;p&gt;Despite the numerous improvements to XCTest for testing concurrency more easily, Swift Testing now offers a more efficient solution, giving us better tools while running tests in parallel by default.&lt;/p&gt;

&lt;p&gt;Since the introduction of the new concurrency API, developers have been experimenting with various ways of writing unit tests using this framework. Sometimes, this results in boilerplate code or even code that doesn’t make much sense.&lt;/p&gt;

&lt;p&gt;Here’s a fair example of it:&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fuf7fytjrxjuwtscrq8qf.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fuf7fytjrxjuwtscrq8qf.png" alt="Image description" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even if we call the function using the await keyword, the test will fail because, in theory, we have to wait for the task to complete. Hence, we need to call the .value property, which stands for the result of a task after it is completed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Customization and Other Issues
&lt;/h2&gt;

&lt;p&gt;There are other problems, such as customization. Currently, it is hard to configure an environment for the tests. There is no effective way to organize the tests, and performance issues are common since the framework does not provide robust support for parallelization and async jobs. Debugging test failures has always been time-consuming and challenging.&lt;/p&gt;

&lt;h2&gt;
  
  
  Swift Testing
&lt;/h2&gt;

&lt;p&gt;Apple has introduced an innovative open-source API that is ergonomic, modern, expressive, and highly customizable. This new API extensively uses macros to minimize boilerplate code and enable complex operations with less effort.&lt;/p&gt;

&lt;p&gt;With the introduction of the &lt;a class="mentioned-user" href="https://dev.to/test"&gt;@test&lt;/a&gt; macro, developers can pass traits, allowing for the specification of runtime conditions.&lt;/p&gt;

&lt;p&gt;The API leverages macros to define the test structure, utilizing &lt;a class="mentioned-user" href="https://dev.to/suite"&gt;@suite&lt;/a&gt; and &lt;a class="mentioned-user" href="https://dev.to/test"&gt;@test&lt;/a&gt; for the organization. These macros, combined with the customizable traits, offer a fully tailored testing experience. Additionally, the #expect macro ensures that expected conditions are validated and any failures are reported effectively.&lt;/p&gt;

&lt;h3&gt;
  
  
  Parameterized tests
&lt;/h3&gt;

&lt;p&gt;For scenarios where a test must be executed with different inputs, parameterized tests provide a convenient solution. These tests allow the definition of a collection of input values that the test can iterate over, ensuring each case is evaluated.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fgrtdzgfj2te7htc4ma3y.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fgrtdzgfj2te7htc4ma3y.png" alt="Image description" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding tags
&lt;/h3&gt;

&lt;p&gt;You can add custom tags to categorize, identify, or filter specific subsets of tests.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Ftsk6k4h36mefg06qx8rv.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Ftsk6k4h36mefg06qx8rv.png" alt="Image description" width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring custom behavior
&lt;/h3&gt;

&lt;p&gt;By using traits, we can define custom behaviors such as enabling or disabling tests, configuring timeouts, running tests serially or in parallel, and adding annotations to associate tests with bugs. Additionally, we can create custom traits, perform device-specific testing, or limit tests to specific OS versions for more targeted test coverage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Migration to Swift Testing
&lt;/h2&gt;

&lt;p&gt;Apple designed Swift Testing to work alongside XCTest, allowing for gradual adoption. Rather than needing to fully replace XCTest, developers can slowly migrate their tests by writing new ones with Swift Testing while maintaining their old XCTest tests.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fbt5n9ivzr40z25mwynry.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fbt5n9ivzr40z25mwynry.png" alt="Image description" width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Grouping Tests
&lt;/h3&gt;

&lt;p&gt;Previously, we needed to use a class that was inherited from XCTestCase to group tests. Now, we can use a struct, which is recognized as a suite. Also, for a function to be considered a test function, it no longer needs to start with “test”. Apple has effectively leveraged macros to achieve that.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fttnhs92hv9ls6jlpr9ke.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fttnhs92hv9ls6jlpr9ke.png" alt="Image description" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup and Teardown
&lt;/h3&gt;

&lt;p&gt;Running code before or after each test is now simpler. Since our suite is a struct, we can use the init and deinit methods to handle setup and teardown.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fln68sggtyy7ot1go4om6.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fln68sggtyy7ot1go4om6.png" alt="Image description" width="800" height="714"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Simplifying Assertions
&lt;/h3&gt;

&lt;p&gt;Assertions in Swift testing have been redesigned to feel more natural, allowing developers to use plain Swift code instead of relying on specialized functions. This eliminates the need to constantly look up testing functions, making the process more intuitive.&lt;/p&gt;

&lt;p&gt;Additionally, test result reporting has been greatly improved. Instead of vague or unclear feedback, the new system provides powerful diffing results, making it much easier to understand why a test is failing.&lt;/p&gt;

&lt;p&gt;This table demonstrates how we can express our expectations in the new API based on XCTest.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fw6qibubcj5fdcuxw5okh.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fw6qibubcj5fdcuxw5okh.png" alt="Image description" width="800" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s how the result is displayed after a test failure. We can expand the failure diff, which is a game-changer for our productivity.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fm7dha0myk3j8pnseiv4s.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fm7dha0myk3j8pnseiv4s.png" alt="Image description" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Swift Testing: A Comprehensive Overview – Final Thoughts
&lt;/h2&gt;

&lt;p&gt;In conclusion, while XCTest has served the Apple ecosystem well for years, the SwiftTesting API introduces a fresh, modern approach to unit testing. With its focus on simplicity, flexibility, and powerful macros, SwiftTesting addresses many of the limitations developers faced with XCTest, especially around concurrency and customization. As Swift continues to evolve, adopting SwiftTesting can help developers streamline their testing process and create more maintainable, efficient code. Embracing these new tools ensures that Swift testing keeps pace with the language’s rapid advancements.&lt;/p&gt;

&lt;p&gt;Let's connect on social media, follow us on &lt;a href="https://www.linkedin.com/company/kwancommunity/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Article written by Jonatha Lima, and originally published at &lt;a href="https://kwan.com/blog/swift-testing-a-comprehensive-overview/" rel="noopener noreferrer"&gt;https://kwan.com/blog/swift-testing-a-comprehensive-overview/&lt;/a&gt; on October 28, 2024.&lt;/p&gt;

&lt;p&gt;Happy testing, and may all your bugs be shallow!&lt;/p&gt;

</description>
      <category>testing</category>
      <category>swift</category>
    </item>
    <item>
      <title>Refactoring: The Art of Polishing Code</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Wed, 11 Dec 2024 11:41:09 +0000</pubDate>
      <link>https://dev.to/kwan/refactoring-the-art-of-polishing-code-2hn</link>
      <guid>https://dev.to/kwan/refactoring-the-art-of-polishing-code-2hn</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Refactoring is the process of improving the internal structure of code without changing its external behavior. This article explores how this practice is fundamental to creating high-quality solutions.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Refactoring is the process of changing the source code in a way that does not alter its external behavior while improving its internal structure. It is a disciplined technique for cleaning and organizing code, and as a result, minimizing the chances of introducing new bugs.”&lt;/em&gt;&lt;br&gt;
— Martin Fowler&lt;/p&gt;

&lt;p&gt;From the dictionary, “to polish” means to perfect something rudimentary, rough, or crude; to refine. This definition captures what we seek in refactoring: making changes in the code in pursuit of perfection and beauty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developer: A Digital Craftsman
&lt;/h2&gt;

&lt;p&gt;What is a software developer if not a digital craftsman, driven by the quest to create inspiring solutions? We’re not just interested in creating solutions that work, but in doing so with quality. The results don’t always meet expectations, but unlike traditional craftsmen, we can revisit a completed piece and make adjustments at any time.&lt;/p&gt;

&lt;p&gt;As stated at the beginning of the article, we seek improvements that bring beauty to our code, and we must remember that beauty resides in simplicity. Therefore, we should strive to simplify our code, as we may not always realize the value this adds. &lt;/p&gt;

&lt;p&gt;A simple codebase is easy to understand, whether by another craftsman or by ourselves in a few weeks or months. As Kent Beck says, code should “reveal its intentions.” &lt;/p&gt;

&lt;p&gt;Code that is easy to understand can just as easily be modified and evolved, with fewer chances of side effects. Yes, I’m talking about bugs – and I know that caught your attention. Gotcha!&lt;/p&gt;

&lt;p&gt;It’s essential to acknowledge the uncomfortable truth that we don’t always get the design right on the first attempt, regardless of our seniority level in software development. The initial version of code might not be the &lt;a href="https://kwan.com/blog/clean-code-a-comprehensive-guide-to-help-you-write-quality-code/" rel="noopener noreferrer"&gt;cleanest&lt;/a&gt;; depending on circumstances, we’re often more focused on getting it to work and plan to take a more critical look later, evaluating whether we’ve violated any SOLID principles or ignored a &lt;a href="https://kwan.com/blog/design-patterns/" rel="noopener noreferrer"&gt;design pattern&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There are times when you might recognize the need to modify existing software before adding new features to facilitate the integration of new code.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Make the change easy, then make the easy change.“&lt;/em&gt;&lt;br&gt;
— Kent Beck&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Tweak What’s Already Working?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2Fspdme3y6yz6s53adej59.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fspdme3y6yz6s53adej59.png" alt="Image description" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re a software developer who has never asked this question, I must congratulate you—you love what you do and care about doing things well. However, the chance of someone asking this question is high, and I don’t blame them. Understanding the ‘why’ should guide our decisions.&lt;/p&gt;

&lt;p&gt;If I had to convince my boss of the importance of refactoring, I’d present the following case study, drawn from the book &lt;a href="https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html" rel="noopener noreferrer"&gt;Clean Architecture&lt;/a&gt;, where we can analyze real data from a real company.&lt;/p&gt;

&lt;p&gt;The first graph shows the growth of the engineering team, followed by a graph on productivity measured in lines of code. In the second graph, we see that while each release includes a larger team, productivity begins to stagnate.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fwymkgii3d35q2ayuqzur.jpg" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fwymkgii3d35q2ayuqzur.jpg" alt="Image description" width="575" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Graph 1 – Engineering Team Growth&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Ftl4anl34giecfoamry1r.jpg" class="article-body-image-wrapper"&gt;&lt;img src="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%2Ftl4anl34giecfoamry1r.jpg" alt="Image description" width="575" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Graph 2 – Productivity Over Time&lt;/p&gt;

&lt;p&gt;More lines of code were expected with the addition of new developers, right? You might think other factors influenced the outcome, such as a lack of motivation or team dedication, but what was observed was that overtime hours didn’t decrease during this period.&lt;/p&gt;

&lt;p&gt;Looking at the cost per line of code graph, we see that costs increased by 40 times between releases one and eight.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fburqy9crw7sak0h8ojp7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fburqy9crw7sak0h8ojp7.jpg" alt="Image description" width="575" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Graph 3 – Cost Per Line of Code Over Time&lt;/p&gt;

&lt;p&gt;If you really want to startle the company board, present the next graph, which shows the monthly payroll for development over the same period. What started at several hundred thousand dollars reached around $20 million by the eighth release, with no forecast for change.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Ft98u8q1p0t8up0rcza4i.jpg" class="article-body-image-wrapper"&gt;&lt;img src="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%2Ft98u8q1p0t8up0rcza4i.jpg" alt="Image description" width="531" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Graph 4 – Monthly Development Payroll Per Release&lt;/p&gt;

&lt;p&gt;This is the picture of a system where meeting deadlines was always the priority. Developers were added in hopes of producing more code in less time, with little regard for code quality. Over time, adding new features became harder, as most efforts shifted to fixing issues, leaving little room for significant new functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agile Methodologies
&lt;/h2&gt;

&lt;p&gt;The concept of agile is often misunderstood, with many people equating agility with speed. Setting tight deadlines to appear ‘agile’ is far from the reality. When applied correctly, the agile method can create the impression of rapid progress, as if developers are accelerating to meet delivery targets.&lt;/p&gt;

&lt;p&gt;Where agility truly makes a difference is in responsiveness to changes, decision-making, and project course corrections when needed.&lt;/p&gt;

&lt;p&gt;But as not everything is rosy, working with agile methods can bring the following challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requirements can change, bringing new perspectives to the solution.&lt;/li&gt;
&lt;li&gt;Starting a sprint without clearly defined requirements – which is often part of the framework’s essence – allows for earlier failures, enabling adjustments to be made sooner.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In these cases, refactoring is a useful and necessary tool, given the agile methodology’s characteristic of seeking small, incremental deliveries and admitting mistakes that must be promptly corrected.&lt;/p&gt;

&lt;p&gt;Want to learn more about the agile world? It’s worth reading some excellent articles on &lt;a href="https://kwan.com/blog/applying-the-agile-manifesto-to-build-an-agile-mindset/" rel="noopener noreferrer"&gt;applying the agile manifesto to developing an agile mindset&lt;/a&gt; and on the functioning of a &lt;a href="https://kwan.com/blog/does-agile-mean-being-fast-scrum-framework-nfl-and-other-agile-concepts/" rel="noopener noreferrer"&gt;Scrum team&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Refactor?
&lt;/h2&gt;

&lt;p&gt;Ideally, refactoring should happen within a reasonable timeframe, not too distant from the code creation, also known as timely refactoring. However, before starting to refactor, certain prerequisites must be met. &lt;/p&gt;

&lt;p&gt;If you’re a careful reader, you may have noticed that the word “behavior” appears multiple times throughout the article and might have guessed that it’s a critical element of refactoring. But how can we ensure that code behavior remains unchanged when dealing with projects with a large volume of code, workflows, and scenarios? That’s where testing comes in.&lt;/p&gt;

&lt;p&gt;The first requirement before considering refactoring is the presence of unit tests, which aligns with Kent Beck’s first rule of &lt;a href="https://www.martinfowler.com/bliki/BeckDesignRules.html" rel="noopener noreferrer"&gt;Simple Design&lt;/a&gt;. Unit tests are essential for ensuring that the software’s behavior remains consistent, functioning as a contract and providing developers with the confidence to make necessary changes.&lt;/p&gt;

&lt;p&gt;Of course, having tests isn’t enough; good test coverage is essential. Coverage rates of 2%, 5%, or 8% are better than nothing but are very low numbers that won’t provide sufficient assurance that everything is working as it should, or that bugs haven’t been introduced.&lt;/p&gt;

&lt;p&gt;To ensure the success of the refactoring, all unit tests must continue to pass without modification.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fbb55r6cgj58ci7r619bo.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fbb55r6cgj58ci7r619bo.png" alt="Image description" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When Not to Refactor
&lt;/h2&gt;

&lt;p&gt;In theory, all poor code should be refactored, but there are exceptions where we can assess whether the effort is worth it. When dealing with legacy software, for instance, we must determine whether it’s worth refactoring or deprecating it. &lt;/p&gt;

&lt;p&gt;For example, you could evaluate whether the language versions and libraries are outdated. The absence of unit tests may indicate poor code quality and a high likelihood of bugs.&lt;/p&gt;

&lt;p&gt;In some cases, the effort required to refactor software with significant problems might be equivalent to that of writing new software.&lt;/p&gt;

&lt;h3&gt;
  
  
  Measuring your Code
&lt;/h3&gt;

&lt;p&gt;Cyclomatic Complexity and Cognitive Complexity are metrics used to determine code quality. Performing this analysis manually is time-consuming, so you should use tools that automate this process. The goal is to provide a basic understanding of these metrics to clarify what they represent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cyclomatic Complexity
&lt;/h3&gt;

&lt;p&gt;Cyclomatic Complexity measures how difficult it is to test a unit of code. It’s useful for evaluating the complexity of code segments, such as methods and routines, rather than the codebase as a whole. In short, it measures the maximum number of independent paths within the code.&lt;/p&gt;

&lt;p&gt;This value has a direct relationship with the number of test scenarios required to achieve 100% coverage for a method. A high number of test scenarios indicates that the method is complex and challenging to read.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fmhia2hadtwmwcl3hd8xd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fmhia2hadtwmwcl3hd8xd.jpg" alt="Image description" width="800" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Cognitive Complexity
&lt;/h3&gt;

&lt;p&gt;Cognitive Complexity measures how difficult it is to understand a unit of code. It assesses the number of breaks in the linear reading flow, weighted by the level of nesting of these breaks.&lt;/p&gt;

&lt;p&gt;It focuses on Kent Beck’s second rule of Simple Design: revealing the code’s intent, scoring low when the code is more expressive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Analysis Tools
&lt;/h3&gt;

&lt;p&gt;Beyond our ability to spot problems in code, we have tools that make our lives easier, such as SonarQube, JArchitect, ESLint, and others.&lt;/p&gt;

&lt;p&gt;Using SonarQube as an example, it provides an overview of a project’s code status with various indicators.&lt;/p&gt;

&lt;p&gt;One interesting metric in SonarQube is technical debt, which estimates the approximate time required to refactor your code.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fjav8ezq7ab6wmnh3keb4.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fjav8ezq7ab6wmnh3keb4.png" alt="Image description" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Refactoring: The Art of Polishing Code – Final Considerations
&lt;/h2&gt;

&lt;p&gt;Imagine a wise man on top of a hill defining refactoring. He might say, ‘To refactor is to change without changing,’ typical of those who hide knowledge in cryptic phrases and don’t care if you understand them. But I hope this article has helped you enough for the message to make sense: refactoring is about changing the code without altering its essence—its behavior—in pursuit of simplicity for maintainability.&lt;/p&gt;

&lt;p&gt;And maybe this concept isn’t entirely unfamiliar. If you’ve ever replaced a magic number with a constant or renamed a variable to something more meaningful, guess what? You’ve refactored your code. Cheers!&lt;/p&gt;

&lt;p&gt;Let's connect on social media, follow us on &lt;a href="https://www.linkedin.com/company/kwancommunity/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Article written by Rodrigo Prata, and originally published at &lt;a href="https://kwan.com/blog/refactoring-the-art-of-polishing-code/" rel="noopener noreferrer"&gt;https://kwan.com/blog/refactoring-the-art-of-polishing-code/&lt;/a&gt; on October 18, 2024.&lt;/p&gt;

&lt;p&gt;See you in the next article!&lt;/p&gt;

</description>
      <category>code</category>
      <category>refactoring</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to integrate Test Automation into the system pipeline with a downstream trigger on GitLab</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Fri, 06 Dec 2024 12:40:34 +0000</pubDate>
      <link>https://dev.to/kwan/how-to-integrate-test-automation-into-the-system-pipeline-with-a-downstream-trigger-on-gitlab-1h9a</link>
      <guid>https://dev.to/kwan/how-to-integrate-test-automation-into-the-system-pipeline-with-a-downstream-trigger-on-gitlab-1h9a</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;This guide will show you how to configure a downstream trigger to run automated tests in response to changes, ensuring quality before deployment. Follow these steps to streamline your testing process and improve the reliability of your code.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to configure a Downstream trigger?
&lt;/h2&gt;

&lt;p&gt;Before we start, consider that this configuration is for implementing the GitLab CI downstream to trigger from a Develop Merge Request on the STG environment. Now follow me, step by step!&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Edit the .gitlab-ci.yml file
&lt;/h3&gt;

&lt;p&gt;In the root directory of your team repository, edit or create a file named .gitlab-ci.yml. This file defines the stages and jobs for the CI/CD pipeline.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Add New Stages and Jobs
&lt;/h3&gt;

&lt;p&gt;Below is a basic example of how to add a new stage to the .gitlab-ci.yml file:&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fmemr1wqtohtwel83c07i.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2Fmemr1wqtohtwel83c07i.png" alt="Image description" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stages&lt;/strong&gt; – Define the sequence of stages (test, publish, vlad, integration_tests, rebuild-staging).&lt;br&gt;
&lt;strong&gt;Job&lt;/strong&gt; (integration_tests) – This job is placed in the integration_tests stage.&lt;br&gt;
&lt;strong&gt;Rules&lt;/strong&gt; – The job will be triggered if the commit tag matches the regex ^.\/stg\/.$ or if the commit branch matches the regex ^stg-.&lt;em&gt;$.&lt;br&gt;
**Trigger&lt;/em&gt;* – It specifies the downstream project to trigger (projectName/repository).&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Customize Job and Project Path
&lt;/h3&gt;

&lt;p&gt;Add a job with the same stage name (integration_tests) and modify the trigger section to reflect your actual project path. &lt;/p&gt;

&lt;p&gt;&lt;a href="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%2F90un58fbf75wnu070civ.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2F90un58fbf75wnu070civ.png" alt="Image description" width="800" height="238"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Commit and Push: Commit the .gitlab-ci.yml file
&lt;/h3&gt;

&lt;h3&gt;
  
  
  5. Create a Merge Request
&lt;/h3&gt;

&lt;p&gt;Merge Request: Create a new Merge Request (MR) on the project. This should trigger the pipeline and include the new integration_tests stage.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Monitor the Pipeline
&lt;/h3&gt;

&lt;p&gt;CI/CD Section: Go to your GitLab project’s CI/CD section to monitor the pipeline’s progress. The pipeline will automatically run the stages according to the configuration in the .gitlab-ci.yml file.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Review Results
&lt;/h3&gt;

&lt;p&gt;Review: Once the pipeline has been completed, review the test results within the GitLab interface. If any tests fail, you’ll be able to see detailed logs and reports to help diagnose and fix any issues.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2F32688qsdto6cqmddkfzv.png" class="article-body-image-wrapper"&gt;&lt;img src="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%2F32688qsdto6cqmddkfzv.png" alt="Image description" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to integrate Test Automation into the system pipeline with a downstream trigger on GitLab: Additional Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ensure the downstream project specified in the trigger section has appropriate permissions and is accessible from the current project.&lt;/li&gt;
&lt;li&gt;Test your .gitlab-ci.yml changes in a feature branch before merging them into the main branch.&lt;/li&gt;
&lt;li&gt;Use GitLab’s CI/CD pipeline editor to validate your .gitlab-ci.yml syntax and configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to integrate Test Automation into the system pipeline with a downstream trigger on GitLab: Final Thoughts Final Thoughts
&lt;/h2&gt;

&lt;p&gt;By following all the steps described in this article, we will have our automated tests running in the Downstream GitLab pipeline. Thus, tests will always run after any new Merge Request, ensuring agility and constant testing, guaranteeing the quality of new application versions.&lt;/p&gt;

&lt;p&gt;If you would like to know more about configuring a yaml for a test Pipeline, check this &lt;a href="https://kwan.com/blog/como-colocar-a-sua-automacao-de-testes-no-ci-cd-gitlab/" rel="noopener noreferrer"&gt;article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hope you enjoyed this guide and feel free to leave any questions in the comments. See you in the next article!&lt;/p&gt;

&lt;p&gt;Article written by Lucas Oliveira, and originally published at &lt;a href="https://kwan.com/blog/how-to-integrate-test-automation-into-the-system-pipeline-with-a-downstream-trigger-on-gitlab/" rel="noopener noreferrer"&gt;https://kwan.com/blog/how-to-integrate-test-automation-into-the-system-pipeline-with-a-downstream-trigger-on-gitlab/&lt;/a&gt; on October 9, 2024.&lt;/p&gt;

</description>
      <category>git</category>
      <category>gitlab</category>
      <category>automation</category>
    </item>
    <item>
      <title>Navigating Workplace Challenges: Recognize, Strategize, and Overcome</title>
      <dc:creator>KWAN</dc:creator>
      <pubDate>Thu, 05 Dec 2024 14:48:45 +0000</pubDate>
      <link>https://dev.to/kwan/navigating-workplace-challenges-recognize-strategize-and-overcome-15j4</link>
      <guid>https://dev.to/kwan/navigating-workplace-challenges-recognize-strategize-and-overcome-15j4</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Deadlines are slipping, stress is piling up, and you can’t quite pinpoint the cause. Sound familiar? What if you tackled workplace challenges the same way you’d handle a coding challenge?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As IT people, we’re constantly challenged by the pace of our work industry, which indirectly brings to the table topics such as innovation, creativity, social engineering, adaptation, and many others.&lt;/p&gt;

&lt;p&gt;A life without challenges, for many, can be ideal! Unfortunately, we don’t live in such a wonderland. We either adapt or get left behind and replaced by someone who does. That’s why many workers, when faced with these sorts of challenges, compromise their resolution, as they often lack the proper skills to address and overcome them.&lt;/p&gt;

&lt;p&gt;In this article, I’ll present some signs that might indicate your current approach isn’t working. We’ll then go through a few common blueprints to understand a given challenge, so we can better prepare ourselves for building a plan that will boost our confidence and help get the work done!&lt;/p&gt;

&lt;h2&gt;
  
  
  Signs you need to change approaches
&lt;/h2&gt;

&lt;p&gt;Throughout our careers, our lack of success might manifest itself in different ways. Sometimes, we don’t even realize it until it’s too late, so that’s why we practice pinpointing these signs.&lt;/p&gt;

&lt;p&gt;Some of them include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Constantly failing deadlines&lt;/strong&gt;. When we begin to constantly fail deadlines, we also might try to externally place the blame. For instance, we might blame the company for a lack of work organization or planning. It can be hard to understand and accept that we might be the problem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stress anticipation&lt;/strong&gt;. Even before our work gets assigned to us, we might already be nervous or stressed about it. Especially if we’re counting on getting out of our comfort zone, which is a source of stress that can lead to sadness and anxiety throughout the project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Difficulty in explaining ourselves&lt;/strong&gt;. We might, oftentimes, struggle with expressing ourselves, for instance, when trying to explain our work or solutions to others. This could translate as a lack of consciousness or understanding of the core issue we’re trying to solve.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lack of work segregating&lt;/strong&gt;. By not properly detailing our tasks and not breaking complicated actions into smaller, more manageable ones, we’re leaving a lot of room for unpleasant surprises and setting ourselves up to fail.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Understanding the workplace challenges
&lt;/h2&gt;

&lt;p&gt;Most of the signs mentioned above are examples of the difficulties you face when going through challenges. To begin solving them, we first need to understand the common ground between them → A problem ready to be solved!&lt;/p&gt;

&lt;p&gt;Not fully understanding the core problem, as well as its implications, side effects, and details, is a recipe for disaster.&lt;/p&gt;

&lt;p&gt;By experience, trying to understand the issue while implementing a potential solution will most certainly leave critical gaps open. You’ll be constantly making up the lost ground, and in the end, it will feel like a never-ending snowball effect.&lt;/p&gt;

&lt;p&gt;If by any chance, you see yourself facing a bigger challenge, such as organizing and planning a product, it’s your lucky day! We’ve prepared &lt;a href="https://kwan.com/blog/all-you-need-to-know-to-build-a-deep-and-productive-product-backlog/" rel="noopener noreferrer"&gt;this article&lt;/a&gt; just for you! &lt;/p&gt;

&lt;p&gt;In the next section, we’ll dig deeper into how we can better understand our challenges and be fearless while facing them!&lt;/p&gt;

&lt;h2&gt;
  
  
  Building your plan while facing workplace challenges
&lt;/h2&gt;

&lt;p&gt;My many years of experience allowed me to come up with a proper blueprint that will help you in your future endeavors. Here are a few points for you to consider:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Write down what you know about the problem.&lt;/strong&gt; Writing down our perceptions and understandings allows us to connect the dots and make sense of our thoughts. Sometimes, not only writing but also creating visual representations (e.g., diagrams) also helps accelerate the process. Try creating a more generic one at first, and then start adding more details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Flag the uncertainty.&lt;/strong&gt; It’s no shame to highlight our lack of knowledge! We must fearlessly hunt for answers and raise any possible concerns about the unknown. While analyzing your challenge, write down every question you might have. Some will get answered during the process, however, others will remain unanswered. Those are the ones we should keep an eye on, as any uncertainty might impact our work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Confirm your reasoning.&lt;/strong&gt; Sometimes, our understanding might be compromised due to prior experiences. Try getting a second opinion, as new perspectives might be just what you need to move forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Segregate work into smaller tasks.&lt;/strong&gt; Once we’ve got a clear picture of the challenge, you should define specific actions. From past projects, I’ve noticed people tend to outline too many generic action points, which consequently results in generic solutions that won’t necessarily help solve the issue at hand. Reuse the perceptions and understandings you’ve written, as well as your visual representations, and add them to the task you created. This will enforce context awareness whenever taking over a specific task. Highlight which specific problem you’re trying to solve with this split task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Keep challenging your understanding and solutions.&lt;/strong&gt; Going through the smaller tasks, helps us automatically mature our knowledge. It’s important to revise our previous understandings and reasonings and check if those are still in line with the goal. Sometimes we realize that we were too naive in the early stages. It’s totally normal! What matters is that we come to this realization and can address it accordingly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Be realistic with your peers.&lt;/strong&gt; Sometimes, our peers think it’s possible to get the job done even though they’ve asked us to build a rocketship in 3 days. In these situations, it’s up to us to be transparent about timing and expectations. In some cases, it won’t be possible to estimate the exact timing to address a particular challenge. That’s why it’s important to divide your work into smaller tasks so that you can share them with your peers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stick to the plan
&lt;/h2&gt;

&lt;p&gt;When applying this type of blueprint to your workplace challenges, be sure to add personal touches to make it work for you. Don’t push yourself to do whatever others do, push yourself to be unique and create your own value. Remember that investing in yourself is a great step to fully &lt;a href="https://kwan.com/blog/being-happy-at-work/" rel="noopener noreferrer"&gt;being happy at work&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;I’ve been applying most of these tips on a daily basis while being constantly confronted with new challenges. I can guarantee you for certain that being consistent with the process will help you solve issues that once seemed impossible!&lt;/p&gt;

&lt;p&gt;If these tips still aren’t working for you, maybe it’s time for a change in scenery. Feel free to check out &lt;a href="https://kwan.com/careers/" rel="noopener noreferrer"&gt;KWAN’s career page&lt;/a&gt;! Maybe your next opportunity is only one click away. &lt;/p&gt;

&lt;p&gt;Let's connect on social media, follow us on &lt;a href="https://www.linkedin.com/company/kwancommunity/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Article written by Rafael Martins, and originally published at &lt;a href="https://kwan.com/blog/navigating-workplace-challenges-recognize-strategize-and-overcome/" rel="noopener noreferrer"&gt;https://kwan.com/blog/navigating-workplace-challenges-recognize-strategize-and-overcome/&lt;/a&gt; on October 4, 2024.&lt;/p&gt;

&lt;p&gt;See you in the next article!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
