Agile — Scrum in Software Development

Janitra Ariena Sekarputri
Inside PPL B7
Published in
7 min readMar 8, 2020

Agile in mentally meaning is an adjective that is able to think quickly and clearly. An agile mind is having a quick resourceful and adaptable character. Software development is a process for creating software. Sometimes, software development is hard to manage and there are a lot of things to do. There is a methodology to help you to work on software development. Agile in software development refers to methodologies centered around the idea of iterative development.

What is Agility?

  • An effective response to change
  • Effective communication among all stakeholders
  • Drawing the customer onto the team
  • Organizing a team so that it is in control of the work performed
  • Rapid

How about agile, what is it?

Agile processes generally promote a disciplined project management process, a set of engineering best practices intended to allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs.

source: Hacker Noon

The Manifesto for Agile Software Development

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Principles of Agile Software Development

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
    Deliver customer satisfaction by delivering valuable software continuously
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
    Always accept change of requirements matter how early or late in the project
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
    Deliver software that works within a shorter timescale
  4. Business people and developers must work together daily throughout the project.
    When both business and technical team are aligned, they will make a better decisions
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
    Information is best transferred between parties in face-to-face conversations
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
    Motivate people to build a project by creating an environment of appreciation, trust, and empowerment
  7. Working software is the primary measure of progress.
    The ultimate factor for measuring the progress is the delivered functional software to the customer
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
    To deliver working software until release, teams must establish a repeatable and maintainable speed
  9. Continuous attention to technical excellence and good design enhances agility.
    To maintain the pace, improve the product, and sustain change, the team need the right skills and good design
  10. Simplicity — the art of maximizing the amount of work not done — is essential.
    Simplicity is a vital part of effective agile management
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
    The team must be motivated to have decision-making power, ownership, communicate regularly, and share ideas
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
    To work more efficiently, team members need self-improvement, process improvement, advancing skills, and techniques

Benefits of Agile

  1. Stakeholder engagement and satisfaction
  2. Transparency
  3. Early and predictable delivery
  4. Predictable costs and schedule
  5. Flexible prioritization
  6. Allows for change
  7. Focuses on business value
  8. Focuses on users
  9. Improves quality
  10. Gives the team purpose

Agile Development Process Models

  1. Extreme Programming
  2. Scrum
  3. Modeling
  4. Unified Process

What is Scrum?

Scrum is one of agile development process models. A scrum process is distinguished from other agile processes by specific concepts and practices. Scrum is most often used to manage complex software and product development. Scrum processes enable organizations to adjust smoothly to rapidly-changing requirements and produce a product that meets evolving business goals.

source: Scrum

Benefits of Scrum

  1. Increase the quality of the deliverables
  2. Cope better with change
  3. Provide better estimates while spending less time creating them
  4. Be more in control of the project schedule and state

How I implement on my project?

On my Software Engineering Development course (Proyek Perangkat Lunak), we implement scrum methodology in our development process. Our working methodology has 5 sprints and each sprint takes 2 weeks.

Main Roles

  1. Product Owner, responsible for keeping the requirements, determine the order of the implementation, maintains the Product Backlog and sets the schedule for releasing the product, which represented by teaching assistant, Selina Maurizka
  2. Scrum Master, responsible for making the process run smoothly, removing obstacles that impact productivity, organizing and facilitating the daily scrum meeting, which represented by teaching assistant, Nabila Fakhirah
  3. Developer Team, responsible for producing the product and decide how to perform the work, which represented by the students, PPLB7 team
PPL B7 Scrum Team. (Behind) Left-to-right: Yafonia, Me, Darin (Developer), Kak Adit (Client), Kak Seli (Product Owner), and Kak Nafy (Scrum Master). (Front) Left-to-right: Fijar (Developer) and Khalis (Developer).

Scrum Events

Initiation Phase

  • Creating a Mock Up:

Our first task is to create a mock-up for the ongoing project. Luckily, our partner, Justika, has created a prototype for their product that we are going to develop.

  • Set up Environment:

Before we start developing our project, we must set up the environment first. We use Java Kotlin as our programming language and Native Android for building the environment for the Android project. For the iOS one, we use Swift as our programming language and Native iOS for the environment. For the IDE, we use Android Studio with Java 8 and Xcode with Swift 5 for the iOS. The last important thing is to connect the Gitlab with Sonarqube and gradle.

Sprint Planning

  • Determine the estimation of point/weight of each user stories:

Product owner made the Product Backlog Items (PBI) based on the requirements given by the clients

  • Breakdown user stories into smaller tasks:

According to the PBI, Product Owner together with the development team are breakdown into the smaller tasks

  • Product Owner determines the sprint goal for the upcoming sprint:

In the first sprint, our Sprint Goal is “user can log in to the system” that determined by Product Owner as discussed with the developer team

  • Choose Sprint Backlog that related to the sprint goal:

The Sprint Goal will be our Sprint Backlog and it will be breakdown into a smaller task, such a UI for sign-in page, sign-in functionality, page after the user has logged in, etc.

Sprint Planning is done in Gitlab, we use the ‘Boards’ feature to arrange which task that will be chosen for this sprint by each member of the developer team.

Our Scrum Board using Gitlab’s Boards

Sprint Phase (Implementation)

  • Each implementation or code of the user story must be put in a repository (Gitlab):

Each PBI must have its own branch, so every code of the PBI must be committed and pushed to its branch in Gitlab

  • Determine the deliverables of each user story:

The developer has to know what is the deliverable of what they had done

  • Daily standup meeting has done minimally twice a week (4 times in a sprint):

We daily standup meeting schedule are on Monday and Thursday with our scrum master, we discussed individual progress and team progress, such a what have we done, what is the struggle each member had, and what tasks have not been done.

  • Update and maintain backlog if needed:

Our progress is updated on the Scrum board, which is on Gitlab’s Board.

Sprint Review and Sprint Retrospective Phase

  • Sprint Review (rate the software product)

At the end of Sprint, we as the developer team are present our result of the product for one sprint in front of the Client, Product Owner, Lecturer, and Scrum Master. The developer team can get approval and acceptance from the Product Owner based on the deliverable product.

  • Sprint Retrospective (assess team performance)
    —After the Sprint Review, the Scrum Master will give the team a Retrospective Tool, called Metro Retro, which very interesting to use. The developer team will evaluate and reflect themself about what have been through on this Sprint. Scrum Master will discuss lessons learned, with silent writing, post ideas, group ideas, prioritize, discuss highest priorities, and create a plan for the next sprint. This Sprint Retrospective aiming for the best for the team on the next sprint.
    — Peer Review, Each member must give a review for the other member by giving the score for every other member based on the given conditions.
Metro Retro for our Sprint Retrospective Tool

Adapt yourself as individuals and teams (be agile!) for the upcoming sprint. Repeat the Sprint Planning to the end of the sprint.

Agile is an exciting and fascinating methodology for software development. The result of agile development is a more rewarding experience for everyone involved. It gives more meaning to those who are actively working on the project by integrating the developers and customers in the planning and implementing the process.

Happy agile :)

References

https://www.agilealliance.org/agile101/

http://agilemanifesto.org/principles.html

https://www.scrum.org/resources/what-is-scrum

--

--