Agile software development main goal is to continue delivery of software versions in a short frequency (DevOps). It was developed due to developers frustrations from previous software development methodologies, that led to the Snowbird meeting in Utah in early 2001. At that meeting, the term "Agile" was not used, "light" and "lightweight" were more common.
The four core values / manifesto
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
Agile has 12 principles
1. Increasing Customers Satisfaction by continuous delivery of new features faster.
2. Welcome changing requirements, even late in development.
3. It enabled the software team to get rapid feedback on the software's scope and direction.
4. Deliver working software frequently (weeks rather than months).
5. Close, daily cooperation between business people and developers.
6. Projects are built around motivated individuals, who should be trusted.
7. Face-to-face conversation is the best form of communication (co-location)Working software is the primary measure of progress.
8. Sustainable development, able to maintain a constant pace.
9. Continuous attention to technical excellence and good design.
10. Simplicity—the art of maximizing the amount of work not done—is essential.
11. Best architectures, requirements, and designs emerge from self-organizing teams.
12. Regularly, the team reflects on how to become more effective, and adjusts accordingly
The Benefits of Agile
Transparency - The customer is involved at every step of the process and give feedback to the team. Those feed-backs are important and leads to changes.
Rapid changes - The communicated feedback allows rapid and flexible response to change allowing the stakeholders satisfaction.
Predictable delivery and costs control - It uses short incremental and iterative work sequences. Each work sequence includes adaptive planning, design, development, unit testing and acceptance testing. Those work sequences are called sprints and their duration is around 2 weeks.
Prioritization - It let the customer prioritize each feature accordingly to duration and cost.
Quality - The projects are broken down into manageable units that are easy to develop, test, and maintain.
Business focus - The client is deeply involved in the process and give a better understanding not only on what the product should do but also why it should do what he does.
Criticism - The “Elephant in the room”
On the 10th anniversary of the Manifesto for Agile Software Development (Feb 2011) a meeting gathering attendances who had been involved at the original meeting was held in Snowbird, Utah. The name of the meeting was the “Elephant in the room” a metaphor for the behavior of people who deliberately ignore an impending issue. (They are fully aware of some major issue that must be tackled or decided upon, but everyone keeps busy tackling other, often small items, ignoring the big issue, pretending it does not exist, hoping maybe that it will vanish by magic or that someone else will take care of it; that one day the elephant will have left the room).
Major issues that were discussed : Agile practices can be inefficient in large organizations and certain types of developments. Many organizations believe that agile software development methodologies are too extreme and adopt a Hybrid approach that mixes elements of agile software development and plan-driven approaches. The increasing adoption of agile practices has also been criticized as being a management fad that simply describes existing good practices under new jargon, promotes a one size fits all mindset towards development strategies, and wrongly emphasizes method over results. Commercial interests censoring failures- The key players in this community have a direct financial interest and have fear that any negative info would be amplified, distorted, and turned against them.
Philippe Kruchten, that attend the anniversary meeting (professor of software engineering in the University of British Columbia, in Vancouver Canada) wrote:
"The agile movement is in some ways a bit like a teenager: very self-conscious, checking constantly its appearance in a mirror, accepting few criticisms, only interested in being with its peers, rejecting en bloc all wisdom from the past, just because it is from the past, adopting fads and new jargon, at times cocky and arrogant. But I have no doubts that it will mature further, become more open to the outside world, more reflective, and therefore, more effective."
Future to come
Software "release," with all its improvements, as a daily, hourly, or minute-to-minute occurrence. Which means the developers try something based on their best knowledge at the time, yet are fully prepared to remove or change it immediately based on user reaction. And user reaction doesn't come in the form of words but rather in the form of actions. We monitor the application in production and collect data on user behavior. Real-time analysis of that data tells the team what to do next. And what happens next will take no more than a day or two.