An introduction to Agile
Tags: agile, softwaredevelopment, productivity
Published: 2023-09-18 08:57:32

The very first time I heard of the word “Agile” was in a software development interview. The interviewer asked me “Are you familiar with Agile ” to which I gave an enthusiastic yes. They later proceeded to ask me to explain what it means and explain agile methodologies. I fumbled my way through at the time and after the interview, I decided never to fumble again.

**So what is Agile?**
The dictionary definition of the word is able to _move quickly and easily._
In software development terms agile is _an approach to project management that promotes iteration throughout the software development cycle(i.e. Planning, Design, development, Testing, Deployment, Maintenance)._ With Agile requirements, plans, and results are evaluated continuously so as to respond quickly to change. 
**What was there before Agile?**

**Waterfall methodology** was what was used before the evolution to agile. In a waterfall, the phases are sequentially arranged such that one cannot move to the next phase without completing the previous phase because the outcome of the previous step would affect the coming phase. 
The matter of flexibility becomes a challenge in this methodology.  Also, what if we realize that an error was made during the design phase when we are in the implementation phase? Then it means we have to go back to the designs and restart on implementation. This depicts that room for change (which is common in software development) is not accommodated, it also translates to a lot of time and resource wastage.
Imagine you are in college, and your professors come and announce to the class that in a week’s time they would want everyone to submit their project proposals with designs, implementation, and generally everything. They expect by the time you meet you have everything fully functional and working. Another professor says that they would want the same project but rather than submitting everything at once, they want the work done in stages, the design first, and on submitting the design one gets feedback, and gets back to implement changes in short it is an ongoing conversation of “oh you did this? okay, if you changed this a bit, adjusted this a little, would be better” and this is carried over all the stages. Which Professor simulates Agile, and which one waterfall?

**Agile values**
**Individuals and Interactions over Processes and Tools**- This prioritizes the need to have people interact, collaborate, share ideas, and share feedback over tools and processes. Agile recognizes that at the end of the day, the people who work on the projects have more weight than the tools because they bring in skills and creativity. The tools and processes will always rely on the people to work.
**Working Software over Comprehensive Documentation**-  Can you imagine going to a showroom to buy a car, and when you identify the type of car you want to buy rather than the salesperson giving you the car for you to go for a test drive, they give you a large documentation on how the car works. 
Yes, documentation is very important but at the end of the day, people want to see the practical bit of every system or software. So Agile will always prioritize working software.

**Customer Collaboration over Contract Negotiation**- When I hear the word ‘contract’ and ‘contract negotiation’ what comes to mind is that these occurrences happen once. It would be strange for people to negotiate a contract every week.  For Customer Collaboration to happen then there’s a need to constantly meet, talk, and most importantly listen to the Customer. 
**Responding to Change over Following a Plan**- Software development in itself is a field of change.And so with this in mind agile advocates for the need to be able to adapt to change rather than following a plan. A new law is introduced that all software/systems have to adhere to, How flexible are we today able to handle that? 

Agile has become such a force in the Software development industry that we cannot bear to ignore it mostly because when you critically think about it. **Agile is a mindset**. A mindset of growth, adaptability, embracing change, and proving to be flexible and of flexible mindset. Agile may be mistaken sometimes for speed, how fast one is able to complete a task, but rather it is slow but steady. The steady is the ability to polish processes and make them better with time with the collaborative feedback that is given.