Better results with Agile methods
When speaking of agility it is good to distinguish business agility from agile methods as they are used in software development. Business agility refers to an organization's ability to react quickly and effectively to changes in the market, and to improve and renew itself. Hermanni Hyytiälä's article on Systems Thinking and the Vanguard Method touches on this domain of agility.
In software development, "Agile methods" has established itself as an umbrella term to describe a set of methods and methodologies used in software projects. This article explores this particular aspect of agility.
Agile methods collect some of the best teamwork and leadership practices into compact packages that are simple to adopt and apply. These methods are widely used in Finland and worldwide. For example, Google, Microsoft and Facebook are known to employ Agile methods in their product development.
Feedback and increased understanding boost maneuverability
Software projects always have limited resources. With Agile methods, those resources are focused on the things that yield the most value. That means investing in the most important features from the business's perspective and, on the other hand, minimizing the amount of lower priority work being done.
As the project advances, knowledge and understanding increases and the requirements are elaborated, becoming increasingly less ambiguous and progressively more specific and concrete. One cannot know everything up front. The new system may, for example, influence and change the users' workflow in ways that are impossible to predict. Technologies and markets evolve during development. Agile methods are designed to support software development specifically in this kind of volatile environments, enabling fast responses to newly acquired information and improved understanding over the requirements.
Organizations can manage the risks of their software projects better with Agile methods than with traditional processes. For instance, the most business critical and high-risk features are implemented first. This increases our understanding of the impact of those risks early on.
The effectiveness of Agile methods is based on the fast feedback cycles, continuous steering and learning that carries on throughout the project. New information and sudden changes can be responded to nearly instantaneously, helping the project stay on the right track. Continuous learning and improvement of working practices is key to agility.
Agile teams are experts in software development and self-organize to deliver the product. The team strives to uncover any bottlenecks and sources of inefficiency hindering development, and to remove those obstacles, improving their ways of working. The management's job is to support the development organization and teams by creating an environment that supports effective product development.
Leadership and business representatives are responsible for contributing the business acumen, crystallize the product vision, and to regularly see that everybody is working towards the same goal.
Agile methods aren't a cookbook recipe that an organization can simply pick and apply. They need to be adapted to the context and culture of the surrounding organization. It is essential to optimize the whole value chain and product lifecycle, not just software development.
A working product is the measure of progress
Agile teams frequently deliver running, tested features. New functionality is regularly presented to the customer, users, and other stakeholders. The most advanced organizations deploy implemented features to production immediately. That way they get regular feedback based on actual working software and are able to plan ahead with the best available knowledge.
Employing Agile methods improves projects' predictability and increase transparency because everybody has up-to-date information about the project's status, based on facts, all the time. Teams' commitment to the outcome and quality of their work grows stronger: they can influence the way things are done and see how their own work contributes to the result.
Agile methods at Reaktor
Reaktor has used Agile methods for almost a decade. We've learned a lot along the way.
Instead of merely optimizing software development, true success requires calls for examining and optimizing the whole value chain. In addition to software design, testing and implementation, equally important ingredients in successful projects are activities such as concept design, functional specification, user interface design, and quality assurance. Business representatives must be actively involved in development and the work must be steered from business objectives and the needs of end users. The product vision must be kept crystal clear, all activities need to be reviewed with a critical eye, and planning must span far enough into the near future. Winning requires seamless cooperation between all stakeholders.
For Reaktor, agility is a way of working that enables continuous learning and improvement. In the end, that's what Agile is about – a desire to do things better.