April 7, 2009

SCM Processes & Tools: Chicken & Egg?


For those software development teams that are being newly formed or rapidly evolving beyond the most convenient size of one or two team members, often the pressing issue is to put together SCM processes and tools. What sort of workflows should be instituted? Should we adopt the mainline model or the promotion model for parallel development? What about auto-assignment of issues to developers depending upon the issue type? Or should we just get the SCM tool with most features in it, and then tweak our workflows and processes around it? And why should we look beyond the most excellent open-source tools at all?

These were the questions posed to a panel consisting of representatives from several SCM vendors (including yours truly) at a trade show recently. Audience consisted of software developers from a variety of industries. Despite being direct competitors, the panel was mostly consistent in responses. Here is what came out of that discussion:

Q. What comes first: design of SCM processes and workflows, or the SCM tool?

A. While piecing together the SCM strategy, take a step back and evaluate the business of your software development. Determine what processes and workflows work best for you. Then look at a tool that fits in. Make sure to have someone onboard who is familiar with SCM in general, and is aware of what all can be accomplished with SCM. There is lot more to it than version control. While looking at various SCM tools, make sure that the following set of features are available (in no particular order):

  • Ease of use, so that the targeted users actually want to use it rather than trying to cut corners around it.
  • Atomic transactions, so that there is less to worry about the consistency of commits.
  • Good support for parallel development (branching, concurrency, conflict resolution).
  • If your team is going to be geographically dispersed, then there should be good support for distributed development. Real-time project status should be location independent.
  • Versatile support for workflows to adapt to different business scenarios
  • Interoperability, especially with your development platform and tools

Q. Some SCM vendors offer complete application life-cycle management (ALM) solution, while others offer specialized solutions for configuration management. Which approach works better?

A. It really depends upon your specific requirements.Once size does not fit all. Don’t just go with what the vendor has to offer. Define what you need first. An ALM suite offers the convenience of out-of-the-box solution spanning across most of the development lifecycle. However you may find that a solution consisting of best-of-breed products may best meet your specific set of requirements.

Q. Why should I look beyond the open-source SCM tools?

A. Evaluate the open-source tools just like you would look at the commercial tools. See if they fulfill your needs. If you can afford it, don’t let cost be the over-arching factor in your tool selection. It is worth investing up-front in an optimal SCM tool, rather than pay dearly throughout the development process by having the wrong tool in place.

So it is not a chicken-and-egg syndrome after all. It behooves any software development team to have well-defined SCM processes up front, and then find the tool that is right for you.