The most common description of agile development is the development of iterations, while doing the development of requirements and so on. Some people also think that agile development is a model, as long as other methodologies to comply with what time to do things can be agile. It feels like these statements are not exactly descriptive of agile development, and some are 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 pattern and making a robust system that meets the needs.
That 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 real 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 be a few months or even years of experience, even if your pre-demand research to do the meticulous, in the development of information technology and e-commerce so fast today, the system when you deliver, it is likely no longer meet the needs of customers. So without the full participation of the customer, 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 we can consider the following aspects.
1. Your project has no client's full participation. Although you have your own demand team (PD, BA) and so on, but they are not real users, can not guarantee the real response to customer needs.
2. Does your project have real iterations and incremental development? The iteration here is not just a fragment of time, but a deliverable, testable function point in every iteration, and one might say that their project might be doing the infrastructure implementation of the first few iterations, and it is impossible to make real deliverable functionality. I think this is not in line with agile development, agile development requires us in the shortest possible time to make the most needed features, minimize the risk of the project, if it takes a few months to do the infrastructure, and the subsequent functions do not meet customer requirements or customer requirements change requirements, then there is a possibility of architectural changes, It's a big price. As a result, agile development requires a flexible, resilient system architecture.
3. Your project has not made a reasonable task decomposition, only the large task (task) decomposition into small increments, each increment requires only a minimum of planning and the shortest time to complete, in order to make the entire development process into an iterative incremental development project.
4. Do you have demo and feedback on your project? It is a best practice for agile development to communicate with customers by demonstrating to customers at each iteration and requiring customer feedback.
5. How your project looks at changes in requirements, in agile development, changes in requirements are 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 completely correct in the implementation of the system, only in the continuous improvement of the process in order to make consistent with customer requirements of the times of the system.
6. How your project is tested, in the agile development process, during the whole process of testing, through testing to find the problem as early as possible, solve the problem, which requires the Agile development team to submit each piece of code is testable, each completed task is deliverable, testable. The above is my understanding of agile development, I hope that we have a lot of exchanges and common improvement.