Lack of test automation
Due to the iterative nature of agile development, multiple rounds of testing are often needed.
Automated testing helps reduce the impact of repeated unit, integration, and regression tests and frees
developers and testers to focus on higher value work.[102]
Test automation also supports continued refactoring required by iterative software development.
Allowing a developer to quickly run tests to confirm refactoring has not modified the functionality of the
application may reduce the workload and increase confidence that cleanup efforts have not introduced
new defects.
Allowing technical debt to build up
Focusing on delivering new functionality may result in increased technical debt. The team must allow
themselves time for defect remediation and refactoring. Technical debt hinders planning abilities by
increasing the amount of unscheduled work as production defects distract the team from further
progress.[103]
As the system evolves it is important to refactor as entropy of the system naturally increases.[104] Over
time the lack of constant maintenance causes increasing defects and development costs.[103]
Attempting to take on too much in an iteration
A common misconception is that agile software development allows continuous change, however an
iteration backlog is an agreement of what work can be completed during an iteration.[105] Having too
much work-in-progress (WIP) results in inefficiencies such as context-switching and queueing.[106] The
team must avoid feeling pressured into taking on additional work.[107]
Fixed time, resources, scope, and quality
Agile software development fixes time (iteration duration), quality, and ideally resources in advance
(though maintaining fixed resources may be difficult if developers are often pulled away from tasks to
handle production incidents), while the scope remains variable. The customer or product owner often
pushes for a fixed scope for an iteration. However, teams should be reluctant to commit to the locked
time, resources and scope (commonly known as the project management triangle). Efforts to add scope
to the fixed time and resources of agile software development may result in decreased quality.[108]
Developer burnout
Due to the focused pace and continuous nature of agile practices, there is a heightened risk of burnout
among members of the delivery team.[109]
Agile management
Main article: Agile management
Agile project management is an iterative development process, where feedback is continuously gathered
from users and stakeholders to create the right user experience. Different methods can be used to
perform an Agile process, these include scrum, extreme programming, lean and kanban. [110] The term
agile management is applied to an iterative, incremental method of managing the design and build
activities of engineering, information technology and other business areas that aim to provide new
product or service development in a highly flexible and interactive manner, based on the principles
expressed in the Manifesto for Agile Software Development.[111] Agile project management metrics
help reduce confusion, identify weak points, and measure team’s performance throughout the
development cycle. Supply chain agility is the ability of a supply chain to cope with uncertainty and
variability on offer and demand. An agile supply chain can increase and reduce its capacity rapidly, so it
can adapt to a fast-changing customer demand. Finally, strategic agility is the ability of an organisation to
change its course of action as its environment is evolving. The key for strategic agility is to recognise
external changes early enough and to allocate resources to adapt to these changing environments.[112]
Agile X techniques may also be called extreme project management. It is a variant of iterative life
cycle[113] where deliverables are submitted in stages. The main difference between agile and iterative
development is that agile methods complete small portions of the deliverables in each delivery cycle
(iteration),[114] while iterative methods evolve the entire set of deliverables over time, completing them
near the end of the project. Both iterative and agile methods were developed as a reaction to various
obstacles that developed in more sequential forms of project organization. For example, as technology
projects grow in complexity, end users tend to have difficulty defining the long-term requirements
without being able to view progressive prototypes. Projects that develop in iterations can constantly
gather feedback to help refine those requirements.
Agile management also offers a simple framework promoting communication and reflection on past
work amongst team members.[115] Teams who were using traditional waterfall planning and adopted
the agile way of development typically go through a transformation phase and often take help from agile
coaches who help guide the teams through a smoother transformation. There are typically two styles of
agile coaching: push-based and pull-based agile coaching. Here a "push-system" can refer to an upfront
estimation of what tasks can be fitted into a sprint (pushing work) e.g. typical with scrum; whereas a
"pull system" can refer to an environment where tasks are only performed when work is available e.g.
typical for kanban.[clarification needed] Agile management approaches have also been employed and
adapted to the business and government sectors. For example, within the federal government of the
United States, the United States Agency for International Development (USAID) is employing a
collaborative project management approach that focuses on incorporating collaborating, learning and
adapting (CLA) strategies to iterate and adapt programming.[116]
Agile methods are mentioned in the Guide to the Project Management Body of Knowledge (PMBOK
Guide) under the Project Lifecycle definition:
Adaptive project life cycle, a project life cycle, also known as change-driven or agile methods, that is
intended to facilitate change and require a high degree of ongoing stakeholder involvement. Adaptive
life cycles are also iterative and incremental, but differ in that iterations are very rapid (usually 2-4 weeks
in length) and are fixed in time and resources.[117]
Applications outside software development
Agile Brazil 2014 conference
According to Jean-Loup Richet (research fellow at ESSEC Institute for Strategic Innovation & Services)
"this approach can be leveraged effectively for non-software products and for project management in
general, especially in areas of innovation and uncertainty." The end result is a product or project that
best meets current customer needs and is delivered with minimal costs, waste, and time, enabling
companies to achieve bottom line gains earlier than via traditional approaches.[118]
Agile software development methods have been extensively used for development of software products
and some of them use certain characteristics of software, such as object technologies.[119] However,
these techniques can be applied to the development of non-software products, such as computers,
medical devices, food, clothing, and music.[120] Agile software development methods have been used in
non-development IT infrastructure deployments and migrations. Some of the wider principles of agile
software development have also found application in general management[121] (e.g., strategy,
governance, risk, finance) under the terms business agility or agile business management.
Agile software development paradigms can be used in other areas of life such as raising children. Its
success in child development might be founded on some basic management principles; communication,
adaptation, and awareness. In a TED Talk, Bruce Feiler shared how he applied basic agile paradigms to
household management and raising children.[122]