The most heard description of agile development is iterative development, side doing demand side doing development and so on. It is also argued that agile development is a pattern, as long as it is as agile as any other methodology to observe what time to do. The sense that these statements are not accurate description of agile development, some even wrong.
After two years of agile development practice, I feel that the essence of agile development is a process of cooperation and improvement. Only by continuous improvement can we avoid copying the patterns and make a robust system that meets the needs.
The role in the Agile development team is the most important. I think the customer is the most important, the customer here is not necessarily the true meaning of the customer, but refers to the end-user of the system. Because the customer is the real source of demand. The development of a project may go through months or years of experience, even if you do the preliminary needs of the research and meticulous, in the information technology and E-commerce development so quickly today, the system in your delivery, it is likely no longer meet the needs of customers. So without the full participation of the client, the development team is likely to go in the wrong direction, at most, to develop a sophisticated and can not use the machine. What kind of development can be called real agile development? I think there are several ways to consider this.
1. Your project has no customer participation. Although you have your own needs team (PD, BA) and so on, but they are not a real user, can not guarantee the real response to customer demand.
2. Does your project have a real iterative and incremental development? The iterations here are not just fragments of time, but a deliverable, testable feature point that can be delivered in each iteration, and one might say that their project may have been doing the infrastructure implementation in the previous iterations, and it is impossible to make real deliverables. I think this is not in line with agile development, agile development requires us to make the most necessary functions in the shortest possible time, minimize the risk of the project, and if it takes a few months to do the infrastructure, and the functionality behind it does not meet the customer's requirements or the customer demands change requirements, then there is a possibility of architectural changes, The price is very high. Therefore, agile development also requires a flexible system architecture.
3. Your project has not made a reasonable task decomposition, only the large task (tasks) decomposed into small increments, each increment requires only minimal planning and the shortest completion time, in order to make the entire development process into an iterative incremental development project.
4. Are there any demo and feedback for your project? Demonstrating to customers and asking for feedback from each iteration is the best practice for agile development and customer interaction.
5. How your project views changes in requirements, and in agile development, requirements change is acceptable or popular at any stage of the project. Because customers can not completely correct their needs on the line description, their description can not be fully reflected in the implementation of the system, only in the continuous improvement of the process in order to meet customer requirements of the system to the Times.
6. How your project is tested, in the agile development process, the whole process of testing is involved in the development, through testing to discover the problem as early as possible, solve the problem, which requires the Agile development team to submit every piece of code is testable, each completed task is deliverable, testable. The above is my understanding of agile development, I hope we have a lot of exchanges and improve together.