We need something where we can check files out, edit them, check them back in and then build from the them.
Something like Google Docs where we can edit the same code at the same time would be a ideal.
We are both using Visual Studio 2010.
As I stated in a comment to your question, I'm very curious for true collaborative editing. I did research some time ago but most solutions just didn't meet the standards: either they were plain text editors with syntax highlight, had insane costs or were unavailable cross-platform (like SubEthaEdit...)
Until I stumbled into Saros! It's a neat Eclipse plugin, so it might be easy to integrate with your current workflow. You can watch their demo video, it's quite impressive. It's very well thought for a true collaborative editing environment and has some very well-though key features. It supports an arbitrary number of participants, full project synchronization, real-time editing with markers and highlighting (ala Google Docs), following your partner's view, several participant-awareness methods and much more (you can even share your screen using this plugin.) And apparently it integrates with many other Eclipse plugins!
I have yet to test it myself, but it's one of the few projects still maintained and looks very promising. Give it a shot and let me know (read these guidelines before.) I promise I'll come back here and post my impressions as a comment when I try it myself.
EDIT: Also, as Gustavo pointed in a comment, Cacoo might be useful too. It's an online collaborative tool for drawing UMLs (actually, any kind of diagram.) Saros supports a whiteboard, but there's nothing like a diagram tool if you want to avoid clumsiness.
"we just need something where we can check files out edit them and then check them back in and build from the same set of files"
Use version control; a version control system (VCS) is exactly what you described, with the added bonus that it stores a history of every change anyone has made. There are lots of popular version control systems out there:
I don't use Visual Studio personally, but I am completely certain that Visual Studio has support for all of these version control systems.
For my team, we use three programs depending on what we need to work on:
To coordinate the efforts of different members (who work at different times) we use Assembla's ticketing system. This way everyone is updated on the status of the entire project or a particular avenue of their choice. Also use Skype/Google Hangout/Face-to-face communication to make sure everyone's on the same page on at least a weekly basis.
This method typically works when a team consists of 3-5 people who have established roles (programmer, artist, modeler, designer etc.). If this doesn't work, try other methods or combine working aspects to make one of your own. Good luck!
Sounds like you want either drop box, a version control system, or both.
Dropbox is the most convenient. Just make your changes and save and Dropbox will sync over the changes on your friends machine. Don't think 2 people can work on the file at the same time though without overwriting each others work.
However, I recommend you use a version control system Subversion, GIT, and Mercurial are currently the big 3. There are a lot of advantages to using a VCS: including the ability to automate backups, rollback changes, and checkout your code on any computer that has access to your server.
Having used the 3 I mentioned I found Subversion the easiest to get started with and Assembla allows for free private SVN or GIT repositories.
As mentioned in other answers, a VCS is the way to go. Git is my favourite, but that could just be because it was the first one I used.
I found this online book very helpful for learning Git. http://progit.org/book/ Whatever VCS you go with, it's worth it to dedicate a few hours figuring out how to use it.
Another thing worth mentioning - VCS are great for source code (or any text files), but storing images and sound files can bloat your repository unnecessarily. Some people recommend a separate repository for this, but I find Dropbox works well for these kinds of resources.
For a school project, we used a public Dropbox folder, and used this script to keep our resources up-to-date https://github.com/dc2011/td/blob/master/tools/extrafiles.sh
It checks the md5 hash of the file in Dropbox against the hash of the file already on disk (if it exists) so that only new or changed files are downloaded.
As many have mentioned, you need version control. There is a nice free offering from FogCreek software (you have them to thank for providing stackexchange which makes this site possible). It is called Kiln (built on top of Mercurial) and it integrates with a nice bug/feature/time tracking software product they have built called FogBugz. For a team of 2 developers they provide free versions of these products (and host them for you). I use this setup for my own projects and the paid versions for all the software products I work on for my employer (we have a much larger team of developers, so must use the paid versions). Worth a look for sure.
If you do decide to use these, here are some good tutorials or useful links to get you started:
Tools that my team uses for smooth collaboration:
•GitHub, which if you have a little bit of money is an extremely cheap and easy way to host all your source. This is the version control platform that most people on here have been talking about. Think of it as a Pastebin account that exists on your local hard drive and is updated whenever any of your team members makes changes. Hosted projects are called depositories. There are loads of free Git clients, some of them integrate right into Windows to make keeping your depositories clean and up to date.
•Google docs for game design documents, ideas, concepts art.
•Occasional use of DropBox if one of us needs a specific asset or script...this is however rare and we prefer to work through GitHub.
If you ara using Visual Studio, the best option is Team Foundation, is from Microsoft and is the best Version Control that I know, the negative thing is that you need a server, sql server, and the team foundation server to run in the server (the client is already with visual studio), if you have the chance, try it.
For virtual pair programming, I use this setup(coordinating everything over Skype):
Now you and your friend will see the exact same terminal screen. But you probably want the ability to work together outside of your computer, right?
Now you and your friend can work on changes independently, and push them to Bitbucket when you're ready.
This won't let the both of you edit together in Visual Studio in any nice way, but you'll be able to edit the source code itself if you're pairing on some new feature or debugging a problem. As long as you push your changes afterward, your friend can open it up in VS.
I would suggest Bazaar version control. It's small, practical, very good for small / one2few men projects. Git and SVN are used more often for larger projects/teams. Bazaar has in development VS plugin, but for you it doesn't make much of a difference using it outside VS. It's really easy to use it once you get to know it and initially set it up. It has few more plugins that get handy.
Lots of good suggestions already but if you want to go for a low-tech and simple solution, this works for me when I collaborate:
Use comments at then head of each script to keep track of when it was edited, who by and when ie:
Vers Date Author Note 1.0.1 12/10/11 Paul Added a new boss to level 12 1.0.2 22/11/11 Frank Fixed the bug introduced by Paul
A private forum or better still a Wiki is a good way to communicate ideas and keep everyone up to date with progress.
The ideas given already are better than this solution but this is very easy to implement with minimal time investment, for a small project with just a couple of people working together it might be sufficient for your needs.
Having worked for a large global organisation I can honestly say the amount of time lost due to red-tape surrounding their version control software (MKS) is a real pain!