I completely agree with you, Steve. At my previous job we used Visual SourceSafe (VSS). We struggled to try and use TFS, but never got it right, so we used VSS the whole the the agency existed until it was closed. In my current job we use TFS, using TFVC.
For more than a year I've been teaching myself to use Git, because of its distributed nature. Git works wonders for commuters who have to travel long distances with no connectivity to anything. I've talked to my boss about the possibility of our switching from TFVC to Git, but it isn't likely to happen. Still, TFVC through the TFS front-end is fine.
But just because one uses TFS/TFVC (or any other VCS) doesn't mean that they use it correctly. That is an issue I struggle with a lot with one of my co-workers. We're on a team together working on a project. My coworker has a tendency not to do a Get Latest (a "pull" in Git terms), so what he'll do is have some old version of code, then down the line he'll make modifications to it and check his changes in, wiping out everything that others have done. Because its just he and I working on this project, he wipes out my changes. My fixes to problems brought up by users. That then results in the users complaining that "it's broken again". Which results in me having to go back and redo what I've already done. The worst time of this was one software module that I "fixed" over and over again for 6 weeks. (I tend to think that when something goes wrong its my fault, so I allowed myself to believe I'd made mistakes for 6 weeks until I finally realized that it was my coworker's fault, wiping out my changes every time he made changes to the code.)
My problem is compounded by the fact that where I work they don't train people on anything. They depend upon them learning by Binging/Googling or watching some YouTube video, and God only knows how good those are.
So, this leads me to ask, under these circumstances what can I do to get this guy to actually learn how to do a Get Latest before he starts modifying my code?