Updated: Dec 29, 2020
Three consecutive articles will be published from today. This series of articles will give you a detailed introduction to the concept, methods, tools, and practice of Agile Management.
Today’s article, the first in a series, will introduce the origins and basic concepts of Agile.
1. The Origin of Agile
Without explaining the basic theory of Agile, we will start from something which is easy to understand. Through searching the information, I did not find a clear origin of “agile”, and there are many different opinions about this. A relatively reliable argument is that the “software crisis” in the 1990s result in the publication of the Agile Manifesto in 2001. So far, the most common application of Agile is still software engineering.
Let’s take a look at the reasons. There are usually three situations in the software development process: tight development cycle; uncontrollable scope; frequent demand changes. However, the traditional waterfall development obviously does not adapt to the current changeable development process. We need to adopt a more efficient development method to ensure that the team can exert a maximum effect. The fundamental reason is that uncontrollable factors such as software project requirements, technology, and manpower are becoming more and more complicated with the increasingly updated technology, so the key to solving the “software crisis” is to overcome the inherent complexity of software.
So how can we solve the complex problems? The most feasible way is to carry out empirical process control, dismantle the currently available work, plan, and monitor in a small scope. In short, it is to shorten the production cycle, adapt to changes, and continuously improve in the process, so as to achieve the established goals. The most typical example is Toyota's “just in time”, and the core of the idea is: pursuing zero inventory; quick response; harmonious internal and external environment of the enterprise; people-oriented.
Obviously, due to the complexity of Internet products in the era, demand often depends on the ever-changing industry and technological development. No one can accurately predict this uncertainty, and therefore Agile is mostly used in Internet software projects.
It should be noted that Agile is a method that can be applied to a variety of situations, such as project management, development management, work management, and even self-management.
2. Basic Concepts of Agile
For better understanding, some basic concepts related to agile are cited1.
a. Individuals and interactions over processes and tools
- People are the most important factor in the success of a software project
- Cooperation, communication, and delivery skills are more important than software programming skills and tools
- Methods and tools are fixed, people are flexible, and the most important thing is collaboration.
b. Working software over comprehensive documentation
· Too many comprehensive documents are worse than too few documents
· The main and central activity of software development is to create working software.
c. Documentation is not done until it is urgently needed and significant
· The internal documents prepared should be as short as possible and have prominent themes.
d. Customer collaboration over contract negotiation
· It is impossible for customers to express their requirements completely and clearly in the contract once at one time
· The best contract is the contract that provides guidance for the development team and the customer’s system work
e. Responding to change over following a plan
· Change is the reality in software development
· The plan must be flexible and malleable
· Short-term iteration plans are more effective than long-term plans
12 Principles of Agile Development
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Business people and developers must work together daily throughout the project.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Working software is the primary measure of progress.
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Continuous attention to technical excellence and good design enhances agility.
Simplicity--the art of maximizing the amount of work not done--is essential.
The best architectures, requirements, and designs emerge from self-organizing teams.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
3. Practice Methods of Agile
· Crystal Methods
· FDD (Feature-Driven Development)
· ASD(Adaptive Software Development)
· DSDM (Dynamic System Development Method)
· Lightweight RUP
4. Scrum’s values:
Focus, Openness, Commitment, Courage, and Respect. As shown in the figure below.
In summary, this article is the first in a series of articles. It mainly introduces the origin of Agile management, four Agile Manifestos, twelve principles, main practice methods of Agile, and five core values in SCRUM.