Does Agile Make Us More ‘Agile’?
This article is part of Proyek Perangkat Lunak (PPL) or Software Engineering Project Course. Any information written here may or may not be true. Please use it wisely and let me know if there is any wrong information in it.
In this article, I will try to write the scrum method we used in PPL or Software Engineering Project Course. Maybe there are some questions in our minds. Why do we use the scrum method? Will that make it easier for us? What is the relation between agile and scrum? ̶A̶r̶e̶ ̶t̶h̶e̶y̶ ̶d̶a̶t̶i̶n̶g̶?̶
Before answering that question we need to know about SDLC or Software Development Life Cycle.
What is SDLC?
In brief, SDLC or the Software Development Life Cycle is a process that produces software with the highest quality and lowest cost in the shortest time possible.
Why use SDLC?
SDLC allows developers to analyze the requirements. It helps in reducing unnecessary costs during development. During the initial phases, developers can estimate the costs and predict costly mistakes. It enables developers to design and build high-quality software products.
In general, SDLC can be divided into 7 phases (Can be different depending on the source):
In the Planning phase, project leaders evaluate the terms of the project. This includes calculating labor and material costs, creating a timetable with target goals, and creating the project’s teams and leadership structure. Planning can also include feedback from stakeholders.
- Define Requirements
Defining requirements is considered part of planning to determine what the application is supposed to do and its requirements. For example, a social media application would require the ability to connect with a friend. An inventory program might require a search feature.
- Design and Prototyping
The Design phase models the way a software application will work. Some aspects of the design may include user interface, architecture, security, etc.
- Software Development
This is the actual writing of the program. A small project might be written by a single developer, while a large project might be broken up and worked by several teams. The coding process includes many other tasks. Many developers need to brush up on skills or work as a team. Finding and fixing errors and glitches is critical.
It’s critical to test an application before making it available to users. Much of the testing can be automated, like security testing. Other testing can only be done in a specific environment.
In the deployment phase, the application is made available to users. Many companies prefer to automate the deployment phase. This can be as simple as a download link or a website.
- Operations and Maintenance
At this point, the development cycle is almost finished. The application is done and being used in the field. The Operation and Maintenance phase is still important, though. In this phase, users discover bugs that weren’t found during testing. These errors need to be resolved, which can spawn new development cycles.
There are some common SDLC models but for now, we will only discuss 2 of them:
- Waterfall Model
This SDLC model is the oldest and most straightforward. With this methodology, we finish one phase and then start the next. The biggest drawback of this model is that small details left incomplete can hold up the entire process.
- Agile Model
The Agile SDLC model separates the product into cycles and delivers a working product very quickly. This methodology produces a succession of releases. Testing of each release feeds back info that’s incorporated into the next version. The Agile model was designed by developers to put customer needs first. This method focuses strongly on user experience and input. Agile seeks to release software cycles quickly, to respond to a changing market.
From the brief explanation above, we can find out some of the differences between waterfall and agile:
- Agile is an incremental and iterative approach; Waterfall is a linear and sequential approach.
- Agile separates a project into sprints (each sprint including some phase); Waterfall divides a project into phases.
- Agile methodology is known for its flexibility whereas Waterfall is a structured software development methodology
At this moment we know agile is better in some aspects:
- Flexible in accepting changes
- It’s better on large project because it divides requirements into some sprint and each sprint has its own phase
- Ideal for projects with non-fixed requirements
The Agile Manifesto of Software Development put forth a groundbreaking mindset on delivering value and collaborating with customers when it was created. Agile’s four main values are:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
What is Scrum?
Scrum is a subset of Agile. It is a lightweight process framework for agile development and the most widely-used one. Scrum is a framework that helps teams work together on software development, it is a method that focuses on project leadership and how to manage it well until the team reaches the finished product. Scrum enables the team that uses it to sustain the development of complex products and is based on the values and principles of Agile methodology.
Let’s start with identifying the three artifacts in scrum. Artifacts are something that we make, like a tool to solve a problem. In scrum, these three artifacts are a product backlog, a sprint backlog, and an increment with your definition of “done”.
- The Product Backlog is a list of features , defects, or technical work that is prioritized that has yet to be worked on.
- The Sprint Backlog is a list from the Product Backlog that will be worked on during the Sprint.
- The Product Increment is sum of product work completed during the Sprint, combined with all the work completed during the previous Sprints.
Three essential roles for scrum success
A scrum team needs three specific roles: product owner, scrum master, and the development team. And because scrum teams are cross-functional, the development team includes testers, designers, UX specialists, and ops engineers in addition to developers.
- The Product Owner: Product Owner is the one who is responsible for maximizing the product value and have direct communication with both stakeholders and end users. Product Owner have the sole responsibility to manage the Product Backlog.
- The Scrum Master: Scrum Master can be seen as a servant-leader for the Scrum Team, they have the responsibility to help mentor the Development Team in organizational environments in order to create high-value products.
- The Development Team: Development Team consists of professionals on software engineering and have the responsibility on fully working on the product. The team has to be organized well in order to bring synergy to the work environment. In the end of each sprint, the Development Team has to deliver a potentially releasable increment of the product based on the product backlogs given.
Scrum ceremonies or events
Some of the more well-known components of the scrum framework are the set of sequential events, ceremonies, or meetings that scrum teams perform on a regular basis. The ceremonies are where we see the most variations for teams.
1. Organize the backlog
Sometimes known as backlog grooming, this event is the responsibility of the product owner. The product owner’s main jobs are to drive the product towards its product vision and have a constant pulse on the market and the customer. Therefore, he/she maintains this list using feedback from users and the development team to help prioritize and keep the list clean and ready to be worked on at any given time.
2. Sprint planning
The work to be performed (scope) during the current sprint is planned during this meeting by the entire development team. This meeting is led by the scrum master and is where the team decides on the sprint goal. Specific use stories are then added to the sprint from the product backlog. These stories always align with the goal and are also agreed upon by the scrum team to be feasible to implement during the sprint.
A sprint is the actual time period when the scrum team works together to finish an increment. Two or Three weeks is a pretty typical length for a sprint, though some teams find a week to be easier to scope or a month to be easier to deliver a valuable increment. During this period, the scope can be re-negotiated between the product owner and the development team if necessary.
All the events — from planning to retrospective — happen during the sprint. Once a certain time interval for a sprint is established, it has to remain consistent throughout the development period. This helps the team learn from past experiences and apply that insight to future sprints.
4. Daily scrum or stand up
This is a daily super-short meeting that happens at the same time (usually mornings) and place to keep it simple. Many teams try to complete the meeting in 15 minutes, but that’s just a guideline. This meeting is also called a ‘daily stand-up’ emphasizing that it needs to be a quick one. The goal of the daily scrum is for everyone on the team to be on the same page, aligned with the sprint goal, and to get a plan out for the next 24 hours.
The stand up is the time to voice any concerns you have with meeting the sprint goal or any blockers. A common way to conduct a stand up is for every team member to answers three questions in the context of achieving the sprint goal:
• What did I do yesterday?
• What do I plan to do today?
• Are there any obstacles?
5. Sprint review
At the end of the sprint, the team gets together for an informal session to view a demo of, or inspect, the increment. The development team showcases the backlog items that are now ‘Done’ to stakeholders and teammates for feedback. The product owner can decide whether or not to release the increment, although in most cases the increment is released.
6. Sprint retrospective
The retrospective is where the team comes together to document and discuss what worked and what didn’t work in a sprint, a project, people or relationships, tools, or even for certain ceremonies. The idea is to create a place where the team can focus on what went well and what needs to be improved for the next time, and less about what went wrong.
After the long explanation above, then what?
Hehehe, before answering previous questions, let me talk about my first sprint experience in PPL specifically with my Ada Apa dengan PPL’s team. I can say our first sprint went pretty well. Why did I say ‘went pretty well’ and not well? Because this is our first sprint together, some things go well and some don’t. There is a little miscommunication between lecturers, teaching assistants, and students, especially regarding the timeline. My team was a little late for the sprint because there was a bit of miscommunication. There are several PBIs that have not been completed during the UAT in class but fortunately, we managed to finish them all during the UAT with the client using the Bandung Bondowoso theory (Fortunately all my PBI have been implemented so I can help my friends who have difficulties). Although there were some difficulties in the first sprint, I gained a lot of new experiences and I also learned to adapt myself in the team and try to be even better in the next sprint.
Okay let's answer the question at the beginning:
- Why do we use the scrum method?
Because at PPL we are working on a fairly large project. Some even work on projects starting from scratch including in my team. Imagine if we do everything in 5 months at once and only get feedback at the end, then it looks like our group will repeat the PPL for the next semester hahaha 🙃.
- Will that make it easier for us?
Yes, although there were some difficulties in the beginning, I think it’s because we are all still adapting the scrum method and adapting to our capacities. By using the scrum method we can fix our shortcomings in the previous sprint and get feedback from clients regarding what we need to improve in the next sprint.
- What is the relation between agile and scrum?
I think this has been answered in the contents of the article, scrum is a subset of agile methodology and it is based on the values and principles of agile methodology. Some other agile process models are Dynamic System Development Method, Adaptive Software Development, Crystal, etc.
Yes, agile make us more ‘agile’. Actually, it depends on project you working on. If you have a large project and need feedback at a certain time, or your project has changing requirements over time you need to do agile method. Otherwise, you can try any other SDLC models. For me, it’s nice to be able to learn new things by applying the scrum method in PPL courses because in other courses we usually use waterfall models. Hopefully, in the next sprint our team can perform even better, cheers for AAdP team’s 😊🥂.
Thanks for reading and don’t forget to be grateful!
“Carrie over to next sprint.”
- Developer when he didn’t complete the story on that sprint
What Is SDLC? Understand the Software Development Life Cycle
The Software Development Life Cycle (SDLC) refers to a methodology with clearly defined processes for creating…
Apa itu SDLC? Berikut cara kerja, fungsi, dan 7 tahapannya
Software Development Life Cycle atau SDLC menjadi framework kunci untuk memahami bagaimana sebuah produk software…
Understanding the Software Development Life Cycle
In the current digital era, many software applications are being developed to solve various real-life problems. For…
Agile vs. Waterfall | Software Development Methodologies
At the beginning of any software project, teams and organizations have to first deal with the question of Agile vs…
What is Scrum, the project management framework agile teams rely on?
Marketing work management: A snapshot What it is: Marketing work management platforms help marketing leaders and their…