Since you are developing code I would strongly recommend using a Version Control System rather than a simple back-up so as to manage your source code.
This would give you:
- A back up of the source code.
- The change history of the source code.
- Information about who made which change.
- Information about why a change was made.
- The ability to revert the source code to how it was in a specific point in time, e.g. a specific customer release.
- The ability to rapidly find out when and how a specific bug was introduced.
- The ability to mark your delivered code as generated from a specific version of the source code.
There are a large number of paid and free version control tools but they split into 3 broad categories:
- Locking centralised systems - these require a central server and each developer must check out the file(s) that they wish to change before making the change - preventing others from changing that file. Unless you are working in a highly controlled environment I would not recommend adopting this model as there is a high overhead to managing such systems.
- Merging centralised systems - allow all developers to make changes to the source code and then provide tools to assist in merging the changes. Requires one machine on your network to be running server software
- Distributed version control systems - the complete history is available on every developers system and they can make changes and then merge them. Usually one copy is the "master" that all developers pull & push changes from & to - but if the "master" is lost then any up to date developers copy can be used to recreate it. Changes can be committed directly to a master running on a server or can be distributed between developers as patches by email, etc.
Software for Locking Centralised VCS.
This software is often expensive and requires a server often with high management overhead, because of the intervention needed when a developer leaves file(s) locked too long plus will prevent developers working offline or independently so I would not recommend using it in this case. Examples include ClearCase, PVCS both paid for and CVS (free).
Software for Merging Centralised VCS.
While these still require a central server the management overhead, and tendency to bypass the system, due to file locking issues is less. A very common free system is Subversion (SVN).
These allow the greatest redundancy and can allow great flexibility including the ability of the developer to commit changes while offline and then "push" the changes later. Personally I would recommend the Mercurial (hg) or Git - both are free and popular but Mercurial is simpler to use and includes the ability for any machine to act as a server with a web interface. Both are available for many platforms and have clients integrated into many IDEs.
You will need to get your developers used to using such systems but you will find the effort well worth it.
If wanting to go to distributed repositories and needing a GUI then the following links may also help.