Agility is characterized by the ability to move quickly and easily in a well-coordinated fashion. Agile software development moves software creation from a rigid process with discrete phases to a collaborative effort that is quicker, continuous, and efficient. Agile development moves away from the traditional sequential waterfall method to one that enables developers to change the direction of a project already in progress becoming more attentive to customer needs as they change.
Agile development came into existence in 2001 when a group of frustrated software developers decided that the traditional approach to software project management no longer worked, creating too many project delays and extended lifecycles. The developers created a manifesto to describe the parameters to better manage software projects and address the problems inherent in established developmental processes.
[See Also: Vertical Slicing in Agile Development]
The Agile manifesto highlights four key values that must be adhered to: value individuals and interactions over processes and tools; value working software over comprehensive documentation; value customer collaboration over contract negotiation; value responding to change over following a plan. In other words, while there is importance placed on each item, the values on the left take precedence over the ones on the right.
The manifesto consists of 12 principles by which developers must follow. The ultimate goal of Agile is to satisfy the customer by consistently delivering high quality software with an ability to adjust requirements even late in development, hence the Agile moniker.
Software must be delivered frequently in iterations and continuously, preferably with shorter timelines. Development must include constant collaboration between highly motivated business people and developers with a focus on face to face conversations.
Progress with Agile development is measured in terms of software that works, with focus placed on a final product that meets customer requirements. Agile development involves participants maintaining a constant pace with a consistent focus on excellence and quality. Simplicity is highly valued as is spending time only on necessary tasks and eliminating unnecessary ones. Agile teams must be self-organized and constantly strive to improve their behavior and thus their practices moving forward.
While Agile development is customer-centric and commits developers to focus on what’s important, it also means that speed, efficiency, collaboration and quality are hallmarks that must be maintained at all times.
Successful Agile implementation must include support from top level managers in addition to ensuring that an experienced and senior user representative is involved throughout the process. Agile teams must only include staff who are motivated and disciplined and who also have the necessary skills to handle the change in thinking compared to traditional development processes. Moving forward, the team focus is on iterations of small, incremental releases and a frequent release of products. Responsibility is shared amongst team members throughout the process at all times.
Clearly, Agile development requires specific traits that not all development teams may have. Agile development tends to work best with experienced developers and a strong technical lead who can keep projects and staff on track. Agile requires developers to shift their way of thinking and be open-minded towards a new way to develop software.
Implementing Agile development ultimately results in higher quality software, quicker speed to market, more flexibility and happier customers.
Everything you need to know about outsourcing technology developmentAccess a special Introduction Package with everything you want to know about outsourcing your technology development. How should you evaluate a partner? What components of your solution that are suitable to be handed off to a partner? These answers and more below.