Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Instead of betting everything on a “big bang” launch, an agile team delivers work in small, but consumable, increments. Requirements, plans, and results are evaluated continuously so teams have a natural mechanism for responding to change quickly. — Definition of Agile by the Atlassian

Briefly, agile is a set of philosophy to help team to deliver small incremental of products. It is considered one of the simplest and effective processes to turn a vision for a business need into software solutions.

Manifesto of agile software development

  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

12 principles of Agile

  1. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
    In a world that keep evolving and changing, nobody knows what the customer wants to do next. Nobody can really know what is the requirements that customer needs in the future. So, if we welcome changing requirements, it’s enable the product to satisfy customer because it follow the latest trends and needs that they need right now.
  2. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  3. Business people and developers must work together daily throughout the project.
    From my experience, when business people and developers work together every day, the development become faster, because the business team and developers can communicate about the product frequently, so that the product meets the requirements. Usually, the one who is really understand about the product is the business people and developers don’t really understand about the product at first. For example, when I develop some feature and there is some case that I don’t understand, I will ask straight to the business people about that part. By doing this, we can increase the development time.
  4. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done
    Each individuals is the one who will develop a product. So, it is pretty obvious that each individual should have high motivation to deliver the product perfectly and get the job done.
  5. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  6. Working software is the primary measure of progress.
  7. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  8. Continuous attention to technical excellence and good design enhances agility.
  9. Simplicity — the art of maximizing the amount of work not done — is essential.
  10. The best architectures, requirements, and designs emerge from self-organizing teams.
  11. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Scrum in our team

Scrum is a framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value. Scrum encourages teams to learn through experiences, self-organize while working on a problem, and reflect on their wins and losses to continuously improve.

There are several roles/actor in our project that related to scrum.

  • Product Owner
    Product owner is the role that owns the product and facilitates the team to communicate with the stake holders. The product owner needs to understand the product and tells the team what is important to deliver. The product owner should not only understand the customer, but also have a vision for the value the scrum team is delivering to the customer. The product owner also has to balances the needs of other stakeholders in the organization, so that the product owner can prioritize the work.
  • Scrum Master
    The scrum master is the role that responsible for gluing everything together and making sure that everything is going well. In practical terms, scrum master will help product owner define value, the development team deliver the value and the scrum team to get even better.
  • Development team
    Development team is the one who will build the application.

Scrum has several terminology that is quite different from other process models. Some of the terminology will be explained below.

Sprint is the time frame in which the work must be completed — often 30 days. Spring consists of spring planning, sprint review, daily scrum, sprint review, and sprint retrospective.

Sprint Planning
Sprint planning is an event in that kicks off the sprint. The purpose is to define what can be delivered in the sprint and how that work will be achieved. In my development team, the product owner already decided which task will the team will develop and the goal of the current sprint planning.

Sprint Review
Sprint review is an event to review the outcome of the product of the current sprint. Usually, the developers will demonstrate the work that is has “Done” and answers questions about the increment.

Sprint Retrospective
Sprint retrospective is an event to reflect how well is the sprint going, is there something that the team can do better and what can be improved from the current sprint.

Daily Scrum Meting
Daily scrum meeting is an daily event to talk about 3 things: What did I do yesterday, what will I do today, and is there any blocker.

Story points
Story points is unit of measurement to count the estimat of the overall effort to make a product backlog item done.

Scrum in our team

In our school, the duration is two weeks and start in monday and end in monday. Also, in the mid sprint there are individual review where we need to explain about our article.

Sprint Planning
In my team, sprint planning is carried on in Tuesday. In the sprint planning, the scrum master will determine the goal of this week and will assign task to every one of us. Then, the scrum master add the task to the kanban board and also add the story points.

Daily Scrum
Daily scrum will be done in the monday and and friday for about 30 minutes. First each of us, will explain about three points:
- What have I done since our last daily scrum?
- What will I do today?
- Is there any blocker?
After each of us explaining about that, we usually discuss the topic about technical about that we confused, such as how to create unit test in flutter, ask about the product requirements or best practice for some task.

Benefit using scrum