| |
 Subscribe: Do you
want to be among the first to know when something new comes up? Sign up now to
receive SnapshotCM News!
  |
 |
 |
CM Concept: Optimizing Team and Individual Productivity
People, specifically teams of people, make software development
happen. Teams accomplish more than is possible with single individuals. Yet for
all the positives that result from teamwork, communication and coordination
requirements also go up in such group settings. We examine the sometimes
competing requirements of both individual developers and the whole team. From
the results of our studies, we then present structured methods to balance the
conflicts that most often arise.
My son plays youth soccer. At his age, the boys are
transitioning from playing as individuals to playing as part of a team. Their
challenge is to add teamwork skills to their individual skills. While these
newfound skills of working together will help them out-play their opponents,
without their previously learned individual skills, they will fall far short of
their potential.
In a similar way, software development teams benefit from both
individual and team productivity skills as well as supporting tools. By
coordinating individual changes and facilitating a balance between individual
effort and team coordination, team productivity tools help teams reach their
potential. Two keys make this possible:
- A stable environment for individual work. A stable
environment allows a developer to work productively and to stay focused on the
task at hand. A constantly changing environment, on the other hand, will
distract, frustrate and sap the productivity of your developers. Without
stability inside the tool-provided environment, many users will simply work
around the tool to get their job done. This too, however, comes with a price
tag and may lead to further instabilities down the road for not only the user,
but also others on the team. If a version control tool is going to be
effective, it must provide a stable working environment for its users.
- A structured method for integrating completed changes.
The structure makes it clear and easy for users to publish their completed
changes for use by their team. The structure also makes it clear where to find
changes that have been completed by their teammates so they can integrate them
into their own work. And since only completed changes are involved and
then only on demand both individual and team stability are enhanced. The
structure also helps to reduce not only the cost of coordination, but the
chance that a change will be inadvertently lost as well. Effective version
control tools must provide stability-enhancing team coordination features.
Standard SolutionsMost tools provide a stable environment
for individual work through a user-private workspace. A private workspace with
a team-shared version branch adequately supports small changes and small teams.
In a shared branch, a concurrency mechanism coordinates simultaneous changes to
common files so that no change gets lost. Common concurrency mechanisms include
strict locking, concurrent locking with merge, file ownership where only a file
owner can make changes and the infamous brick (he who has the brick may make
changes).
Shared branches have the limitation that intermediate work
cannot be checked in, even for use by only a subset of the team. To compensate
for this, a private branch provides the necessary isolation and control, but it
also adds to the complexity of publishing the completed change. Most tools
provide a mechanism for merging changes between branches, but all too often
such merging must be done by hand, one file at a time. The better tools guide
you through the process for a collection of files, while the best solutions
provide project-level views and project-level change copying between
branches.
SnapshotCM's Solution SnapshotCM
provides team coordination suitable for a variety of teams. Its lightweight,
strict-locking and concurrent workspaces provide two powerful means of
coordinating changes on a shared branch (snapshot). What s more,
SnapshotCM's fast project-level branching and merging capabilities provide
excellent support for publishing and integrating completed changes.
SnapshotCM's release graph and flexible development hierarchy
provide a structured method for integrating completed changes. In addition,
SnapshotCM's project-level branch compare-and-merge capabilities are fast and
intuitive, both in identifying the changes to copy and in automating the
process.
Whether you have a small team on a shared branch or a large team
with many branches and sub-teams, SnapshotCM provides the structure you need to
balance the competing needs of isolation and coordination on your team.
SnapshotCM delivers the essential tools to enable your team to reach their
potential.
Your SolutionHow does your solution compare? Do you
currently experience problems with lost changes or with intermediate work being
checked in? Do you use branches? If not, is that because they are too hard to
use even though you could benefit from them? If you do use branches, how easy
are they to manage? To understand? To merge? How many branches do you currently
have?
Just as a soccer team learns to work together, thus leading to
improved play, so too will your team's performance improve as you use the
advanced team coordination features of SnapshotCM. Check us out by taking
advantage of our free evaluation. Go to
http://www.truebluesoftware.com/ for all the details. |
|