Tuesday, July 07, 2009

Agile Development Skills

"Your earning ability today is largely dependent upon your knowledge, skill and your ability to combine that knowledge and skill in such a way that you contribute value for which customers are going to pay." --Brian Tracy

I think it would be a mistake to think of Agile only as a new methodology for Software Development. To me Agile is more than just a methodology. It is a paradigm shift not only in the way we develop software, but also in our roles in the development team. In an Agile context we can no longer confine ourselves to a narrow specialty (Analyst, Programmer, Team Lead, Tester, etc.).

Agile Team members must be willing to help out in areas outside their traditional roles/expertise. For example, a Tester might be asked to help out by creating wireframes (screen mockups) to get approval from the customer. The architect might have to help out by writing low level code or fix defects. The project manager might have to help out with Testing. In an agile team, the team members will have to be willing to help out in various areas from time to time to meet the Sprint goals. The new role demands more communication, commitment and versatility from every team member and also makes our job more interesting and fun. In Agile terminology this is commonly referred as Generalizing Specialist.

I think the traditional separation of roles creates a caste system in the team which does more harm than good. In a traditional role centric environment, the team members do not feel empowered to get the job done. So it is very challenging to deliver working software in short Sprints (usually monthly or bi-weekly).

No comments: