| |  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 ProductivityPeople, 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. | |