​Why Do We Have to Do Extreme Programming?

2022-09-28 15:05:40
Wang ChunSheng
Original 799
Summary : Agile development has been popular for more than 20 years since the publication of the Agile Manifesto in 2001. What achievements have agile development made in the past 20 years? According to The Chaos Report 2020 of The Standish Group, the success rate of agile projects is much higher than that of waterfall development. However, more than half of agile projects are still challenging or failing.According to the 2021 Annual State of Agile Report, 66% implemented Scrum, 6% implemented Scrum+XP, 1% implemented XP only, and overall, only 7% did Extreme Programming.

Agile development has been popular for more than 20 years since the publication of the Agile Manifesto in 2001. What achievements have agile development made in the past 20 years? According to The Chaos Report 2020 of The Standish Group, the success rate of agile projects is much higher than that of waterfall development. However, more than half of agile projects are still challenging or failing. What is the reason for this?

According to the 2021 Annual State of Agile Report, 66% implemented Scrum, 6% implemented Scrum+XP, 1% implemented XP only, and overall, only 7% did Extreme Programming.

The "IT Project Management Survey 2020" of ZenTao project management software also has a similar proportion. The proportion of the practising extreme programming team is low, at 6.39% -- reports from different bases and people at home and abroad have reached a relatively consistent conclusion: the proportion of teams implementing extreme programming is low.

So can we make a guess: this may be one of the reasons why agile development has been popular for so long, but still, the number of failed projects remains high.


I was introduced to Extreme Programming in 2004 and started experimenting with Extreme Programming practices with my team. At that time, I only implemented simple practices in Extreme Programmings, such as coding specifications, collective ownership, Small Release, and pair programming, but the results of my practice were still relatively obvious. At that time, the team kept releasing once every two weeks, and the team was highly motivated and had a strong sense of accomplishment.


I joined Alibaba in 2006. At that time, I was in the Beijing office of Yahoo China. The Leader of our team took everyone to practice Scrum. Although it is also a rhythm of prioritizing stability while pursuing progress, there is no practice related to extreme programming. After the implementation, I always feel flustered, the product does not maintain the rhythm of continuous improvement, and I need to work overtime frequently.


Later, when I started my business, I combined Scrum + XP and strictly implemented extreme programming practices. In the past 13 years, we have maintained a high frequency of release. The product has undergone N reconstruction times (the reconstruction in which every file has been changed). The product is also constantly iterative. We can maintain a healthy frequency of releasing new versions every two weeks. The accumulated data over the past 13 years are as follows:

Behind this data is inseparable from our practice of strictly implementing extreme programming. To some extent, if we don't strictly implement extreme programming, we may only be able to mend Zen Tao today.


So why do we think extreme programming is so important? You can try to analyze it from the following perspectives:


The reason for the emergence of agile development is that with the development of the times, the demand changes faster and faster, and the competition is becoming more and more fierce. This change in the market environment forces the team to respond quickly to changes, so agile development emphasizes getting user feedback quickly through prioritizing stability while pursuing progress and responding to changes from the market and customers through timely and rapid responses.


Compared with the past, the project cycle is extremely compressed, but the quality cannot be sacrificed. What should we do?


The answer is: to improve people's quality.


Only in this way can we ensure the rapid delivery of valuable and high-quality products or services in the case of time compression - this is agile.


How can we do this? We can't achieve continuous delivery if we don't do extreme programming and change the iteration cycle of the project. In some specific practices, the first few iterations may seem faster because of the reduced project cycle coupled with the unique "struggle culture" in China, which makes the project seem sustainable. But in the long run, this is not sustainable. The layoffs wave of major Internet manufacturers in 2022 can also prove this point because there is no way to do long-term sustainable delivery without the support of extreme programming. When time is compressed, it is impossible to achieve sustainable development by relying on the super-scale investment in human resources (number of staff and time). The only way to achieve the purpose of "saving" is by laying off staff when the market is poor.


So I think Extreme Programming is a necessary condition to do Agile well. From the Zen Tao team's perspective, the promotion of Extreme Programming can be gradual, starting with easier practices for the team, such as coding specifications. Each team has coding specifications, but how many teams can implement them seriously? For the team, the benefits will be great if the coding specification can be implemented carefully. Coding conventions can be the basis for a series of subsequent extreme programming practices. For example, we can only achieve collective ownership of code if we truly achieve a unified coding specification. Just imagine, can collective code ownership be achieved if everyone on a team has different coding specifications? Every programmer will say, "Who wrote this code? It sucks"! Another example is pair programming. If the two paired people have different coding specifications and how to do pair programming, it is strange not to fight.


Therefore, we should not think that extreme programming is very difficult, and we need not be afraid of many practices. It is not difficult to start with the simplest practice, but doing it well is a very good thing. The world's most important thing is to do it in detail; every minute you do it, you will get a harvest.

Write a Comment
Comment will be posted after it is reviewed.