There is two excellent chapters in the [CVS Manual|] titled ''What CVS is'' and ''What CVS isn't''.  Read them for more reference.

!!Version control makes your life harder

CVS is no magical tool that makes your life easier.  In fact, it does make your life harder because it requires self-discipline to work.  You just can't live like a pig in the field anymore - you need to think about others.  For example, in your own code it's quite acceptable to [break the code|DontBreakTheBuild], but when doing collaborative coding with other people, you just can't do that.

!!Version control is no magical tool to solve all conflicts

The CVS book says that ''CVS is no replacement for developer communication''.  However, it does make recovering from mistakes much easier.  Also, backtracking your changes becomes easier.

!!You can't abolish code ownership without version control

You often need to do many small changes to code that is supposedly owned by someone else.  You know, fixing javadoc typos, making null checks, adding debug code, etc.  If there is no graceful way of merging your changes with the code owner's changes, you're screwed.  Diffs against a common version are possible, but isn't it just much easier to let the VC system handle it?

In fact, if you wish to abolish the concept of code ownership (required if you do [merciless refactoring]), you need to have a common code repository, with version control.