Tuesday, 20 January 2009

From Shu to Ha

Read an interesting blog post today about Software Testing Crafsmanship and moving through the stages from apprentice to journeyman and then master and relating this to the Japanese martial arts concept of Shu Ha Ri

I'd also read an article over the weekend Hard Work and Practice in Programming about how to practice and improve
One quote from there is this
"So, I think we'd all agree that you can't learn to program without actually programming. Just like you can't learn to drive without actually driving. You can't learn math without doing math. Yet, one of the hardest things to accomplish in teaching is to get students (end users) to actually program or do math or work on the skill it is they are trying to acquire."

For programming I can see how you can practice and become better - write a program, see if it works, refactor it to make it more efficient. The end result is there - the program will work or not
If you wanted to learn HTML/CSS then find some web pages you like, view the source and try it our yourself

Over on Matthew Heussers latest blog, The Craft of Sofware ( tagline "Ten Years. 10,000 hours. Discipline, Rigor, Effort, and Reward" ) he has a post about outliers with a link to Teach Yourself Programming in Ten Years which has suggestions for becoming an expert programmer

Is there a similar list to becoming an expert tester ?
Get hold of a program and try and find bugs in it ?
Join an open source project ?
Sign up to be a beta tester ?

The problem with testing compared to programming is that although the definition of testing may be 'providing information to the stakeholders' if you are practising testing then designing and running 20 tests that all pass isn't going to give you the same feelgood factor as writing then running a program

Going along with some of s/w development analogies
It's like cooking - the more you practice the better the food will taste
It's like music - from a slow few chords that vaguely sound like Smoke on the Water to being able to crank out Eruption

With testing you want to be able to find the serious bugs as soon as possible, so how can you practice that ? Is there a supply of programs with bugs in that your tests will find ?
( I can just imagine the reponses I'm going to get to that ! )

Suggestions welcome

4 comments:

ahy said...

Okay, so you're thinking of a set of testing etudes?

Isn't that kind of what Matt Heusser has been doing recently with his Testing Challenges? (Which I'm sorry to say I haven't managed to participate in).

Though... I would also wonder, of the myriad skills that a software tester needs in their toolbox, can all of desirable ones be put into an etude?

My guess is that people will say that soft skills can't be. (I would say rubbish: just go work in a call center for a few years, and you'll learn that when you say the same things one thousand times a day, you rapidly learn the best ways of saying them, if you're paying any attention at all. So absolutely, soft skills can be learnt by repetition, the tricky thing is in finding the people to put up with your practicing). But what about the others?

And of course, to go back to the music analogy - there's a difference between an outstanding performer, and an outstanding composer. Is that a difference that exists in the software testing arena?

Philk said...

Thanks for the input ( had to google etudes and then realised I did know about them )

I see from your old blog post that you've had similar craftsman thoughts
http://edge-cases.blogspot.com/2008/08/journeyman.html

Good point about the soft skills - I am getting the chance to practice some of them as the company i work for offers the chance to do a presentation at the monthly meetings we have, I'm now on my 4th and learning from every one and gaining confidence

Also a very good point about performing/composing, thats given me something to think about...

ahy said...

I used to do a lot of presentations when I worked as a trainer, but haven't had the chance to do so for years and miss it. Sounds like you have a great opportunity for practice at your workplace.

I find I can learn a lot too from watching how really experienced presenters hone their material - I saw Lee Copeland presenting The 9 Forgettings at SIGIST last Sept, and watched the Youtube recording from Starwest in 2007. It was really fascinating to me to see how and what he'd changed in the later presentation. Just watching the one presentation wouldn't really have given me any clues, as he's such a relaxed and natural presenter it's hard to see any room for improvement - but seeing both, I could see why he'd made different choices in the later presentation, and see how they improved his delivery. I guess that also shows how much people at the top of their game are constantly refining what they do.

halperinko said...

We can learn from actual testing, but also from test design review, and from reading interesting bugs.
We can form work-groups to assist in all of these:
1. Actual testing does not always require a theoretical challenge - We can define a type of testing to practice, and each one can find how it implies in his own application.
2. We can set up groups aiming to define test cases for a common topic, having peer review and improving these.
Later we can share them, as starting point for others who need to test similar issues.
3. We can share interesting bugs, discuss them, what caused them, and consider how to find similar issues.
@halperinko - Kobi Halperin