To put it in simple words, Agile is the ability to create and respond to change. It is a way of dealing with an uncertain and turbulent environment. Basically, it’s really about thinking through how you can understand what’s going on in the environment that you’re in today, identify what uncertainty you’re facing, and figure out how you can adapt to that as you go along.
"If we talk about agile development, it's a very live approach. An agile team is a working machine that we have to build and set up to work properly." says Jan Dvořák.
Waterfall project management
Waterfall, or often called linear, is an approach that includes a number of internal phases that are sequential and executed in chronological order. It's commonly used in projects where little or no changes are required at every stage. The method works well for clearly defined projects with a fixed deadline. In theory, this should lead to on-time, on-budget delivery, low project risks, and predictable final results.
Agile project management
Agile project management, on the other hand, is much more vibrant. Here you don't have complete control over the final result and budget. But on the other hand, the result will be a much more sophisticated and sustainable solution. The Agile project management philosophy has been introduced as an attempt to make software engineering more flexible and efficient. It has quickly become the industry standard for project management.
At WDF we use Agile project management, for example, for our Esgians' project. While developing a software we want it to be sustainable and we need to quickly respond to new challenges. “We have two weeks long sprints where we decide what must be done during the period. Product owner, who is on the client side, is actively involved and controls if his vision is fullfilled.” describes Jan Dvořák. “Huge clients, such as Esgian, have many product owners. My job is to understand their vision and coordinate it.”
At the end of each Sprint, a potentially shippable product increment is delivered. Thus, with every iteration new features are added to the product, resulting in gradual project growth. With the features being validated early in the development, the chances of delivering a potentially failed product are significantly lower.
“While working on our Esgian project, we have a new version every two weeks. There are new features and improvements.”
How to define agile project management in 5 principles
- Cooperation with a client: A customer is closely engaged in the development and can change the requirements or accept the team’s suggestions.
- Teamwork: Talking about the team - the team members have to work closely together and have a clear vision of their responsibilities.
- Flexibility: The scope of the work or even the entire content of the assignment may change.
- Work breakdown: The project consists of small cycles - Sprints. The work is divided into small tasks that are cleared quickly. It is good practice not to have an issue larger than one day's work.
- Code refactoring: In agile development, it is important to continuously maintain and enhance the code. As the software evolves, refactoring lets you modify it constantly in response to inevitable change. This is the only way that we can continue to deliver software at the same blistering pace as our codebase grows and changes.
Project management professionals define a successful project as not only the one that is completed on time and within budget but also as the one that delivers expected benefits and agile seems to be the perfect method.
Where to use agile and where to use waterfall
Waterfall is best for projects with concrete timelines and well-defined deliverables. “For example, when designing a small website, we are more likely to use waterfall. We have a fixed deadline and price. We know how the website should look, what it should do and contain.” says Jan Dvořák. “But when we are creating custom software, we want it to be sustainable, and there, agile development is the best approach for us. Agile development may (or may not) be more expensive, but it certainly pays off in the long run.”
In agile development, you never know what the final product will look like. During development, you may find that in the long run it's better to do something different and the brief may change completely. There is a place for improvement. The final product can be better, more sophisticated