Part of managing software development is dealing with the challenges that arise. Delivering software requires overcoming the challenges, or at least mitigating the attendant risks during the development activity. Generally, organizations work with a constant level of challenge. When one challenge is overcome, the organization will take on a new challenge.
Capability
Can you, or can your team, effectively manage the changes and/or configuration of your project? It's hard to diagnose a lack of capability, because the team members are too busy dealing with the symptoms-each problem that comes up has a simple, direct solution. As the saying goes, "It's hard to remember that you set out to drain the swamp when you're neck deep in alligators." But if you are struggling with failed builds or missing source code, or if the QA department is wondering why a bug they marked as ‘fixed' has reappeared in the product, or if you are poring through someone's email archive looking for information that should be available from the repository, then you have a capability problem.
More likely, though, is that you have some basic CM up and running, and you are being challenged by a new project. Maybe there is a new technology that needs to be integrated with your build system, or a new office that you have to support. These cases are easier to detect, since they occur as a result of a change to the project itself. The root cause of the capability challenge may come from another dimension listed in this series, such as geography, technology, or schedule, but if you cannot respond or don't know how to respond, then part of the problem is capability.
Beyond just CM capability, other capability challenges may impact your CM team. If management decides to outsource some or all of your next project, you will face
capability issues-the new team may not know how to use your tool suite, or may not know the technologies your team uses. They certainly won't know the internal details of your project. Depending on the structure of your project, you may find that you have hardware capability issues-not enough network bandwidth, not enough build capacity, not enough disk space. Knowledge acquisition is generally simple-spend money on training. Likewise, hardware capacity problems are solvable with cash.
Most other capability challenges are part of a larger problem, likely one that falls mostly along another dimension in the list. If executive management decides to enter a new market, you may face regulatory or human language issues. Restructuring, mergers, and joint development can lead to location of responsibility, culture, geography, and knowledge retention issues. Not all ‘can we?' problems are capability problems. But nearly all problems will have a capability component. Geographically distributed development calls for networking multiple servers; adding a new technology requires training for the developers; and regulatory compliance requires updating or adding formal processes. If you don't already have them, you have to acquire the resources to solve the problem.
Finance
Financial constraints are a given in any enterprise. Financial challenges arise when an enterprise attempts to reduce or control costs, or manage expenses. Usually SCM involvement in financial challenges is second hand, responding to the first-hand actions taken by management. An obvious example is pressure to reduce headcount. If the SCM function requires one full-time worker for every 30 developers, then a project with 45 workers might have two SCM engineers. In a cost-reducing attempt, management may try to eliminate one SCM specialist. This is an example of converting one type of challenge into another. The financial challenge (payroll too high) is converted into an efficiency challenge (need more work from one worker). Financial challenge is unique in being directly convertible into any of the other forms of challenge. Similarly, you can convert nearly all other challenges into financial challenges by throwing money at them. (The
"financial challenge" part comes from realizing that you can't afford to throw money at them.)
Many of the other challenges listed will actually originate as financial challenges. If management outsources some parts of the project, the decision to do so may have
been driven by financial challenges at the enterprise or project level. If you are stuck responding to events, by all means refer directly to the discussion of the particular challenges you are facing. But if you can see the financial challenge coming, you may be
able to suggest alternatives before a particular choice is made. If your organization is better able to deal with schedule challenges than with geographic challenges,
perhaps you can convince management that a slow release cycle with a smaller staff would be better (and less costly overall) than an experiment in outsourcing.
There is no direct way to address financial challenges via SCM. Instead, you must first convert the financial challenge into a challenge on some other dimension-increased efficiency, outsourcing, a slower development schedule (perhaps with many interim releases), etc. What you can do, and should do, is ensure that whoever is making the decisions is aware of the strengths and vulnerabilities of your team. As mentioned above, it is far better to convert a financial challenge into one that your team is well prepared to handle.