all bits considered data to information to knowledge


CSM Feature to Price Comparison

If there is a single criterion distinguishing professional software developer from a hobbyist  this would be Version Control system use. And one does not have to break a bank to do it, there are systems to fit every budget...

The following chart put together by Reliable Software plots VC/CSM systems' features against licensing costs in a very persuasive way (take a look at an exhaustive breakdown of features by product)

Another in-depth resource:

Also you may want to take a look at the Wikipedia article for broader spectrum of available products.


Release as if there is no tomorrow

The product releases should be in meaningful increments, each release potentially becoming the last in line. This gives the customer (even if the customer is you) a sense of control, and produces a relatively self-contained system at each release...And a possibility to call it quits at any release time.

Branching, in my opinion, is not for release but rather for investigating alternatives; they will either be merged back into trunk, or abandoned. The last thing you need is multiple versions of the product floating around...Every release should be tagged, and - if there were changes to the environment -wrap up the envirionment (VM), and store it alongside with the product.