Agile Development

Agile is a methodology that provides flexibility and applies a level of realism and common sense into the delivery of the finished system. Agile has required a cultural shift in many companies when adopted because it focuses on the clean delivery of individual pieces or parts of the software and not on the entire application, which was typically the focus of say a Waterfall methodology.

The Key Benefits

Agile accelerates the delivery of initial business value, by delivering working elements of the required software and through a process of continuous planning, development and feedback, can ensure that value is continuing to be maximized throughout the development process.

Because of this iterative process, teams can continuously align the delivered software with desired business needs, easily adapting to changing requirements throughout the process.

By measuring and evaluating status based on the undeniable truth of working, testing software, much more accurate visibility into the actual progress of projects is available.

Finally, when following an agile process, at the end of a project the software system produced will better addresses the business and customer needs.

The Methods

There are many methodologies  of agile and they share much of the same philosophy, as well as many of the same characteristics and practices. But from an implementation standpoint, each has its own recipe of practices, terminology, and tactics that can be employed to achieve the iterative development of the required software.

These are some of the more well known methods:

  • Scrum
  • Kanban
  • Lean
  • Extreme Programming (XP)
  • Crystal
  • Dynamic System Development Method (DSDM)
  • Feature-Driven development (FDD)

The Principles

Whichever methods are used the overriding principles of agile will always be achieved:

  • Satisfy the client needs and continually develop software.
  • Changing requirements are embraced for the client’s competitive advantage.
  • Concentrate on delivering working software frequently. Delivery preference will be placed on the shortest possible time span
  • Technical and business people work together throughout the entire project.
  • Projects are based on people who are motivated. Giving them the proper environment and the support that they need. They are trusted to get their tasks done.
  • Face-to-face communication is the foremost way to transfer information to and from a team.
  • Working software is the primary measurement of progress.
  • Agile processes will promote development that is sustainable. Sponsors, developers, and users should be able to maintain an indefinite, constant pace.
  • Constant attention to technical excellence and good design will enhance agility.
  • Simplicity is the art of maximizing the work that is not done, and it is essential.
  • Self-organized teams usually create the best designs.
  • At regular intervals, the team will reflect on how to become more effective, and they will tune and adjust their behaviour accordingly.