Question: We have around 3 people working on a project in TFS. Our company set our TFS project to single checkout. But Sometimes, we have 1 person checking out certain files, solution files, etc. Is it bad practice to have multiple checkout enabled and let the merging or diff tool handle the problem if we both accidentally overwrote someone else code?

I've read this somewhere that its all about good communication and allowing the diff tool to handle these problems but our employers suggest using single checkout.

2 questions. Should we enable multiple checkout? If so, how do we enable multiple checkout?

Answer: 
It is true that having multiple checkout disabled is simpler to work with, and it safeguards you against having to do manual merges and perhaps overwrite work.

However, it can also hinder productivity and development, especially on medium to large teams. If John can't get his feature done before Susan checks her version of a file in; some time is going to be wasted.

In my experience, multiple checkout with TFS works really well, and you should not be afraid to use it. The built-in merge tool sucks, but you can get a nice one such as [DiffMerge](http://www.sourcegear.com/diffmerge/) for free. If you make sure to communicate what each other is working on, and each of you make sure to Get Latest after each feature (or every morning), to avoid the possibility of working on stale versions, you should be fine.
I worked on a team of 3+ developers for a long time and shared checkout is fantastic. Your team will need the discipline to *communicate with each other* if they run into merge conflicts that aren't straightforward, but I have experienced nothing but upside in enabling shared checkout.

Make sure that you use a merge tool that supports three-way merge (such as [DiffMerge](http://www.sourcegear.com/diffmerge/)), as these tools make it much easier to determine the intent of each developer's changes.