What is being "Agile"?

Agility is a lot similar to flexibility. You are agile if you are adaptable, lightweight, and responsive to change. 

When it comes to agile, there is a manifesto (a policy, or a set of aims) to follow. When you go through this, you will realize the difference that agile is trying to make, in comparison to other very defined methodologies (like waterfall software development). 

The Agile Manifesto

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
Apart from this, there are some core agile principles to follow too. Some of these principles may seem like its the same at a glance, but there are subtle differences. 

  • Welcome and expect change
  • Create small value-added increments
  • Utilize feedback loops (from your team, Product Owners, or any other stakeholders)
  • Learn constantly
  • Focus on developing value
  • Failing fast is okay!
  • Deliver value throughout the project
  • Constantly improve project and processes

As you can see, agile enables us to flourish with creativity and innovation with its fail fast concept. Every failure is perceived as a learning curve. It is to learn never to repeat the same mistakes again. Failing fast means, you can also rebound quickly without having wasted a lot of capital or effort. In other terms, agile creates a safe environment to do all this and unleash a team's fullest potential. 

Agile is an empirical process that is based on experience and observation. We observe and react. When it comes to the more defined processes (like waterfall), there is little room for this. The teams function as separate silos and take prescribed courses of action every time. Hence, agile teaches us to adjust and respond by maintaining transparency and collaboration. The output, therefore, results in more and more innovation and a healthier team mindset. 

So, let me stress a little more on the fact that agile welcomes change. You may have many questions. There is a concept called the 'Inverted Triangle Model' that might come in handy. 




There are 3 possible constraints in a software project:

1. Time - The time taken to get the product out (this could be spanned across milestones or releases)

2. Cost - the cash injection that is required for development including the team (project resources) and tools. 

3. Scope - the features and the functionality the product is going to entail. 

When it comes to agile methodology, the scope is a variable. However, cost and time remains fixed in the ideal world. We play around with the scope (because in this changing world, where innovation is thriving at a rapid pace, functionalities and features change) but try to keep the cost and time fixed. But how? If features are added, then the cost and time should increase! Right? 

So, something we practice in the agile world is prioritization and compromise wherever necessary. Hence, the answer is obvious. If a new feature turns up, the first thing we do is try and see where its priority fits into. There will usually be some low priority features that we can hold for the release. 

If the business has a years-long, fixed scope plan, the developed chunks of work may have to wait many months before it is released to the consumer after reaching the product's upfront "predicted perfection". This kind of perfection does not exist in the modern world. It is a continuous cycle of manageable workloads being tested while obtaining feedback, unleashing creativity and encouraging collaboration that drives a product towards perfection eventually. 

The difference between agile and agile frameworks

'Agile' is a practice that derives its values based on iterative and incremental approaches. 

Iterative: This practice repeats and refines their way of work in iterations. 

Incremental: The practice of adding new functionality in small chunks to software.  

For example, imagine a team that is assigned to a project where they have to build an e-commerce web application. 

The team can choose to build a chunk of the 'Search' function and test this or the team could choose to build a little of each function. 



The agile frameworks incorporate the agile manifesto and its principles in specialized ways to deliver business value. Therefore, agile is an umbrella term that encapsulates its frameworks.

Some famous agile frameworks include SCRUM, Kanban, Extreme Programming (we will be going into detail about each of these in upcoming articles).

Common Agile Misconceptions

1. Agile has no plan! 

Any agile project will have a roadmap. Simply, this is open for pivoting and change. Yes, up front we don't plan intricate details in agile. Planning is also not a one-time exercise when it comes to agile. This plan gets revisited a countless number of times. The long term vision is in the team's mind. However, the details are open to change.  

2. There is no documentation involved in agile. 

Documentation is the way that we keep track of what has been done and what is to be done. Without clear direction to the development/QA teams, the project success will be scarce. In most of the agile frameworks, it is believed that you need to have just enough documentation - not more, not less. Just enough documentation to grasp the idea without unnecessary details. 

3. Agile means having less discipline. 

Agile does not bind people by rules but this does not mean that agile could work in an environment where the team members are not disciplined. This is because one driving factor in agile is self-managed or self-organized teams. Hence, each team member is supposed to have a work ethic. It should be the team's goal as a whole to contribute, help each other, learn from each other, and drive the project. 



So, in summary, all these agile frameworks are known to be lightweight and are not bound by hard and fast rules. Agile encourages self-driven teams. The basis of agile is to create software in small increments to put it out there as soon as possible and learn from each other. At the end of the day, we need software development to be agile as much as possible since the world has entered a whole new era of innovation and agility itself. 

Comments