Channels ▼

Eric Bruno

Dr. Dobb's Bloggers

A Gentle Introduction to Agile

December 11, 2013

I've been writing and talking about the Agile methodology for the past year, and I've been a practitioner for much longer. In the process, I've encountered some confusion over what Agile is, how it's applied, and where it can be applied. For instance, the first reaction most people have, including myself, when confronted with the option to use Agile is, "Oh that won't work here!" Even for organizations that use Agile, there may be other misconceptions. For instance, some believe it cannot be used for embedded systems development, government work, open-source projects, or in regulated industries. The short answer: It can be used, because Agile is adaptable. These papers discuss Agile for embedded and Agile for systems engineering.

After reading Allen Holub's post on Scrum and Agile, I thought it would be a good opportunity to provide an overview of the Agile methodology for those who might need it.

Comparison with Other Processes

When approached with the prospect of using Agile for the first time, many developers and managers cringe at the thought of having to follow yet another process improvement initiative. Other methodologies tend to focus on single qualities such as team productivity, requirements definition, or quality in terms of implementing requirements as stated early in the development cycle. While use of other processes might indeed result in building exactly what the requirements document states, what happens if the requirements were wrong or market conditions have changed?

The creators of Agile examined past methodologies to form a set of best practices. As a result, Agile tends to be far less rigid and more adaptable. In fact, although it's best to have end-to-end adoption of Agile early on in your project, it can be phased in over time, and in limited scope. Agile isn't about tracking a rigid project schedule, passing through gates, generating documents, or working at breakneck pace. It's meant to help you become a smarter organization as you consistently learn from each iteration of your software.

The Agile Manifesto and Principles

Stressing a lightweight process, the creators of the Agile process stated their goals and key values in a mere 68 words, which are:

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

As the manifesto states, Agile focuses on the people involved in software (i.e., developers and users) more than tools or a rigid set of procedures. This doesn't mean that tools aren't useful in the Agile approach — quite the contrary — it means that the importance of building good team collaboration and motivation is greater. Likewise, while it's important to document decisions made along the way, the Agile approach prefers building and sharing software artifacts over highly detailed requirements and design documents that are often out of date before they're complete.

With more frequent iterations and releases comes an increase in customer collaboration. Agile encourages working more closely with end users during the development process to be sure what you're building meets their needs. Discovering this earlier in the development process, as opposed to the end, makes it easier to adjust to change.

In a sentence, Agile helps you avoid two big pitfalls found with other processes: integration nightmares that occur at the end of the development cycle, and learning that your customers' needs weren't met after the software is released. As a result, with Agile, organizations and their software are almost always in a state ready to be released with the most up to date customer approved features.

Summary — The Benefits

Agile borrows from the theories of Lean manufacturing, which is a very disciplined process aimed at reducing waste and promoting efficiency. These same Lean principals have been applied to other areas, including software development. As such, Agile itself promotes discipline, planning, record keeping, and collaboration. It's far from the free-for-all, undisciplined approach to development that some people (mis-)perceive it as. Additionally, it's not a magic act. It doesn't guarantee faster delivery of software, but it will help reduce wasted time and effort as your team reacts to changes in requirements and missed requirements quicker. Over the long term, your release progress will accelerate as a result of this gain in efficiency.

Agile helps remove adversarial relationships when customers become collaborators, not simply parties on the other end of a contract. Additionally, IT is no longer considered a rival group, unwilling to deal with change. Working more closely with developers in what's appropriately called DevOps, companies are streamlining their release and support processes as this occurs much more often. No longer are developers simply throwing new software "over the wall" to QA and IT; instead they're working together from the beginning of each sprint to plan each phase of application lifecycle management (ALM).

In conclusion, as your organization becomes more Agile and iterative, with shorter-term release cycles as a result, the headaches involved with big-bang integration efforts that occur at the end of long-term development projects will disappear. Take if from someone who has been involved in large-scale integration efforts, this alone is worth adopting the Agile process.

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 


Video