I’m part of a group of mentors in my workplace. We take new testers, teach them all kinds of neat things, and then unleash them on their projects.

Before we started doing that, we were teaching them the specifics of the project they’d be assigned to and cutting them loose. That turned out to be a bad idea – the new testers would learn quickly, excel at one thing, and then fall flat when the project ended or when they were transferred to a different product. That wasn’t at all what we wanted.

We started training on general principles and business model, with a lighter touch on the specifics of a given project. That’s helping quite a bit, but it’s only expanded the area in which people are doing well – it hasn’t solved the problem of new testers being really good at one thing, and being unable to expand their knowledge of one thing to other things.

On further research, the missing skill – that by which I can say “this web application does a lot of the same things as that web application, so I bet they’ll have similar problems and vulnerabilities” – is abstraction, the ability to lift concept from detail, stretch and prod it a bit, and apply it somewhere else to see how it fits.

I’m exploring how to teach this skill. Does anyone have any ideas?