In his CM: the Next Generation series, Joe Farah gives us a glimpse into the trends that CM experts will need to tackle and master based upon industry trends and future technology challenges.
In his CM: The Next Generation series, Joe Farah writes that software configuration management (SCM) can be a daunting venture for a small team. It seems that many solutions require a lot of effort and money, but this is not always the case. This article looks at what a small team really needs for CM.
Software configuration management (SCM) can be a daunting venture for a small team. It seems that many solutions require a lot of effort and money, but this is not always the case. Let's look at what a small team really needs for CM. Some of these requirements may seem counterintuitive at first, but on closer inspection they will make a lot of sense. This is because what seems like a more comprehensive requirement results in a more comprehensive saving of resources, which makes a small team more competitive.
An "obvious" first approach may be to start small and grow. While this may work for complex CM and application lifecycle management (ALM) solutions, it can be a recipe for disaster for the following three reasons:
1. It's hard enough starting small. Repeating this process multiple times as you grow, with more and more constraints and tool integration effort all along the way, is not something that a small team can absorb. In the end, the team not only starts small but ends small.
2. Small teams must compete either in an internal (i.e., corporate) or global marketplace. They need to deliver high value at a low cost. CM exists because of hard requirements, which a team must meet regardless of the requirements’ being big or small. A team operates at a huge and dangerous disadvantage without the right tools. A larger team can shift resources to cover holes in their CM process and tools, but no such luxury exists for a small team. To compete, the small team really needs all its ducks in a row and needs to do better than a big company’s big team, especially by focusing on automation.
3. Starting small and growing is an expensive proposition. At each step, you dish out budget for tools, process, and integration. That budget becomes a significant part of the small team’s expenses. Full ALM solutions are cheaper, even if you don't initially use the full capability. At least the integration is complete, and the price is typically far less than the sum of all the solution’s individual parts. Most vendors will recognize the budget constraints of small teams and will adjust pricing and payment schedules to suit them.
You may have read this story before: A smallish team in a new company of about thirty people wanted to start CM by doing everything right. After getting some startup funding, they went out and looked at the biggest CM tool on the market—very expensive! But, they were going to do it right. After trying to customize the solution to meet their needs, the company went belly up in less than a year. No doubt the hundreds of thousands of dollars they spent on CM tools could have helped them stay solvent.
Out of the ashes, a new company was formed by a few former executives and employees. The company’s founders looked back on their previous experience and decided to use a much less expensive and less known ALM solution that one of the founders was somewhat familiar with. After looking at the evaluation, software, and documentation, they called the vendor for a purchase.
In three days from the point of arrival, they had implemented the solution, trained the CM staff and developers, fully captured the data from the original company, and completed customizations well beyond the level they had achieved at the old company. The cost was much less, with no months of consulting and a much lower priced toolset. They were happy and used the tool for many years without any further training or customization costs. Furthermore, they never needed a full-time CM staff. Even when they deployed their multiple-site solution, they rarely needed as much as 10 percent of a person’s efforts to perform the functions of CM manager.Requirements of CM for a Small Team
This vendor clearly understood the requirements of a small team, as demonstrated by its ability to provide a functional solution in a short time that exceeded the team's expectations, and all of this on a low budget.
The following is a list of requirements of CM for a small team:
1. Small budget for tools, training, customization
2. Limited resources for CM administration and internal training
3. High level of automation
4. Ability to compete in function, quality, and process certification with the big guys
5. Full ALM capability to start so that future solution swap outs are not necessary
6. Easy process tailoring at a low cost and effort so as not to distract from team’s focus
7. A strong process starting point so that tool use can begin quickly, while tailoring is minimized
8. The ability to rapidly load in existing data
9. A solution that runs on common platforms, without further investment
10. The ability to evaluate the potential solution in under a day (total effort)
11. High reliability and availability, with minimal backup/recovery effort
12. Easy to learn and easy to use
These are twelve of the top requirements for any small software team involved with CM. In fact, it's not a bad list for larger teams, too, though some of the requirements may be more applicable than others.
Making the Right Choice
The requirements are clear, but how do we make the right choice? Small teams typically have small budgets. People tend to go with freeware (e.g., open source) at the start, but that's not usually the best solution. Open source solutions typically provide source code control with a problem/task-tracking add-on. This is at best a partial solution that is limited in functionality and requires significant effort to customize. There are providers out there that can help a small team get going for a very low licensing cost—hundreds of dollars or less. And small teams can obtain some solutions, like Perforce and Neuma's CM+, at even lower prices and, in some cases, for free.
Here are some guidelines to help you make the right choice:
Install the CM tool yourself: Don't evaluate it on a pre-canned, virtual machine unless you're actually planning to use it in the cloud, and don't let the vendor install it. If either of these is necessary, it's probably too complex a tool for you. The installation effort is generally typical of the ongoing administration effort. You might start by asking the vendor how long it will take to install.
Ask the vendor specific questions regarding resources: You will want to know how many people you will need for CM administration and how much effort it takes to set up and perform backups. How many days will developer, CM or build manager, and administrator training take? Ask the vendor how often you will need to upgrade the tools, how long upgrades take, and to estimate the amount of down time and recovery effort you’ll face each year.Put your own data into the tool as part of the evaluation: Don’t only use source code. Also use problem reports; projects, tasks, activities, or stories; build definitions; and older baselines that you still need to support. Again, start by asking the vendor how long this will take.
Discover what part of the ALM process the vendor covers: What are some of the solution’s key features? Does it cover source code control, change management, problem tracking, activity and project management, document management, test case management, test result management, build and release management, customer requests, requirements tracking, quality management, and executive and high-level management support?
Gauge the tool’s difficulty level: How easy is it for your developers, CM managers, build and release managers, development managers, high-level management, verification team, product manager, and technical writers to use? What will they like and not like about the solution from an ease-of-use perspective?
Also, ascertain how easy or difficult the tool will be to administer. How easy is it to move from Unix to Windows to Linux and back again, or can you have clients and servers across platforms? Does it run in the cloud, and why would I want my software in the cloud? What are the chances of an administrator’s making a big mistake, and what is the recover process? Will you have to restrict access during backups? Ask the vendor how often customers have problems where code or data is lost or difficult to recover. You might not always be a small team, so find out how much effort it takes to scale up to a medium or large team.
Crunch the numbers: Find out how much you can plan to spend on licenses, maintenance, support, consulting, and training both up front and over the next five years, as well as how much you’ll need to spend on a support platform (hardware, database, etc.). Ask whether the vendor offers any deep discounts for small teams.
See if it bends: How easy is it to tailor the solution to your needs or to change it as your process changes? Does it have a strong out-of-the-box starting point? What customization or tailoring can you do yourselves, and how much training is needed? Find out how much effort it will take to get the tool working exactly the way you want it—or at least very close.
Small teams don't have a lot of time to talk to a lot of vendors, so I recommend that you follow these guidelines when talking to vendors. Add your own questions that are particular to your team (e.g., How well do you support agile development?). You should be able to narrow down your vendor selection to two or three based on their answers.