Использование методологии Scrum для разработки ПО
Scrum is one of the most popular frameworks for implementing agile. So popular, in fact, that many people think scrum and agile are the same thing. (They're not.) Many frameworks can be used to implement agile, such as kanban for example, but scrum has a unique flavor because of the commitment to short iterations of work.
What's so special about scrum?
With scrum, the product is built in a series of fixed-length iterations called sprints that give teams a framework for shipping software on a regular cadence. Milestones–i.e., the end of a sprint–come frequently, bringing with them a feeling of tangible progress with each cycle that focuses and energizes everyone. ("Continuous inspiration" for the win!) Short iterations also reinforce the importance of good estimation and fast feedback from tests–both recurring struggles in waterfall projects.
Scrum calls for four ceremonies that bring structure to each sprint:
- Планирование спринта. Собрание команды по планированию для определения объема работы на следующий спринт.
- Ежедневная планерка. Известна также как «ежедневный Scrum»: короткое 15-минутное совещание для синхронизации работы команды.
- Демонстрация спринта. Собрание с демонстрацией результатов работы команды в последнем спринте.
- Sprint retrospective: A review of what did and didn't go well with actions to make the next sprint better.
В ходе спринта мощными мотиваторами будут визуальные артефакты — доски задач и диаграммы сгорания, — видимые как команде, так и наблюдателям. С их помощью можно сказать: «Мы работаем над этим!» Не меньше мотивирует и возможность показать новую работу в демонстрации по спринтам, а единообразная инкрементальная обратная связь, получаемая командой от заинтересованных сторон в ходе каждой демонстрации, — настоящий двигатель развития продукта.
Scrum done well–which is to say, not "waterfall with stand-ups"–can be a massive catalyst for improving team productivity and morale, and the product development process as a whole.
Three essential roles for scrum success
A scrum team has a slightly different composition than a traditional waterfall project, with three specific roles: product owner, scrum master, and the development team. And because scrum teams are cross-functional, "the development team" includes testers, designers, and ops engineers in addition to developers.
The product owner
Product owners are the champions for their product. They are focused on understanding business and market requirements, then prioritizing the work to be done by the engineering team accordingly. Effective product owners:
- Build and manage the product backlog
- Closely partner with the business and the team to ensure everyone understands the work items in the product backlog
- Give the team clear guidance on which features to deliver next
- Decide when to ship the product with the predisposition towards more frequent delivery
Keep in mind that a product owner is not a project manager. Product owners are not managing the status of the program. They focus on ensuring the development team delivers the most value to the business. Also, it's important that the product owner be an individual. No development team wants mixed guidance from multiple product owners.
The scrum master
Scrum masters are the champion for scrum within their team. They coach the team, the product owner, and the business on the scrum process and look for ways to fine-tune their practice of it. An effective scrum master deeply understands the work being done by the team and can help the team optimize their delivery flow. As the facilitator-in-chief, they schedule the needed resources (both human and logistical) for sprint planning, stand-up, sprint review, and the sprint retrospective.
Scrum masters also look to resolve impediments and distractions for the development team, insulating them from external disruptions whenever possible.
Part of the scrum master's job is to defend against an anti-pattern common among teams new to scrum: changing the sprint's scope after it has already begun. Product owners will sometimes ask, "Can't we get this one more super-important little thing into this sprint?" But keeping scope air tight reinforces good estimation and product planning–not to mention fends off a source of disruption to the development team.
Scrum masters are commonly mistaken for project managers, when in fact, project managers don't really have a place in the scrum methodology. A scrum team controls its own destiny and self-organizes around their work. Agile teams use pull models where the team pulls a certain amount of work off the backlog and commits to completing it that sprint, which is very effective in maintaining quality and ensuring optimum performance of the team over the long-term. Neither scrum masters nor project managers nor product owners push work to the team (which, by contrast, tends to erode both quality and morale).
The scrum team
Strong scrum teams approach their project with a strong "we" attitude.
Scrum teams are the champions for sustainable development practices. The most effective scrum teams are tight-knit, co-located, and usually 5 to 7 members. Team members have differing skill sets, and cross-train each other so no one person becomes a bottleneck in the delivery of work. All members of the team help one another to ensure a successful sprint completion.
As mentioned above, the scrum team drives the plan for each sprint. They forecast how much work they believe they can complete over the iteration using their historical velocity as a guide. Keeping the iteration length fixed gives the development team important feedback on their estimation and delivery process, which in turn makes their forecasts increasingly accurate over time.
But wait: there's more
Ok: so now you've been briefed. But understanding the philosophy of scrum and who is on a scrum team is only half of the equation. Keep reading to learn how scrum team members work together using common agile ceremonies as well as how the team in an agile program delivers work back to the business.