XP presents a totally difference concept that we used to apply. I could not imagine how can I write a test before I have the framework of the project, But now, I realize the importance of testing. Especially, the concept of "small release along with a small unit test". It helps me a lot in refactoring.
Moreover, XP emphasize "interactive" work. Collaboration with client and team members is the main issue of XP. It introduces "guidelines" that programmer should follow. Although they are just some suggestions, it is notably useful when we're going to go through a big project. It helps to reduce time wasting and increase productivity.
Finally, programmers tend to
adopt XP in developing various sub-systems of their projects.
OrionEvery programmer wants
to exert less effort and achieve more. So do you.
I think collaboration and communication is what I can learn from XP. XP can put those important element of success software engineering to extreme and put collaboration between user and programmer to extreme. Test driven, pair programming, plannings, quick design help me much on my job. It enhances programming qualities. The company that I am working had been used XP for a period of time. XP also helps newcomers to catch up with the ongoing project, and helps knowledge transfer between colleagues.
Basically, the XP course taught
me the concept of pair programming, before that, I am still using the
traditional method for system development, like setup a team,
distribute the assignments to the team members, gathering user
requirements, beginning system design, system analysis and program
coding. We seldom contact user during development phases until the
first demo or first version being released. We always have the problem
which is the final product not match the user expectation. As I
understand, XP encourages team work and user participation, it mainly
puts the emphasis on the following issues:
pair programming ( two members from a small group in a team), which will speed up the progress. Having role-play during the development, we could learn from each others. solving problem by pair is always faster than one.
getting users involved in developing stage which enhance the communication with user in an early stages. We could setup project plan, schedule, functional requirements, and testing plan together with users. Users always know the progress of the development, they even conduct functional test during the development phase. It helps users to understand the current progress and the final product with their expectations early , but not in the last minute. It would increase the accuracy and the quality of the product, and also the product success.
test-driven purpose,
developers are not only doing the coding, but also program for the test
case for every functionality of the system. Of course, we will spend
much time on coding for the test-case than the normal coding practice,
and make sure the test is passed before we go to another phase. Testing
may not be the last phase for development.
I do agree with XP programming concept, especially on the points of Test-driven and intensive user participation. XP always encourages the communication with team members and users, which is applicable to system development. The course is from theory to practice, it focus on how to do pair program coding, apart from learning XP concept, I can learn Java program in the course as well. I believe that I can apply for what I have learnt from the course to my current work. I admire the concept of XP, it is applicable to the real world system development.