Scrum: Adaptive Software Development
The main goal of software development is to deliver a product that provides value. In order to achieve that, a set of requirements that dictates how the software works needs to be established. In an ideal world, all product requirements are fully acquired before development. In reality the requirements for software are dynamic and change based on new insight of the product or limitations found during development. This is why Agile is needed.
Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches.
— atlassian.com
Agile is on of the many approaches to software development that focuses on delivering software products quickly. One example of agile development is the scrum framework.
What is Scrum?
Scrum is a framework that helps teams work together. — atlassian.com
Scrum covers a multitude of aspects in software development such as team composition and team events. A lot of things make up scrum, several of the most important components of scrum are.
- Team mindset and communication channels
- The scrum team composition
- Scrum events
Rather than boring you with just the theoretical explanation of each component that makes scrum, I’ll also show you how I implemented scrum in my team. ☺️
Team Mindset and Communication Channels
What I mean by mindset is the how the team approaches issues it encounters during development (which should be plentiful). The first instinct should be to study the issue individually and then communicate findings with the team. This is where communication is key.
Me and my team communicate via Discord. Here we can instantly share our findings via text or setup quick call to discuss those issues.
A straightforward an instantaneous method of communication like Discord or Slack is crucial in order to pass information quickly between team members.
The Scrum Team
There are three main roles that make up a scrum team.
- Product owner (PO)
- Scrum master (SM)
- Developers (Devs)
Product Owner (PO)
The PO is responsible for the product itself. He/she knows what features need to be implemented in order for the product to provide value to the consumer. the SM and Devs consult the PO regarding feature details.
Meet Adam Syauqi, the PO in my team.
Me and my team are developing an information system for clinical business operations. Adam Syauqi’s family runs a clinic in several cities and knows the ins and the outs of the clinic business. Here are Adam’s tasks and responsibilities.
Tasks
- Determine crucial features based on how clinics operate. These features will be put into the product backlog which we’ll discuss later.
- Determine feature requirements in order to abide to good medicinal practices and legal requirements
- Communicate with on-site medical personnel for feedback regarding the software
Responsibilities
- Ensure that the implemented features align to the product’s needs
- Resolve confusions regarding the product
- Ensure that the product backlog is complete
Scrum Master (SM)
A team member that manages scrum events and ensures that each member is performing optimally. The SM has a crucial role in the productivity of the scrum team, he/she must resolve blockers and issues within the team in order to hit project milestones.
I am the SM in my team, these are my tasks and responsibilities.
Tasks
- Communicate with each team member to ensure that each individual understands their task well and knows how to execute it.
- Help the Devs overcome their issues in technical and non-technical aspects.
- Organize daily standup meetings to discuss the team’s progress, blocking issues, and plans.
Responsibilities
- Ensure that each team member isn’t left behind in the project
- Empower each member by giving tasks based on their strengths
- Ensure that the sprint goals are met
- Discuss the product backlog with the PO
Developers (Devs)
Each team member that is responsible to execute tasks in the product backlog. In my team, everyone is a developer and is tasked with implementing features.
Each individual is given a task at the beginning of each sprint then implements those tasks in their own git branch. After successfully implementing a feature, a Merge Request (MR) is made. A developer must ask other developers to review the code and spot errors.
Scrum Events
Implementing scrum in a team is more than just giving roles to each member. The daily activities of a team in the development process is dictated by scrum. There are five main scrum events.
- Sprint planning
- Sprint
- Daily scrum/Daily standup
- Sprint review
- Sprint retrospective
Sprint Planning
In this phase, the scrum team holds a meeting and discusses what user stories need to be implemented in the sprint. The user stories are taken from the product backlog, a list of all the user stories that need to be completed in order to fulfill the product requirements.
Each user story is broken up into granular tasks and assigned to a developer.
Each task needs to be completed before the end of each sprint.
Sprint
The sprint is a 2–4 week period where developers complete all tasks assigned during sprint planning. In my case, the sprints are three weeks long.
At the end of each sprint, the changes are merged into the main branch. The MR created provides details of the user stories the team completed at that sprint.
Daily Scrum/Daily Standup Meetings
In order to track everyone’s progress, a scrum team holds daily meetings.
During each meeting the SM asks each member to explain these main points.
- What have you done?
- What will you be doing next?
- What are the issues you are experiencing?
If there are any issues, me and my team usually continue the call to resolve it.
Sprint Review
This event is held at the end of each sprint. The team discusses about how the product is progressing. This evaluation process is important to improve the team’s performance and improve the product in the next sprint.
Sprint Retrospective
The evaluation of the team at the end of each sprint. Each member expresses their opinions on these aspects.
- What went well (the current strengths of the team)
- What went wrong (the team’s shortcomings)
- What should we start to do and keep on doing (good habits)
- What should we stop doing (bad habits)