<?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: Enrique Lopez</title>
    <description>The latest articles on DEV Community by Enrique Lopez (@enriqu3l).</description>
    <link>https://dev.to/enriqu3l</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%2F1749770%2Fd90cf1a5-504d-4620-942c-10ea3bbabcd3.png</url>
      <title>DEV Community: Enrique Lopez</title>
      <link>https://dev.to/enriqu3l</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/enriqu3l"/>
    <language>en</language>
    <item>
      <title>Learner, Thinker, and Doer: Unlocking Your Engineering Superpower</title>
      <dc:creator>Enrique Lopez</dc:creator>
      <pubDate>Sat, 28 Sep 2024 16:52:20 +0000</pubDate>
      <link>https://dev.to/enriqu3l/learner-thinker-and-doer-unlocking-your-engineering-superpower-14bm</link>
      <guid>https://dev.to/enriqu3l/learner-thinker-and-doer-unlocking-your-engineering-superpower-14bm</guid>
      <description>&lt;p&gt;As engineers, we all wear different hats during our work. Sometimes we're in learning mode, absorbing knowledge like a sponge. Other times, we’re deep in thought, pondering over the perfect solution to a complex problem. Then, there are moments where we’re in execution mode, getting things done efficiently. These are the three core operating modes we frequently shift between: &lt;strong&gt;Learner, Thinker, and Doer.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;While each mode has its strengths, most of us lean naturally toward one or two of these modes more than the others. The key to maximizing your effectiveness as an engineer lies in understanding these modes and how to balance them, not only within yourself but also by finding teammates who complement your strengths and weaknesses.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s dive into each of these modes, their benefits, downsides, and how you can leverage them—whether you’re working solo or as part of a team.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Three Modes: Who Are You?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Learner
&lt;/h3&gt;

&lt;p&gt;The Learner is someone who thrives on acquiring new knowledge. Whether it’s keeping up with the latest tech trends, reading up on cutting-edge algorithms, or simply diving into a new language, the Learner finds joy in growth. If you consider yourself to be in this mode frequently, you’re likely the go-to person when the team needs someone to explore new tools, research better frameworks, or stay on top of the latest innovations.&lt;/p&gt;

&lt;p&gt;For example, as a young engineer, I found myself obsessed with mastering every new framework that came my way—Node.js, Selenium, Playwright, AstroJS, you name it. I loved digging into documentation, experimenting with beta features, and building test projects just to get a feel for how they worked. I realized quickly, though, that while I was always excited about the learning process, I wasn’t great at finishing things. I needed to shift gears at times to balance the time spent in learning mode with actually doing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benefit:&lt;/strong&gt; Lifelong learning can give you a competitive edge, especially in an industry as fast-moving as software. You’ll always be ahead of the curve.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Downside:&lt;/strong&gt; Constant learning without practical application can lead to a form of intellectual procrastination. Too much time spent in this mode might mean fewer finished projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Thinker
&lt;/h3&gt;

&lt;p&gt;The Thinker loves strategy. This mode kicks in when it’s time to solve complex problems or develop long-term solutions. If you're the type to spend hours drafting out flowcharts, architecting new systems, or working out edge cases, you probably spend a lot of time in this mode.&lt;/p&gt;

&lt;p&gt;One of my closest colleagues, Pablo Aversa, was the exact opposite of me when it came to thinking. I’d analyze a problem, consider multiple approaches, and try to come up with the most elegant solution. Pablo? He’d sketch out a quick plan and start executing immediately. I remember when we worked on optimizing a real-time data pipeline for a streaming service. I had all these brilliant ideas on how to refactor it for better scalability, but I also spent so much time refining the plan that Pablo had already built a prototype while I was still ironing out the details.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benefit:&lt;/strong&gt; Thinkers can spot issues others miss, and they can devise solutions that are scalable, efficient, and elegant. This is especially useful in preventing technical debt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Downside:&lt;/strong&gt; Overthinking can lead to decision paralysis. You can spend so much time planning or worrying about the "perfect" solution that you fail to deliver on time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Doer
&lt;/h3&gt;

&lt;p&gt;Then, there’s the Doer—the person who loves getting things done. In many teams, this person is the engine that drives productivity. They don’t waste time over-analyzing or procrastinating; they execute. Whether it’s completing user stories, pushing code to production, or fixing bugs, Doers thrive on crossing tasks off the list.&lt;/p&gt;

