In Extreme Programming, the emphasis is on the collaboration of the whole team, collocated and is in continuous communication.
However, certain roles are required for an extreme programming project to work and the persons who take these roles take the corresponding responsibilities and are accountable for their contribution to these roles. It is advised to allocate the right people for the roles rather than trying to change the people to fit into those roles.
The Roles that have been found effective in Extreme Programming are −
The role of developer is the most important one in Extreme Programming. To be a developer in Extreme Programming, you need to be accustomed with the following −
You have the right to know what is needed, with clear declarations of priority.
You have the right to produce quality work at all times.
You have the right to ask for and receive help from peers, superiors, and customers.
You have the right to make and update your own estimates.
You have the right to accept your responsibilities instead of having them assigned to you.
Major responsibilities that you will be accountable for −
Define tasks from stories
Write unit tests
Write code to pass the written unit tests
Perform unit testing
Communication – that is necessary and to the sufficient detail
Always use the metaphor to use the right names
Code only what is required.
If someone changes the code that you wrote, in whatever part of the system, you have to trust the changes and learn. In case the changes are wrong-headed, you are responsible for making things better, but be careful not to blame anyone.
Be prepared to acknowledge your fears. Remember that you are part of a team and courage is required for the success of Extreme Programming.
Wear different hats as a developer in the team such as −
Architect and designer.
Interface architect/UI designer.
Database designer and DBA.
Operations and network designer.
Sometimes one of the developers has to wear the hat of a tester.
Help the customer choose and write functional tests.
Run the functional tests regularly.
Report the test results.
Ensure the testing tools run well.
In Extreme Programming, the customer role is as crucial as the developer role as it is the customer who should know what to program, while the developer should know how to program.
This triggers the necessity of certain skills for the customer role −
Writing required stories to the necessary and sufficient detail.
Developing an attitude for the success of the project.
Influencing a project without being able to control it.
Making decisions that are required time to time on the extent of functionality that is required.
Willing to change decisions as the product evolves.
Writing functional tests.
In Extreme Programming, the customer is required to be in constant communication with the team and speak as a single voice to the team. This is required since −
Customer could be multiple stakeholders.
Customer could be a community.
Customer is not always the PRINCIPAL (proxies).
Customer can be a team with the following potential members −
End Users, their Managers
The Major Responsibilities of the Customer are −
Write user stories
Write functional tests
Set priorities on the stories
Decide questions about the stories
The customer is accountable for these responsibilities.
In Extreme Programming, the major responsibilities of the manager are −
Define the rules of planning game.
Familiarize the team and the customer on the rules of the planning game.
Monitor the planning game, fix any deviations, modify the rules if and when required.
Schedule and conduct release planning and iteration planning meetings.
Participate with the team while they estimate in order to provide feedback on how reality conformed to their prior estimates, both at team level and individual level that eventually help them to come up with better estimates next time.
Ensure that the team is working towards the next release as they progress through the iterations with committed schedule and committed functionality.
Track functional testing defects.
Track the actual time spent by each team member.
Adapt an ability to get all the required information without disturbing the team’s work. The Manager is Accountable for these Responsibilities.
Extreme Programming is the responsibility of everyone in the team. However, if the team is new to Extreme Programming, the role of a coach is crucial.
The responsibilities of the coach are −
Understand, in depth, the application of Extreme Programming to the project.
Identify the Extreme Programming practices that help in case of any problem.
Remain calm even when everyone else is panicking.
Observe the team silently and intervene only when a significant problem is foreseen and make the team also see the problem.
See to that the team is self-reliant.
Be ready to help.