What is Agile Project Management?
Agile project management is the process by which projects can be managed and implemented in small chunks of work. Agile projects deliver value in small deliveries of product, and they are called “Features”. Projects during Agile Project Management are managed in five stages, called the Agile Life Cycle. The stages are: Envision, Speculate, Explore, Adapt, and Close.
In the traditional waterfall methodology the requirements for the project would be documented up front. If this whole process takes a year to complete, the business does not see any tangible value until the very end of that project.
Waterfall and Agile Methodologies
The waterfall model is the oldest and mostly widely used model in the field of software development. This model had many advantages like being a linear model. It is very simple to implement. The amount of resources required to implement this model are minimal. Documentation is produced at every stage of the software’s development. This makes understanding the product designing procedure similar but ironically it has many disadvantages. One of the biggest disadvantages being client is not very clear on what exactly they want from the software.
While Traditional methodologies require the user to provide a detailed idea of the exact requirements with respect to the intended software, Agile developers, who truly understand that what is agile project management, are more flexible through their iterative style of work. With Agile Development, the user is constantly in the loop suggesting improvements and reviewing every phase. This increased customer involvement works on two levels. One is that it makes reflective changes easy as opposed to Traditional Development where chunks of system might have to be dismantled to improve a small part and the second being that it increase the customer satisfaction drastically. To sum it up, we now know the difference between Traditional and Agile, to truly understand What is Agile Project Management?.
- In Traditional Project Management, it focuses on plans and artefacts while in agile project management, it focuses on customer interaction and satisfaction.
- In Traditional Project Management, there is a response to change that it is either corrective or preventative but while in Agile Project Management, changes controlled through adaptive actions.
- In Traditional Project Management, it is typically up-from planning while in Agile Project Management it is progressive elaboration with release and iterative planning.
- In Traditional Project Management, there is a top-down control while in Agile Project Management it has self-organizing and cross-functional teams.
- In Traditional Project Management, there is a scope based delivery while Agile Project Management has time-boxed delivery.
- In Traditional Project Management, it is contract oriented while in Agile Project Management, there is customer orientation.
Agile Project Management – Agile Manifesto
To answer what is agile project management, first we need to know that agile follows the following 12 principles, which form a set of guiding concepts that support project teams in implementing Agile projects. These concepts are used to implement Agile methodologies in projects.
- Satisfying customers is top priority: Rather than a big bang delivery after months or even years of work subsets the functionality are delivered within weeks of the start of the project. Early continuous deliver of useful software promotes customer confidence and satisfaction.
- Welcome changing requirements, even late in development: The whole point of delivery is meeting the customer’s needs thereby giving them a competitive edge. Rather than blocking necessary changes to the products as requirements change, Agile software development is designed to cope with the evolving requirements.
- Deliver working software frequently: Again Agile development emphasizes fast, iterative deliveries rather than the big bang delivery of software after a lengthy development process.
- Development and business work together: Rather than working for a customer Agile Development encourages development teams to work with customers. In this way a better working relationship can be established. Problems can be spotted and corrected more quickly and customers can see progress on a daily basis.
- The primary measure of success is working software: In Agile Software Development, working software is the measure of progress and success, which in waterfall is nothing but little.
- The team regularly reflects on work and then tunes and adjusts its behaviour, rather than waiting for the end of the project to conduct a post project review. The Agile team is constantly reviewing the progress and processes to ensure they are working efficiently and effectively.
- Build projects around motivated people: Agile software development recognizes the importance of the team, the working environment and stresses, the need for support and trust in the team, which are as critical for the projects as software’s success.
- The most efficient and effective method of conveying information to and within development teams is face-to-face communication: While documentation status reports and memos are necessary evils in most businesses, discussing a project in person can eliminate many misunderstandings and omissions.
- Continuous attention to technical excellence and good design: While Agile methods improve customer’s satisfaction and the quality of the product, it technically also promotes development agility.
- Simplicity: The art of maximizing the amount of work not done is essential. Agile says eliminate low importance and low urgency issues and put them on the not to do list, keeping processes as simple as possible without the end product losing its desired functionality. Ask teams if they are producing something that is most useful with the least amount of time.
- Best architectures requirements and designs emerge from self-organizing teams, artificially organized teams. When a team’s structure is fixed by upper management with little knowledge of the requirements, customer or the personalities of the team itself can create situations where personal are underutilized. In the worst case, projects fails simply because of poorly organized teams. In an Agile Development Environment, the team is empowered to organize themselves in a way, which allows them to be most effective and efficient.
- Agile processes promote a sustainable development – The sponsors, developers and users should be able to maintain a constant pace continuously. Agile Development proceeds at a more consistent pace rather than suffering from lows while waiting for decisions or approvals followed by a flurry of activity to meet arbitrary deadlines. These principles are fairly simple in concept but are profoundly deep in practice. For transition to an Agile work style or as a way to improve the current Agile practice principles espoused here are a good start.
Scrum is an Agile way to manage a project. Scrum is often perceived as a methodology but rather than viewing scrum as methodology, think of it as a framework for managing a process. Scrum provides a small set of rules that create just enough structure for teams to be able to focus their innovation on solving what might otherwise be an insurmountable challenge. Scrum occurs in small pieces with each piece building upon previous created pieces. Scrum emphasizes empirical feedback, team self management and strives to build properly tested product increments within short iterations. This emphasis on an ongoing assessment of completed work is largely responsible for its popularity with managers and developers alike, but what allows the scrum methodology to really work is a set of roles, responsibilities and meetings that never change. If scrum’s capacity for adaption and flexibility makes it an appealing option the stability of its practices give teams something to lean on when development gets chaotic. Scrum provides structure to allow teams to deal with that difficulty. However, the fundamental process is incredibly simple and at its core is governed by three primary roles. Product owners determine what needs to be built in the next 30 days or less. Development team build, who have a good understanding of what is agile project management, and what is needed in 30 days or less and then demonstrate what they have built. Based on this demonstration, the product owner determines what to build next. Scrum masters ensure this process happens as smoothly as possible and continually help improve the process, the team and the product being created. The scrum model cease daily stand ups as a way to synchronize the work of team members as they discuss the work of the sprint. At the end of the sprint, the team conducts a sprint review during which the team demonstrates the new functionality to the PO or any other stakeholder who wishes to provide feedback that could influence the next sprint. This feedback loop within scrum software development may result in changes to the freshly delivered functionality but it may just as likely result in revising or adding items to the product Backlog. Another activity in scrum project management is the Sprint Retrospective at the end of each sprint. The whole team participates in this meeting including the scrum master and PO. The meeting is an opportunity to reflect on the sprint that has ended and identify opportunities to improve.
The SM needs the courage to protect and guide the team, standing up to the PO and stakeholders at the right time, really takes guts. The PO must have the courage to entrust the sprint Backlog to the team, a giant leap of faith as it is the PO who answers to the stakeholders at the end of the sprint. Finally the team must have the courage to aggressively commit to as much work as they think they can do in each sprint.
In scrum, the limits and boundaries of the scrum roles really need to be transparent and respected. Everyone on a scrum project needs to be aware that the PO is in-charge of what the team works on but not how they do their work and that the team is responsible for getting the work done but not questioning what work gets done.
Get feedback quickly and often to undercover defects early. Many Agile Development Practices focus on decreasing the time taken to get feedback. This helps eliminate waste build quality in.
They are small teams. The optimal size for effective collaboration is 5 to 9 people, not too large, so that the communication becomes an issue and not too small that the overhead is excessive. Effective communications reduce the amount of noise between communication parties.
This principle should be obvious enough. With a clear knowledge of what is agile project management? and having unnecessarily complex processes creates waste and in Agile we focus on eliminating waste.
The core idea is to maximize customer value while minimizing waste. Simply lean means creating more value for customers with fewer resources. A Lean Organization understands customer value and focuses its key processes on continuously increasing it. The ultimate goal is to provide perfect value to the customer through a perfect value creation process that has zero waste. To accomplish this Lean thinking changes the focus of management from optimizing separate technologies assets and vertical departments to optimizing the flow of products and services through entire value streams that flow horizontally across technologies, assets and departments to customers. Eliminating waste along entire value streams instead of at isolated points creates processes that need less human effort, less space, less capital and less time to make products and services at far less costs and with much fewer defects compared with traditional business systems. Companies are able to respond to changing customer desires with high variety, high quality, low cost and with very fast throughput times. Also information management becomes much simpler and more accurate. Lean is a translation of Lean manufacturing to the software development domain adapted from Toyota Production System and focuses on seven principles.
Elimination of Waste:
Anything which is not adding value to customers is waste like insufficiently tested modules, unnecessary code and functionality.
The best approach for improving a software development environment is to amplify learning. The learning process is sped up by usage of short iteration cycles. Each one is coupled with refactoring and integration testing, increasing feedback via short feedback sessions with customers helps when determining the current phase of development and the adjusting efforts for future improvements.
Decide as late as Possible:
As software development is always associated with some uncertainty. Better results should be achieved with an option based approach, delaying decisions as much as possible until they can be made based on facts and not on uncertain assumptions and predictions.
Deliver as fast as Possible:
It is not the biggest that survives but the fastest. The sooner the end product is delivered without major defects the sooner feedback can be received and incorporated into the next iteration.
Note: This lecture on What is Agile Project Management? is taught during pmp training and project management certification, which are a part of online diploma in project management, offered by the AIMS UK – a globally recognized institution based in London since year 2005.