Fast As Lightning With Agile

Jonathan Chandra
6 min readApr 4, 2021
Photo by Kelly Sikkema on Unsplash

This article is made for the Software Project course assignment, Faculty of Computer Science, Universitas Indonesia

Software is created to help people solving their problem in life. When developing a software, we don’t want it to be a long process until the software is done because people may not feel their problem is still their problem anymore and then the software that we developed will be in vain and out of date. So how to make the process of software development to become faster? The answer is to implement agile software development.

Agile

Agile is from the word ‘agility’ which means effectively (rapid and adaptive) respond to changes. Agile in software development is a method that implement the value in agile manifesto and agile principles. There are some of methodology in software development that use agile approach, that is extreme programming and scrum for example.

Agile Manifesto

“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

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

That is, while there is value in the items on the right, we value the items on the left more.”

Agile Principles

There are 12 principles that we always remember and apply it when implementing agile:

1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

4. Business people and developers must work together daily throughout the project.

5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

7. Working software is the primary measure of progress.

8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

9. Continuous attention to technical excellence and good design enhances agility.

10. Simplicity–the art of maximizing the amount of work not done–is essential.

11. The best architectures, requirements, and designs emerge from self-organizing teams.

12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

My Thought on Agile Principle

I think the second principle is not welcoming change of requirement as it sounds like. In the real process, we can’t easily accept the change of requirement especially in the middle of the sprint on the development process. If there is a change occur for the requirement, it should be work on the next sprint, we can’t change the current requirement task immediately because it will add more burden for the developer.

The fourth principle is the core of the agile software development because in agile we need the involvement of the customer from the beginning of the process until the end. Implementing this principle will make our software meet the customer’s expectations and we don’t need to change many things on our project so we won’t waste so much time on the process.

I have to not entirely agree with the sixth principle because based on my experienced, my development team just need to communicate through voice chat and don’t need do a face-to-face conversation and the information is still well conveyed.

I have to agree with the seventh principle because in agile development process, we need to develop a software in short amount of time. We don’t have time to write a proper documentation like traditional method, we just need to deliver the working software as fast as possible.

The last principle is also important on the agile development process. In agile development process, we need to develop a software in fast pace and to achieve that, it requires good development team. If the development team learn to become more effective, then the agile process can be achieved successfully.

On my software development course’s project, me and my team implement scrum as software development process. Let’s talk more about scrum.

Scrum

Scrum is a framework for developing and sustaining complex products. Scrum relies on a self-organizing team where there is no leader on team who decide which person will do which task. We will discuss more about artifacts, phases, roles, events, and values in scrum.

Scrum Artifacts

  • Product Backlog
    Product backlog is an ordered list of everything that might be needed for the product. Each product backlog item has attributes of id, priority, backlog title, description, value, user story, and acceptance criteria like this.
Example of Product Backlog Item
  • Sprint Backlog
    Sprint backlog is a set of selected product backlog item that need to be finished in a certain sprint.
  • Increment
    Product new functionality that added every sprint that already meet the condition of done.

Scrum Phases

  • Outline planning
    In this phase, we establish the general objectives for the project and design the software architecture.
  • Series of sprint cycle
    In this phase, we run a series of sprint cycle. We will discuss more about sprint cycle later. For each cycle, we develop an increment of the system.
  • Project closure
    In this phase, we wrap up the project, complete required documentation such as system help frames and user manuals and assesses the lessons learned from the project.

Scrum Roles

  • Product Owner
    Product owner is responsible for managing product backlog, gathering input from clients and stakeholders, maximizing the product value, and the work of the development team.
  • Development/Scrum team
    Development team is responsible to develop the software by develop increment in each sprint based on the product requirements.
  • Scrum Master
    Scrum master is responsible for managing scrum event (we will discuss it later), organize development/scrum team, removing impediments to the
    development team’s progress, and ensuring scrum is understood and
    enacted.

Scrum Events

  • Sprint Planning
    This event start before the sprint, we choose sprint backlog from the product backlog and then we split it into many tasks. After that, we define a weight for every tasks based on fibonacci number and then every member of development team choose which task they want to finish. Every member of the team should have same total weight of the tasks they picked.
  • Sprint
    On this event, the development team work together to finish the sprint backlog. This event runs normally for 1–4 weeks.
  • Daily Standup Meeting
    This event occur every day when sprint is still running, scrum master and development team have a short meeting where each member of the development team shares about what did they do since last meeting, their obstacle when finishing their tasks, and what will they do for the next meeting.
  • Sprint Review
    This event occur after sprint is done, the development team present the demo of the product.
  • Sprint Retrospective
    This event occur after sprint review, the development team share about their thought what things need to be stop or fix for the next sprint and what things that already good on the current sprint and need to keep it by the development team.

All of the events in above are run as sprint cycle that is repeated every sprint. Here is the image sprint cycle in scrum.

Sprint cycle

Scrum Values

In order to successfully implement scrum, every individual in the scrum team must apply these five values:

  • Courage
    Scrum team member have courage to do the right thing and work on though problems.
  • Focus
    Scrum team member focuses on the work of the sprint and the goals of the scrum team.
  • Commitment
    Scrum team member personally commit to achieving the goals of the scrum team.
  • Respect
    Scrum team member respect each other to be capable, independent people.
  • Openness
    Scrum team and its stakeholders agree to be open about all the work and the challenges with performing the work.

That’s it for agile and scrum on this article! I hope this article helps you understand more about agile and scrum.

References

--

--