Agile Methodology: Everything you need to know
Tags: testing, agile, productivity, career
Published: 2020-08-08 15:42:54

Hey Guys. This is Mahith, a software developer in India. So I am working in this MNC and at a point of time I have come across the term agile methodology and that's when I started researching about it and I got this question in my mind - 

**Should I learn about Agile Methodology and Scrum Framework being a Software Developer?**

What do you say? Let me know your thoughts in the comments.

So after spending a bit of time on it I came to know that Agile is a Project Management Methodology and "Being a software developer you have nothing to do with it." - This is what my fellow friends told me when I asked them this question. But Actually speaking, Knowing Agile as a software developer lets you understand the problem with an Agile Mindset will help you understand thigs well in your Standup calls and meetings with clients while developing a product which thereby increases your productivity.

Also, In an interview a software developer who is doing his masters in Software Engineering at Carnegie Melon University, Which is #No.1 University for computer science in the world said "One of my professors taught us to do projects using MoSCoW methodology in a more practical way. This resembles the exact scenario like how you will be working in a company.

If You're a software developer who doesn't know anything about Agile Methodology or someone who wants to start your learning about it, this post is right for you.

Let's get into the topic.

###What basically is an Agile?
- Agile means to be able to move quickly and easily. It means being flexible. It's the ability to change direction quickly, intentionally, and with fineness. The opposite of agile is slow and hard to change course.

AGILE methodology is a practice that promotes continuous iteration of development and testing throughout the software development lifecycle of the project. Both development and testing activities are concurrent, unlike the Waterfall model.

**Is Agile really a Methodology?**
I wouldn't say yes completely, but it's more like a Mindset that is guided by 4 Values and 12 Principles. There are no particular Methods specified to follow in Agile, You should use these values and principles and incorporate them into your working style for better productivity. However, there are some Methodologies designed using these Agile Principles and values. These are also called Agile Frameworks namely SCRUM, Kanban, Scrumban - these are widely used Methodologies in today's corporate world. More about them in upcoming posts, Now Let's talk about Agile.

As I said there are 4 values and 12 principles given to follow for being Agile.

###**Values**
**1. Individual and team interactions over processes and tools**
Here it means that Being Agile highly values interaction among one another rather than following a method that involves mailing, raising a ticket for a problem which is time-consuming. Agile says to have more interaction between individuals for a better understanding of work rather than using some tools or processes.

**2. Working software over comprehensive documentation**
Documentation is good as it helps the team at a later point in time, but creating those documents is time-consuming. So instead Agile encourages to have face to face conversations with customers explaining to them everything and delivering them the product which helps in saving a lot of time.

**3. Customer collaboration over contract negotiation**
It says us to collaborate more with customers which helps us understand things better and working together with them makes our work more productive and also makes us feel our responsibility in adding value to the customer rather than just having a contract in between and delivering them as mentioned.

**4. Responding to change over following a plan**
Agile encourages to be open to New changes rather than sticking on to a particular plan and just going with it. We should be flexible to make new changes at any point of time during development.

###**Principles**

1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

4. Business people and developers must work together daily throughout the project.

5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

7. Working software is the primary measure of progress.

8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

9. Continuous attention to technical excellence and good design enhances agility.

10. Simplicity–the art of maximizing the amount of work not done–is essential.

11. The best architectures, requirements, and designs emerge from self-organizing teams.

12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

You can easily understand what Agile principles say.

###**Benefits of Agile:**
Agile was developed to overcome the downfalls of traditional Waterfall Methodology. 
- In the Waterfall Model, we cannot move to the next phase until we complete the current phase. When we go to the next phase and at a later point in time, if we feel like coming back and making any changes; it is not possible. So, in waterfall methodology developers have to create a working model before, and only after ensuring everything is fine, they will move to actual working software. Because of this, it takes more time to complete which is not the case in Agile.

- In Agile, Actual Software is being delivered to the customer on a timely basis which helps the customer to see the value for his investment whereas in waterfall they have to wait to see final working software till the very end.

- In Agile we can receive timely feedback and opinions from customers and can make changes accordingly and can move forward but in the case of the waterfall model, it happens in the very end where there will be very little time to make these changes and will be hectic for developers.

- Also Developers, testing team, production team everyone works together in Agile whereas in waterfall it doesn't work like this and involves very complex problems in between.

##**Challenges of Agile** -
So why is every company not using Agile? Because it involves a lot of costs. Say a company is already using a Methodology and if they want to move to Agile, it definitely involves a lot of costs. If they are ready for it then they can go for it absolutely. Also, while working on a project - working on multiple methodologies is not possible. New startups can easily employ this methodology as compared to that of the already existing companies.

I hope you guys got a good understanding of Agile. So just employ these things to have a powerful mindset in delivering value to the customer.

Stay tuned to learn more about Agile Frameworks like Scrum, Scrumban, and Kanban in my future posts. Make sure to follow me. Also, let me know your thoughts in the comments below.

Thank you, guys. Bubye...!