Agile project

Requirements change is one of the major problems in most software projects. To minimize this problem, software development team must focus on working with users to develop a clear and concise requirements. However, when users do not know what they want, or often change their minds then the development team may want to adopt an incremental approach by determine what users can explain at that time then prioritize them into several releases with the one that they clearly know is to be implemented first.

This approach is called “The Agile approach” which consists several ways of develop software. One of the most popular way is “Scrum”, which divides the development activities into several small efforts, each lasts about 2 to 4 weeks called “Sprint”. For each sprint, the user's needs are prioritized into a “Sprint backlog” (Requirements for a particular Sprint) where the team can concentrate to work on those user's needs without have to worry about other requirements. By incrementally build software according to user's priority, the team continue to deliver working software that satisfy users rather than deliver everything all at once as with the waterfall life cycle. By release one piece of software at a time, users do not have to wait a long time but can use several features every few weeks and can measure the team's progress accordingly. For each release, the team also can reflect on what is working and what is not and continue to improve the way they work together.

Before the agile project begins, both development team and users must agree on how the process will be executed. Roles, responsibilities and accountability must be defined and assigned to make sure that manager, users, and the project team understand what they are supposed to do. In agile approach, communication is the most important factor so users must assign someone to work with the project team to coordinate the requirements and the priority on a daily basis. The representative works with the “Scrum Master” of the project team to define the “backlog” for each Sprint. The user's representative must be able to quickly answer all questions to the team and set new priorities, if needed. If for whatever reason, users are so busy and cannot participate in the daily interface with the team, agile will NOT work.

The Scrum Master is responsible for all project coordinating activities with the users, make sure that everyone follows the agile process according to their roles, responsibilities and promote teamwork among team members. As previously posted in my blog, Agile approach works well for small projects (4 to 10 people) and everyone on the team must receive agile training so they can work accordingly. However, conflicts between people on the team do happen. It is the job of the Scrum Master to resolve these issues quickly and efficiently. The Scrum Master must have the skills to deal with team conflict because with agile, time is critical (2 to 4 weeks for each Sprint), even with one “difficult to get along” person, the entire team could be impacted. The Scrum Master must also works to remove any obstacle reported during the daily meeting and protect the team from any disruptive from outside because the agile work is very intensive.

There are several commercial tools available in the market for agile project but there are alternatives such as open source software. I like to use these “Free” tools:

Wiki: This tool can be used by both users and the teams to communicate and collaborate all the project related issues.

Geeklog: Using this tool project member can discuss issues with one another. This tool will be valuable for the project members to discuss on various projects related issues.

CVS: It is an open source configuration tools to control release version.

Bugzilla: Project team can use this tool to track defects and take various reports on defects.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University