Response Article: Agile Software Development in China

This is a response article to “Agile Software Development in China” [1] by s1314857.

Introduction:

In the original article the author talks about the benefits of using agile software development (ASD) in China. The article is divided into three main parts. The first provides an overview of ASD methods; the second explains some of their main advantages and the third which is the main idea of the article is about their application in China. Despite the fact that the author has made some salient points within his/her article about the benefits of using ASD methods in China I remain unconvinced that it would provide the improvement of quality and efficiency of software development as the author states. [1]

I do not dispute the fact that ASD has many advantages in certain situations but in fact what I am trying to say is that the author has looked at the problem too conveniently by considering it only from the positive side of adapting it in China and has overlooked the disadvantages that might arise. In my opinion when proposing a method(s) both the good and the bad outcomes of it (them) should be taken into account and if not then the proposal is unrealistic and too good to be true. Hence in my response article I will be discussing the author’s three main paragraphs and say their strengths and weaknesses according to my knowledge.

 

Discussion:

What is Agile Software Development?

In this paragraph the author describes the main ideas behind the agile software development methods in general. He/she mentions that these methods design is based on changing requirements and development adaptation. But the author also says that such methods are more applicable for small-scale teams within this description so in his later statements when considering their implementations in large-scale systems he/she should discuss that such methods are at a disadvantage as opposed to a more plan driven approach or non-agile methods that are designed for larger teams. [5] He fails to mention that agile methodology has less documentation as opposed to heavyweight ones and in some situation this would be crucial.

The next part of the authors’ explanation of ASD is actually taken out from [5] and is an ongoing debate, which he fails to mention and he only talks about the beneficial side of this debate. He/she does not talk about the criticism that the main values of ASD, that he cites in his article and the idea of the items on the left being more important that the items on the right. In [8] it is mentioned that this concept is being used by hackers to write code irresponsibly and is used as an excuse for not writing good documentation or following a plan. In my opinion this might give raise to many problems in large-scale systems, such as lack of documentation or the lack of following a plan might result in ASD being detrimental to the whole system. As in [8] hackers interpretation of “responding to change over following a plan” is roughly “Great! Now I have a reason to avoid planning and to just code up whatever comes next.”

Another good thing the author might have mentioned would have been to discuss or at least mention different agile methods and each one’s advantage or disadvantage in different situations. In my opinion that would have been beneficial if the reader was trying to understand how such methodologies would be applicable in different scenarios.

Why do we use Agile Software Development?

 In this paragraph the author discusses the advantages of ASD over the waterfall method. He/she gives salient observations about the situations in which an agile method is better to be implemented (The case of ever-changing requirements for example). So the idea of the paragraph – to convince us to use ASD – is justified with good examples. But nevertheless the author is talking about hypothetical situations. If we were to discuss another hypothetical situation of a critical system (software for a nuclear reactor, medical systems etc.) where all the requirements are strict and there is a need for good documentation then a heavy-weight approach would be more applicable.

The author also states five advantages of ASD [1]. All of them are well supported by the situations given. In the second advantage (Quality) the author discusses a specific agile method – extreme programming (XP) – but XP is aimed at software-only projects and large projects tend to be multidisciplinary so implementing it might be problematic [2]. The fifth advantage that the author mentions (efficient self-organized team) is more a demand than an advantage. It is true that such methodology enhances team communication but if none is apparent before its implementation or if the individuals lack suck skills then the methodology would not work. And these cases are not captured by the author.

Agile Software Development in China

In this section the author discusses how agile software development is present in China nowadays and how it has proven to be of more interest recently. He/she also states that such methodologies are still in an early adopter stage and the author gives his three main reasons for why this is so.

In the first reason the author talks about small-scale companies in China and how they do not implement standard development methods but instead the process depends on personal style of the leader. He states that this has no management cost and offers more freedom for team members but I do not see it this way. First I cannot see how a process depending on a team leader provides freedom for the team members since the leader might impose a method for everyone and in such case they have not got the freedom the author is talking about. Also if the manager is competent and makes perfect design decision then there would not be any management costs but if his/her decisions are not good then the overhead of such development method would be quite costly.

Anyway the author considers these things as advantages and mentions disadvantages such that the code produced in such environments is of an unstable quality. He states that it is thought to generate a cohesive and self-organized team so if that is the case in such companies wouldn’t that be a hurdle toward implementing an agile method since the author stated that that is one of the requirements in order for it to work. [1] The other points about the already existing chaotic methods and their disadvantages are otherwise good and in such small-scale companies ASD would provide higher efficiency and quality of product. That is if the software involves changing requirements and factors otherwise a heavyweight approach would be beneficial too and the author does not mention that explicitly.

The second reason for implementing ASD in China the author talks about resources being the bottleneck of development companies and suggests the usage of ASD in order utilize the existing resources properly. But in my opinion this is not a reason to choose to apply an agile methodology. If the author has stated that most of the software in such environments needs to be adaptable because of unstable requirements, then yes I would agree with the benefits of implementing agile development but since he/she did not specify the situation in such manner then why not consider heavyweight methodologies?

The third reason the author gives is that the principles of agile software development would be easily accepted in China because of their culture. Since I am not that familiar with the culture there I cannot disagree on that and I consider that to be true. Nevertheless there are different agile methodologies such as XP, Scrum, Crystal and each of them have different principles and with some differences between them so to which is the author referring to? He/she also states that since the most popular coding style in China is the cowboy one and this is his/her reason to why ASD would be easy to develop and implement since they are more similar than “other professional coding styles”. What the author fails to grasp is that ASD is not necessarily a coding style but it can be a management style (Scrum) or a hybrid. So this would have been a good point if the author said a specific agile methodology that is similar to “cowboy coding”. Not to mention the fact that it still appears that the author is talking about small-scale systems.

 

Conclusion:

The author of the article has given good points for implementing agile software development in China but I as a reader remain unconvinced by his article alone. He/she does not consider the negative sides of implementing such methodology and overall does not appear to be discussing it for large-scale or critical projects (where agile methods are at a disadvantage). Since all methods are controversial [7] and none can be considered to be applicable in all situations the thing that the author lacks most is that he/she has not mentioned when such methods are good to be used and where their implementation would be detrimental. That in my opinion provides an unrealistic view of the benefits of implementation of agile software development and hence is a reason why I remain overall unconvinced by the author’s article [1].

REFERENCES:

[1] Agile Software Development in China. s1314857,  February 14, 2014.

[2] Extreme Programming from a CMM Perspective. M. C. Paulk. IEEE Software, November/December 2001.

[3] Manifesto for Agile Software Development. Various authors, IEEE Software, November/December 2001.

[4] Recovery, Redemption, and Extreme Programming. P. Schuh. IEEE Software, November/December 2001.

[5] Get ready for agile methods, with care. B. Boehm. IEEE Computer 35(1):64-69, 2002.

[6] Management Challenges to Implementing Agile Processes in Traditional Development Organizations. B. Boehm, R. Turner. IEEE Software September/October 2005.

[7] Software Development Methodologies Lecture

[8] S. Rakitin, “Manifesto Elicits Cynicism,” Computer, Dec. 2001, p. 4.