Coding agile practical combat series lesson 5: agile Chinese history

Time:2020-11-17

Since it was introduced into China in 2001, agile software development method has become the mainstream research and development management method of domestic IT enterprises after more than ten years of development and change. The spread and development of agile method is the silhouette of the development of IT industry in China. Coding invited agile consultant, MBA, CSD certified lecturer, XP engineering agile leaderBear FestivalThe teacher will be inAgile Chinese historyThrough a large number of historical materials, the course uses the research method of technology history to survey the spread, development and evolution of agile in China, and presents the growth process of IT industry, leading enterprises and practitioners in the industry from one side, leaving the context for later generations to understand the history.

1.jpg

Hello everyone, today I’d like to sort out the process and development of agile entry into China. First of all, let’s look at a data of China Merchants Bank. In the past, scientific and technological innovation was a very mysterious thing. I didn’t know how to innovate so as to get a good project. The data said that effective projects could be found through a large number of failures and trial and error. In my opinion, China Merchants Bank is one of the enterprises with the most profound understanding of agile in this industry for so many years. It has really changed the whole business and innovation ideas in an agile way. At the node of 2018-19, a large Chinese bank can look at the problem with such a completely different way of thinking. This is a very remarkable milestone, marking the great achievements of agile in China. At this point, let’s review how agile entered China.

2.jpg

When agile first entered China around 2000, some technical magazines seeded the original ideas of agile into the industry. For the first time, China’s official publications published content related to agile software developmentProgrammer magazine, December 2001At that time, I worked as a technical editor in programmer magazine, and I happened to do a technical topic of “code refactoring”. From my personal point of view, I just thought agile was very meaningful, and I didn’t realize that it would become such a grand trend. After that, in 2002, I did the “Extreme Programming” technology topic, and unconsciously formed a relationship with agile for more than ten years.

In fact, China’s software industry does not grow naturally. It does not mean that there will be natural development of high-tech industry when the economy develops to a certain extent. In fact, China’s software IT industry is driven by politics and policies. After 2000, the market scale of the national software industry has exceeded 1.3 trillion yuan, and the average annual compound growth rate has reached more than 40% for ten consecutive years. This is a very considerable data, and the source was issued by the State Council in June 2000Policies for encouraging the development of software industry and integrated circuit industryThere are many specific incentives and subsidies in this policy, which has supported the development of China’s software industry. However, with such great support, the whole industry is not ready and has not enough ability to digest such a large demand, which has led to a series of problems. The figure below shows the situation obtained by a Guangdong official in 2000. At that time, there were some common problems in the process of software development in the government informatization projects of Guangdong Province, which reflected that the capabilities of the whole industry, including individuals and enterprises, were insufficient. At that time, experts believed that these problems were caused by the fact that large-scale social production had not yet taken shape. Of course, there were some problems with this concept, because it was extended from the perspective of industrial manufacturing.

3.jpg

When it comes to the insufficient capacity of the industry as a whole, that is to say, “what capabilities should we have?” around 2000CMM (Capability Maturity Model)This paper gives a good answer to this question when it is introduced into China. CMM Level 2 repeatable level defines the basic capabilities that a software development team should haveDemand management, project management, configuration management and quality assurance。 Requirements management is to understand what to do; project management control is to complete the project with appropriate progress; configuration management is to solve the problem of how to achieve the final state step by step; quality assurance is to solve the problem of whether the software can meet the requirements. These are the core and basic abilities in software development.

Although CMM puts forward “what capabilities should the whole industry possess”, it has not been solvedHow to have these abilities。 At that time, they wanted to solve the problem of how to work effectively in the Internet. Lin Xing is one of the early colleagues who paid attention to agile in China. His article “requirement analysis – Practice of software and requirements” in 2001 is about the “user story” we are talking about now. It is also extracted from extreme programming. Shi Yiying was also one of the earliest domestic peers to introduce refactoring related content. At that time, he wrote a series of high-quality articles on the IBM website. I got my understanding of refactoring from him. Because of his influence, I made relevant introduction in programmer magazine and later translated Martin Fowler’s “refactoring”. Analysis of Extreme Programming: embracing change was introduced in 2002. At that time, there was a software engineering organization called pkspin in Beijing. Tang Dongming was a member of the group. He recommended the book to the people’s Posts and Telecommunications Press and translated it. After that, the book “agile software development” was introduced in 2003 and translated by Deng Hui, an engineer of ZTE Refactoring, which I translated in June, was also introduced to China. At that time, we thought that the theoretical system of agile had been basically established. The next step was the process of acceptance and learning by domestic industries. Since agile was in a very chaotic state before, it was very clear what to do and how to make a good software in the software development process after adopting agile practice Therefore, we all think that the future is very optimistic. We should be able to fully realize agile in three to five years. The ability will be improved obviously, and the whole industry will have a good growth. Of course, it turned out that we were too optimistic and agile wasn’t widely accepted that quickly.

Now let’s look back at how agile tries to solve the four capabilities of software development proposed by CMM. Agility is, in the final analysis, aThe question of how to manage requirements is how to deliver software in an iterative, incremental mannerThe fundamental difference between it and waterfall software development is that when you think agile development is needed, the delivered software is not delivered once every six months, but delivered at a smaller granularity. Agile starts with requirements management, which changes the way we look at requirements. Requirements are no longer a big head, but consist of many small pieces. The next step is project management. When we want the requirements to be delivered gradually in a small granular form, what will be affected next is how to manage the project. The whole life cycle of the project will change. It will no longer be analyzed in two months, designed in two months, and coded in two months. Instead, it will become a fast short iteration, producing usable software continuously So the way we look at the entire project life cycle will change and we will manage the project in an iterative cycle. The next thing to be impacted is the way of configuration management. Configuration management is about how software is modified: who modifies the software when and how, how to submit the modification, how to share the changes to the whole team, how to turn the source code into usable software, etc. Because our goal is to deliver available software quickly and frequently, then configuration management is bound to undergo fundamental changes and become a way of continuous integration, that is, integrating available software every day and every hour. Therefore, the way of quality assurance will be affected. Because the team is constantly producing software and wants the software to be available at any time, it is impossible to do several centralized human flesh tests for the whole project as before. A large number of automatic tests must be added to ensure that the tests are running every day and every hour, and the software is always in a good and healthy state. thereforeWithout a large number of reliable and fast test cases, it must be pseudo agileThis is a very easy criterion to judge.

4.jpg
5.jpg
6.jpg
7.jpg

In fact, China’s software industry was not ready to meet agile. On the one hand, under the policy guidance of “No.18 document”, government enterprise informatization has occupied a large market share. However, such projects have a long budget cycle and low voice power of users, so fast iterative delivery is neither possible nor necessary. On the other hand, the market of CMM certification, which is rapidly heated by government subsidies, is in chaos. Consultation, evaluation and policy subsidies form a complete benefit transmission chain, which has no obvious effect on the improvement of software engineering capability of the industry. In 2006, Martin Fowler gave a speech at China soft Expo. He talked about the project for an investment bank. Through iterative development, some functions could be used by users in two months, and brought real economic benefits to customers. All the investment in the whole project was collected in a few weeks after this part of the function was online. This concept was very strange in China’s software industry at that time. Some academic software engineering experts thought that the current situation of China’s software industry was about 20 years behind that of the United States. I agree with this view, but they think that the way to make up the gap is that the education of software colleges should correct the rules and learn the orthodox software engineering. The so-called learning “regular script” means research CMM。 The idea turned out to be a completely wrong choice. At the same time, some grassroots communities are also actively promoting agility, although they are not welcomed by the mainstream. Around 2006, grassroots communities began to gather strength gradually, held two consecutive years of “agile China” developer conferences and established online communities.

Until 2007 and 2008, the environment gradually changed. First, I personally think that the great development of China’s Internet industry has a lot to do with the exclusion of some American network enterprises from China. There is no dispute here. As far as the situation at that time is concerned, domestic Internet enterprises such as Bat is still in a relatively early stage. If these giants are not excluded, there may not be so much market space in China, so at least from the development of the domestic Internet industry, it creates an opportunity. On the other hand, it is closely related to the rapid development of mobile Internet. As an equipment manufacturer, Huawei also began to feel the pressure from peers, such as Nokia, and found that it was difficult to cope with the market environment without company orientation by focusing on process. Therefore, it began to study agile in 2004 and carried out comprehensive research in the second half of 2007 At the beginning of the year, it began to enter the pilot stage in an all-round way. At that time, Nokia launched a pilot project in Hangzhou’s R & D center, which introduced scrum to try agile practices. This pilot project trained many people who later had a great impact on China’s agile community, such as Lu Yi, Xu Yi, Shen Jian, etc. Therefore, the branch of extreme programming in China mentioned before is largely from the folk, while the branch of Scrum is basically inherited from the Nokia project. On the other hand, with the rapid development of communication enterprises and Internet enterprises, there is a demand for agility. Around 2006, Tencent’s R & D scale began to expand, and its development model needed to be standardized and standardized. It was vacillating between IPD (integrated product development) – CMM and agile. Later, Tencent’s R & D management department began to contact ThoughtWorks company. After participating in a three-day agile induction training, Tencent decided to move forward along the agile road. In fact, Tencent’s decision-makers are not clear about the important direction of some nodes in the end. Ali followed suit, and started to pilot agile around 2008 and 2009, and proved thatThe foundation of technology is very important for agile implementation。 I have investigated how the nail team implemented agile at that time, and their team achieved good results at that time. One of the important reasons was to develop automated tests by themselves. This brings me back to the previous point of view. To judge whether a team is effective and agile is to see whether there are a large number of reliable and fast automated tests. Nailing team’s successful implementation of agile largely benefits from its strong technical ability. I think this ability is an important watershed in the industry. Many enterprises want to learn agile, but in the end, they all stop at the lack of excellent technical ability. They have no ability to conduct automatic testing, continuous integration and reconfiguration. Some incompetent project leaders or QA (quality assurance) don’t know how to operate. At this time, the scrum alliance provides an opportunity to study and test. They get scrum master certification by studying 3355 and other courses. These contents provide a very good outlet for their anxiety. However, the authenticity of agile ultimately depends on the basic technical ability.

