Note : This was originally in reply to a question regarding XP :
The last project I did used a number of the principles of XP. I think that
the term 'XP' is too scary however, and that its seen as a all or nothing
deal.
My personal view is that XP makes use of Evolutionary Development (as
opposed to Development By Design). In Evolutionary Development there are
two principles at work :
1. Coding (Mutation)
2. Selection.
All methodolgies do Coding. However the way we look at coding varies. In
most methodologies there is an assumption that a project is Developed by
Design. Most developers are aware of the process of developing
requirements, specifications, coding, and conformance testing (ie to the
specification). Most developers are also aware of how this apparently
logical approach is never how successfull projects actually work. All my
successfull projects have been a mixture of planning and evolution, where
the initial development is planned, and thereafter small incremental changes
are made to the working system.
The XP books I have read describe how to do XP development - but didn't seem
to provide a good account of why XP works. XP works because it removes the
assumption that all the design needs to be done up front. It allows for
evolution, where code is both written and selected.
The mechanism for selection in XP is Unit Tests and Peer Programming among
others. Point is that these selection pressures are not present in
'traditional' developments.
These forms of code selection are not nessasarily the only methodologies
which can work. Another example is Open Source - where only good source
code survives. What do we mean by 'good' source code? We mean source code
which continues to be used. The point is that bad source code - ie that is
buggy and poor quality - tends not to be used.
Whatever method used, it is important that selection be applied in very
small increments. It is no use taking a whole application, radically
changing it, and testing/rejecting only at the end. With XP you check your
code against unit tests on every checkin - which means that poor quality
code can't get in. On a higher level you are releasing the code to users on
a very regular basis. This ensures any user interface issues are found and
'selected' out of the code pool early in the development, and not given the
chance to become imbedded in the application further.
One last note : when I talk about using 'evolution vs design' I am talking
about a high level design, not the design you might do for an individual
function or method. We will always need some degree of design. My point is
that computer systems are now becoming so complex that our faith in our
ability to Design from the ground up needs to be examined.
XP is one such attempt. I hope this puts XP in a clearer perspective,
Regards,
Peter Harrison
---------------------------------------------------------------------------
New Zealand Delphi Users group - Offtopic List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz