Next I'm going to go over some of the XP's values
and principles that I just hinted on earlier in the lesson.
The first one, the first important value is communication. There
is no good project without good communication. And XP tries to
keep the right communication flowing and it uses several practices
to do that. It's got practices based on and require information
and in general share the information. For example, pair programming.
And we're going to say more about that. User stories, customer involvement,
all activities that help communication,
that faster communication. Another important
principle that we already saw, is simplicity. And the motto here
is live for today without worrying too much about the
future. When you have to do something, look for the simplest
thing that works. And the emphasis here is on, that
works. We want to build something simple, but not something stupid.
Feedback. That's extremely important in XP, and it occurs at
different levels, and it is used to drive changes. For example,
developers write test cases. And that's immediate feedback. If your test cases
fail, there's something wrong with the code. Or there's something that you
still haven't developed. Developers also estimate new stories right away as soon
as they get them from the customers and that's immediate feedback to
the customer. And finally, on a slightly longer time frame, customers and
tester develop together functional system test
cases to assess the overall system.
And also in this case, that's a great way to provide feedback
and by the way, also to help communication. And finally, courage, the courage
to throw away code if it doesn't work. To change it if you
find a way to improve it. To fix it if you find a problem.
To try out new things if you think that they might work better
than what you have right now. Now, that we can build and test systems
very quickly, we can be much braver than what we were before. So
how do we accomplish all that? And what are XP's practices that are going to
help us follow these principles and adhere to those values? These are some
of XP practices. There are more, but those are the ones that I'd like
to discuss in a little more depth, individually. Incremental planning,
small releases, simple design, test first, refactoring. We will actually
have a whole lesson next on refactoring. Pair programming, continuous
integration, and on-site customer. So let's start with incremental planning.