<?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>Forem: Patty Olvera</title>
    <description>The latest articles on Forem by Patty Olvera (@pattyolvera).</description>
    <link>https://forem.com/pattyolvera</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%2F850736%2Fc3ac2034-92ec-4d5e-a8c1-3e65439ffa30.png</url>
      <title>Forem: Patty Olvera</title>
      <link>https://forem.com/pattyolvera</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/pattyolvera"/>
    <language>en</language>
    <item>
      <title>Enhancing QA with a Developer's Touch: A Temporary Role Shift with Lasting Impact</title>
      <dc:creator>Patty Olvera</dc:creator>
      <pubDate>Fri, 01 Mar 2024 10:31:53 +0000</pubDate>
      <link>https://forem.com/pattyolvera/enhancing-qa-with-a-developers-touch-a-temporary-role-shift-with-lasting-impact-4ocp</link>
      <guid>https://forem.com/pattyolvera/enhancing-qa-with-a-developers-touch-a-temporary-role-shift-with-lasting-impact-4ocp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the intricate ecosystem of software development, the distinct roles of developers and Quality Assurance (QA) teams are pivotal to the lifecycle of any application. Yet, sometimes, stepping out of our predefined roles can uncover invaluable insights and efficiencies. This article delves into my personal journey from being a developer to temporarily joining the QA team, a transition that brought unexpected benefits to our web application's testing and development process.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Developer-QA Synergy
&lt;/h2&gt;

&lt;p&gt;My unexpected foray into the QA world began when I was asked to assist with testing our web application. This crossover role provided our team with a unique advantage: identifying bugs and irregular behaviors became more efficient with my ability to pinpoint potential root causes, thanks to my background in development. This direct line of communication between QA and development proved to be a game-changer, facilitating a smoother, more informed bug resolution process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Insightful Bug Detection and Resolution
&lt;/h2&gt;

&lt;p&gt;With a developer's deep understanding of the system's architecture, I was in a unique position to guide the QA team through the application's intricacies. While I may not have known every detail about the bug's location, my knowledge of the main functions and system design greatly aided in the documentation and reporting process. As a result, bug tickets were not just well-documented; they were insightful, leading to quicker and more effective solutions by the development team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Temporary Role, Permanent Benefits
&lt;/h2&gt;

&lt;p&gt;This role interchange, although temporary, proved invaluable. It highlighted how a developer could accelerate the QA team's understanding and troubleshooting of complex issues. My dual involvement fostered a faster resolution process and deepened the QA team's insight into the application, showcasing the efficiency that comes from blending development knowledge with QA practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Communication and Documentation: A Developer's Takeaway
&lt;/h2&gt;

&lt;p&gt;One of the most significant revelations from this experience was the critical importance of clear communication between QA and development teams. My presence in the QA team helped bridge any gaps in understanding, especially in scenarios where the QA team might not have complete user stories. This collaborative approach not only ensured that testing focused on the essential aspects but also improved my skills in documentation. I learned the importance of translating product owner requirements into actionable solutions clearly and concisely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: A Case for Developer Involvement in QA
&lt;/h2&gt;

&lt;p&gt;My temporary assistance to the QA team underscored the tangible benefits of having a developer's perspective in QA processes, especially for complex web applications. This cross-functional collaboration not only speeds up the bug resolution process but also enhances communication and product quality. Moreover, it encourages developers to refine their documentation and problem-solving approaches. Although I returned to my developer role, the insights gained from this emergency measure have left a lasting impact, advocating for more integrated roles between developers and QA teams. This experience was a powerful reminder of how flexible roles and cross-disciplinary collaboration can drive success in software development.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Share your thoughts and experiences in the comments below. Have you ever found yourself in a similar cross-functional role, temporarily stepping outside your usual responsibilities to fill a gap in another team? How did it impact your perspective on development?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>testing</category>
      <category>discuss</category>
    </item>
    <item>
      <title>The Power of Composition in React: Unlocking Code Reusability and Maintainability</title>
      <dc:creator>Patty Olvera</dc:creator>
      <pubDate>Sat, 08 Apr 2023 04:53:35 +0000</pubDate>
      <link>https://forem.com/pattyolvera/the-power-of-composition-in-react-unlocking-code-reusability-and-maintainability-1fam</link>
      <guid>https://forem.com/pattyolvera/the-power-of-composition-in-react-unlocking-code-reusability-and-maintainability-1fam</guid>
      <description>&lt;p&gt;The composition model in React is robust, and it is advisable to utilize it for code reuse among components rather than inheritance.&lt;/p&gt;

&lt;h2&gt;
  
  
  As a React developer, why is it important to understand composition and its significance?
&lt;/h2&gt;

&lt;p&gt;React composition refers to the practice of creating reusable components by composing smaller, simpler components together. In other words, instead of creating one large, complex component that handles many different tasks, React developers create smaller, more focused components and combine them to form more complex UI elements. &lt;/p&gt;

&lt;p&gt;This approach to building components makes it easier to reason about and maintain code, as well as improve reusability and modularity. It allows developers to create more flexible and scalable components by composing them together in different ways.&lt;/p&gt;

