Agile methods

The concept of “Agile” covers a range of software development methods based on short, streamlined processes with built-in feedback loops. Compared to traditional engineering and project management methods, the Agile methods are often less formal, but no less disciplined. Agile methods ensure quality and results by compressing the development phases into a series of short passes, resulting in fast feedback loops and enabling visibility and control of the process.

Agile software development is now widely recognized as the most efficient approach to developing high-quality software. While the movement started among small, co-located teams, many large projects and distributed organizations realize the benefits of Agile methods. Examples are Google, Yahoo, Microsoft and Amazon.

The various Agile software development methods emphasize different elements but share core characteristics:

  • Repeated re-planning — enables the team to take into account any new insights and changing priorities during the course of the project.
  • Customer (user) on-site — to clarify questions on the spot and give immediate feedback about the user interface and functionality.
  • Frequent releases — enables frequent customer test and feedback, and enables the customer to deploy functionality as soon as possible after development.
  • Automated test — enables frequent releases by ensuring that developers dare change the code when appropriate, keeping it fit and understandable.
  • Fully automated build environment and continuous integration and deployment — facilitates automated test and frequent releases.

ZeaLake’s consultants have used a range of Agile methods and contributed to the customization of several. Whether your team or company have chosen a specific “standard” method or designed your own custom one, ZeaLake will be confident to work within that framework, focus on your objectives, and help you improve the areas where you feel the need.

The most well-known Agile methods are:

Scrum
Scrum is first and foremost a way of managing the work of a team. Scrum ensures that the software is developed through a series of short iterations in which the whole team contributes to reach the joint goals. A defining element is the product backlog which holds the requirements in the form of user stories. A user story describes a specific and testable feature of the finished product. The tasks of each iteration are prioritized to ensure that the highest priority tasks are solved first. After each iteration the product contains finished and usable functionality as a set of fully tested user stories. Another defining element is that the Scrum team holds a brief daily “stand-up” meeting for planning the next days’ work.

Kanban and Lean
Agile software development has been inspired by principles from other industries such as the “Lean” approach, originally from Toyota and other Japanese manufacturing corporations. The core aim of Lean is to minimize waste — waste of time, resources, and opportunities. This is obtained through keeping stock and work-in-progress as small at possible.

Kanban is a technique to manage work on these terms: the pipeline of work items is kept visible, short, and clearly prioritized. Each item is finished and shipped (deployed) before new work is started. Like Scrum, Kanban uses a board with cards representing the work items, divided into the main steps of the process. A work item moves from step to step, making visible to the team and their stakeholders how much work they have in progress, when an item can be expected to finish, etc. and at the same time enables on-the-fly process analysis such as where the bottlenecks are.

Read more about Lean Software Development from Mary Poppendieck and Don Reinertsen.  Download a readily accessible comparison of Kanban and Scrum, written and illustrated by Henrik Kniberg.

eXtreme Programming
The name of this method arises from the notion that “If test is a good thing, then let’s test all the time”, and “If user influence is a good thing, then let the users exert influence all the time”, etc. The various Agile principles are taken to the extreme. The eXtreme Programming development method is closely concerned with the developers’ actual programming process. The method does not prescribe any specific planning, reporting or documentation tools but imposes a high level of discipline for the developers as well as their surroundings: customer and management.

  • The simplest thing that can possibly work — Martin Fowler poses this argument in his article Is Design Dead?.
  • Refactoring — See e.g. Martin Fowler’s catalog of useful refactorings.
  • Pair programming — continuous code review.
  • Collective ownership — The team, not some “key” individual, owns the code.
  • No overtime — Working long hours is not worth it in the long run.
  • Coding standards — See an example of JavaScript coding conventions from Douglas Crockford.

eXtreme Programming is further described at extremeprogramming.org.

Other Agile methods
Many companies have decided to develop their own version of the Agile approach to ensure a better fit with — and commitment from — their organization. Contributing reasons to tailoring your Agile method could be that the organization is very large or distributed, or that the software schedule has to take into account a corresponding development of hardware or other physical components.

ZeaLake can assess how your organization is utilizing your Agile method and suggest improvements in the way your team(s) communicate, work together, and apply their tools.