Leo said:
Dear All,
In two Java job interviews, interviewers asked me if I know extreme
programming. I don't.
What is Java extreme programming? Is it marketable skill?
"Extreme Programming" is a project management style. It combines a
strategy of test-driven development with short iterations. The term
means different things to different people. Some people say "XP" and
they have a very formal notion of what that means. Others say "XP" and
they mostly mean, pair-programming, short dev cycles, and unit tests.
To me, the most important part of the process is the test-driven
approach. Ideally, you never write a line of code that does not already
have a unit test that fails. In XP, everything you write, directly fits
some requirement, and is written to make some test that already exists,
pass.
There are quite a few other elements that "XP" refers to. The customer
is on-site, and participating in the continuous testing and integration.
If you don't actually have your customer in your office, you have
someone on your team that plays customer.
Another element that's univerally present in XP projects is collective
code ownership. Everything is coded to a single set of standards, and
anyone on the project is expected to take ownership of anything, at any
time.
XP works best when all contributors are peers in terms of their skills,
abilities, insights, and passion for their work. In some shops, that is
a realistic approach, but it's certainly not true everywhere.