Around 2015, agile began to enter the harvest season in China. According to the statistics in the 2016 white paper of Chinese software developers, 64% of the teams have used agile management tools. Of course, this does not mean that 64% of the teams have started to practice agile, but it can be understood that 60% of the teams think it is a matter of face to declare that they have used agile management tools. In the data released by aliyunqi community in 2017, 45.6% of the teams adopted scrum agile development in the scale process mode. Similarly, it can be understood that more people think that scrum agile development is good.This kind of data describes an idea, expresses how the industry practitioners at that time view these ideas, and reflects a kind of recognition.

8.jpg

After 15 years, there have been many developments on the basis of agile. Of course, international and domestic should be viewed separately. The context of development in the United States and Australia is to start thinking about how software architecture can be more suitable for small teams (micro service design), how to make the software life cycle more perfect (Devops), and how to extend the agile rapid feedback mechanism to the business (lean, continuous delivery), etc. However, in China, there are some variants. Because the domestic industry does not have these capabilities, they did not lay a good foundation at the beginning. In fact, some enterprises implemented agile in 2008 and 2009 as a “make-up lesson”. Although there were some achievements, they were far from in place and became agile with Chinese characteristics. Because it was not in place, we had to change the name and then set up a project. One year later, it became micro service, another year it became Devops, and then it was called lean. As a result, we actually did the same thing every year, including the most basic user stories, continuous integration, automated testing, and so on. At the beginning of the development of an industry, it is relatively easy to comprehensively improve the industry’s ability because of its small scale, which is also conducive to future development. However, China’s software industry did not achieve this at the beginning, but its scale was growing. The peers were working by instinct, without routines and methods. Some large enterprises and projects were all stuck in the mire, and everyone was adding Class can not solve the problem, so since it can not solve the problem, solve the person who asked the problem, so scrum master came into being. The normal logic should be to improve one’s own ability if the code is not well written. To write good code, Scrum master is to guide the team members and empower them. Although the ability has not been improved, it has at least played a role of psychological comfort. In the quagmire, we should get along well with ourselves.

9.jpg

Although the above is a bit sad, agile has made great contributions to China’s software industry over the years, for example, it has a significant impact on the office environment. In 2003, our office environment was actually very bad, all of which were cheap partitions, seats and small space. Now we can see that more and more enterprises adopt open office environment, which is more humanized, and there will be more communication opportunities between colleagues. This is a positive impact.

On the other hand, we have to talk about overtime. I have interviewed many people and most of them think that overtime is more serious than 18 years ago. Although the number of overtime hours is not much from the data, in fact, the pressure is greater than before. One reason is that there are more communication tools to control people’s working time, such as nailing, Tencent meetings, enterprise wechat, etc.; the other reason, I think, has a lot to do with agile, that is, more detailed task splitting and effective control of fine-grained increase labor intensity, which is actually a bad direction, contrary to the agile values.

Finally, there was a project of coca cola last year that also wanted to develop new drinks by using the iterative and rapid feedback method of agile. Therefore, agile will extend to other industries in the future. At the same time, its boundary will become wider and wider, and its connotation will become thinner and thinner. Maybe the definition of agile will be blurred in the end Say agile. I still firmly believe that agile software development in a narrow sense has a clear boundary. At least, it needs to have a large number of reliable and fast automated test suites to be truly agile.

Click to watch the full video

Recommended Today

PHP 12th week function learning record

sha1() effect sha1()Function to evaluate the value of a stringSHA-1Hash. usage sha1(string,raw) case <?php $str = “Hello”; echo sha1($str); ?> result f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0 sha1_file() effect sha1_file()Function calculation fileSHA-1Hash. usage sha1_file(file,raw) case <?php $filename = “test.txt”; $sha1file = sha1_file($filename); echo $sha1file; ?> result aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d similar_text() effect similar_text()Function to calculate the similarity between two strings. usage similar_text(string1,string2,percent) case […]