Core Idea of agile development

Source: Internet
Author: User

I. 4 agile statements

Individuals and interactions are better than processes and tools

Software that can work is better than comprehensive documents

Customer collaboration is better than contract negotiation

Responding to changes is better than following the plan

 

 

Ii. 12 agile principles


The values of agile development are described in four agile declarations. The following 12 principles can be derived from these values, which are characteristic of agile practices that are different from heavy processes. These 12 principles are elaborated in Agile Software Development-principles, patterns, and practices (Chinese title: Agile Software Development-principles, models, and practices, here, I will not repeat the content of the book. I will explain these principles from my personal understanding. I hope you can add more insights.

 

1. Our top priority is to satisfy our customers by delivering valuable software as soon as possible and continuously.

When planning iterative stories, you must prioritize them to provide customers with the most valuable features. Early cooperation with customers can be formed through frequent iterations, and timely feedback can be provided to improve product quality. Agile groups focus on the functions of completing and paying for users, rather than isolated tasks. In the past, we used Requirement Specification or use cases to write detailed requirements. agile use of user stories to list requirements. A user story is a lightweight technology that represents a demand. It does not

Fixed format and mandatory syntax. However, some fixed forms can be used for reference. This template is used in Agile estimation: "as a [user type], I hope I can [capability] to [business value]". When using a user story-based requirement analysis method, prototype and document writing may still be required, but the focus is more on verbal communication.

 

2. Even after development, you are welcome to change your requirements. Agile processes use changes to create competitive advantages for customers.

Agile Process participants are not afraid of changes. They think changing needs is a good thing, because these changes mean that we are more familiar with market needs.

3. Regular delivery of software that can work, the delivery interval can be from several weeks to several months, the shorter the delivery interval, the better.

Iteration is restricted by the practice box, meaning that iteration must be completed on time even if some features are abandoned. As long as we can ensure that the delivered software can work well, the shorter the delivery time, the closer we work with the customer, and the more beneficial the product quality. Although we have made multiple iterations, not all iteration results need to be delivered to users. The goal of agile development is to allow them to deliver. This means that the development team will add some features in each iteration, and each added feature is encoded and tested to meet the quality standards that can be released.
In addition, there is no important division of the development phase in the agile development project, there is no pre-demand stage, followed by the analysis phase, architecture design phase, coding testing phase, etc. After the project really starts, in conjunction with each iteration

All the above-mentioned stages.
 
4. During the entire project development, business personnel and developers must work together every day.

The software project will not be executed in the original path according to the previously set plan. The intermediate understanding of the business and the software solution will certainly be biased, therefore, customers, demand personnel, developers, and stakeholders must be meaningful and frequent.

In this way, you can promptly discover and solve problems in the early stage.
 
5. Build projects around motivated people. Provide them with the required environment and support, and trust them to complete their work.

Business and Technology are the two main aspects that cause uncertainty, while people are the third. Business and technology must be implemented by people. Therefore, it is critical to motivate people to solve these problems. As long as personal goals and Groups

If the goal of the team is consistent, we need to inspire everyone's enthusiasm, build a project with a personal focus, and provide the necessary environment, support, and trust.

 

6. In the Team, the most effective and efficient way to transmit information is face-to-face conversations.


In a large team of over a dozen or more people, documents are a suitable way to pass on knowledge and exchange. However, agile teams generally do not have many people (large teams will also be divided into multiple small agile teams when implementing agile), so

A large amount of document exchange is not very economical. In this case, face-to-face conversations are faster and more effective.
 
7. Workable software is the primary progress measurement standard.


Generally, jobs are easier to measure task progress. For example, if you want to carry 1 ton of stones, I just need to name the weight of the stones you have carried and know how much you have done. For the software, the Code is not compiled or tested.

Before writing the code, we cannot determine whether the function is complete if the test case runs as many lines as the code is written. The primary criterion for measuring whether this function is completed is that this function can be done and is available to users.

To apply.

 

8. The agile process provides a sustainable development speed. Owners, developers, and users should be able to maintain a long-term and constant development speed.

Many people think that working overtime in software development is normal, but not working overtime. I don't understand this. It may be caused by national conditions. The agile process is expected to be able to carry out sustainable development. The development speed will not vary with the iterative tasks. The development work should not be a sudden attack if you do not appreciate the so-called fight. We can't expect that it will be easy after the project is raided, because after a project is completed, the next project will come one after another, as long as it is still a fight attitude, the next project will still allow your team members to attack again. At this time, I don't know if anyone will say, so we will always work overtime, which is also a "continuous development speed". At this time, we should pay attention to the continuous overtime wisdom.

Wisdom leads to fatigue and boredom, and maintaining a constant speed for a long time is just an ideal.
 
9. Constantly paying attention to excellent skills and good design will enhance agility.

The agile process has many good technical practices that can enhance product agility. Many principles, models, and practices can also enhance agile development capabilities. The book Agile Software Development-principles, models, and practices describes a lot of designs. If you are interested, take a closer look.
 
10. Simplicity-the art of maximizing unfinished work-is fundamental.

We cannot predict how the requirements will change, so it is impossible to build a perfect architecture at the beginning to adapt to all future changes. The agile team will not build tomorrow's software, but focus on how to solve the current problems through the simplest method. At this time, some people will say that I have predicted which demand expansion points will definitely exist. Do we need to consider them at the beginning? At this time, the team should decide whether to consider the issue based on their own understanding. If you believe that this problem can be easily handled tomorrow, it is best not to consider it first.
 
11. Best architecture, requirements, and design self-organized teams.

Agile has many practices. We all know that iterative development is the main practice method, and self-organizing teams are also one of the main practices. In a self-organizing team, managers no longer give orders, but let the team find the best way to work. It is difficult to form a self-organizing team. In an interview with Mishkin berteig, csdn said that the first element of a self-organizing team is to have a team, not just a group of people. A group of people work together. They do not communicate much with each other, and they do not regard each other as one. At the beginning of the project, we will build a "team", but most of the time there is a group of architects, demand personnel, developers and testers. He also believes that the formation of the team must go through several periods. After the initial stages, the Members will begin to have a basic understanding and understanding of the common work philosophy and culture of the team. Rules are gradually formed in the team, and these rules are self-evident. For example, everyone knows that when they come to work at nine o'clock A.M., they will take the initiative to ask others if they need help, and they will also take the initiative to discuss problems with others. If such a tacit understanding can be achieved between team members, the team will become a truly efficient team. In this way, members can understand each other and work very efficiently. In a self-organizing team, team members do not need to follow the instructions of others. They need a higher level of guidance, which is more like a goal, a goal dedicated to developing better software. In short, a self-organizing team is a self-organized team with a shared goal and a culture of work. Such a team is always making a commitment to its organization. However, implementing these commitments is very important for Self-Organizing teams. Otherwise, a crisis of trust may occur between team members.

Although agile development teams work in groups, it is necessary to specify some roles for certain tasks. The first role is the product owner ). The primary responsibilities of the product owner include confirming that all team members are pursuing a common project prospect and determining the priority of features so that they are always dealing with the most valuable features, and make a decision so that the investment in the project can produce a good return. It can correspond to the "Product Manager" in the previous development ". Another role is the development team (developer). The developers here include architects, designers, programmers, demanders, testers, and document writers. Sometimes the product owners can also be seen

Developer. Another important role is the project manager ). Project managers of agile development pay more attention to leadership rather than management. In some projects, the project manager may also be a developer and may also be the product owner in a few cases.
  
12. At a certain time, the team will reflect on how to work more effectively, and then adjust their behaviors accordingly.


Many uncertainties may lead to plan failure. For example, project member increase or decrease, technical application effect, user demand change, and competitor impact on us may lead to different responses. Agility is not based on a predefined approach of work, but on an empirical approach. For these changes, the Group maintains the agility of the team through constant reflection and adjustments.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.