Thursday, April 02, 2009

I heard an interesting line awhile back from James Bach; I will paraphrase him.

If I recall correctly, Bach's argument was they every time they had ashow-stopper, or even "big"-ish bug get to production, on every project, it wasnever because we just ran out of time time and failed to do the next logicaltest.

It was never because the team failed to automate feature X or feature Y and testfor it on this release - or that there weren't enough automated tests.

No, given an infinite amount of time with the current team and the current teststrategy, they would have failed to find the bug.

The problem with finding those bugs wasn't /time/, it was imagination - or, moreaccurately, lack of imagination. That is to say, the team failed to think ofthe software failing in that way. My experience tends to line up with thatstatement.

If that is true, then a creative mind - creative in terms of possible failures -something a tester should coddle, feed, and attempt to grow, right?

So - what techniques, ideas and skills do you know to encourage a creative mind?One of my favorites is to indulge and reward my own curiosity.

Imagination is the strongest tool for tester to use. Many times it isn't while directly testing the app that some thing falls apart it when you play with it. That's another secret to good testing. Play with the product. Example while testing a phone to send and receive SMS I was able to prove that it could send and receive and passed the test. I then tried to send and recive and the same time. The phone locked up. There was no test case designed for it. I was just playing with it...

I was playing nokia 5500 something. I was listening to music and I started a game. The phone hanged so much that i could not shut it off, there was no lights, but the music kept running.Without Creativity a tester cannot test properly All keys, All functions, All possibilities which are infinite practically even though we can use test coverage tools. Creativity is mother of all new ideas , assertions, and methodologies.

Jerry Weinberg suggests in the first chapter of Weinberg on Writing that (paraphrasing) in order for a creative person to be happy then they must be able to express that creativity freely.

In this case it would seem that a manager/lead would do well to foster an environment that allows the tester time to come up with new test ideas and encourage the tester even if (especially?) the ideas may not be what the lead would have come up with.

I'd also suggest that as many creative outlets be open as possible in the work place. This means having an open environment for communication (even if not always work related), allowing decorations in the workplace, allowing employees to dress or style themselves in a variety of ways (no beards allowed where I work), encouraging the use of new tools, etc.

This is something I'm interested in researching right now. I only have my own experience to pull from, so if you know of any good books/blogs on this topic then please point me to them. I did a search on Amazon and found some books, but they seemed gimmicky at first glance.

The environment at the workplace has to be such that people should be motivated to contribute whatever his maturity and skill level. For this to happen creation of focus groups, rewards schemes, team talks, presentations on breakthrough concepts and like helps a lot. The team has to be managed as such so that exchange of knowledge / ideas happens freely fostering creativity, growth and learning... Testing champions have to be found(we need to hunt for them!), hired, bred and nurtured. They in turn will spawn more champions.

For me, most of my new ideas come from reading areas outside of technology. I get a lot of testing ideas from mathmatics, economics, books on how to write, philosophy, art, business, and human behavior.

This weekend, I read an article on tips for writing a query letter, and got ideas for better ways to debrief an exploratory test session. Last week I finished "Predictably Irrational," and I have an interesting idea for how to structure some usability studies for the software my company develops based on how he designed his experiments.

I also find that if I don't write down my ideas, I forget about them. It's like a creativity black hole. So I keep a moleskin, write stuff on on one of my blogs, or write an article. Just writing it makes it more accessible to me. (It also makes it searchable later when I forgot the specifics.)