Two of the most well known agile methodologies are XP (extreme programming) and scrum. Both of these practices have similarities and differences. As agile software development techniques, they have same characteristics which are relatively short development time and consist of several iterations. In this blog, the explanation of both practices will be discussed as well as the strengths and weaknesses of each method.
XP which is also known as extreme programming is an agile software development approach which consists of several practices and values. Many articles stressed the values of communication, simplicity, feedback, and courage in XP. Communication value is where team member uses verbal communication to other team member over formal written document. The team members in XP project includes developers and customer representatives who should understand the domain and know what is needed. XP also emphasize simple design and solution to fulfill customer requirements. In development process, feedback from customer, system testing, and other team members are important. XP also encourage the developers to write code only for current requirements in pair and do code refactoring if needed in the future.
People often think that scrum is same with XP. Scrum is a subset of agile software development techniques. It is an iterative process to develop or manage certain project and it will produce shippable product which can be presented to the customer at the end of iteration. Unlike XP, scrum emphasizes the management side of a project and does not define a detail engineering practice. Iteration in scrum is called sprint which will deal with certain features defined by customer in a backlog. After the team chooses the most risky feature in backlog they will develop it. A sprint usually takes thirty days and can be decreased to one week if the system is simple and easy to develop. During a sprint, team will have a meeting each day to discuss what has been done, what the obstacles are, and what will be done.
XP specify the software engineering practices such as test-driven development, refactoring, pair programming, simple design, etc. On the other hand, scrum focuses on the management side which quite general so that it can be implemented on other project beyond software development project. For example, scrum does not specify pair programming or test driven development, but it specify how we manage the requirements or requested features. Scrum can be seen as a wrapper for existing engineering practices. Scrum requires self organizing team which cannot be disturbed by requirement changes once they started the sprint. If the customer wants to change the feature, they have to wait until the iteration finished and then introduce the change. In contrast, extreme programming is more acceptable to change during iteration which usually only last for two weeks.
XP and scrum has subtle different. They emphasize on different side of a software development project. It will be great if we can combine both of them to manage our agile software project.