Understanding Agile
Introduction
In this article, We're going to talk about agile. No, we're not talking about how agile The Flash is. We're talking about Agile Software Development and why it's popular among software developers.
Agile Software Development
What is Agile Software Development? It is a methodology of software development cycle based on Agile Manifesto and its 12 principles. Before we get to what is Agile Manifesto, let's look at the motivation behind Agile.
In the past, we developed an app with waterfall method. Waterfall method is a linear software development cycle with five main phases: analysis, design, construction, testing, deployment. Linear means, when you are in one phase, you can't go back to the previous phases and once a cycle completes, you can't repeat the cycle.
The problem is, technology and business trend are changing rapidly and your client surely doesn't want to lose to it competitors. Your client might change the software requirement when we're already in the middle of design, construction, or even testing phase, and you can't go back to analysis phase. That's why we use Agile these days to keep up with requirement changes. Unlike waterfall method, Agile is an iterative and incremental cycle so we can go back to previous phases or repeat the process.
If you already understand why we need Agile, let's go deeper and look into the manifesto.
Agile Manifesto
Agile Manifesto declares the values and principles of Agile Methodology. The values and principles stands for iterative development cycle, collaborative team, and change recognition.
Here are the values of Agile Manifesto:
- Individuals and interactions over processes and tools. In Agile, we value people higher than the process or tools. Because team's result is driven by teamwork, not the processes or tools. That's why, communication is important in Agile.
- Working software over comprehensive documentation. Historically, software development requires a lot of documents to work on that takes a lot of time. Agile still values documentations, such as user stories, but it values working software more.
- Customer collaboration over contract negotiation. Unlike Waterfall, Agile allows developer to collaborate with customer during the development process to meet their needs, not before.
- Responding to change over following a plan. With Waterfall, changes is prohibited, but Agile allows changes during the process to fulfill customer's needs.
and here comes the principles of Agile Manifesto (image source: Knowledge Train):
Software developers who implement Agile should always fulfill these values and principles.
Scrum
There are many implementation of Agile, like Extreme Programming (XP) and Scrum. Some of you might already know about Scrum. Scrum is a framework that implements Agile Software Development. It has five values: commitment, courage, focus, openness, and respect. These values can be explained in three Scrum pillars.
Scrum Pillars
- Transparency: Everyone on the team should understand the requirements, goals, tasks, and individual responsibilities.
- Inspection: Everyone should evaluate and inspect one's work and progress.
- Adaptation: Like what we learned from Agile Manifesto, everyone should adapt to any requirement changes and improve one's work if he/she is under-performed.
Scrum also has roles, events, and artifacts that makes it different than any other Agile implementation.
Scrum Roles
- Product owner: Represents our client and customers point of view.
- Development team: It's us, the ones who developed the software.
- Scrum master: The leader of development team who ensures that the Scrum is implemented right.
Scrum Events
- Sprint: Iterative time phases where a goal is accomplished. We can discuss the time period of a sprint with the team, but it should not exceed one calendar month and are consistent throughout the development process.
- Sprint planning: Where the entire Scrum team get together at the beginning of every Sprint to plan what to do and achieve on the upcoming sprint.
- Daily Scrum: 15-minute-meeting held at the same time, every day of the Sprint, where the previous day’s achievements are discussed, as well as the expectations for the following one.
- Sprint review: An informal meeting held at the end of every Sprint where the Scrum team present our work to the client, and discuss feedback.
- Sprint retrospective: A meeting where the Scrum team reflect on the proceedings of the previous sprint and establish improvements for the next sprint.
Scrum Artifacts
- Product backlog: It's a list of the software features and requirements, sorted by their priority. It's managed by the product owner.
- Sprint backlog: It's a list of tasks that the development team have to do in a sprint. It also shows the progress of the tasks and divided by three labels based on the progress: 'to do', 'doing', 'done'. It's managed by the Scrum master.
How I Implement Agile
In my latest project with Mekari (go check my article about Persona, I also talked about the project there), my team uses Scrum to develop our project. We have five sprint and each sprint consists of two-week time period. We already had two sprints so far. Before begin each sprint, we have sprint planning to decide what each of us will be working on. We use a board on Gitlab as a note.
In each sprint, we usually have about two or three daily scrum that we called Daily Stand Up Meeting (despite the name, we don't really stand up while meeting). It's not held everyday because of our college schedule is kinda hectic. Usually we have the meeting on Mondays, Wednesdays, or Fridays.
Our sprint review is held on Tuesday on the second week in each sprint. We review our progress in front of our lecturer in a class and Mekari Product Owner via Google Meet. Our first sprint was not good because we didn't do our tasks completely. Luckily, we performed better at sprint 2.
After sprint review, we have sprint retrospective to share our thoughts and evaluate our work. We can reflect on good things/habits that we need to improve and bad things/habits that we shouldn't do in next sprint. We use MetroRetro to list what we need to improve or evaluate.
I really enjoy working with Scrum because we can share and help each other during the process. My most favorite Scrum event is Sprint retrospective because you can improve yourself and others. Also, shout out to our Scrum master and product owner, they are so kind and supportive.
Conclusion
Unlike waterfall, Agile is not a method; it's a methodology! Agile is popular because it's flexible with technology and business trends' changes. Scrum is one of Agile framework. Scrum values how the team work, not only how the project is done.
References
https://zenkit.com/en/blog/agile-methodology-an-overview/
https://www.agilealliance.org/agile101/
https://www.smartsheet.com/comprehensive-guide-values-principles-agile-manifesto