Page 179 -
P. 179
9 - PROJECT HUMAN RESOURCE MANAGEMENT
9.3.2.8 Additional Tools and Techniques
The following tools and techniques address some additional tools and techniques for developing a software
project team.
• Pair Programming. The practice of pair programming, where two software developers share a programming
task, can assist greatly with skills improvement and learning of good practices. Often, team members of
dissimilar skill levels are paired and pair members are rotated frequently in order to maximize learning
opportunities. This also has the benefit of sharing project information and technical knowledge throughout
the team, thus reducing the dependency on key individuals for their knowledge and skills. In the event that a
team member leaves the project, the impact is not as significant because there are others who understand
the topic.
• Test-Driven Development. The practice of test-driven development (TDD) also helps improve team
competencies through short feedback cycles of experimental learning. TDD or “red, green, refactor”
refers to the steps of writing a test (that fails), then writing code until the test passes, then refactoring
the code for clarity; this process may occur many times each day. By encouraging developers to think
about how code will be tested before writing code, business purpose and usability are considered
frequently, which enhances software quality and user acceptance. However, the main benefit is for the
team members, who will increase their understanding and skills through rapid cycles of exploration,
test, and feedback. These concepts, as they are reinforced in adaptive life cycle software projects, are
illustrated in Figure 9-2.
• Colocation. Software project teams coalesce and become more productive when they are stable and
colocated. It takes time for teams to progress through the Tuckman stages of forming, storming, norming,
and finally to performing to optimize team output [38]. Swapping people in and out of a team triggers the
storming and norming phases again as new team members find their place in the team and the team
adjusts to them.
Part of the storming and norming process for software project team members is learning how to deal
with team conflict, negotiating, gaining commitment for decisions, and ultimately developing a sense
of shared accountability for project outcomes. These are complex issues that impact all projects when
skilled people need to collaborate on building novel solutions; they are particularly important issues
for software project team members. Getting skilled people to work together and harness constructive
disagreement and rigorously test decisions is a primary goal of software team development and a key
skill of an effective software project manager.
Colocation of team members helps this process and allows direct face-to-face communication. Colocation
is not always possible, but given a choice of two teams—one experienced but dispersed and one less
experienced but local—the local team is often the best choice for a software project.
Colocation also facilitates open unfiltered debate. Without the barriers of video conferencing, email, and
telephone, it is much easier to get to the heart of an issue when in direct communication. Empowered
teams and shared decision-making help to build commitment.
170 ©2013 Project Management Institute. Software Extension to the PMBOK Guide Fifth Edition
®