In this modern era, software development is rarely an individual work. Planning, analysis, design, implementation, testing, integration, and maintenance involve designers, developers, testers, and graphic artists that work collaboratively on their own assigned dependent tasks. In addition to that, product requirements that are often that not not well defined or incomplete and delivery within the time limit and budget is not something a group may do well in, let alone an individual.
To overcome these problems, several development methodologies have been made. One of the most popular was the Waterfall Process where its phases are followed in order:
However, one of the main drawbacks of this process model is that before proceeding to the next phase, the phase before it must be fully completed even though the design and implementation phase does not need to to be sequential. One of the reasons the waterfall methodology was created is to resist changes once requirements has been set. This can be bad when new requirements surface, especially at times of implementation or testing. This may result in applications that fail to deliver features and functionality planned and flawed in the context of quality.
To address the issues the waterfall methodology face, new methodologies begin to surface. Among the differences, several were widely acknowledged than others. They are:
- Extreme Programming
- Agile Unified Process
These methodologies are commonly categorized as an Agile methodologies. The main point of Agile methodologies is to identify what the environment or condition you are in right now, identify the problems you are facing right now, and steps you take to adapt to that environment.
To a varying degree, these Agile methodologies follow the principle of the Agile Manifesto which are:
1. Individuals and interactions over processes and tools
2. Working software over comprehensive documentation
3. Customer collaboration over contract negotiation
4. Responding to change over following a plan
From the agile manifesto, we know that agile methodologies prioritize communication an interaction between individuals of a team and customers. This makes it easier to discover new requirements and develop solutions through collaborative effort.
Scrum is one of the widely used agile development methodology that organizes software developers as a team to create a ready-for-market software. Scrum originated from rugby players where they compete with each other to gain possession of the ball. The goal of scrum is to perform at a high performing level just like how rugby players struggle to gain possession of the ball.
There are three types of roles in a scrum team, which are:
The Product Owner is responsible to maximize the value of the product resulting from the work of the Scrum team. They are responsible to maintaining and prioritizing the backlog of tasks to be performed. They also keep the backlog up to date to whenever new requirements surface.
The Scrum Master is responsible to keep the Scrum Team productive. The Scrum Master makes sure that developers understand the scrum theory and process and that they operate in a collaborative and professional manner.
The Development Team is responsible to deliver the product. The whole team is held accountable for the delivery of the product. They consist of cross-functional individuals that each have their own set of tasks assigned to them.
The main events in a Scrum are the sprint itself, sprint planning, daily Scrum meeting, the sprint review, and sprint retrospective.
The sprint is the main event of a Scrum. Sprints are development cycles that usually are two to four weeks long. A fixed number of backlogs are assigned to each sprint. The development team are responsible to test, develop, and deliver an increment of the product by the end of the sprint. As more sprints are done, the functionality and features of the product incrementally increase. These increments of the product help to demonstrate the progress and produce customer feedback at the end of each sprint.
This process is done at the beginning of each sprint. The Product Owner defines the goal that needs to be achieved in the sprint. The development team examines each backlog and assigns weight (level of complexity) of each backlog then commits to doing the backlogs in the sprint.
Daily Scrum Meeting
Over the course of a sprint, the Scrum team gathers daily for a short-time. The goal of this meeting is to review what has been achieved from the last meeting, identify what roadblocks the development team stumbles upon, and what each individual will do until the next daily Scrum meeting.
At the end of each sprint, a working product developed throughout the sprint is demonstrated to the customer. The sprint review is by all individuals related to the product, which includes the customer, the product owner, and the Scrum team. The goal of the sprint review is to obtain unfiltered feedback right from the customer which will be then used to identify the next steps to take.
The sprint retrospective is done only by the Scrum team. Its goal is to promote continuous improvement and plan ways to increase quality and effectiveness throughout the next sprints. This isn’t just about technology and tools, but also about procedures, interactions between people and roles, and successes and failures.
Scrum is definitely an effective framework which is easy to understand although it is very different to traditional methodologies. Scrum will not always work for every software development projects. But the flexibility to accept new requirements is definitely a plus since in this era, technology is developing fast and so does the requirements needed to catch up to the standards of current technology.
Thanks for reading.