The Agile Development Methodology

Rayhan Arwindra
Pilar 2020
Published in
7 min readOct 20, 2020
Source: https://www.freepik.com/vectors/business Business vector created by katemangostar — www.freepik.com

What’s most important in a software development process?

Is it the team? The quality of the product? The timing of the release? Or is it the maintenance after the product is released to the public?

The answer is all of them. All aspects mentioned above are all needed in order to develop great, maintainable software.

But then how do we make sure that all of the aspects are attended to? If we focus on one thing, won’t that sacrifice another? Is there a way, a framework, to guide us and our team on our development journey?

Fret not, for we have agile. As one of the most popular project management methodologies to date, agile is an amazing framework to apply to your development team in order to meet your deadlines and produce high-quality products.

What is Agile?

Agile is a software development methodology that focuses on collaboration within the team, adaptation, quick delivery, and meeting the needs of the customer. It’s based on the idea of delivering the product incrementally in the form of a minimum viable product, instead of waiting until full completion to release it.

Agile grants the team much greater flexibility in development, focusing less on restrictions or specific guidelines, and more on the abstraction of best practices within the development process.

Agile Values

The agile model is built upon four fundamental values, which when applied together would accommodate the diverse need of every project based on its needs, the deadlines, and the team working on it.

Let’s discuss these values one by one:

Individuals and Interactions

Agile believes that the people working on the development is more important than the tools and system for the development itself. Possessing the best possible tools available out there is useless if the team working on it is unskilled.

Additionally, it is not enough to have the most competent people in our team, we also need to make sure that they are able to cooperate with each other. This allows for a better working environment to solve problems and attain the team’s goal correctly. The interaction and communication between the individuals of the team are of the utmost importance in order to achieve success.

Working Software

Agile prioritizes delivering working software to the customer, rather than writing detailed documentation prior to actually working on the product. This doesn’t mean that documentation is bad, the point is that the main priority of the development team is to, well, develop. Thus, in agile, the team should get to work on the software in order to ship it to the customer as fast as possible, and not get hurdled by excessive documentation.

Customer Collaboration

Agile focuses on involving the customer/client in the development of the product. This is to align the expectation of the customer and the actual product developed. If we simply follow the description of the contract given by the customer, there might be dissimilarity between the product, the contract, and the customer’s needs.

Responding to Change

The world we live in is dynamic, there is a possibility of change in every second of our life. Because of this, it would be disadvantageous to follow through with a static guide on the development process, as it wouldn’t be able to adapt to changes within the requirements, needs, and priorities of the customer.

Agile allows the team to be, well, agile. It allows the team to pivot, change priorities and requirements, and continue development without being too disrupted by following a dynamic, flexible roadmap. Agile teams are able to adapt to changes within the product’s requirements, allowing them to continue the development process and satisfy their customer’s needs.

Agile Principle

Aside from the four values agile follows, there are twelve principles of agile, which acts as a guideline for development while welcoming change, and centering the focus of the work on the client.

Let’s discuss these principles one by one:

Customer Satisfaction

Agile focuses on satisfying the customer by early and regular releases. This means that an agile team would need to deliver software at a continuous interval to the customers, rather than making the customer wait for a long period of time for each release.

Welcoming Change

Agile teams should be flexible, and not be hindered by changes within the requirement or features. Clients should be welcomed to make changes for their requirements without worrying about delays in product delivery.

Frequent Delivery

Agile delivers software to the client frequently, in a continuous, regular manner. In Scrum, for example, the development team releases new updates or increments to the product at the end of every sprint.

Collaboration

Agile emphasizes collaboration between individuals in a cross-functional team. This means that the business and technical team should collaborate in order to make better decisions which will ultimately lead to an overall better product.

Motivation, Trust, and Support

A team that is motivated would work better than an unhappy and pessimistic team. Teamwork is essential in agile, you should work on building and maintaining trust and support between you and your team members.

Face-to-Face Interaction

Teams work better when they are able to see each other and are located within the same location.

Working Software

Not only does the delivery of software need to be continuous, but it also has to be functional. The successful delivery of working software is the true measure of success within the development team.

Consistent Pace

The agile development team would need to set and maintain a constant pace of software releases. This pace would have to be maintained and repeated with each and every working delivery of the software to the client.

Attention to Technical Design

The team members need to pay extra attention to good design when working on the product. This is necessary to maintain a consistent pace when improving and releasing the product on each delivery.

Simplicity

Teams shouldn’t over-develop to the point of messing up the pace of releases. Agile teams should aim to develop just enough features to satisfy the customer, at least for now.

Self-Organizing Teams

Agile team members should be responsible and take ownership of their work, both as an individual and as a collective. Team members need to have decision-making and communication skills to share ideas and solve problems in order to improve the quality of the product.

Reflection

Team members would need to regularly reflect upon themselves, looking back at past mistakes and searching for ways to improve further on. This is necessary to advance the skills and techniques in order to work on the product more effectively.

Applying Agile (Scrum)

There are a couple of ways to apply agile within your team, the easiest and arguably quickest way is to apply one of the many agile frameworks or methodologies. Let’s take an example of the most popular agile methodology: Scrum.

In scrum, the scrum team members are divided into three elements: The development team, the scrum master, and the product owner.

The development team works on the product itself and delivers increments at the end of each sprint. The scrum master is responsible for the scrum team and will oversee and manage the scrum process. Finally, the product owner is responsible for managing the product backlog and aims to optimize the value of the product overall.

Sprint Planning

Gitlab Boards for Task Distribution

In sprint planning, the scrum team plans the weight of each feature or backlog. After doing so, the team breaks down the backlogs into small achievable tasks or issues and decides which backlog to work on for the current sprint.

Finally, the team distributes the tasks individually. This means that each developer isn’t assigned a task, but rather assigns themselves with the tasks that they desire.

Sprint Implementation

Sprints typically last for 2 to 3 weeks. During the sprint, the development team will work on developing the product, working on the individual tasks that they have been assigned to beforehand.

To keep the team on track, there would be daily scrum meetings, which would be attended by the development team and the scrum master. Within these meetings, the team would discuss what they have done, what they will do, and the issues that they face during the sprint.

Sprint Review

The sprint review is the event that marks the end of the current sprint, and the beginning of a new one. During the sprint review, the development team would present or demonstrate the product to the product owner and stakeholders of the product.

This meeting would be attended to by the entire scrum team, including the scrum master. The team would explain what has been achieved, and what hasn’t. The intention of this meeting is to gather feedback and encourage collaboration, not a status update meeting.

Sprint Retrospective

After the end of the current sprint and before beginning the next sprint, the scrum team would undergo a meeting called a sprint retrospective.

During this meeting, the scrum team would reflect on the previous sprint, analyzing their strengths and weaknesses, and create a plan to improve themselves to face the next sprint.

Conclusion

By applying agile to your team, you can expect more collaboration between team members, faster delivery, and a more flexible and welcoming gesture towards requirement changes.

Gone are the days of static contracts and strict, rigid guidelines in development. In the ever-changing modern world we live in, if companies wish to consistently release and adapt to their customers, then possessing an agile team is an almost must-have.

--

--