Schedule and Events

March 26-29, 2012, Software Test Professionals Conference, New Orleans
July, 14-15, 2012 - Test Coach Camp, San Jose, California
July, 16-18, 2012 - Conference for the Association for Software Testing (CAST 2012), San Jose, California
August 2012+ - At Liberty; available. Contact me by email:

Thursday, February 15, 2007

Lessons from Math - II

What makes a good mathematician?

I suspect that a common response would be a strong intellect, but another common response would be a great deal of self-discipline. After all, a mathmetician has to spurn all worldly pursuits in favor of a a drudging existence, sitting at a table, laboring with numbers. Why, the mathematician must be ever mindful of the goal - the solution - or else he would never have the discipline to finish all that labor.

Rubbish. Poppycock. Bull-Pucky.

The military defines self-discpline as doing something not because you want to, but because it needs to be done. If that's true, then a good mathmatician doesn't need it. In fact, self-discipline could decrease his effectiveness.

Good Mathematicians just love to solve problems. They don't have to force themselves to solve the problem, and they don't do it because it "needs to be done to pay the rent."

No, good mathematicians love math. There are a variety of reasons they love math, which I may explore later, but, for the most part, they consider math 'fun.'

In the pursuit of that, mathematicians have been known to forgo sleep, showers, food, laundry, changing clothes, paying the rent ... all those important 'self-discipline'-y things.

Now, a personality like that is so rare and odd that the mainstream world just can't understand it - so people invent stories that explain the behavior ... sort of.

So what does a good mathematician need?

1) Yes, intellect, but more importantly, an ability to create and manipulate abstract concepts in your head that are not tangible. A mechanical engineer can at least draw pictures of what he is building; a pure mathematician just gets symbols.

2) Problem Solving ability and curiosity. They have to wonder 'what are the odds' at blackjack, or roulette, or of getting cancer, or the next federal election.

3) A good mathmematician must love learning. They must love it. Because learning gives us the tools to figure out the answers to the questions.

Occasionally, someone from the testing community will throw me a challenge. A few months ago, James Bach threw me one that required either an understanding of exponential limits problem, or the ability to estimate it with monte carlo simulation.

People without curiousity will simply give up too easily. Those with curiosity, but without an addiction to learning would not know how to figure out the problem, and would eventually give up as well. Those without problem solving ability, well ... they are just hopeless.

How is testing different than math?

To start with, let's differentiate math from Computer Science. In In Things A Computer Scientist Rarely Talks About, Don Knuth said that the Mathematician and the Computer Scientist both need the ability to work symbolically and at various levels of abstraction. They both need the ability to walk up and down the levels of abstraction very quickly; something that traditional building architects and construction workers might not need to do as much. The Mathmetician seeks one single unifying law - one theory - that pulls the entire solution together.

The Computer Scientist, on the other hand, just writes a SWITCH or CASE statement and moves on. In other words, the Computer Scientist has to be better at dealing with inconsistency.

What makes testing different?

The tester has to model the software, but he never really knows if the model is right. The testers job is to figure out how close the customer's model is to what the software software actually does. He derives this from very different input sources - the team members, the spec, the requirements, the design, and, of course, the code itself.

The tester never has enough information and never has enough time. He has to choose some small sub-set of the functionality to run to get some approximate understanding of the quality.

At least, that's my first blush. What do you think?

More to come.

No comments: