If you've practiced
PairProgramming with
WardCunningham, you have a
WardNumber of 1. If you have paired with someone who has paired with Ward, you have a
WardNumber of 2, and so on.
Or, more rigorously:
David West's paper (
http://www.xpuniverse.com/2001/pdfs/Method01.pdf) inspired the
WardNumber, borrowing from the
ErdosNumber (from the Mathematician
PaulErdos). It was first encountered at
XpUniverse 2001.
For
WardNumber of 1 and
WardNumber of 2 people, be sure to check out
WardOne, the conference for you.
So what is the WardNumber of someone who has never practiced PairProgramming?
The usual algorithm is this: Set each node to an initial value of
+infinity, and then set the root node to 0. Repeatedly sweep through, setting each node to 1 plus the minimum of its neighbors. If nothing changed: stop. This takes as many sweeps as the longest path in the component containing the root node (namely, Ward), plus one. With a little extra bookkeeping you can avoid the extra sweep.
In practice you can't use a true
+inf, so compromises are made. You can set the initial value to -1, NULL, NIL, MAX_INT, or other options. Each has its effect on the code. The cleanest code results from using an initial value of MAX_INT as an approximation to
+inf.
Anyone not then connected to Ward via a
PairProgramming path gets left with this initial value. Examining the algorithm suggests that this value should be
+inf. This meshes nicely with the usual mathematical definition that the minimum of the empty set of numbers is
+inf, just as the sum of the empty set of numbers is 0 - the initial value to which other values are added. In computing, a term that can't be computed is often preset to NULL, but the code is less clean.
So by this analysis, the
WardNumber of someone who has never practiced
PairProgramming, or who has no
PairProgramming path back to Ward, is
+inf.
So what is the WardNumber of someone who has never practiced PairProgramming?
Null
- No, such a person's WardNumber would be infinity, not null. -- ChrisTessone
- You can also call it NIL, but null is more standard. Infinity is wrong, obviously. MAX_INT would be ok, though.
- If you treat it as an IEEE 754 floating-point value, infinity is OK -- FredrikBreivald.
- You need to say if it's a positive or negative infinity, though. Anyway, it's clearly a non-signalling NaN.
I would say such a person does not have a Ward number. Presumably, this is what is meant by saying 'null'. In a computer IMPLEMENTATION, one might well choose to give some value so that a compiler can cope with it without the programmer having to always incorporate code to deal with this case. Such a value might be NULL, INFINITY, MAX_INT, or NAN in a programming language which has one or more of these concepts. However, neither the definition of a Ward number nor the question refers to how one might represent it in a computer implemantation. The correct answer, it seems to me, is, as I said above, that such a person does not have a Ward number. If, on the other hand, you want an answer to the QUITE DIFFERENT question 'how would one represent such a person's Ward number in a computer implementation', then there are many different possibilities, and it is futile to argue as though there were one CORRECT answer. -- MichaelDavis
Is there an entrepreneurial opportunity here? I would stick my neck out and offer my programming services to anyone wishing to acquire instant
WardNumber 2 status... but then again, such an ostentatious act would probably reveal the fact that a
WardNumber of 1 doesn't necessarily correlate to a presumed level of talent or genius. --
MichaelLeach
Ward is smart and a good programmer, but this
WardNumber stuff is bordering on hero worship. I'm sure that Ward likes to be appreciated as much as the next guy, but this is just a little creepy. --
JimHollcraft
I agree. I'd put a stop to it except that I really do like programming with a lot of different people. I programmed a tv with a fella at oopsla just so we could say we'd programmed together. Do you suppose we should study the graph of people who have authored wiki pages together? --
WardCunningham
The concept started as an incentive to
PairPromiscuously at an XP conference, not as ego boost. See
IncreasingYourWardRating.
What number do you get when you fix Ward's code?
You should know better than that. CodeOwnership is not that good an idea, so surely someone as experienced as WardCunningham would avoid it just like the hero-worship he is stuck with on this page? -- SteveHolden
"Creepy-schmeepy. All in good fun..."
This is where we proclaim our
WardNumbers:
JeffMcKenna has quipped that there are now so many people with a
WardNumber of 1 that, if you want to impress, you have to specify the date of your one-ness. And Jeff seems to have everyone beat.
As a counterpart to the
WardNumber, a pointless centrist numbering scheme for wikis.
- WardsOriginalWiki has a wiki number of 0
- Every wiki has parents; these are the wikis which directly inspired the foundation of that wiki
- A wiki's wiki number is one greater than the lowest of its parents' wiki numbers
So the OusfgWiki
? has a wiki number of 1, and the OxfordMathsWiki
? has a wiki number of 2. A better example would be that
MeatballWiki and
WhyClublet have wiki numbers of 1, but I don't know of any children of theirs.
Note that this is different to the
WardNumber in that it's more hierarchical, and less about the distance through a graph.
See
WardNumberInManyProgrammingLanguages
See also:
SmallWorld,
SixDegreesOfKevinBacon,
ErdosNumber,
KiboNumber,
IncreasingYourWardRating