A Brief Primer on Agile Methodology

A Brief Primer on Agile Methodology

[19]

Introduction

Agile development has been the #1 operational principle of tech for over 20 years, unchecked, unquestioned. Here’s the definition of agile with regards to agile development:

Breaking down the definition into layman's terms:

"Relating to or denoting a method of project management, used especially for software development, that is characterized by the division of tasks into short phases of work and frequent reassessment and adaptation of plans." - This basically means agile is project management methodology used by the software developers.

"Relating to or denoting a method of project management, used especially for software development, that is characterized by the division of tasks into short phases of work and frequent reassessment and adaptation of plans." - This can be said in a much simpler way like - dividing the tasks into short phases of time and categorizing them into sprints and this sprint is nothing but a duration of time, typically 2, 3 or 4 weeks to get your tasks done. This helps to prioritize what needs to get done immediately and also to reassess and adapt our plan according to our needs because something might get changed in the requirements from the client side or our side that needs to be prioritized.

Compared to the Waterfall model, where each phase in the process is dependent on the previous phase and the implementation of these steps would take up to multiple months and any change in the requirements by the customer would delay the project by months and some were not possible as the program had already been created. The customer would end up getting his product as one big package, hence it was also called monolithic. In a project management style where everything happens in a smooth motion from start to end like a conveyor belt, having a change would introduce multiple problems. To counteract that, the agile model breaks the development process down into smaller, more manageable pieces. Each piece is developed in a series of short iterations, with feedback being provided throughout the process. This allows the team to respond quickly to the changing needs and requirements and to adjust the project as necessary. The agile model is built around the idea of sprints, which are short development cycles that typically last between one and four weeks. Keep in mind, these sprints once defined cannot be extended.

Principles

There are four main principles that the manifesto outlined, being:

  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.

In agile, working software is the primary measure of progress

Real-life example

Let's take a look at how agile development works in real life and on a real project. Assume you have a project to build an application, and the product team takes the time to break down the application requirements into user stories which are smaller chunks of the desired features that need to be implemented. The user stories are then broken down into tasks, which are then stored in the backlog of the project management software that your organization uses. As part of a sprint, you pick a task from the user stories that needs to be completed within that sprint. Each day during the sprint, you come to work, pick your task for the day, go to standup, discuss what you did yesterday, what you intend to do today, and any impediments you may encounter. Upon completion of the first task, you move on to the next one and so forth until you have finished the whole process which includes code, test, successful build, push, peer review and then move on to the next task and continue until the sprint is complete. Afterwards, all of the code is tested by your quality assurance team, and then you participate in a meeting with your project manager and client to determine what needs to be accomplished in the next sprint.

At the end of the sprint there’s a Review to view working software and to determine what was not completed or what needs improvement. There’s also supposed to be a Retrospective to discuss what went well and what didn’t go well, in the interest of increasing the quantity of output.

Counter

Agile development has some fundamental flaws that have been glaring at us all along. The first flaw is that humans are not machines; expecting consistent output in fixed cycles ignores individual variations in creativity and productivity. Second, the idea that a product can be defined by what can be accomplished in a two-week sprint by an arbitrary number of people with differing skills is unrealistic.

While agile principles aim for efficiency, their practical implementation often deviates significantly, it has been bastardized so much that no one can recognize its original principles. Emmanuel Maggiori, in one of his article says a lot of agile thinking leads to "meta work"—spending more time planning and discussing tasks than actually completing them. This has led to skepticism around roles like agile coaches, especially as organizations strive for true agility beyond mere process adherence.

Conclusion

The agile model is a flexible and iterative approach to software development that emphasizes collaboration, feedback and responsiveness to change. While the methodology has its challenges and can be misapplied, its core principles—focusing on responding to change and delivering working software—remain valuable for fostering agility in dynamic environments. The key is to adapt agile practices in a way that genuinely supports the organization's needs rather than strictly adhering to a rigid framework.