Getting Started Tutorial To Agile Development
Agile development is a very popular software development method. According to statistics, 90% of software development in 2018 adopted agile development.
However, not many people can explain exactly what agile development is. This article attempts to explain agile development in simple and easy to understand language.
1. Iterative development
The core of agile development is iterative development. Agile must be an iterative development approach.So what is "iterative development"? literally translated as "repetition", iterative development is actually "repetitive development".
For large software projects, the traditional development method is to use a large cycle (such as one year) for development, and the whole process is a "big development"; the iterative development method is different, it splits the development process into multiple small cycles , That is, one "big development" becomes multiple "small developments", each time the small development is the same process, so it seems that the same steps are being repeated.
For example, SpaceX wants to build a large-thrust rocket to send humans to Mars. However, instead of building a big rocket from the beginning, it first builds the simplest small rocket Falcon 1. As a result, the first launch exploded, and it was not until the fourth launch that it successfully entered orbit. Then, the medium-sized rocket Falcon 9 was developed, which was launched 70 times in nine years. Finally, the Falcon heavy rocket was developed. If SpaceX does not adopt iterative development, it may not be able to go to heaven until now.
Iterative development divides a large task into multiple continuous developments, and the essence is gradual improvement. Developers quickly release an effective but imperfect minimal version, and then continue to iterate. Each iteration includes five steps of planning, design, coding, testing, and evaluation to continuously improve the product and add new features. Through frequent releases and tracking of feedback to the previous iteration, the product is finally close to a more complete product form.
2. incremental development
Iterative development only requires that the development be divided into multiple iterations, and does not answer an important question: how to divide the iteration, which task is in this iteration, and which task is in the next iteration? At this time, "incremental development" is generally used to divide iterations.
The so-called "incremental development" means that each version of the software will add a complete function that users can perceive. In other words, the iterations are divided according to the newly added functions.
For example, a real estate company develops a community of 10 buildings. If the incremental development model is adopted, the company's first iteration is to deliver Building One, and the second iteration to deliver Building Two... Each iteration is to complete a complete building. Instead of digging the foundations of 10 buildings in the first iteration, the second iteration builds the skeleton of each building, and the third iteration builds the roof...
Incremental development plus iterative development is truly agile development.
3.The Benefits Of Agile Development
3.1 Early Delivery
The first benefit of agile development is early delivery, which greatly reduces costs.Taking the real estate company in the previous section as an example, if you follow the traditional "waterfall development model", first dig the foundations of 10 buildings, build the skeleton, and then erect the roof. Each stage will start after the completion of the previous stage. It may be necessary It takes two years to deliver 10 buildings at once. In other words, if pre-sales are not considered, the project must wait until two years before the payment can be returned.In agile development, the first building will be delivered six months later, and one building will be delivered every two months thereafter. Therefore, 10% of the payment can be returned in half a year, and there will be cash flow every month thereafter, and the financial pressure is greatly reduced.
The second benefit of agile development is to understand market demand in time and reduce the risk of product inapplicability.
Please think about the situation in which the loss is relatively small: after the 10 buildings are built, it is discovered that they cannot be sold. If the first building is built, it is found that it cannot be sold, so the next 9 buildings are improved or stopped?
For software projects, having a prototype product first and understanding the market acceptance is often the key to the success of the project. There is a book called "Dream Code", the subtitle is "20+ programmers, three years, 4732 bugs, 1 million dollars, the final failure story", this is the result of not adopting agile development. On the contrary, Instagram was originally a location check-in app, and later found that users didn’t care much about location and preferred to upload photos, so they changed to photo uploading software, which turned out to be a unicorn.Because agile development can continue trial and error, find out the most important functions for the business, and then adjust the software direction through iteration. Compared with traditional methods, it greatly increases the possibility of product success. If the market demand is uncertain, or you are not familiar with the field, then agile development is almost the only viable response.
Although agile development divides software development into multiple iterations, it also requires that each iteration is a complete software development cycle, and formal process management must be carried out in accordance with the methodology of software engineering.
Specifically, each iteration must complete the following five steps in sequence.
- Requirements analysis
- Deployment and evaluation
5.the values of agile developmentFour values are mentioned in the "Manifesto for Agile Software Development".
- The subjective initiative of programmers and the interaction between programmers are better than established processes and tools.
- Software can run, better than detailed documentation.
- Close collaboration with customers is better than contracts and negotiations.
- Being able to respond to changes is better than following a plan.
The manifesto also put forward twelve principles of agile development.
- Achieve customer satisfaction through early and continuous delivery of valuable software.
- Changing demands are welcome, even in the later stages of project development. We must be good at using changes in demand to help customers gain a competitive advantage.
- Continuous delivery of usable software, the cycle is usually a few weeks, the shorter the better.
- During the project, business personnel and developers must work together.
- Projects must be built around individuals with internal motivation, and they should be trusted.
- Face-to-face conversation is the best way to communicate.
- Availability is the main indicator of progress.
- Promote sustainable development and maintain a steady rate of progress.
- Constantly pay attention to whether the technology is good and the design is good.
- Simplicity is of the utmost importance, and minimize unnecessary work as much as possible.
- The best architecture, requirements and design come from the spontaneous knowledge within the team.
- The team should regularly reflect on how to be more effective and adjust accordingly.
§ Iterative development: the secret to great product launches, Pavlo Zinchenko
§ Agile software development, Wikipedia