Being Agile and how is it different from classic project management techniques?
Posted April 30th, 2008 by rajendra
The software industry always has some buzzwords spreading across the world from time to time. At times, it was Object Oriented Programming, Software Development Life Cycle approaches like Waterfall model and Prototyping, Graphical User Interfaces, ISO certifications, CMM Level and now it is Agile Development Practices. Every one of us keep running to catch up with other and be the first to get ISO certified or CMM level certified. Now it is turn to be Agile, and say proudly that “We are Agile”.
While everybody is talking of Agile, then for a newbie like me the questions arises like What is Agile Development Approach? How it is beneficial in comparison to others? How to be Agile?
I am in the software industry for more than 7 years now and I got to hear about Agile few months back. Like others I also become curious about it. Then I started reading various articles on Internet and joined Agile Groups in India. In fact our company became a member of Agile Software Community of India, so that we can show others that we follow Agile practices and are implementing it as much as possible. Everyone is doing it, so why not us J. I also got to attend Certified Scrum Master training and now I am a Certified Scrum Master, thank you Ritu, thank you Saviance.
The first major difference I got to learn about being Agile or not is to be managed or to self manage. The classic architecture of a software development team would be - team members then team leaders and top of them all a project manager. Here Project manager assigns different modules to different teams. The team leaders assign different tasks in assigned module to different team members. The team members are told individually what they need to do and how to do it. Their task was to just follow the guidelines of the team leader, and there is almost no flexibility to deviate from it. This is a perfect micromanaged team and the team members has no responsibility towards the outcome of the development. Only team leaders and project managers are responsible for this.
On the contrary the Agile Teams are self managed. That means, the team as a whole work together. There is no space for a project manager or team leader to give instructions and assign tasks to individual team members. Team is given a list of tasks to accomplish and asked to take responsibility for doing the tasks as per their comfort. They themselves select tasks from the list and provide a timeline for completing the same. The team work in a collaborative and open environment, where everyone can have discussion on a issue, get help from others if required and team as a whole move towards achieving the goal.
As you may guess the major difference is in the responsibility of the team members. In the Agile approach each team member choose the task and time line for it, therefore they themselves feel responsible to accomplish the task in specified time frame. They cannot provide any excuses except the genuine ones. Also as the team works in a collaborative environment, they know what others are doing and how they are doing it. So team can create a common framework of coding practices and learn from each other and plan for future work together.
When I delved deep in Agile techniques, I get to know that Agile is about change management. We all know that changes are unavoidable, as the saying goes “Change is the law of Nature”. Everything in this world is prone to changes, so the software applications.
A major drawback with classic software development model is the resistance to change once the scope of work is fixed. On large projects it took 3-4 year of development [ I think due to unavailability of rapid development tools, like we have lots of them now J ], and they tend to freeze the requirements in the start of work. Client is not allowed to request any changes unless whole application is complete and deployed. In between lot of parameters affecting the application tend to change like government policies, market conditions, user requirements and most importantly goals and objectives of the company. So what would you suppose to do with a piece of software which of very less use to you, when delivered. It may fulfill all requirements, as required when the development started but now it is obsolete without being used for a single day.
Agile helps us here in form of being flexible enough to accommodate the changing client requirements in early phases and hence making the application more useful and up to date. You may want to know, How is it possible? So the answer is - Agile like older approaches never freezes the final specifications of the application. The team starts on few tasks in start, without being concerned about the pending tasks. Client is free to change/modify the pending requirements at any point of time. The team will consider it when it is being taken up for development. This way team is saved from doing work that is not required in future or will be redundant in some point of time. The outcome of this is reduced cost to the client and more useful application for end user.
There are many other benefits of being Agile, but this post may be too long if I tried to include all of them here. And ssshhhhh….. do not tell anyone, there are few disadvantages and drawbacks also with this. But that I will discuss later. So keep learning Agile and be the part of the buzzzzz……
Rajendra Tiwari
Certified Scrum Master
- rajendra's blog
- Login to post comments