This post outlines our efforts in building a training program at Qxf2.
The training program at Qxf2
We doubt that the current skills of testers will be sufficient in the near future (see The need for change (at Qxf2)). Which means we will need to train (or retrain) people to stay relevant. This post will give you an overview of how we think about training and the steps we have taken so far.
Baby step 1: Hiring an experienced educator
Though we are putting these thoughts down on paper in late 2017, we have long expected that a strong training program will eventually be an important component of Qxf2. So we jumped at a chance to hire our colleague Annapoorani Gurusamy in early 2016. Annapoorani had several years of experience teaching engineering students Computer Science at a prestigious college.
Baby step 2: Internal training
Annapoorani spent about six months getting familiar with Qxf2, our testing approach and our tooling. She suggested and collaborated with Rohan Dudam to get internal training going. When one of us did something cool on R&D or it looked like there was a widening knowledge gap on a particular subject, we would be asked to conduct an internal training for the rest of the group. This habit has stuck with us and has helped all Qxf2 employees get familiar with different topics and fields.
Baby step 3: Experimenting with the hiring pool
We want to hire people with varied background – especially hardware engineers and mathematicians who can test well. But such people do not exist in the market … largely because the market for such people is yet to bloom. That meant we had two options:
Option 1: we could hire people with varied background and then teach them testing
Option 2: we could hire experienced testers and train them with the newer skills
We ended up trying both options.
For option 1, we trained new hires with no testing background on the following things: how to start testing an application, Python and our GUI automation framework. The new hires were motivated at a chance to use their primary skill set. They were also glad to have a concrete skill like software testing on their resumes. They were relatively inexpensive because there were very little market demand for their primary skill set. The difficulties we faced here was interviewing someone with a background very different from the traditional tester and setting context for them in the first few weeks. Most new hires wondered why we hired them and what was expected of them.
Option 2 ended up being pretty costly for us. We were unable to attract less experienced candidates into Qxf2. Most people in the 2-3 years range of experience are looking to get placed at a company with a brand name. That meant, to try option 2 we ended up hiring senior people with about 8-12 years of experience who were looking to upgrade their technical skills. It took a lot longer to train these experienced people on Python and new technologies. We felt a major barrier to them learning something new was their previous work habits and belief systems. The more experienced the employee, the less likely that they were going to put themselves through all the pain and effort of learning something new. This meant we had highly experienced testers on the bench for a long time and that certainly put some financial pressure on us.
Baby step 4: Narrowing down the problem
Breaking old habits and challenging belief systems seemed too daunting a problem. Another problem that had been nagging us for a long time – we were struggling to hire fresh graduates and make them client-ready quickly. Most fresh graduates want collegiality, exact instructions and large amounts of social contact. We are a fully remote company and we try not give highly prescriptive solutions. That meant Qxf2 ended up being really harsh environment for fresh graduates. Based on these factors, we figured a good starting point would be to narrow down the problem to training fresh college grads in testing.
The problem suited Annapoorani well. Her experience was in teaching under-graduate students. We decided to give out three month, paid internships. That would give Annapoorani a canvas to try her training experiments. Three month internships would also make it much less riskier for the fresh grads and Qxf2 as they would not get stuck in any long term commitment.
What we have done since narrowing down the problem
Here are some of the things we have done since narrowing down on our training problem.
a) Having an engineer train the interns
We made several false starts with our internship program. We finally realized we needed an engineer to train the interns – documents and high-level instructions were just not getting the job done. Annapoorani took on the role of trainer and came up with an initial syllabus. She (along with our colleague Smitha Rajesh) have been designing hiring experiments to vary the pool of candidates we hire in each internship cycle.
b) Creating better tooling for training
We followed the syllabus for a couple of internship cycles. We realized that being useful is a powerful motivator and accelerates learning. This insight maps well with how all of us learnt things as kids – we first did something and then learnt the theory behind it. For example, you could speak your mother tongue before you knew about alphabets and grammar. So we are trying to approach training in a similar fashion. We want the interns to learn naturally and not through a thorough study of fundamentals. This will help our interns become better at real world skills engineers use – like Googling for problems, being able to read error messages, debugging, reading other people’s code and (most importantly) making mistakes and self-correcting them. We have tried to come up with really good examples and tools that will provide interns this kind of experience. We feel like this approach makes our interns much more eager to learn simply because they see something visual and working and are curious about it.
c) Surveying fresh grads
We have put out a survey for fresh graduates. We’d like to collect data on what problems fresh graduates are facing and then help them out.
d) Visual tutorials
We are trying to introduce highly technical concepts through analogy. We know this approach is frowned upon in academia but we feel a friendly approach to a topic will help our interns. You can see examples on APIs and Page object pattern and XPaths.
e) College outreach
We’d love to partner with motivated placement officers and work directly with final year students. So if you are working in a college and what we are doing seems interesting, reach out to [email protected]
We have gotten better at training our engineers. But we are still learning. We need to try out new things and experiment. So if you can think of ways we can improve our training or want to share similar stories, please comment below.
- Where is Qxf2 headed?
- The need for change (at Qxf2)
- An introduction to R&D at Qxf2
- Qxf2’s DevOps roadmap
- Qxf2’s Hardware and Robotics roadmap
- Qxf2’s Data analytics, Machine Learning and AI roadmap
- An introduction to training at Qxf2
- An introduction to hiring and onboarding at Qxf2
- Experimenting with team structures at Qxf2
I want to find out what conditions produce remarkable software. A few years ago, I chose to work as the first professional tester at a startup. I successfully won credibility for testers and established a world-class team. I have lead the testing for early versions of multiple products. Today, I run Qxf2 Services. Qxf2 provides software testing services for startups. If you are interested in what Qxf2 offers or simply want to talk about testing, you can contact me at: [email protected] I like testing, math, chess and dogs.