Mentoring is important in any field, but it’s especially critical for software testing. I’ve been blessed with good mentors throughout my life, and I’ve also been honored to serve as a mentor for other software testers. In this article, I’ll explain what mentoring is and how to practice it within the context of software testing.
What is Mentoring?
Mentoring is a one-on-one relationship in which the experienced guides the inexperienced.
- It is explicit in that the two individuals formally agree to the relationship.
- It is intentional in that both individuals want to participate.
- It is long-term in that the relationship is ongoing.
- It is purposeful in that the relationship has a clear goal or development objective.
- It is meaningful in that growth happens for both individuals.
Mentoring is more than merely answering questions or doing code reviews. It is an intentional relationship for learning and growth.
Why Software Testing Mentoring Matters
Software testing is a specialty within software engineering. People enter software testing roles in various ways, like these:
- A new college graduate lands their first job as a QA engineer.
- A 20-year manual tester transitions into an automation role.
- A developer assumes more testing responsibilities for their team.
- A coding bootcamp graduate decides to change career.
There’s no single path to entering software testing. Personally, I graduated college with a Computer Science degree and found my way into testing through internships.
Unfortunately, there’s also no “universal” training program for software testing. Universities don’t offer programs in software testing – at best, they introduce unit test frameworks and bug report formats. Most coding bootcamps focus on Web development or data science. Certifications like ISTQB can feel arcane and antiquated (and, to be honest, I don’t hold any myself).
The best ways we have for self-training are communities, conferences, and online resources. For example, I’m a member of my local testing community, the Triangle Software Quality Association (TSQA). TSQA hosts meetups monthly and a conference every other year in North Carolina. Through these events, TSQA welcomes everyone interested in software testing to learn, share, and network. I also recommend free courses from Test Automation University, and I frequently share blogs and articles from other software testing leaders.
Nevertheless, while these resources are deeply valuable, they can be overwhelming for a newbie who literally does not know where to begin. An experienced mentor provides guidance. They can introduce a newcomer to communities and events. They can recommend specific resources and answer questions in a safe space. Mentors can also provide encouragement, motivation, and accountability – things that online resources cannot provide.
How to Do Mentoring
I’ve had the pleasure of mentoring multiple individuals throughout my career. I mentor no more than a few individuals at a time so that I can give each mentee the attention they deserve. Mentoring relationships typically start in one of these ways:
- Someone asks me to be their mentor.
- A manager or team leader arranges a mentoring relationship.
- As a team leader, I initiate a mentoring relationship with a new team member (because that’s a team leader’s job).
Almost all of my mentoring relationships have existed within company walls. Mentoring becomes one of my job responsibilities. Personally, I would recommend forming mentoring relationships within company walls so that both individuals can dedicate time, availability, and shared knowledge to each other. However, that may not always be possible (if management does not prioritize professional development) or beneficial (if the work environment is toxic).
From the start, I like to be explicit about the mentoring relationship with the mentee. I learn what they want to get out of mentoring. I give them the top priority of my time and attention, but I also expect them to reciprocate. I don’t enter mentoring relationships if the other person doesn’t want one.
Then, I create what I call a “growth plan” for the mentee. The growth plan is a tailored training program for the mentee to accomplish their learning objectives. I set a schedule with the following types of activities:
- One-on-one or small-group teaching sessions
- The best format for making big points that stick
- Gives individual care and attention to the mentee
- Provides a safe space for questions
- Reading assignments
- Helpful for independently learning specific topics
- May be blogs, articles, or documentation
- Allows the mentee to complete it at their own pace
- Online training courses
- Example: Test Automation University
- Provides comprehensive, self-paced instruction
- However, may not be 100% pertinent to the learning objectives
- Pair programming or code review sessions
- Hands-on time for mentor and mentee to work together
- Allows learning by example and by osmosis
- However, can be mentally draining, so use sparingly
- Independent work items
- Real, actual work items that the team must complete
- Makes the mentee feel like they are making valuable contributions even while still learning
- “Practice makes perfect”
These activities should be structured to fit all learning styles and build upon each other. For example, if I am mentoring someone about how to do Behavior-Driven Development, I would probably schedule the following activities:
- A “Welcome to BDD” whiteboard session with me
- Reading my BDD 101 series
- Watching a video about Example Mapping
- A small group activity for doing Example Mapping on a new story
- A work item to write Gherkin scenarios for that mapped story
- A review session for those scenarios
- A “BDD test frameworks” deep dive session with me
- A work item to automate the Gherkin scenarios they wrote
- A review session for those automated tests
- Another work item for writing and automating a new round of tests
Any learning objective can be mapped to a growth plan like this. Make sure each step is reasonable, well-defined, and builds upon the previous steps.
I would like to give one warning about mentoring for test automation. If a mentee wants to learn test automation, then they must first learn programming. Historically, software testing was a manual process, and most testers didn’t need to know how to code. Now, automation is indispensable for organizations that want to move fast without breaking things. Most software testing jobs require some level of automation skills. Many employers are even forcing their manual testers to pick up automation. However, good automation skills are rooted in good programming skills. Someone can’t learn “just enough Java” and then expect to be a successful automation engineer – they must effectively first become a developer.
Characteristics of Good Mentoring
Mentoring requires both individuals to commit time and effort to the relationship.
To be a good mentor:
- Be helpful – provide valuable guidance that the mentee needs
- Be prepared – know what you should know, and be ready to share it
- Be approachable – never be “too busy” to talk
- Be humble – reveal your limits, and admit what you don’t know
- Be patient – newbies can be slow
To be a good mentee:
- Seek long-term growth, not just answers to today’s questions
- Come prepared in mind and materials
- Ask thoughtful questions and record the answers
- Practice what you learn
- Express appreciation for your mentor – it’s often a thankless job
Take Your Time
Mentoring may take a lot of time, but good mentoring bears good fruit. Mentees will produce higher-quality work. They’ll get things done faster. They’ll also have more confidence in themselves. Mentors themselves will feel a higher satisfaction in their own work, too. The whole team wins.
The alternative would waste a lot more time. Without good mentoring, newcomers will be forced to sink or swim. They won’t be able to finish tasks as quickly, and their work will more likely have problems. They will feel stressed and doubtful, too. Forcing people to tough things out is a very inefficient learning process, and it can also devolve into forms of hazing in unhealthy work environments. Anytime someone says there isn’t enough time for mentoring, I would reply by saying there’s even less time for fixing poor-quality work. In the case of software testing, the lack of mentoring could cause bugs to escape to production!
I encourage leaders, managers, and senior engineers to make mentoring happen as part of their job responsibilities. Dedicate time for it. Facilitate it. Normalize it. Be intentional. Furthermore, I encourage leaders to be force multipliers: mentor others to mentor others. Time is always tight, so make the most of it.
I hope this article is helpful! Do you have any thoughts, advice, or questions about mentoring, specifically in the field of software testing? I’d love to hear them, so drop a comment below.
I wrote this article as a follow-up to an “Ask Me Anything” session on July 15, 2020 with Tristan Lombard and the Testim Community. Tristan published the full AMA transcript in a Medium article. Many thanks to them for the opportunity!