How to Deliver Faster, Better, and More
Teams make software development happen. Yes, the lone person
can do a lot, but effective teams can accomplish more than is possible with
lone individuals. What makes a team effective? Great people plus great
communication. That's it. Whether its communicating or setting goals, resolving
conflicts, building relationships, making decisions, or developing software,
you need communication between capable people.
My son plays soccer. At his age, the boys are playing as a
team, passing the ball, playing positions, etc. The days of the pack chasing
the ball are behind them. While quick to help out if someone gets in trouble,
they know that effective play mostly involves each playing their position and
communicating during the game. Their challenge is combine their team and
individual skills. They need both to succeed.
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 facilitate communication
that helps teams reach their potential. Two keys make this possible:
- A stable environment for individual work. A
stable, low overhead 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 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, low overhead working environment for
- A structured method for integrating completed
changes. The structure makes it clear and easy for users to publish their
completed changes to 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. Since this communication primarily involves completed
changes and then only when those changes are ready, 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.
Effective version control tools must provide stability-enhancing team
- Project management. Project management provides
the framework wherein scheduling the order of changes is determined. For
example, two tasks, each expected to affect the same code, can be scheduled
sequentially to avoid unnecessary merging, while tasks that only overlap
slightly or not at all can be scheduled in parallel. This scheduling can be
done informally, but is important to moving forward effectively.
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 task-level change copying between branches.
SnapshotCM provides team coordination suitable for a variety of teams. For
coordinating changes on a shared branch, SnapshotCM supports both
strict-locking and read-modify-merge models, with full support for third-party
content merge tools, in addition to two built-in tools.
For coordinating changes between branches, SnapshotCM's fast
project-level branching and merging capabilities provide excellent support for
understanding, integrating and publishing completed changes. Most of the hard
details are handled automatically and presented visually, making the branch
merge fast and reliable.
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
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
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.