The 4 Agile Manifesto of Agile Development speaks of the values of agile development, which can lead to the following 12 principles , which are the characteristics of agile practices that differ from heavy processes. In the Agile Software Development-principles,patterns,and practices (Chinese title: Agile Software Development-principles, patterns and practices), these 12 principles are expounded separately, Here I do not repeat the contents of the book, will be from my personal understanding to explain these principles, I hope that we can add a lot of unique insights.
1. Our top priority is to make our customers happy by delivering valuable software early and consistently.
Planning an iterative story must be prioritized to provide the most valuable functionality to the customer first. Through frequent iterations can form early good cooperation with customers, timely feedback to improve product quality. Agile teams focus on accomplishing and delivering functionality with user value, rather than isolated tasks. We used to write detailed requirements using the requirements specification or use cases, and agile used user stories to list the requirements. A user story is a lightweight technique that represents a requirement, and it has no fixed form and a mandatory syntax. But there are some fixed forms that can be used for reference or more useful. This template is used in agile estimates: "As a type of user", I want to be able to "business value". When you use a demand analysis method based on a user story, you may still need to prototype and document, but the focus of the work is more shifted to verbal communication.
2. Even in the late stages of development, it is Welcome to change demand . Agile processes leverage change to create competitive advantage for customers.
Agile process Participants are not afraid of change, they think changing demand is a good thing, because these changes mean we know more about market demand.
3. Regular deliveries can work on the software, the delivery interval can be from a few thoughtful months, the shorter the time interval the better.
Iterations are limited by the practice box, meaning that you must end the iteration on time, even if you discard some functionality. As long as we can guarantee that the delivered software works well, the shorter the delivery time, the closer we will work with our customers and the better the quality of our products. Although we iterate many times, not every iteration will have to be delivered to the user, and the goal of agile development is to enable them to deliver. This means that the development team will add some functionality to each iteration, and each additional feature is coded, tested, and published to a quality standard.
In addition, agile development projects in the development phase has no important segmentation, there is no upfront requirements phase, then the analysis stage, the architecture design phase, the coding test phase, after the project really started, each iteration will be at the same time all the above stages of work.
4. Throughout the development of the project, business people and developers must work together every day.
Software projects will not be implemented in accordance with the previously established plan, the understanding of the business, the software solution will certainly be biased, so customers, demand personnel, developers and stakeholders must have meaningful and frequent interaction, so that the early timely detection and resolution of the problem.
5. Build a project around people who are motivated. Provide them with the environment and support they need, and trust them to get the job done.
Business and technology are the two main areas that cause uncertainty, and people are the third. and business and technology must be carried out by people, so the ability to motivate people to solve these problems is the key to solve the uncertainty. As long as individual goals are aligned with the goals of the team, we need to inspire everyone, build projects on an individual-centric, and provide the environment, support, and trust you need.
6. Within the team, the most effective and efficient way to deliver information is through face-to-head conversations .
In a large team of more than 10 or more than 20 people, documentation is a more appropriate way to transfer knowledge and communication. While agile teams generally do not have a lot of people (large teams are also divided into small agile teams when they implement agile), so a lot of document communication is actually not very economical. In this case, face-to talk is quicker and more effective.
7.
working software is the primary measure of progress .
General work is easier to measure the progress of the task, such as let you carry 1 tons of stone, I just go to weigh the weight of the stones you have carried to know how much you have done. And for software, before the software is coded, and the test is complete, we can't write how many lines the code has written, and how many of the test cases run to measure whether the feature is complete. The first criterion to measure the completion of this feature is that it works and is already available to users.
8. Agile processes are developed at a sustainable pace . Responsible people, developers and users should be able to maintain a long-term, constant development speed.
Many people think that the software development in the overtime is very normal, do not work overtime is not normal, I do not understand this somewhat, this may be caused by national conditions it. The agile process wants to be able to develop sustainably, the speed of development will not be different with the task of the iteration, do not appreciate the so-called a spell can complete the attitude, development work should not be blitz behavior. We can not expect to say that the assault on this project will be easy, because the completion of a project after the next project, and as long as the attitude of the struggle, the next project will still let your team members again assault. At this time do not know someone will not say, that we have been working overtime, but also "continuous development speed" Ah, then you can pay attention to, continuous overtime wisdom leads to fatigue, boredom, to maintain a long-term constant speed is just an ideal.
9. Constant attention to excellent skills and good design will enhance agility.
Agile processes have many good technical practices to enhance product agility, and many principles, patterns, and practices can also enhance agile development capabilities. "Agile software Development-principles, patterns and practices," the book introduces a lot of design, interested can go to a closer look.
10. Simple ----The art----to maximize unfinished work is fundamental.
It is not possible to anticipate how future requirements will change, so it is not possible to build a perfect architecture at the outset to accommodate all the changes that follow. Agile teams will not build tomorrow's software, but focus on how to accomplish the problems that need to be solved in the simplest way. At this point, someone would say, I've already predicted what needs to be expanded, and whether we need to consider it at the outset. At this point the team needs to decide whether to consider it according to their own understanding, if it is believed that the problem can be easily dealt with tomorrow, then it is better not to think about it first.
11. The best architectures, requirements, and designs come from a self-organizing team .
There are many kinds of practices in agile, and we all know that iterative development is the main practice, and self-organizing team is one of the main practices. In the self-organizing team, the manager no longer orders, but the team to find the best way to work to complete the work. To form a self-organizing team is actually difficult. CSDN Interview Mishkin Berteig saidthe first element of a self-organizing team is the need to have a team, not just a group of people. A group of people who work together, they do not have much communication with each other, they do not regard each other as a whole. At the beginning of the project, we will form a "team", but many times the architect, the demand, the developers and the testers are a bunch of people. He also believes thatthe formation of a team must undergo several periods. After the initial run-in, the members will begin to form a basic understanding and understanding of the team's common work concept and culture. Rules are gradually formed within the team, and these rules are self-evident. For example, everyone knows that nine o'clock in the morning to work, will actively ask others whether they need help, will also go to the initiative and others to discuss the problem. If the team members can achieve such a tacit understanding, then the team will become a truly efficient team. In such a team, members understand each other and are highly productive. In a self-organizing team, team members do not need to follow the detailed instructions of others. They need a higher level of guidance, which is more like a goal, a goal to develop better software. In short, the self-organizing team is a self-motivated team with a common goal and a working culture, and the team is always making commitments to its organization. However, achieving these commitments is important for self-organizing teams. Otherwise, if there is a problem, there will be a trust crisis among team members.
Although the Agile development team is working as a team, it is important to identify some roles that will take on certain tasks. The first role is the product owner. The main responsibilities of the product owner include confirming that all members of the team are pursuing a common project perspective, prioritizing functions so that they are always dealing with the most valuable functions and making decisions that will yield a good return on project inputs. can correspond to "product Manager" in the previous development. Another role is the development team (developer), where developers include architects, designers, programmers, requirements, testers, document writers, and so on, and sometimes product owners can be seen as developers. An important role is Project manager. Agile development project managers tend to focus more on leadership than management. In some projects, the project manager may also be a developer and, in a few cases, a product owner.
12. every once in a while, the team will reflect on how to work more effectively, and then adjust their behavior accordingly.
Because many uncertainties can lead to the failure of the program, such as the increase or decrease of project members, the effect of technical application, changes in user needs, the impact of competitors on us will make us react differently. Agile is not based on pre-defined ways of working, but on an empirical basis, and the team keeps the team agile through constant introspection and adjustment to these changes.