Agile working strategies - adrianapintod/open-source-project-guidelines GitHub Wiki

To organize a software project is necessary to understand what value it brings to the final users and which functionality is necessary to deliver that value. To understand the activities needed for the software to be developed and for the use cases to be implemented you need to create issues or user stories, as these elements will be the starting point fo the contributors to add new features and improve the value offering of the product.

The created issues should be organized in ways of working that will help the contributors to set up releases, and new versions that are going to be delivered over a fixed timeline that is transparent for the maintainers as well as for the final users.

We suggest then to use one of the most used methodologies available for project management: Scrum and Kanban. Having said this let's dive into the specifics of each methodology.

What is Scrum?

Scrum is a framework to organize activities within projects in a way that encourages tight teamwork, communication, and a fast-paced delivery lifecycle that is open to changes and quick implementations over short periods of time. It also aims to simplify the understanding of complexity as well as the estimation of the activities, helping to achieve realistic deadlines and the delivery of user stories to the final users.

A scrum team should be small, lean, and should work closely together during the execution of the development activities. The goal is to center the team around the concept of continuous improvement while organically growing and gaining momentum and speed.

Scrum artifacts

To properly work on a Scrum project you need to consider the creation and maintenance of three elements: the product backlog, the sprint backlog, and the product release.

  • The sprint backlog refers to the listed user stories to be developed during the next window of time before the deadline.

  • The product backlog lists all of the desired user stories and activities that can be added by anyone within the team as long as they enhance the value offering of the product. This list is not time-limited and from this list, the sprint backlog is going to be filled.

  • The product release refers to the final working deliverable that should be showcased to the users at the end of the given period of time demonstrating the implemented user stories by the contributors and developers

Scrum ceremonies

Every Scrum project will run in sprints, which are constant time windows for the delivery of new features and functionality, the most common time frame for a sprint is 2 weeks meaning that the team will work on a given number of user stories that should be ready to be implemented and demonstrated by the end of the sprint.

To organize properly the activities of a sprint there is a set of standard ceremonies for Scrum to be applied.

  • Sprint grooming: it is a session where the team breaks down major user stories into technical tasks that have lower complexity than the overall user story enabling the team members to work together and to understand better how to achieve the target functionality.

  • Sprint planning: during this ceremony the team discusses which tasks are going to be implemented in the next sprint while also giving realistic estimations and discuss the last details before starting development. The team commits to the estimations and tasks discussed during this session and ideally no new features will be added to the sprint during its execution. This ceremony also helps to communicate with the team members the value of the features to be implemented and the priority of each one of these features.

  • Daily stand-up: this ceremony consists of a daily meeting within the team members where the goal is to communicate the next three questions:

    • What did I do yesterday?

    • What am I going to do today?

    • Am I blocked? and in that case, do I need some help?

    This will help the team to identify progress on a daily basis and to recognize possible issues that might affect the established deadline, as well as it will open the door for transparency and close collaboration.

  • Sprint review: this session comprehends the showcase of the final sprint deliverable in a public demonstration for the user to see in action the latest implemented features.

  • Sprint retrospective: this session aims to discuss within the team the good, the regular, and the bad things that happened during the last sprint giving the opportunity to the team members to recognize how to improve the development process for the sprints to come.

Scrum tools

Scrum, as well as Kanban, uses boards to manage issues and user stories. GitHub doesn't support Scrum while using the repository boards but alternatives as Jira might be helpful to achieve a proper Scrum project management.

What is kanban?

Kanban is a popular framework used to implement agile software development. It requires real-time communication of capacity and full transparency of work. Work items are represented visually on a kanban board, allowing team members to see the state of every piece of work at any time.

Kanban for software teams

Agile software development teams today are able to leverage these same JIT principles by matching the amount of work in progress (WIP) to the team's capacity. This gives teams more flexible planning options, faster output, clearer focus, and transparency throughout the development cycle.

Kanban boards

The work of all kanban teams revolves around a kanban board, a tool used to visualize work and optimize the flow of the work among the team. While physical boards are popular among some teams, virtual boards are a crucial feature in any agile software development tool for their traceability, easier collaboration, and accessibility from multiple locations. Regardless of whether a team's board is physical or digital, their function is to ensure the team's work is visualized, their workflow is standardized, and all blockers and dependencies are immediately identified and resolved. A basic kanban board has a three-step workflow: To Do, In Progress, and Done. However, depending on a team's size, structure, and objectives, the workflow can be mapped to meet the unique process of any particular team.

The Kanban methodology relies upon full transparency of work and real-time communication of capacity, therefore the kanban board should be seen as the single source of truth for the team's work.

Kanban cards

In Japanese, kanban literally translates to "visual signal." For kanban teams, every work item is represented as a separate card on the board.

The main purpose of representing work as a card on the kanban board is to allow team members to track the progress of work through its workflow in a highly visual manner. Kanban cards feature critical information about that particular work item, giving the entire team full visibility into who is responsible for that item of work, a brief description of the job being done, how long that piece of work is estimated to take, and so on. Cards on virtual kanban boards will often also feature screenshots and other technical details that is valuable to the assignee. Allowing team members to see the state of every work item at any given point in time, as well as all of the associated details, ensures increased focus, full traceability, and fast identification of blockers and dependencies.

How to use the Kanban board

There should be a Kanban board for the project. Here all of the planned activities will be tracked, visualizing the overall progress at any given point in time. The kanban board will contain activities for the contributors. To include a task in the Kanban board you nee to follow these steps:

  1. Create an Issue according to the defined issue template

  2. On the projects tab in the GitHub repository access the board and drag and drop the issue into the board

Projects

Add cards

  1. Navigate the card in the board through the swimlanes: To-do, In progress, Review in progress, Reviewer approved and Done

To explore the existing tasks on the board, use the search box available, and leverage the labels created in the issue to filter by team, priority, complexity, etc.

Filters

Reference

Radigan, D., Atlassian. Kanban. Retrieved from https://www.atlassian.com/agile/kanban