Reflecting on Resources: Personal Insights and Conclusions

The transformation of Noveo QA engineer Emma from manual to automation tester continues! In the second part of the post, Emma gives her personal advice, talks about the moments she found particularly challenging, and shares what strategies help her staying on track.

Reflecting on Resources: Personal Insights and Conclusions

Java: A Beginner’s Guide

As I already mentioned in my article, this book is in English. I'd say that your language level should be at least B2 to understand what is written there. Throughout the course, we were prompted to write all the codes presented in the book. Copying code into IntelliJ IDEA and writing continuously helped me make code writing almost automatic. However, sometimes I got bored because reading and writing the same routine all the time made me feel burned out. Whenever I felt drained, I switched to watching YouTube videos. You won't believe it, but sometimes I fell asleep while watching a video. During the first few weeks, I even dreamed about codes! 😄

Overall, it's a good book to start your Java journey. Initially, you might feel confused because there's a lot to cover. But there's a little life hack: We don't learn Java core to become programmers (though some might change their mind and switch to programming). We learn Java basics to write simple code and start our journey of automation. Writing clean code is crucial, and knowing which parts to focus on will make your life easier. Long story short, I knew the bullet points I needed to learn:

  • Variables
  • Strings
  • Console Input/Output
  • Mathematical and Logical Operations
  • Conditional Operator (if)
  • Loops
  • Arrays
  • Functions
  • Comments
  • Imports
  • OOP Basics: Classes, Objects
  • Collections (Overview)

For a Junior QA automation engineer with Java, knowing these basic concepts is enough to continue the path and dive deeper into the real world of Java.

YouTube Videos

YouTube videos were another crucial resource for me. Seeing the trainer or lecturer helps a lot. However, it can be challenging to choose the right person to follow, as we subconsciously judge people by their appearance, speaking ability, and explaining style. Some explain too fast, requiring me to pause and rewatch parts of the video multiple times. Others spoke too slowly, which can be tedious (thank goodness for YouTube's playback speed feature! 😄).

Here are some of my favorite tutors:

  1. Alex Lee: His explanations start from the very basics, like creating a new project and class. Ignore his old keyboard and focus on his thorough, easy-to-understand explanations. You can find many useful comments under his videos as well. Check out his video on Strings here.
  2. Mosh Hamedani: Although I haven't watched all his videos, his soothing voice and detailed explanations with examples make revisiting Java concepts enjoyable. This is perfect for a weekend review session. Watch his tutorial here.
  3. John: His expressive and understandable explanations make him another top choice. However, if I had to choose, Mosh would get all my credits. You can watch John's tutorial here.

Conclusion

In conclusion, my journey from a Manual QA engineer to an Automation QA engineer with Java has been filled with challenges and triumphs. The resources I've utilized—books, YouTube videos, and mentorship—have been invaluable. While the journey is far from over, I feel more confident and equipped to tackle the world of automation. To anyone embarking on a similar path, remember to stay persistent, leverage all available resources, and embrace the learning process. The future of QA is automated, and with dedication, you can be at the forefront of this exciting transformation.

The Complexity of Java: Challenges and Solutions

As I continue my journey in learning Java for automation, there are several aspects of the language that I find (found) particularly challenging. One of the most complex areas for me has been understanding loops, especially nested loops, and methods with their return types.

Understanding Loops and Methods

Nested Loops: Loops themselves are fundamental in any programming language, but nested loops can get quite confusing. A nested loop is essentially a loop inside another loop. They are often used for working with multi-dimensional data structures like 2D arrays or matrices.

Here is a basic pattern for a nested loop that prints a 3x3 matrix:

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        System.out.print(i + "," + j + " ");
    }
    System.out.println();
}

Let's break it down:

  • The outer loop runs three times (for i from 0 to 2).
  • For each iteration of the outer loop, the inner loop runs three times (for j from 0 to 2).
  • This results in 3x3 = 9 iterations in total, printing all pairs of (i, j).

Methods and Return Types: Methods in Java were another area that initially posed a challenge, especially understanding return types and method overloading. A method’s return type indicates the type of value it returns. If a method doesn’t return a value, it has a void return type.

Here’s a simple example of a method with a return type:

public class MathOperations {
    public int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        MathOperations operations = new MathOperations();
        int sum = operations.add(5, 3);
        System.out.println("Sum: " + sum);
    }
}

Breaking it down:

  • The add method takes two integer parameters and returns their sum, which is also an integer.
  • The main method creates an instance of MathOperations and calls the add method, storing the result in the sum variable, which is then printed.

Personal Approaches to Learning Complex Topics

  • Incremental Learning: Instead of trying to understand everything at once, I broke down the concepts into smaller chunks and tackled them one at a time. This approach prevented me from feeling overwhelmed.
  • Practical Application: Whenever I learned a new concept, I immediately tried to apply it to a small project. This hands-on approach helped reinforce my understanding and made abstract concepts more tangible.
  • Study Groups and Discussions: Engaging with peers and discussing these complex topics in study groups provided different perspectives and clarified many doubts.

Leveraging QA Skills in Automation

Transitioning from manual to automation QA, I’ve realized that many skills I developed as a manual tester are incredibly valuable in automation. Here’s how these skills are beneficial:

  1. Attention to Detail: This is crucial in both manual and automated testing. Writing precise and accurate test scripts requires a keen eye for detail to ensure that all possible scenarios are covered.
  2. Analytical Thinking: Analyzing test results and debugging issues in automation scripts requires strong analytical skills. My experience in manual testing has honed my ability to think critically and solve problems effectively.
  3. Test Case Design: Designing effective test cases is a skill that translates well to automation. Understanding how to create comprehensive test cases ensures that automated tests are robust and reliable.
  4. Communication: Communicating test results and collaborating with developers is essential in both manual and automated testing. Clear communication helps in understanding requirements and reporting issues effectively.

Balancing Work and Study

Balancing work and learning a new programming language is challenging, but it’s essential for career growth. Here are some strategies that have helped me manage this balance:

  1. Time Management: Creating a schedule that allocates specific times for work, study, and rest is crucial. I set aside dedicated hours for studying Java every day, ensuring consistency without overwhelming myself.
  2. Prioritization: Identifying the most critical tasks at work and in my learning journey helps me focus on what’s important. I prioritize tasks that have the highest impact and ensure they are completed first.
  3. Taking Breaks: It’s important to take regular breaks to avoid burnout. Short breaks during study sessions and longer breaks during weekends help me recharge and stay motivated.
  4. Setting Realistic Goals: Setting achievable goals for both work and study prevents me from feeling overwhelmed. I break down larger tasks into smaller, manageable goals and celebrate small victories along the way.
  5. Seeking Support: Don’t hesitate to seek help when needed. Whether it’s from a mentor, a colleague, or online forums, asking for assistance can save time and reduce frustration.

Conclusion

As I continue my journey from a Manual QA engineer to an Automation QA engineer with Java, the challenges and triumphs shape my learning experience. Understanding complex topics in Java, leveraging my QA skills, and balancing work and study are all part of this transformative process. By embracing these challenges and applying effective strategies, I am steadily progressing towards my goal.

To anyone on a similar path, remember that persistence, practical application, and leveraging your existing skills are key to success. The journey is demanding but immensely rewarding. Stay focused, stay curious, and let your passion for learning guide you.