What is Agile?

Acquisition , Agile Add comments

by Stephany Bellomo,
Chief Engineer for Civil & Defense Agencies, Acquisition Support Program

Stephany BellomoIf you ask the question, “What is Agile?” you are likely to get lots of different answers. That’s because there is no universally accepted formal definition for Agile. To make matters worse, there are ongoing debates over what Agile software development SHOULD mean. That being the case, when answering the question, “What is Agile?” the safest bet is to stick to what people can agree on, and people generally agree on three key elements of Agile.  Taken together, these describe the Agile software development method, as well as the software development approach.  In this post—the first in a series on Agile—I will explain the foundations of Agile and its use by developers.

Three key elements of Agile include

  1. The Agile Manifesto
  2. The 12 Agile Principles
  3. Agile Methods, e.g., Scrum, Extreme Programming (XP), etc.

The Agile Manifesto is effectively the charter for the Agile community.  It was created during the course of a weekend in 2001 by 17 software thought leaders who got together to discuss their frustration over the prevailing software development approaches.  In a nutshell, they felt there was too much focus on software process and documentation, and too little focus on developing working software.  The outcome of the meeting was the Agile Manifesto, which was signed by all in attendance and posted on the web as a guiding charter for the fledgling Agile community. The key themes in the Agile Manifesto are individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, and responding to change over following a plan. The 12 Agile Principles were created after the manifesto and further elaborate its ideals.  The principles cover a fairly wide range of topics and explain how Agile developers should respond in a variety of circumstances.  Here are the first few principles to give you a flavor for them

  1.  Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2.  Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. 
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. 
  4. Business people and developers must work together daily throughout the project.

 

The first and second elements are intentionally general and vague (what you would expect of principles?).  The third element, Agile Methods, is where things get a little more concrete.  There are many agile methods and each emphasizes different aspects of Agile.  For example, the Agile Scrum method has a heavy software management emphasis (e.g. daily team meetings and a sprint-based lifecycle).  The idea is to pick the methods that most closely align with your goals, e.g., effective small team leadership practices, increase efficiency and reduce waste, and conduct continuous integration and test strategies.  An overview of common methodologies can be found at www.versionone.com/Agile101/Methodologies.asp.

That concludes my brief summary of some key Agile elements.  I will close this posting by sharing an informal definition for Agile from the Agile Modeling website.  I like this definition because it concisely embodies the spirit of Agile software development:

Agile is an iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner by self-organizing teams within an effective governance framework, with "just enough" ceremony, that produces high quality solutions, in a cost effective and timely manner which meets the changing needs of its stakeholders

The next post in this series will explore some of the foundational processes that are necessary for successful Agile software projects.

Please check out some of the great articles listed below. I particularly like the Crosstalk article Enabling Agility Through Architecture  by the SEI’s Research, Technology Systems and Solutions Program. Agile advocates quick and dirty solutions and refactoring later. This article discusses the importance of understanding when a quick and dirty solution is adequate versus when a more robust architectural solution is required (this balancing act is referred to as technical debt analysis in the article). The article also talks about the need for architectural dependency analysis when planning sprints.

Relevant links and articles:
SEI Report: Considerations for Using Agile in DoD Acquisition
www.sei.cmu.edu/library/abstracts/reports/10tn002.cfm

SEI Report: Integrating Software-Architecture-Centric Methods into Extreme Programming(XP)
www.sei.cmu.edu/library/abstracts/reports/04tn036.cfm?DCSext.abstractsource=SearchResults

Enabling Agility Through Architecture, Crosstalk December 2010
www.crosstalkonline.org/issues/novemberdecember-2010.html

The Agile Modeling website
www.agilemodeling.com/essays/agileSoftwareDevelopment.htm


The Agile Manifesto
http://agilemanisto.org

The Agile Manifesto, Principles
http://agilemanifesto.org/principles.html

 

 

 

 

Share this

Share on Facebook Send to your Twitter page  Save to del.ico.us  Save to LinkedIn  Digg this  Stumble this page.  Add to Technorati favorites  Save this page on your Google Home Page 

11 responses to “What is Agile?”

  1. Craig Beyers Says:
    Great summary. One of things I've noted in discussing Agile with managers, developers, and customers is the lack of understanding of the need/requirement for a general decision-making customer embedded in the development process. That's an important, if not critical, component of Agile--and any other developmental model. From my experience, the success of a SW development effort is directly correlated to the involvement of customers.
  2. Nidhi Srivastava Says:
    Very good post
  3. Omar Soto Says:
    Great post! Agile come to change the way developers create software in the real world and fulfills changing requests as soon as possible.
  4. Kristine Says:
    Great points for an introduction to Agile. Another important point- in order to implement Agile, developers need a common terminology and language. Here's a great resource- an Agile glossary: www.agileglossary.net
  5. Stephany Bellomo Says:
    Craig, I agree with your comment. In my opinion, I think you hit on one of the biggest challenges in the DoD and government space with agile adoption - customer involvement. I see agile-related customer involvement challenges from two perspectives. The government PM may need to move away from a separated, overseer role to more of an integrated, obstacle remover role to adopt agile. In addition, the user (sometimes referred to as customer) needs to be heavily involved in demoing the software throughout the lifecycle rather than being brought in at the end as with waterfall. I think both of those are paradigm shifts with significant implications.
  6. Steven Says:
    Thanks for clarification of Agile. Software development itself is not an innovation anymore today but rather a routine precess that need an innivative approach. No doubt, Agile has much to offer.
  7. Klíma Says:
    Thank you very much! This article is fantastic.
  8. M S HOSSAIN Says:
    Thank a lot for details clarification on Agile. Actually in software development sector absolute process identification is difficult. Approximately accurate logical process people are trying to follow. But the expectation is high and more dynamic and always welcoming new ideas from leaders of software industry.
  9. Robert Deutsche Says:
    I was wondering if SEI or any of its members can speak with practical experience, regarding software engineering practices typically employed by groups utilizing Android, MeeGo, or other open source coding languages? Specifically, if you look at some of younger companies based here on the West Coast and how they develop and release software, one might conclude that at the moment, it is not clear that any specific process is followed. Further, if you conclude that the lines between hardware and software are quickly disappearing, it is not clear to me that any of the current software development models were designed to accomodate this shift (subject to argument of course).

    Appreciate all input.
  10. emrah Says:
    "Iterative and incremental" is not a new concept which is introduced by agile. Highly collaborative? Effective governance framework? Just enough ceremony? High quality solutions? Cost effective and timely manner? Meets changing needs of stakeholders? All attractive statements without any specifics! So what is agile? If you go and read the definition of project management, risk management, systems engineering, software engineering, etc. you will definitely see such key words in their definition. These are high level and vague statements without giving any explicit understanding. Hundreds of papers are addressing this ambiguity in the definition of agile and agility.
  11. Darragh McCurragh Says:
    I wonder if any (any!) organization could adopt Agile. This paradigm shift requires a redesign of many corporate behemoths. Some achieve that, like IBM did under Gerstner, Apple did under the re-introduction of Steve Jobs, however, most small automobile companies did not adapt to Ford's manufacturing methods but "preferred" to die, and the same goes for breweries etc. If the US government departments now stipulate a switch (which will fall mainly on their subcontractors) to Agile methods, then why is there a Healthcare Marketplace debacle? Why has nothing really fundamentally shifted since the so-called "software crisis" meeting of NATO/DoD in Rome in the late 1960s/early 1970s???

Add Comment


Leave this field empty: