OO, FP and XP training (extremely long)

Dominic Williams <>
Thu Dec 15 12:38:43 CET 2005

Ulf responded to Jay:

>> C) No one understands the system [...]Ask anyone a
>> deep question about the philosophy of the system,
>> the general performance characteristics or whether
>> there is a clean approach to expanding its range of
>> scope and you will be met with blank stares and
>> requests for specific test descriptions.
> Interesting observation, and pretty damaging if it's
> true.

It certainly is not true of my experience with XP. An
important aspect of XP's philosophy is, on the

a) to share the system's philosophy among the whole
team, acknowledging that people's heads, not documents,
is the only place the system's philosophy or theory can
and should exist (*) but not restricting it to the head
of one or two chief architects.

b) to learn, by practice, how to evolve and expand the
system, by making this an intrinsic part of the design
process. Hence on the contrary everyone should be
comfortable with the prospect of expanding its scope,
and eager to have a team discussion about it.

It's odd that Jay felt that the reliance on specific
test descriptions implied an inability to reason about
general properties. My experience has been the exact
opposite: developers taking responsibility for finding
the general properties from specific data, rather than
accepting an abstract specification from an analyst
(only to find later on that it doesn't cover some
specific cases...)

> We're doing some pilot work with QuickCheck, which could
> be viewed as a perverse form of TDD. ;-)

When I last looked at QuickCheck, it struck me as an
interesting complement to TDD. But it's worth bearing
in mind that TDD is not just about testing or
verifying: it's a /design process/, what matters is the
dynamics, the act of doing it, the flow it gets you
in. It's really an evolutionary (and collaborative,
when you do it with a pair) design activity, which gets
you a documented, working code and automated regression
tests as a free side-effect. Erlang happens to be
better suited than many languages for the TDD process.

(*) Cf. Peter Naur's "Programming as Theory Building".


Dominic Williams


More information about the erlang-questions mailing list