Agility in Software Development

Agility in product development (most common, and will further be mentioned in software development) is based on The Agile Manifesto, or officially recognized as “The Manifesto for Agile Software Development”. This manifesto contains 4 values and 12 principles proclaimed to improve software development methodologies, guiding software developers to develop faster and more efficiently.

The history of the agile manifesto

Long story short, the Agile Manifesto and the Twelve Principles of Agile Software were the result of developers’ frustrations towards enormous time gaps in development timelines. During these gaps, requirements usually change, hence the developed product became no longer relevant. This approach to development was not able to handle the pace of requirement changes that became quicker and quicker.

Due to these frustrations, in 2001, seventeen people gathered and created the Agile Manifesto and the Twelve Principles of Agile Software. The manifesto reads as follows:

Source: (The Sketching Scrum Master, 2020)

About the manifesto

Individuals and interactions over processes and tools

Instead of focusing on searching for the best possible processes and tools, the agile development process focuses more on the individuals and interactions between individuals of the team. It turns out the most important aspect of agile development is not the way the process is conducted or the tools used, but the team itself. A development team must consist of competent individuals that can interact, communicate, and collaborate.

Working software over comprehensive documentation

Instead of allocating much more time documenting the process, the agile development process strives to develop a working software first. This is to avoid time wasted on writing documentation instead of code.

Customer collaboration over contract negotiation

Instead of developing a product based on a contract, the agile development process strives to develop a product based on customers’ needs. Furthermore, continuous development in form of iterations is needed to obtain customer feedback hence producing a customer-based product.

Responding to change over following a plan

Lastly, instead of consistently sticking to a plan and being unresponsive to sudden changes, an agile development team must be prepared to as flexible as possible. By this, an agile development team can handle changes happening in this constantly changing world.

However, although there is still value in the items on the right for every point, items on the left value even more.

Scrum, an implementation of Agile implementation

The scrum framework is one of the most popular Agile implementations. In scrum, development teams can address complex adaptive problems while productively delivering products of the highest value possible. There are 3 roles in a scrum team: the scrum master, the product owner, and the development team. The steps of development in the scrum framework is as follows:

  1. The product owner breaks down a complex problem into items in the product backlog
  2. The scrum team selects several items in the product backlog that will be completed during a sprint
  3. The development team and stakeholders evaluate the results and adjust for the next sprint
  4. Repeat
The scrum process. (Tuleap, n.d.)

Our take on agility

In the development of Crowd+, a data annotation crowdsourcing platform, we implemented the scrum framework to ensure that the team is agile, progresses incrementally, and communicates effectively.

The events that occur during development, implementing scrum, is as follows:

Sprint

A sprint is a fixed-length event of development in order to achieve a sprint goal. In a sprint, events that occur are sprint planning, daily scrums, sprint review, and sprint retrospective. The length of a development sprint of Crowd+ is 2 weeks.

Sprint planning

Sprint planning is the event to plan a sprint. During the sprint planning, the scrum team discusses the value of the sprint, what can be done in the sprint, and what work (from the product backlog) will be done.

Daily scrum

The daily scum is commonly a 15-minute event for the scrum master and the development team to evaluate the current progress of the development team and how they will meet the sprint goal. Although it is commonly done every day (hence it is called daily), we do this event twice a week due to other classes we are taking.

Sprint review

The sprint review is the event at the end of the sprint to evaluate the outcome of the sprint. In this event, the development team presents their work to stakeholders and discusses what to do in the next sprint in order to achieve the end goal of the product.

Sprint retrospective

The sprint retrospective event is also at the end of the sprint. The objective of this event is to evaluate individuals, interactions, processes, tools, and the definition of done. Topics that are discussed are what went well, what problems occurred, and how those problems were handled.

Furthermore, the artifacts used in the scrum-implemented development process is as follows:

Product backlog

The product backlog is a list of points of what the product needs to be developed. In each sprint, several product backlog items are selected to be worked on during the sprint.

A glimpse of the Crowd+ product backlog.

Sprint backlog

The sprint backlog is a list that contains the product backlog items selected to be worked on during the sprint. Furthermore, it can also contain the sprint goal and the actionable plan for delivering the increment.

A glimpse of our sprint backlog.

Increment

The increment is a concrete milestone toward the product goal. Each increment adds to the previous increment, hence making the product more usable continually. The state of the increment depends on the definition of done, the formal description of the product’s quality measure.

In conclusion, it is good that a software development team is agile. The agility of a development team is a sign that the team is prepared to deliver a functional incremental of the product as quickly as possible, be flexible, and anticipate sudden changes in requirements. One of the implementations of the agile approach is the Scrum framework, which ensures delivering the highest value possible each sprint and functional communication within the scrum team.

Supplementary Agile Tools in the Work from Home Era

Due to the fact that the pandemic has forced us to work distantly, we have been utilizing several tools that have helped us maintain communication and keep us productive as follows:

GitLab, for productive code collaboration

As any collaborative code project goes, Git is an essential tool that ensures the efficiency of collaborative coding. Not only that, but GitLab also provides a Kanban board that can be used by the development team to track the progress of tasks in the project.

Our activity in GitLab

Metro Retro, for sprint planning and retrospectives

Implementing scrum for our development process meant that we had to implement common practices of the framework. Metro Retro is a great tool for holding sprint planning and retrospective sessions. Metro Retro allows users to write (publicly or privately) on sticky notes, just as how in-person sprint sessions would occur.

Our sprint retrospective with Metro Retro

Notion, for database management

To avoid mismanagement of important information, Notion has been the perfect tool for us to do that. We use Notion to track down important notes, discussions, and links to documents.

Our Notion Dashboard

Google Meets, for coding jams

Current health protocols regarding social distancing have left us no options but to interact digitally. Luckily, Google Meets has been a friend for us to hold meetings, discussions, and code jams.

Our Experiences with Agility Overall

All in all, our experiences so far implementing agile principles in our product development project have gained us valuable experience that we can learn from for our future projects. Even though we were under tight deadlines and going through other challenging college courses, implementing agile in our development process pushed us to increment quickly and most importantly, deliver well.

A more functional team

Implementing agility has made the team closer than ever before, we keep updating or progress, communicate any difficulties, and try our very best to deliver the best.

Documentation, documentation!

We document what is done, what is being worked on, and what has not been done yet in our Gitlab board. This also helps our scrum master updated on our daily progress.

Collaboration with friends at Datalyst

During the whole process, we keep our friends at Datalyst updated on our progress, as we are very open to their feedback and requests.

Responding to change

Lastly, implementing agility has made us more flexible than ever. As said before, we try to fulfill Datalyst’s requests and feedback for a better Crowd+.

In conclusion, it is good that a software development team is agile. The agility of a development team is a sign that the team is prepared to deliver a functional incremental of the product as quickly as possible, be flexible, and anticipate sudden changes in requirements. One of the implementations of the agile approach is the Scrum framework, which ensures delivering the highest value possible each sprint and functional communication within the scrum team.

References

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Amrisandha Prasetyo

Amrisandha Prasetyo

Computer science student at Universitas Indonesia | Aspiring product designer 🎨💻