Friday, March 18, 2011

Heroes, Humans and Success in Agile Software Development

I love agile software development methods and techniques, I'm also a big fan of Agile Scrum process. I believe it has revolutionized how we develop software and in a good way. Although  it might not be the Aladdin's lamp which will provide a total solution to all of software development issues, it's the closest we have at the moment.

I believe the majority of us has identified how Agile processes can be utilized in developing successful software applications. But I think it potent to find out why agile is successful, as it turns out many concepts and practices that we follow in Agile processes have been there for sometimes, things like iterative development is also available in RUP which is not an Agile process.  So, what makes agile different and what leads to its success? "Human aspect", yes, Agile processes take into account the Human aspect in a software development environment. It allows team members to decide for themselves and provides a free and equal environment for them to perform at their own pace. It also embrace the concept of "Team", and encourage people to work as a group rather than individually. Humans by nature are social creatures, we almost always hate solitude. Agile processes utilize this fact in a beautiful way by removing limiting boundaries within the team that would hinder interaction between team members.

While Agile process highlights and even relies on the "Human Aspect" for its success,  using the freedom allowed within the agile team needs to be used in a very responsible way. As the famous quote from Movie Spider Man goes "With Great Power  comes Grate Responsibility", in Agile, "With Great  Freedom comes Great Responsibility". In the old days of software development, many areas were filled with ambiguity, and large systems were built by a design that was done at the beginning of the project, even though the iterations were practiced, iteration cycles were long and often the deliverables didn't match the client requirement, simply put the situation was chaotic. Just like in any such situation, this messy environment paved the way for  "Heroes" to immerge, i.e. there were some team member(s) within any software application development team who had better understanding of the application domain or the programming language etc... the chaotic environment of software application development of the old days allowed people like this to shine among others in a team, usually these team members were considered "High Valued" resources by the company and they were well looked after. In highly procedural bound processes that didn't consider the value of the "Human" aspect these "Heroes" actually rescued projects, they single handedly sometimes dragged the project to finish line using the special skills they have and often the ordinary  team members (who would have added lot of value if given the opportunity) were shadowed by this process and the concept of "Team" was never embraced.

Agile processors has changed all of that, it has created an environment where everybody can interact and add value to the project they are working on. Success of an Agile based software application depended on the Team not on the skill levels of its individuals, by allowing each team member to contribute and by respecting and identifying the importance of the "Human" aspect, Agile processes has given the opportunity for each and every team member to become a Hero. However, each individual of an Agile team must understand their strength and success of the project relies on the Team not themselves, so, the Heroes within the team has a great responsibility to use their powers carefully. A true agile hero would embrace the team more than anything, they would use their special skills to improve and empower team members and almost always would try their level best to develop the team. They would also understand that a team consists of "Humans" and that each individual is unique in this world, it's important to respect ideas of each individual in a team. Also, all team members need to understand that their personal egos doesn't add any value to the team, it almost always hinder teamwork which will intern destroy the unity within the team.

All in all, It's not a must for Heroes to exists within an agile team. what's important is that each individual in the team embrace the Human factor and utilize property to drive the project to success.