Agile project management has become more and more popular way to manage software development projects. But what is it? Agile project management is not an exact method, but instead it’s a principal that is based on delivering software incrementally.
Before, the mainstream project management method was “waterfall”, which is a sequential process: conception, initiation, analysis, design, implementation, testing and maintenance. Problem with the waterfall method is that there is no room to learn and improve during the project. Once the specifications are done, they get implemented as closely as possible. In theory this should work, but in practice the specifications are rarely complete nor perfect and the implementation is not done exactly like the specification intended. With agile project management the specification and implementation is done iteratively. It means that during the project the specification can evolve and improve as things are learned during and after the implementation. Everyone is able to monitor the progress and the result of the project as it’s implemented.
Mutual understanding instead of detailed specifications
Nevertheless, agile is not a magic word that can turn any software development project into a success. Sometimes the specifications are neglected totally because it is agile not to specify beforehand. Even if fully documented specifications are not expected at the beginning of the project, it is still important to specify requirements during the project. With agile project management the specifications are not necessarily expected to be in a written format. More important is the mutual understanding between the project owner and the implementer of these requirements and how to meet them the best way. Open and continuous interaction during the project complements the specification.
Prioritization enables tight deadlines
Possibility to deliver early is a benefit with agile project management. In order to achieve this benefit it’s important to list the main requirements early and prioritize them properly. When the most important requirements are completed early in the project, it’s possible to meet even the tightest project deadlines. Prioritization should not be done only between requirements, but also within a requirement. Usually there are alternative ways to meet a requirement, so it is important to identify which tasks or features are more important than the others when implementing the requirement. Sometimes a project can get stuck if the team focuses on improving and polishing things around the most important requirement of the project. Team adds more and more features that are no longer critical from the requirement’s point of view. Those things should be listed and put at the end of the project’s to-do list.
With agile project management, when the deadline is getting closer, the most important things have been already done and it is possible to deliver even if there might be other not-that-important requirements left to be done.
No more exceeded deadlines and budgets
Generally a project budget and schedule gets defined based on “number of requirements * time expected to implement the requirement”. Those two variables can’t be known exactly before the project, and therefore the project might be late and exceed the budget. If the budget and deadlines are crucial to be fixed beforehand, the number of requirements and the way they get implemented should be allowed to change during the project. Agile project management allows to do just that – when the deadline is getting closer, the most important things have been already done and it is possible to deliver even if there might be other not-that-important requirements left to be done.
Our project management philosophy is based on agile project management. We utilize it in our product development and also with client specific projects. We have found agile project management being very effective and practical way to achieve the goals in software development.