Posts in Software Testing
Changing how I think about training
"Instead of focusing on training for a complex task, how can you make the task easier to perform?" -Influencer

Among other things, I've been leading a performance test team for the last couple years now. It's been an uphill battle trying to find and develop the right talent, tame the performance testing environments, and deliver consistent results for the application teams we support. I now think I have one of the best groups of performance testing talent in the Midwest, but there is still so much we don't know! It's not for lack of trying, but the problem with performance testing (like anything else) is that you can never know it all: databases, protocols, mainframes, web servers, application servers, load balancers, driver upgrades, data center moves, AJAX, programming languages, performance test tools, performance testing methodology, changing user populations, coordinating deployments and monitoring, and oh yea, application functionality that just won't stay the same from month to month.

Even for the best and the brightest, the problem of learning becomes overwhelming.

Last year I read Influencer: The power to change anything. It wasn't as good as Crucial Conversations (by the same authors), but it was still a good read. The quote at the start of this post really hit home for me. It got me thinking about the learning problem for complex tasks. How can I structure the work to make it easier, instead of structuring the training to address the most difficult tasks? It's a great question. It challenges you to recognize that sometimes, we don't simplify the things that we do, simply because we already know how to do them. Then sometimes go about training others in what we know how to do, without ever asking if that's the best way to do it.

Tool vendors understand this principle (I think). They develop tools that make it easier to perform our tasks. If a tool is well designed, it takes something complex and simplifies it. Many of the tools I've seen for performance testing, web service testing, and exploratory testing do this. I also think checklists (formal, heuristic, or taxonomies), simple scripting (Ruby, macros, or AutoIT), and simple lean process principles can play a large role in simplifying the work to make it easier.

On a cautionary note, I'm not saying better tools are a substitute for training. I remember Goranka Bjedov once saying, "A fool with a tool is a faster fool." I'm not suggesting you don't need to continue to train. I am suggesting that when you think about the never ending problem on training people for complex tasks (which testing is) that simplifying the tasks can be one way to help cope with the complexity.

As we continue to grow and learn as a team, I'm planning to remain focused not only on how we can improve our training but also on understanding how we can change the work to make some of the more complex tasks easier to perform. Right now I'm big on checklists, I've always been big on scripting (I like to go back to my roots), and I think we can do more if we start looking at what tools we use, how we manage the work, and what processes we currently use. (Note, I'm not talking about the documented processes, but the actual processes - how the work happens today.)

How do you deal with this on your teams? How do you make complex tasks easier to perform?
Black-Box song
Another long day at the office, a crashed hard-drive at home, the wrong version of Windows Vista media (who knew you had to order the 64-bit version after you opened the version you purchased?), and estimates for a new driveway stuck in the door when you get home... It's all ok now. I'm smiling thanks to Geordie Keitt's new song, Black-Box Testing.

Mr Keitt, thank you vey much!