This is actually a pseudo-problem, because most software practitioners believe
No silver bulletBut this concept often needs to be strengthened. As Ivar said, the software industry is a fashion industry. People Constantly package and combine old concepts to create new concepts. In the past decade
Object-oriented
/UMLThen
CMM (I)It is sold as a silver bullet. According to my personal observation, agility has been turned into a silver bullet. So what is agile? Although the concept of agility has been very popular recently, when you ask this question to agile fans, most of them will see a blank face. So I found the following definition in Wikipedia, and I believe that the definitions of other versions are similar:
Agile Software Development
IsConceptual frameworkFor software development that promotesDevelopment IterationS,Open collaboration, AndAdaptabilityThroughout the life-cycle of the project.In this definition, three elements of agility are pointed out: iterative development, frank cooperation, and self-adaptability. We will analyze these three elements as follows. It should be noted that iterative development is not a new concept or exclusive to agility. RUP emphasized iterative development 10 years ago. In fact, agile has not introduced anything new in iteration, moreover, I have noticed that some misuse of iteration has occurred in the agile context (this topic will be discussed in future articles ). The differences between agile and other iterative development methods in Wikipedia are as follows:
Most Agile MethodsShareOther iterative and incremental development methods 'emphasis on building releasable software in short time periods. Agile development differs from other development models: In this model time periods areMeasured in weeksRather than months and work is already med inA highly collaborative manner.Most agile methods also differ by treating their time periodA strict timebox.Honest cooperation is actually the essence of agility. As Ivar said, agility is actually about social engineering. The main contribution of agility is that he thinks more about how to motivate developers' enthusiasm. This is a relatively ignored field in the development of software engineering for decades. How to integrate agility into the entire software engineering system will be discussed in the next article. Self-adaptability is actually a kind of retreat, but a wise and reasonable retreat. For a long time, people have often tried to add project management methods that have been successfully applied to other fields such as construction and machinery to software. These methods often emphasize predictability, but because of the characteristics of the software, it often adds unnecessary costs to the development process. As Walker Royce said, developing software is more like making movies, so management challenges are even greater. The self-adaptability proposed by agility actually reduces unreasonable requirements for project predictability and frees the team to focus on and deliver customer value.
Adaptive methods focus on adapting quickly to changing realities. when the needs of a project change, an adaptive team changes as well. an adaptive team will have difficulty describing exactly what will happen in the future. (from Wikipedia)
The following eleven are the basic principles behind Agile Manifesto. You can see that the first four are about iteration, the last six are about teamwork, and the last one is about adaptability.
1.
Customer satisfaction by rapid, continuous delivery of useful software
2.
Working software is delivered frequently (weeks rather than months)
3.
Working software is the principal measure of SS
4.
Even late changes in requirements are welcomed
5.
Close, daily cooperation between business people and developers
6.
Face-to-face conversation is the best form of communication (co-location)
7.
Projects are built around motivated individuals, who shoshould be trusted
8.
Continuous attention to technical excellence and good design
9.
Simplicity
10.
Self-Organizing teams
11.
Regular adaptation to changing circumstances (from Wikipedia)After learning about agility, how can we face the popular agile movement? First of all, do not turn to God, do not be superstitious, and do not lose yourself. The existence is reasonable. Your first development process and work method must be rational. You should gradually adopt some appropriate practices in agility and carefully examine the rationality and necessity of various artifacts, it is necessary to avoid using agile banners to cut corners (especially by giving up necessary design and architecture work ). At the same time, we should make full use of the revolutionary power and enthusiasm generated by this cultural movement to promote some best practices (such as iterative development) and break some unreasonable constraints on software development activities. In short, be smart.