Last weekend, I had the privilege of attending and interacting with Sanjiv Augustine in his workshop on “Transitioning to Agile project management”. Sanjiv is a well known thought leader in the field of Agile and Scrum. He is an author of the book called “Managing Agile Projects”. I felt he was very practical and Agile in the way he conducted the session. Although the workshop was designed to help project managers make a smooth transition from traditional methodologies (typically waterfall) to Agile project management, I felt there was a lot in it for everybody.
To do justice with the title of the session, he did address different roles, responsibilities, phases and associated processes of Agile software development using Scrum. He compared Scrum and Waterfall with a focus on planning, execution, monitoring and adapting phases of software development from project management point of view.
However I am trying to present the session from traditional vs Agile perspective. The blog has been divided in the following three sections.
- A case for transition to Agile(Scrum and XP).
- Benefits of practicing Agile.
- Things that have changed.
A case for transition to Agile (Scrum and XP)
I think we are all aware of low success rate, high costs and superficial business value of waterfall projects. Hence there is a need for processes and methods that can eliminate waste, deliver quality and business value early enough to increase the return on investment. Agile(Scrum and XP) are trying to address these.
Benefits of the practicing Agile
First of all, software development process will become small, simple, fast and flexible for the customer and the team alike. It involves short meetings, delivering in small batches , simple process, simple design, fast delivery, early feedback, adapt and change cycles.
Another important thing here is the satisfaction level of the customer and the team is bound to increase due to open and transparent communication, collaboration and team work. The early feedback mechanism helps finding the problems early and hence it’s less expensive to fix the same. It in turn helps creating the environment of trust and reciprocity. Metrics showing how much needs to be done give the true indication of actual progress and helps in creating transparency and discipline. The fact that Agile is built on passion, transparency, trust, discipline, liberty, opportunity, reciprocity and equality helps in creating a great and highly productive working environment.
Finally the productivity for the customer as well as the team will improve a lot. Waste gets reduced by using lean development processes in which we maintain a constant flow throughout the work queue rather than blocking the work queue at different places. Allowing the team members to decide rather than imposing the decisions increases the throughput in general. We actually did two gaming activities in the workshop which gave empirical evidences to prove that lean development and team empowerment can increase the productivity and reduced waste.
Things that have changed
I felt in Agile, processes as activities are more important than just a mechanism of producing a document or non working artifact. The activity is more important than the document. For example planning as activity is more important than producing a planning document. Similarly design, coding and testing as activity become more important than the various traditional artifacts and documents produced by it.
Divide and conquer has given way to conquer and divide. Start with a small team, do the project initiation, make something workable and shippable and then divide and expand the team and keep building working feature with each new team instead of creating a number of teams and keep them waiting or working with non working artifacts or documents only.
Plan the work and work the plan is not the way to go anymore. Reality is not plan based. Plan, do, check and act is the key behind Agile. Inspect and adapt, respond to change are essential for success. Do planning in small parts and on small time intervals.
Trust and collaboration is very important. Keep the process visible, transparent to all the stakeholders including customer. Collaborate early with the customer to deliver business value early.
Small is beautiful. Keeping everything small increases the chances of success for sure. Do a feature driven development with small team and small sprints using iterative and incremental approach.
If you need it, you do it and do it just sufficient to purpose. Do what works for you. Create non working artifacts or documents sufficient to purpose depending on the needs of the project.
We all cannot be masters and it is sufficient to be ordinary. You do not have to be a genius who does not make mistakes. Instead Agile brings forward the mistakes early and encourages the team to be innovative without being afraid of mistakes.
In the end I would say that Agile has made software development much democratic, socialistic and very effective. In other words, a true value addition for customer and fulfillment of business goals set by all stakeholders.