Agile Methodology Extreme Programming

A Beginner's Guide to Extreme Programming

by Bjorn W.

Traditional project management practices are no longer relevant in today's fast and competitive environment, and IT professionals have to find new methods for managing their development tasks constantly. To address the growing challenges of the software community, a group of 17 software experts introduced the philosophy of Agile Project Management which is based on the principles of fast, flexible and collaboration focused software development and formed a vital component of the Agile Manifesto. Extreme Programming (XP) is one of the Agile frameworks which focuses on the technical aspects of software development widely used by IT companies. Let's delve a bit into detail to learn more about Extreme programming and know its history along with how it can be used in the software development process.

What is Extreme Programming?

Extreme Programming is a methodology in software engineering, and it differs from traditional methods by laying more emphasis on adaptability than predictability similar to most of the agile methods. The primary focus of XP is to improve the quality of the software and its responsiveness to meet the changing customer requirements. Just like agile methodology, Extreme Programming relies on shorter development cycles with more frequent releases that are intended to boost productivity and has checkpoints for incorporating the customer requirements in different stages.

Extreme programming takes some of the best practices of traditional software engineering to the extreme levels which is why it gets this name. The most distinctive feature of this methodology is doing programming in pairs, extensive code reviewing, doing unit testing of all codes, avoidance of programming of functions until it’s needed. The other vital elements of extreme programming are the simplicity of code and clarity, flat management structure, anticipating changes in customer demands which leads to a better understanding of their problems.

Origin and history of Extreme Programming

In the 1990’s, there were two significant influences which shaped software development, where on one hand object-oriented programming took precedence over procedural programming and was widely favored by the industry. The dot-com boom and the rise of the Internet focused on company growth and speed-to-market along with changing business requirements preferred shorter product life cycles, and traditional software development was found to be incompatible with them. As a result, information regarding the principles and practices of Extreme Programming was shared through discussions across WikiWikiWeb, and different contributors came up with unique ideas which resulted in spin-off agile methodologies.

Kent Beck conceived extreme Programming while he was working on the Chrysler Comprehensive Compensation System(C3 payroll project)and in March 1993, he took over as the Project Leader and started the process of refining the development methodology. He also wrote a series of books on Extreme Programming and shared his ideas and concepts with a broader audience.

Activities performed in Extreme Programming.

There are mainly four activities that need to be performed in the software development process as described under Extreme Programming which is as follows:

Coding

According to the advocates of Extreme Programming, the most critical component of the process of system development is the code. Coding is essential for communicating ideas about issues related to programming. Thus, a programmer who may be facing a challenging programming issue may be able to explain it to the team of other programmers using a simplified code to pinpoint towards the problems faced by him in a clear and concise manner. This helps the other programmers to share their feedback on the subject by coding their ideas as well.

Testing

The proponents of Extreme Programming believe that if a few tests can eliminate flaws in the program, then frequent testing can determine more defects to give better results. Unit tests are mainly performed to assess if the features are working according to their specifications. Programmers write as many automated tests as much as possible, and if all of them prove to be successful, then the coding is regarded to be complete. Besides, every piece of code which is written is tested thoroughly before going ahead with the next feature. Acceptance testing is done to ascertain that the programmers understand the requirements and in turn can satisfy the actual customer requirements. Initially, even system-wide integration was also encouraged on a regular basis, but later their frequency was reduced based on the stability of the overall system interfaces.

Listening

Programmers need to carefully listen to their customers to understand what type of business logic may be required for the system to perform the actions intended by them. It’s vital to understand their requirements so that they can provide feedback to them regarding the technical aspects of the problem and whether they can be solved or not.

Designing

It’s assumed that system development would only require activities such as coding, testing and listening to be performed well to result in a working system which may not always be right. Without design, the system can get too complicated, and the dependencies within the system may no longer be apparent. Hence to prevent such issues, it is best to create a design structure that helps to organize logic into the system. It’s always preferable to have a good design for the system as it can assist in avoiding dependencies in the order, where making changes in one part of the system will not have any bearing on the other parts of the system.


How to deal with compromises when implementing Scrum?

How to deal with compromises when implementing Scrum?

Using scrum can actually be the best decision which you could make for the organization as it has many advantages for everyone. It is a practical framework which guides you about all the things you...

by Pete R.
Ensure quality in your user stories - the INVEST-Principle

Ensure quality in your user stories - the INVEST-Principle

The INVEST principle allows teams to work effectively on a good user story. To understand INVEST better, one has first to understand what the mnemonic stands for.

by Pete R.
Estimation in the agile world done right! How to play Planning Poker®?

Estimation in the agile world done right! How to play Planning Poker®?

Planning Poker® is one of the tools used in Agile. The reason why it is useful is that it helps the team, decide how many of the points are allocated to a specific story or task. It helps mitigate...

by Pete R.
5 Tips for Dealing with Uncooperative Team Members in Scrum

5 Tips for Dealing with Uncooperative Team Members in Scrum

It is normal to come across people at the workplace that can make your job more complicated than it actually has to be. These kinds of people are disrespectful, harmful or merely unwilling to behave...

by Pete R.
Does Scrum Alone Stand for Agile?

Does Scrum Alone Stand for Agile?

Is Scrum the only technique in Agile? Many people consider Scrum a single method of Agile. Long gone are days when Scrum and Agile were used interchangeably. Nowadays, many people know about the...

by Pete R.
Changes That Occurs When Moving from Waterfall to Scrum

Changes That Occurs When Moving from Waterfall to Scrum

Are you thinking about the changes that occur when a company shifts of Scrum? In today's advanced world, the previous approaches for software development are unviable. Though waterfall practice is...

by Pete R.
Hey Scrum! Where has the test phase gone?

Hey Scrum! Where has the test phase gone?

If one is looking for a methodology to manage programmers, then scrum is their best bet. If one wants to tests cases, they need to give Scrum a try.

by Pete R.
Best Ways to Track Time in Scrum

Best Ways to Track Time in Scrum

Without a doubt, time tracking is one of the many things that a software developer doesn't enjoy. It is perceived that keeping track of time is wasteful and restricting. This is because the time...

by Pete R.
What is the Nokia Scrum Test?

What is the Nokia Scrum Test?

Over a decade ago a man named Bas Vodde introduced a simple test that was able to assess the level of agile adoption and Scrum at the Nokia-Siemens Finland. The test was conducted on almost ten agile...

by Pete R.
Top Signs That Your Organization Is Not Ready for Agile

Top Signs That Your Organization Is Not Ready for Agile

Are you thinking of implementing Agile in your company? Do you think your company is ready for Agile? In the software development industry, everyone is talking about the benefits of Agile...

by Pete R.
Scrum Estimations vs. Request for Accuracy

Scrum Estimations vs. Request for Accuracy

Estimation is something significant when it comes to getting the tasks completed. However, there are cases where an estimate turns out to be wrong during the process. When you start working on a...

by Pete R.
Scrum - your burn down-chart looks strange? These techniques will help you to improve

Scrum - your burn down-chart looks strange? These techniques will help you to improve

Scrum burndown charts might not always seem like the ideal charts that one would want and sometimes, the charts might appear more terrifying than one might have thought. Some people might try to...

by Pete R.