Sunday, March 13, 2011

How to identify high performers in your team?

Having worked with several high performing software testing professionals, I find that it boils down to two things. A high skill level and a positive attitude.

And both are required. A high expertise but no willingness to apply it in the project would result in meager performance at best. And tons of positive attitude but a low skill level would also not translate to solid work. Having said that, attitude is the more important of the two. Why? Skill level can be increased by putting in time and effort but it is much more difficult to change a poor attitude.

I have found consistent high performers to exhibit the following four characteristics:

1. Demonstrates a higher technical knowledge
This person knows more. And it is evident in a number of ways, the things this person says or does, the questions he asks or the responses he gives.
One day we were having a team meeting. I brought up the topic of pair-wise testing to discuss whether it would be useful in the project. To my pleasant surprise, a high performer of our team already knew about this test design technique. He ably explained this technique to the team and we ended up identifying test items that would benefit from pair-wise testing.

2. Communicates more
High performers communicate more than other team members. You can see them asking more (insightful) questions when new work is being explained. They also keep others abreast of their current status and any current/ foreseen problems.
I fondly recall one high performing team member. Whenever I assigned him some work, I would definitely get a response email. The email would mention any unresolved questions and his schedule for this work. Then the work would be completed per schedule and I would get another email summarizing what had been done, the approach used and next action items.

3. Delivers more or higher quality work
By definition, high performers deliver better performance. You would find them doing one or more below consistently:
 a. Finishing tasks ahead of schedule
 b. Finishing more tasks than initially planned for them
 c. Finishing tasks with quality better than anticipated

4. Loves challenges
All high performers love a challenge. In fact, lack of challenges may be boring or even de-motivating for them. So, it is important to raise the bar for them from time to time.
One new addition to our team faced a series of challenges. The industry domain was totally new to this person. A couple of months later, he was using the same vocabulary as the rest of us. He came from a manual testing background. He had to work on the automated testing project. Again a few weeks later, he was very hands-on with the automation tool, scripting business workflows with ease, correlating automated test scripts and even able to perform a reasonable analysis of the test results. Every time he faced a new challenge, he came on top of it.

Now you know about the characteristics of high performing software test engineers. These qualities are not different from what one may expect from high performers in any other field. Think about each of your team members in light of the above four qualities. You would know who are the high performers are. You can also develop the above qualities to increase your own performance. Good luck.

Saturday, March 5, 2011

How much time should a tester spend testing every day?

Not so long ago, I went to attend a walk-in interview. While we were all waiting to be called, I struck a conversation with a test engineer who had also come to be interviewed. One of the things we talked about was the daily routine of this person. Here is a rough daily schedule:

9:00 a.m. Arrive at office and settle down
9:15 a.m. to 9:45 a.m. Check emails
10:00 a.m. to 11:00 a.m. Team meeting
11:00 a.m. to 1:00 p.m. Test the application (2 hours)

1:00 p.m. to 2:00 p.m. Lunch break

2:00 pm. to 3:30 p.m. Test the application (1.5 hours)
3:30 p.m. to 4:00 p.m. Log bug reports (0.5 hours)
4:00 p.m. to 5:00 p.m. Enter test results in the test management system and enter timesheet
5:00 p.m. to 5:30 p.m. Reply to questions on prior bug reports
5:30 p.m. to 6:00 p.m. Write status report for the day
6:00 p.m. Leave office for home

It shocked me. This person was spending 50% or less of his daily time on testing. This does not even take any ad-hoc meetings, training, test environment down-time or usual interruptions into account. If what this person said is true and it is a good representation of the daily schedules kept by testers in companies, I don't think it is okay. Why?

1. Testing software is the core function of a software test engineer. Most of the time should be spent on this important task.
2. Non-testing tasks e.g. team meetings, email exchanges and compiling test statuses are important but not at the cost of testing time.
3. Time should not be spent on redundant activities. A 10-minute stand-up summarizing what everyone did yesterday is fine but listening to the details of what each of the 10 team members did yesterday is not the best use of time.
4. There is duplicity of effort. If data is accurately entered in the test management/ project management system, it should be sufficient to produce any desired test status report.

However, a test engineer may not be able to guard his time because many of these non-testing tasks are driven by their managers. If a manager insists on long meetings and detailed status reports everyday, which task do you think would suffer? Yes, it is testing that would be impacted. It may not be as deep, wide or inspired as it could have been.

If you are a test manager, you may want to think about how to minimize the burden of non-testing tasks of your testers. Keep them accountable to find problems with the software while allowing them to focus on their core function. Most of the time.