The world has grown large throughout the decades. To be competitive in today's fast-moving marketplace, organizations need to drive innovation in every part of their business. As a result, almost all companies are embracing Agile Development (one of the big buzzwords of the IT development industry).

But what is Agile Development? If you simply search on Google, you’re gonna get all these theoretical and difficult explanations on Agile, with high levels of discussion. It becomes difficult for people, especially the product managers, to grasp the idea of what it really means.

So, in this series, we're gonna try to break it down and explain Agile Development in clear terms so that everybody can understand.

Agile Development

Not a methodology

First of all, Agile is NOT a methodology. Why?

In 2001, a small group of people got together and discussed their feelings on the traditional methods of managing software development, as the projects were failing too often. So, they came up with a better solution, describing 4 important values, known as the ‘agile manifesto’.

The manifesto says,

“We 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.”

In addition to the values of the Manifesto, there are 12 principles also that support the values. But Kelly Waters modified them into 10.

They are:

  • Active user involvement is imperative
  • The team must be empowered to make decisions
  • Requirements evolve but the timescale is fixed
  • Capture requirements at a high level; lightweight & visual
  • Develop small, incremental releases and iterate
  • Focus on frequent delivery of products
  • Complete each feature before moving on to the next
  • Apply the 80/20 rule
  • Testing is integrated throughout the project lifecycle – test early and often
  • A collaborative & cooperative approach between all stakeholders is essential

As you can see, the manifesto nor the principles talks or even looks like a methodology.

What is it then?

Agile Development is a framework or a frame of mind. It is like a guiding book with principles that can manage and develop your products or services in a fantastic way.

Agile Development is:

  • Iterative:
    Iteration is short development cycles. Each cycle is called the sprint. Each sprint is typically a few weeks long and involves requirements definition, product design, coding, and testing. The end result of every sprint is a potentially shippable product. Multiple sprints are planned to improve the product, building on top of each other.

  • Streamlined:
    Agile, as the name suggest, is fast and easy. People have a lot of quick meetings. In Agile, people favor short, tight documentation over huge documents. They don't have a million milestones and a ton of process overhead. They are very streamlined and like to move fast.

  • Time-boxed:
    The term time-boxing really just means that you're going to plan your work by time instead of by features. Suppose, you have features A, B and C to be completed in 3 weeks. So, you’re going to do three weeks of development and try to get features A, B and C done.
    In Agile, you have to be rigid on time, not on features. If halfway through, you get it all done, then it’s great! You will be like, “Let's add in feature D. Let's keep working because we planned three weeks of work.”

In an Agile project, everybody is talking to each other all the time. It's a fast moving thing. You don't disappear for two weeks and come back with a finished product.

Sounds fun right? But in reality, Agile development is tough. There are a lot of iterative and incremental agile software development methods, such as DSDM, XP, and Scrum.

Scrum is the most popular way of introducing Agility due to its simplicity and flexibility.

A detailed description of Scrum will be given in the next article.

History of Agile Development

In 1970, Dr. Winston Royce presented a paper entitled “Managing the Development of Large Software Systems,” which criticized sequential development. He said that software should not be developed like an automobile on an assembly line, in which each piece is added in sequential phases.

Many developers first gather all of a project’s requirements, then complete all of its architecture and design, then write all of the code, and so on.

Dr. Royce specifically objected to this approach due to the lack of communication between the specialized groups that complete each phase of work.

In the early 1990s, as PC computing began to proliferate in the enterprise, software development faced a crisis. The problem was, businesses moved faster than that, even 25 years ago.
In aerospace and defense, it could be 20 or more years before a complex system went into actual use.

Many software thought leaders of that time, started to meet informally and talked about ways to develop software more simply, without the process and documentation overhead of waterfall and other popular software engineering techniques of the time. For a brief history on Agile Development, have a look at this site.

These frustrations about unproductive software development activities, led to the famous Snowbird meeting, of like-minded professionals, in Utah in early 2001. In particular, these thought leaders found ways to quickly build working software and get it into the hands of end users, which is now known as the ‘agile manifesto’

Comparison between Agile and Traditional systems

Traditional methodologies are characterized by a sequential series of steps. One of them is the Waterfall method.

The Waterfall Model was the first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model.

In such methodologies, the sequence of events is something like:

  • Gather and document requirements
  • Design
  • Code and unit test
  • Perform system testing
  • Perform user acceptance testing (UAT)
  • Fix any issues
  • Deliver the finished product

Each of these represents a distinct stage of software development, and each stage must be finished before the next one can begin. That means, all the stages MUST be completed within a certain period of time, somehow.

Additionally, the requirements must be reviewed and approved by the customer before design can begin.

Disadvantages of Traditional Methods:

  • Poor quality:
    When the project starts to run out of time, testing is the only phase left. This means good projects are forced to cut testing short and quality suffers.
  • Too risky:
    You never know if you are going to make it until the end, so you don't actually get to test your design or architecture until late in the project.
  • Can't handle change:
    Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage.
  • Less communication:
    Gigantic specifications have to be read. And everybody works on it until a certain period of time, with very less interaction among the developers.

Advantages of the Agile Movement

Agile development offers a lightweight framework for helping teams. There are a lot of benefits of Agile Software Development, as well as some disadvantages. But the advantages outweighs the disadvantages.

Some of the benefits of Agile Development are:

  • Flexible:
    In agile development, change is accepted and expected. Requirements emerge and evolve as the product is developed. New changes are made according to the feedback of customers, after each sprint.

  • Quality:
    Testing is integrated throughout the lifecycle, enabling regular inspection of the working product as it develops. This allows the product owner to make adjustments if necessary and gives the product team early sight of any quality issues.

  • Customer Satisfaction:
    The active involvement of customers and product owner, the high visibility of the product and progress, and the flexibility to change when change is needed, creates much better business engagement and customer satisfaction.

  • More Enjoyable:
    The active involvement, cooperation, and collaboration make agile development teams a much more enjoyable place for most people.

In conclusion, you can’t simply make a software just by following these guidelines. It requires a lot of commitment and effort from everyone involved in the team, as well as the owner.

Nevertheless, the advantages of agile development are really compelling.