&lt;p&gt;I remember how Pablo’s drive would propel our team forward. He’d take an idea and run with it. While I was still crafting the ideal solution, Pablo was already shipping features. At first, I was a bit envious of how quickly he could move. But over time, I came to appreciate the balance between us—my long-term thinking paired with his ability to execute quickly made us an unstoppable duo.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benefit:&lt;/strong&gt; Doers ensure that work gets completed. They’re the ones driving projects forward and ensuring deadlines are met.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Downside:&lt;/strong&gt; Without enough planning or learning, Doers can fall into the trap of cutting corners or producing solutions that require more fixes down the line. They can also burn out without taking enough time to recharge or think things through.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Benefits and Downsides of Each Mode
&lt;/h2&gt;

&lt;p&gt;Each mode offers its unique advantages, but they also come with potential pitfalls if overused. Here’s a quick breakdown:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzcqudbss0yjg48826fdk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzcqudbss0yjg48826fdk.png" alt="Comparison Learner, Thinker and Doer" width="683" height="130"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Benefits and downsides of each mode&lt;br&gt;
Let’s consider a real-world example. Imagine you’re working on a startup. You and your team have a million-dollar idea for a new SaaS product. You, the &lt;strong&gt;Learner&lt;/strong&gt;, spend weeks diving into frameworks and architectures, trying to figure out the perfect stack. Your teammate, the &lt;strong&gt;Thinker&lt;/strong&gt;, spends time sketching out the ideal product roadmap and planning how it will scale once the product takes off. But neither of you have made much tangible progress yet.&lt;/p&gt;

&lt;p&gt;Then, the &lt;strong&gt;Doer&lt;/strong&gt; on your team steps in. They don’t care if the framework is bleeding-edge or if the architecture is perfect. They just want to get a prototype up and running. By doing this, the Doer ensures that there’s actually something to show for all the planning and learning.&lt;/p&gt;

&lt;p&gt;The truth is, without each of these modes working in concert, you could be stuck in a loop of indecision, constant revision, or unpolished results.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Finding Teammates Who Complement You
&lt;/h2&gt;

&lt;p&gt;Here’s where things get interesting: while it’s possible to shift between these modes, most of us naturally excel in one. The key to building successful teams is &lt;strong&gt;to recognize your strength and find teammates who complement your weaknesses.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For example, I’ve come to accept that I’m a Thinker. I enjoy planning things out and coming up with innovative ideas, but I’ve struggled with taking quick, decisive action. When I partnered with Pablo, it became apparent that his Doer mindset filled the gaps where I fell short. He could quickly build the things I was envisioning, and together, we produced incredible results.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The magic happens when a Learner, a Thinker, and a Doer come together.&lt;/strong&gt; The Learner brings fresh knowledge and innovation, the Thinker ensures that the team is heading in the right direction, and the Doer gets things moving, ensuring that deadlines are met and that tangible progress is made.&lt;/p&gt;

&lt;p&gt;As an engineering lead, I’ve seen teams struggle because they were unbalanced—too many Thinkers without Doers led to slow execution, and too many Doers without Thinkers led to technical debt. On the flip side, when teams are well-rounded, they’re like a well-oiled machine, capable of producing not only high-quality work but doing so efficiently and thoughtfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts: Embrace Your Role, Respect Others
&lt;/h2&gt;

&lt;p&gt;In the world of engineering, none of these modes is inherently better than the others. Each brings something valuable to the table, and it’s the interplay between them that drives innovation, progress, and success.&lt;/p&gt;

&lt;p&gt;So, who are you? A Learner, Thinker, or Doer?&lt;/p&gt;

&lt;p&gt;Whichever role you naturally gravitate toward, own it. Embrace it. But don’t forget to seek out teammates who balance you out. When you surround yourself with the right people, you not only grow but also unlock your team’s full potential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The engineering world moves fast. By understanding where your strengths lie and how to complement them, you can ensure that you’re always moving forward—no matter which mode you’re in.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>learning</category>
      <category>testing</category>
      <category>frontend</category>
    </item>
    <item>
      <title>"I HATE QA" - A Perspective from a Senior QA Engineer</title>
      <dc:creator>Enrique Lopez</dc:creator>
      <pubDate>Tue, 24 Sep 2024 16:48:22 +0000</pubDate>
      <link>https://dev.to/enriqu3l/i-hate-qa-a-perspective-from-a-senior-qa-engineer-46if</link>
      <guid>https://dev.to/enriqu3l/i-hate-qa-a-perspective-from-a-senior-qa-engineer-46if</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In software development, Quality Assurance (QA) is often misunderstood as simply catching bugs or performing tests. However, as a Senior QA Engineer with 10 years of experience, I can tell you that QA goes far beyond that. It is not just about finding defects; it’s about building processes, strategies, and systems that lead to higher-quality products. In this article, I will break down what I call “I HATE QA,” where HATE is an acronym representing key pillars of QA:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;H&lt;/strong&gt; - Human Factor&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A&lt;/strong&gt; - Adjust Constantly&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T&lt;/strong&gt; - Tech Mastering&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;E&lt;/strong&gt; - Embrace Good Practices&lt;/p&gt;

&lt;p&gt;This title, though provocative, comes from a deep-seated philosophy:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“We are humans, and humans are not perfect. Humans make mistakes. Since we aren’t perfect, we must find strategies to come close to perfection. And that’s what QA is for.” &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s dive deeper into these four blocks and explore how each of these plays a crucial role in helping us move from average to excellence in software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. Human Factor: The Root of the Problem and the Key to Success&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8idgpjlmy6wsrcwum97.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8idgpjlmy6wsrcwum97.png" alt="The problem is people. Created with Microsoft Designer" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s a famous saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The problem isn’t technical; the problem is people.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In my experience, this statement couldn’t be more accurate when it comes to building a product. Software systems, no matter how complex, are designed and built by people. People, however, are prone to biases, miscommunication, and misunderstanding. We often say the problem is people because elements like communication, language, misconceptions, alignment, and bias are incredibly hard to handle.&lt;/p&gt;

&lt;p&gt;Software engineers, more than anyone, must recognize that we’re paid to think. Anything that distracts us from this core purpose — such as poorly defined requirements, misaligned expectations, or communication gaps — takes us away from the essence of our job. A QA engineer’s role isn’t just to find issues in the product but to ensure the team is thinking effectively.&lt;/p&gt;

&lt;p&gt;Here are some questions that every QA engineer should ask themselves to find paths that help developers and teams improve beyond just technical output:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;How can I help developers think better?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How can I improve communication within the team?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How can I make developers listen better?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How can I encourage adaptability?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How can I promote better imagination?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;QA engineers act as a bridge between different departments, advocating for clear communication and collaborative improvement. We need to ask ourselves these questions daily to broaden our perspectives and make a difference beyond standard QA tasks.&lt;/p&gt;

&lt;p&gt;These are some thoughts around previous questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A well-thought-out test scenario forces developers to reconsider edge cases and the flow of their code.&lt;/li&gt;
&lt;li&gt;Are we all using the same vocabulary? Do we understand each other’s assumptions?.&lt;/li&gt;
&lt;li&gt;Ensuring feedback is heard and considered is critical to team improvement.&lt;/li&gt;
&lt;li&gt;Every release and product iteration demands a fresh approach.&lt;/li&gt;
&lt;li&gt;Good QA not only spots errors but inspires new ways to approach and solve problems.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. Adjust Constantly: Evolving Along with the Role of QA&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The software landscape evolves rapidly, and the QA role must adjust just as quickly. In the past, a Manual QA Engineer was the norm — performing human-driven tests to check functionality. As development processes matured and automation technologies became more accessible, the QA landscape evolved toward Automation QA Engineers, capable of writing scripts that could execute tests faster and more consistently.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2066d1ed40nkrgu3z75.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2066d1ed40nkrgu3z75.png" alt="Software Engineer Evolution. Created with ChatGPT" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, we’re witnessing the rise of &lt;strong&gt;Full Stack Engineers&lt;/strong&gt; who test, blurring the lines between development and QA. A QA engineer is expected to not only test but to contribute to the overall architecture and development of the system.&lt;/p&gt;

