Why is Scrum Framework Awesome for Software Development
Scrum. It is literally defined as an ordered formation of players to restart play, in which the forwards of a team form up with arms interlocked and heads down, and push forward against a similar group from the opposing side in a rugby game. But it has recently been familiar in Software Engineering as a management framework that is based on agile software development strategy that helps organizing software developers to work as a team in order to gain a common goal — to create a ready-to-release product.
Meanwhile, agile itself refers to a group of software development methods that are based on iterative development, where the requirements and solutions evolve throughout the development process through collaborations of a team.
In implementing scrum for a software development project, we first need to do an outline planning to establish general objectives for the project and design the software’s architecture. It includes the determination of tools and technology used, product backlogs, the things that needs to be completed, and estimation of how long the project would take to be completed.
Scrum relies on a concept called sprints, which refer to a short period of time (usually 1–2 weeks to 1 month) that is used to complete some specific tasks in some product backlogs before it becomes ready to be reviewed and released. Sprint is repeatedly being conducted throughout the development process until the product requirement is complete.
There are some roles in scrum method, they are:
- Product Owner, the one who represents the customer. This role usually coordinates with the client with the scrum team. They usually work with the client to initialize Product Backlog Items (PBIs), creating personas, etc. and they usually manage the scrum teamwork.
- Scrum Master, the one who leads the development team and makes sure the team works compliantly with the scrum rules.
- Development Team, the ones who do the work. They are working together as a team in a sprint to produce the product in order to deliver it at the end of the sprint cycle.
The roles mentioned above work together in a sprint cycle/period that includes several events, which are:
- Sprint Planning, the event where the development team, lead by the scrum master plan what needs to be done in that one sprint, including choosing the tasks/PBIs, and estimating how much time does it take to complete each task.
- Implementation, the period where the team works and codes together to complete the PBIs.
- Daily Standup Meeting, which is done everyday up to twice a week. It is also lead by the scrum master, where everyone in the development team reports each of their progress and state their obstacle in getting their tasks done.
- Sprint Review, where the product is being reviewed and a demo of the ready-to-release product increment is being held.
- Sprint Retrospective, where the team evaluates the sprint cycle. If sprint review is being done to review the product, sprint retro is being done to review the dev team itself, and the work of each of its member.
Now, why this method is awesome? Scrum is an awesome methodology in developing a software. It is widely used in development teams around the world because it offers many advantages. Some of them are:
- For clients, the team would be able to be more responsive toward requests, and the change of requirements. The clients could also receive a high quality of software from the development team. And because this method is incremental, some features might be able to be delivered quickly.
- For the development team, they could enjoy the development time, because they are the ones who decided what task they want to do in one sprint at sprint planning. And well, speaking from my experience, it increases my productivity, because we have targets which could be a big motivation.
- For the scrum master, they could easily keep in track of the direction and where the production is heading, and easily identify in which state the current product is at the time. And issues could quickly be identified too, from the daily standup meeting.
- For the product owner, they can assure the client that the production is aligned with their needs, and they can also assure the clients that the product being developed is in maximum delivery value.
Another reason why it is awesome is because Scrum satisfies the 12 Agile Principles that are:
- Satisfy customers through early & continuous delivery. Like mentioned above, scrum relies on sprints that are being ran in 1 week to 1 month cycle. This will provide early and continuous delivery to the customers. In my current project, 1 sprint is 2 weeks long and on Sprint Review meeting, we always involve our stakeholder as customers to pitch the new PBI delivery.
- Welcome changing requirements even late in the project. Like in my current project, helped by the Product Owner, we always accept the change of requirements, because the requirements are being broke down into PBIs that can accommodate change at any time.
- Deliver value frequently. This accommodates delivering working software to the customers frequently. Like in the scrum that my project team is working on, we deliver working software on staging branch and the staging website before the production stage is completed.
- Break the silos of your project. In agile, including in scrum, everyone has to be able to work together. From developers, designer, product owner, scrum master, stakeholder, and everyone involved needs to be able to work together.
- Build projects around motivated individuals. Scrum satisfies this because in a scrum team, everyone must be encouraged and empowered to build a motivation in order to deliver a product in faster time and higher quality. The whole team has to have the synergy to build a good environment for this.
- The most effective way to communicate is face-to-face. Scrum accommodates this because in sprints that are being ran in a scrum framework, there are meetings like daily standup meetings, sprint review meetings, sprint retrospectives, and sprint planning meetings. In my team, although everything is online, we usually do it on call. This is being done to avoid wasting time between asking a question and receiving an answer if it is done by texts.
- Working software is the primary measure of progress. This is very true because in the project me and my team currently working on, every PBI has their own acceptance criteria. That would be the measure of progress of the working software we are working on.
- Maintain a sustainable working pace. While putting agile into practice in scrum by constantly and repeatedly working in sprints, we would be getting used to it and we would be able to find our own sustainable working pace overtime.
- Continuous excellence enhances agility. While working in scrum, we are not only encouraged to deliver working software rapidly, but we also need to consider the quality of it. That’s why we are encouraged to implement Test Driven Development (TDD).
- Simplicity is essential. In our project, we also need to implement clean code, which encourages us to pursue simplicity and effectiveness in our code.
- Self organizing teams generate most value. We realize that when provided with freedom, motivated teams generate the most value for the customer. Everyone in the development team is scrum is given freedom to finish their tasks as long as all of their tasks are being done properly by the end of a sprint.
- Regularly reflect and adjust your way of work to boost effectiveness. Scrum accommodates this because when doing sprints in scrum, the team has to attend a sprint retrospective meeting where everyone would reflect on their positivity, negativity, and things they could improve in the future.
Scrum is also awesome because it has great values of commitment, courage, focus, openness, and respect. My team has felt it. We have grown a commitment and sense of belonging to each other and the product we are developing. I also feel encouraged to be in the team and work in my own pace to trigger my self management and focus. We are also open to each other which can help in terms of if somebody is having a trouble with their works, the other teammate who might understand it will be able to come for help, and by so, it will grow a respect amongst all of the actors inside a scrum team.
That’s all for now! Hope you’ve gotten a little insight from reading this article. Thank you for reading, and see you in the next article! ^^
References:
The 12 Agile Project Management Principles Explained (kanbanize.com)