&lt;p&gt;The key advantage of composition is that it enables developers to create components that are composable, meaning they can be combined and reused in different contexts to create new functionalities without affecting the original code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Embracing composition
&lt;/h2&gt;

&lt;p&gt;Two common techniques for implementing composition in React are higher-order components (HOCs) and render props. &lt;/p&gt;

&lt;p&gt;A higher-order component is a function that takes a component and returns a new component with additional props or behavior. HOC's can be used to add common functionality to multiple components without duplicating code. They are similar to higher-order functions in functional programming, where a function can accept another function as an argument or return a new function. &lt;/p&gt;

&lt;p&gt;Render Props is a technique where a component accepts a function as a prop and uses that function to render part of its output. This allows the parent component to customize the rendering of the child component without having to modify the child component itself. Render props promote reusability and modularity. &lt;/p&gt;

&lt;p&gt;Both higher-order components and render props can be used to achieve similar goals, but they have different use cases and trade-offs. HOCs are typically used for adding behavior to components of modifying their props, whereas render props are more suited for cases where you need to customize the rendering of a component. You can choose the appropriate technique based on your specific requirements and the problem you are trying to solve. &lt;/p&gt;

&lt;h2&gt;
  
  
  Rendering children
&lt;/h2&gt;

&lt;p&gt;One common way to implement render props in React is &lt;code&gt;props.children&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;When using &lt;code&gt;props.children&lt;/code&gt; as a render prop, you pass a function as the children of the component, and the component then calls that function to render the desired content. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;props.children&lt;/code&gt; is a special prop that React automatically provides for every component. It represents the child elements or components passed between the opening and closing tags of a component. By passing a function as &lt;code&gt;props.children&lt;/code&gt;, you can use it in a similar way to a regular render prop. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here is an example using &lt;code&gt;props.children&lt;/code&gt; as a render prop:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Suppose you want to create a reusable &lt;code&gt;Button&lt;/code&gt; component that can be used to render a clickable button with different types of content inside, such as text, icons, or even other components. Instead of creating a separate &lt;code&gt;Button&lt;/code&gt; component for each type of content, you can use &lt;code&gt;props.children&lt;/code&gt; to allow the content to be passed in as a prop.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// This is the main Button component that will render the button element&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Example usage of the Button component with different types of content&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;btn-primary&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Clicked!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nx"&gt;Click&lt;/span&gt; &lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;btn-secondary&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Clicked!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fa fa-heart&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/i&amp;gt; Lik&lt;/span&gt;&lt;span class="err"&gt;e
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;btn-danger&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Clicked!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;span&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nx"&gt;Are&lt;/span&gt; &lt;span class="nx"&gt;you&lt;/span&gt; &lt;span class="nx"&gt;sure&lt;/span&gt; &lt;span class="nx"&gt;you&lt;/span&gt; &lt;span class="nx"&gt;want&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="k"&gt;delete&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fa fa-trash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/i&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/span&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we have created a &lt;code&gt;Button&lt;/code&gt; component that takes in &lt;code&gt;props.children&lt;/code&gt; as a prop. This allows any content to be passed in between the opening and closing tags of the &lt;code&gt;button&lt;/code&gt; component, and it will be rendered inside the button element.&lt;/p&gt;

&lt;p&gt;In the example usage of the &lt;code&gt;Button&lt;/code&gt; component, we have passed in different types of content, such as text, an icon, and even a span element with a message and an icon inside. &lt;/p&gt;

&lt;p&gt;By using &lt;code&gt;props.children&lt;/code&gt;, we have created a more flexible and reusable &lt;code&gt;Button&lt;/code&gt; component that can render different types of content without needing to create separate components for each type. &lt;/p&gt;

&lt;h2&gt;
  
  
  Common pitfalls to avoid when using composition in React, including anti-patterns and performance issues
&lt;/h2&gt;

&lt;p&gt;When using composition in React, there are some common pitfalls that developers should be aware of in order to avoid mistakes and optimize the performance of their applications.&lt;/p&gt;

&lt;p&gt;Anti-patterns refer to coding practices that may appear to be correct at first glance, but actually lead to poor code quality, reduced maintainability, and other issues. For instance, using too many nested higher order components can lead to a confusing and hard-to-maintain codebase. &lt;/p&gt;

&lt;p&gt;Performance issues may also arise when using composition in React, such as unnecessary re-renders of components or excessive use of context. These issues can negatively impact the speed and responsiveness of the application, causing it to feel sluggish or unresponsive to users. &lt;/p&gt;

&lt;p&gt;To avoid these pitfalls, developers should be familiar with best practices for using composition in React, such as using composition sparingly and avoiding unnecessary nesting of components. Additionally, developers should be mindful of potential performance issues and optimize their code accordingly, for example by using React's &lt;code&gt;shouldComponentUpdate&lt;/code&gt; method to prevent unnecessary re-renders. &lt;/p&gt;

</description>
      <category>react</category>
      <category>composition</category>
      <category>reusability</category>
      <category>renderprops</category>
    </item>
  </channel>
</rss>
