Skip to main content

What is Agile and why do we use it?

Agile is one of the big term of the ITsphere. 
Let’s  it clear. 
Agile development is a different way of managing IT development teams and projects.
The use of the word agile in this context derives from the wellknown agile manifesto.  A small group of people got together in 2001 to discuss the ways of software development managing projects.  They came up with the agile manifesto, which describes 4 important values that are as relevant today as they were then.  It says, “we value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.”
There are 10 Agile principles.  These are characteristics that are common to all agile methods and they secrete Agile among other technologies.  They are:
1. Active user involvement is imperative
2. The team must be empowered to make decisions
3. Requirements evolve but the timescale is fixed
4. Capture requirements at a high level; lightweight & visual
5. Develop small, incremental releases and iterate
6. Focus on frequent delivery of products
7. Complete each feature before moving on to the next
8. Apply the 80/20 rule
9. Testing is integrated throughout the project lifecycle – test early and often
10. A collaborative & cooperative approach between all stakeholders is essential
 
There are various methodologies that are collectively known as agile, as they promote the values of the agile manifesto and they are consistent with the above principles.  Here there are a few of the main agile software development methodology contenders:
1) Agile Scrum Methodology - Scrum is a lightweight agile project management framework with broad applicability for managing and controlling iterative and incremental projects of all types.
2) Lean and Kanban Software Development - Lean Software Development focuses the team on delivering Value to the customer, and on the efficiency of the “Value Stream,” the mechanisms that deliver that Value. 
3) Extreme Programming (XP) - XP is a disciplined approach to delivering high-quality software quickly and continuously. It promotes high customer involvement, rapid feedback loops, continuous testing, continuous planning, and close teamwork to deliver working software at very frequent intervals, typically every 1-3 weeks.
4) Crystal - Several of the key tenets of Crystal include teamwork, communication, and simplicity, as well as reflection to frequently adjust and improve the process. The Crystal methodology is one of the most lightweight, adaptable approaches to software development.
5) Dynamic Systems Development Method (DSDM) - DSDM is based on nine key principles that primarily revolve around business needs/value, active user involvement, empowered teams, frequent delivery, integrated testing, and stakeholder collaboration. DSDM specifically calls out “fitness for business purpose” as the primary criteria for delivery and acceptance of a system, focusing on the useful 80% of the system that can be deployed in 20% of the time.
6) Feature-Driven Development (FDD) - FDD recommends specific programmer practices such as “Regular Builds” and “Component/Class Ownership”. FDD’s proponents claim that it scales more straightforwardly than other approaches, and is better suited to larger teams. Unlike other agile methods, FDD describes specific, very short phases of work, which are to be accomplished separately per feature.
7) Kanban - Kanban is a method for managing knowledge work with an emphasis on just-in-time delivery while not overloading the team members. 
 
So Why do we use Agile?
Agile development methodology provides opportunities to assess the direction of a project throughout the development lifecycle. This is achieved through regular cadences of work, known as sprints or iterations, at the end of which teams must present a potentially shippable product increment. By focusing on the repetition of abbreviated work cycles as well as the functional product they yield, agile methodology is described as “iterative” and “incremental.” In waterfall, development teams only have one chance to get each aspect of a project right. In an agile paradigm, every aspect of development — requirements, design, etc. — is continually revisited throughout the lifecycle. When a team stops and re-evaluates the direction of a project every two weeks, there’s always time to steer it in another direction.
 
 
 Used sources:

Core technologies