&lt;p&gt;The need for constant adjustment doesn’t stop at roles. It also extends to processes. Historically, QA processes were strict and rigid, often following strict guidelines that would sometimes stifle creativity and flexibility. Now, with the rise of Agile and DevOps methodologies, flexibility and adaptability are prized.&lt;/p&gt;

&lt;p&gt;In companies like Facebook and other tech giants, we see a clear shift toward a more flexible approach where certain agile layers are removed. Teams are given &lt;strong&gt;ownership&lt;/strong&gt; of the product, and this sense of responsibility drives them to release features faster. Adjusting processes based on the maturity and seniority of the team allows for better outcomes, as developers feel more accountable and motivated to deliver higher-quality work.&lt;/p&gt;

&lt;p&gt;QA engineers must adjust constantly, both in their skill sets and in their approach to process. As teams grow in maturity, the need for flexibility becomes more crucial, allowing individuals to contribute in a way that maximizes productivity while maintaining quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. Tech Mastering: Technology is Your Best Ally&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In modern software development, technology is your best ally as a QA engineer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Mastering technology can elevate your work to another level, enabling you to remove repetitive tasks, reduce the time spent fixing bugs, and devote more time to innovation"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Automation is the cornerstone of tech mastery in QA. Automated tests save time, reduce human error, and provide quick feedback loops to the development team. But automation is just the beginning. To truly master the technology, a QA engineer should be proficient in the tools and frameworks used for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous Integration/Continuous Delivery (CI/CD):&lt;/strong&gt; These pipelines allow for rapid deployment, but only if the underlying tests are solid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance Testing:&lt;/strong&gt; Understanding how to test the system under various loads is critical to ensuring stability and scalability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security Testing:&lt;/strong&gt; Today’s digital world demands software that is not only functional but secure. Mastery of security testing frameworks and tools is essential.&lt;/p&gt;

&lt;p&gt;By mastering technology, QA engineers help the team move faster, innovate more freely, and ultimately build more reliable software. Tools can help create order from chaos, automate the repetitive, and help teams focus on solving higher-order problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. Embrace Good Practices: Focusing on Process, Not Just Results&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxzwie3sd3mncya2unpk0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxzwie3sd3mncya2unpk0.png" alt="Process Driven &amp;amp; Results Driven. Created with ChatGPT" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the key lessons I’ve learned in my career is that &lt;strong&gt;good practices&lt;/strong&gt; and well-defined processes lead to better results. A strong system of good practices helps remove bias, put everyone on the same page, and create reusable components that allow the team to move faster.&lt;/p&gt;

&lt;p&gt;By embracing good practices, we ensure the development process is as clear and repeatable as possible. Some principles to focus on include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make it obvious:&lt;/strong&gt; Testing should reveal issues easily, and the path to fixing them should be straightforward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make it simple:&lt;/strong&gt; Simplicity reduces the room for error. Overcomplicated systems often breed mistakes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make it repeatable:&lt;/strong&gt; Repeatable processes are key to consistent success. Each new iteration should build on the success of the previous one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make it concise:&lt;/strong&gt; Avoid bloat in your testing strategies. Clear and concise processes ensure better understanding and easier execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make it fun:&lt;/strong&gt; A positive testing culture encourages collaboration and creativity, making the process more enjoyable for everyone involved.&lt;/p&gt;

&lt;p&gt;Good practices shift the focus from rushing to meet deadlines to ensuring that the product is being built on a strong foundation. These practices give clarity, reduce misconceptions, and create a roadmap for delivering high-quality software consistently.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion: QA as a Strategic Role&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;While the title “I HATE QA” might seem like a contradiction, it’s not. This philosophy reflects a QA engineer's deeper role: helping people — developers, testers, and product owners — think better, adjust constantly, master technology, and embrace good practices.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"QA isn’t about finding bugs; it’s about preventing them. It’s about building a system that supports and enhances human thinking and ensures a product that users love"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If we embrace the Human Factor, adjust to changes, master the technology, and embrace good practices, we can move closer to perfection, not just in the product but in the process. QA is a critical piece in delivering high-quality software, and by focusing on these core aspects, we ensure not just good software but great teams and better experiences for everyone involved.&lt;/p&gt;

</description>
      <category>qa</category>
      <category>news</category>
      <category>learning</category>
      <category>development</category>
    </item>
  </channel>
</rss>
