Agile development is getting hotter now, everyone is talking about agile, everyone is learning Scrum and XP. In order not to be left behind, I began to learn Scrum. Here I will talk about my recent reading on it.
What is agile development?
Agile Development is a human-centered, iterative, and step-by-step approach to development. First of all, it is a development method, rather than a technology. It is a software development process, which will guide us through completing the development of the project. Its main driving core is team member athe nd it is iterative.
Why is it human-centered?
Most of us have learned about the waterfall development which is document driven. In the entire development process of the waterfall, it is necessary to write a large number of documents. After the requirement document is written out, the developers will code according to the document. However, in agile development, only documents that are must-have will be written. The fewer the documents are, the better it is. Agile development focuses on face-to-face communication, so it is human-centered.
What is an iteration?
Iteration refers to the decomposition of a complex development task within a long development cycle into tasks that can be completed in a small cycle. Such a cycle is an iterative process. At the same time, each iteration can produce or develop a software that can be delivered.
About Scrum and XP
In the past, Agile was a guiding idea or development method, but it did not tell us exactly what kind of process to be used in development. Scrum and XP are the specific methods of agile development. You can use Scrum or XP. The difference between Scrum and XP is that Scrum focuses on the process and XP focuses on the practice. However, the two are applied together in practice.
Next, I will talk about Scrum.
What is Scrum?
Scrum means a professional term in playing football. It means to scrimmage. You can imagine what your development team will be like when developing a project in a "scrimmage". Everyone looks like very excited to play football and tries to be as fast as possible, full of passion, and everyone will compete for it to complete it. Scrum is such a development process. Adopting this process, you can see the efficiency of your team is improved.
[Three major roles in the Scrum development process]1. Product Owner
PO is mainly to decide the function of the product and meeting the requirements, specifying the release date and delivery content of the software, and accept or reject the results of the development team.
2. Project Manager (Scrum Master)
Scrum master is mainly responsible for the implementation of the entire Scrum process, as well as communicating with customers and development team.
3. Development Team (Scrum Team)Dev team is mainly responsible for the development of software under Scrum regulations. The size of the team should be about 5 to 10 members. Each member is responsible for different aspects technically, and each member should have strong self-management and communication skills. They can work in any ways as long as they can achieve the goal of sprints. Scrum flowchart
//------------------------ Below, I will talk about implementation in specific. Before that, I will also explain what a sprint is.
What is Sprint?
Sprint means a short running. In Scrum, it refers to an iteration, the cycle of which is about 2- 4 weeks. That means we have to complete iterative development as quickly as possible. This process is what we call a Sprint.
How to do development in Scrum?
1. Identify a Product Backlog (a list of product requirements in order of priority). This is the Product Owner's job.
2. Scrum Team estimate the workload and arrange work according to Product Backlog.
3. Select a Story at the Sprint Planning Meeting as the goal of this sprint. The time to finish this goal is 1 to 4 weeks. Then decompose this Story to a Sprint Backlog;
4. The Sprint Backlog is completed by the Scrum Team. Each member will take further decomposed into smaller tasks according to the Sprint Backlog (The workload of each task should be no more than 2 days);
5. Daily Scrum Meeting (stand-up meeting ) is required. Each meeting is about 15 minutes. Everyone should talk about what they accomplished yesterday and what you want to accomplish. Problems that you can't solve at the same time. After everyone is done, update the Sprint burndown chart;
6. Daily integration, that is to generate a build that can be successfully compiled and demonstrated. TFS can support this. When a member performs check-in, it automatically gets the latest version on the server and then compiles it on the server. If it passes, the unit test code is executed immediately. If all of them pass, the version is released. At this time, an official check is performed. The entry operation is saved in TFS. If there is any failure, the project manager will be notified by email.
7., When a Story is completed, hold Sprint Review Meeting (demonstration meeting), AKA the review meeting. PO and customers must participate in it, and each member of the Scrum Team must demonstrate them the software. This meeting is very important;
8. The last is the Sprint Retrospective Meeting (review meeting), also known as the summary meeting, which is conducted in turn. Each person must speak, summarize and discuss the improvements, and put it into the next round of Sprint's product requirements; Here are some of the scene graphs in the Scrum development process:The image above is a daily stand-up meeting. Participants can stand randomly. The task Kanban should be seen by everyone. After each person talked, update their burndown charts.
Kanban contains work statuses, such as Doing, Done, Unfinished, etc. Assuming that you have completed a task today, you will need to move the card from the Unfinished column to the Done one.
Everyone’s work status and completion are open to others. If a person task is left undone for a few days, everyone can find out something went wrong in his work.
The above picture is not poker cards. It is a planning card. It is used to estimate man-hour of tasks and prevent the project from being controlled by one person during the development. How to use it? For example, if A programmer codes a function that takes five hours, and B programmer thinks it only takes half an hour, then they each take the corresponding card, hide it in their hands, and finally show to others. If the time difference is much, then A and B can discuss it.
Edit by Zentao.pm================================