WHAT IS AGILE
In software development, agile practices (sometimes written "Agile")[1] include requirements discovery and solutions improvement through the collaborative effort of self-organizing and cross-functional teams with their customer(s)/end user(s),[2][3] Popularized in the 2001 Manifesto for Agile Software Development,[4] these values and principles were derived from and underpin a broad range of software development frameworks, including Scrum and Kanban.[5][6]
While there is much anecdotal evidence that adopting agile practices and values improves the effectiveness of software professionals, teams and organizations, the empirical evidence is mixed and hard to find.[7][8][9]
Some of the authors formed the Agile Alliance, a non-profit organization that promotes software development according to the manifesto's values and principles. Introducing the manifesto on behalf of the Agile Alliance, Jim Highsmith said,
Recommended by LinkedIn
The Agile movement is not anti-methodology, in fact many of us want to restore credibility to the word methodology. We want to restore a balance. We embrace modeling, but not in order to file some diagram in a dusty corporate repository. We embrace documentation, but not hundreds of pages of never-maintained and rarely-used tomes. We plan, but recognize the limits of planning in a turbulent environment. Those who would brand proponents of XP or SCRUM or any of the other Agile Methodologies as "hackers" are ignorant of both the methodologies and the original definition of the term hacker.
Most agile development methods break product development work into small increments that minimize the amount of up-front planning and design. Iterations, or sprints, are short time frames (timeboxes)[26] that typically last from one to four weeks.[27]: 20 Each iteration involves a cross-functional team working in all functions: planning, analysis, design, coding, unit testing, and acceptance testing. At the end of the iteration a working product is demonstrated to stakeholders. This minimizes overall risk and allows the product to adapt to changes quickly.[28][29] An iteration might not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration.[30] Through incremental development, products have room to "fail often and early" throughout each iterative phase instead of drastically on a final release date.[31] Multiple iterations might be required to release a product or new features. Working software is the primary measure of progress.[25]
The 6th principle of the agile manifesto for software development states "The most efficient and effective method of conveying information to and within a development team is face-to-face conversation". The manifesto, written in 2001 when video conferencing was not widely used, states this in relation to the communication of information, not necessarily that a team should be co-located.
The principle of co-location is that co-workers on the same team should be situated together to better establish the identity as a team and to improve communication.[32] This enables face-to-face interaction, ideally in front of a whiteboard, that reduces the cycle time typically taken when questions and answers are mediated through phone, persistent chat, wiki, or email.[33] With the widespread adoption of remote working during the COVID-19 pandemic and changes to tooling, more studies have been conducted[34] around co-location and distributed working which show that co-location is increasingly less relevant.