jmcilhinney sort of got it..... let's see if this description wroks, as this is how it works in our world. Ours is a one app, 12-15 developers, hundreds of DLLs and OCXs (don't ask, it'll make my head explode describing how it works.)
A client will call in with a problem with the app. Their account manager researches it and, yup it's broke. They then log a problem ticket and it gets sent to the developers. At some point a developer is assigned the ticket, for simplicity let's say that's me. I get the ticket, run a report that gives me all the details, and I start getting the proper build & component. I open VB, open the main part of the app, then add in the project in question (each screen is an OCX that has it's own project). I run through a test case and figure out where the problem is. Once I find it, I check the file out of Source Safe and begin the modifications. Now, in the meantime, no one else is allowed to touch that file, other stuff can go on in the project, just not in that file.
I get done, run my tests, and it all seems OK. I then check the file in, open VSSm find the project and label it with the ticket number. Then the ticket gets sent to test & QA. Since testing always takes longer, four months later, they finaly get around to testing it. At which point they find something wrong with it. By looking at SS, we can who did the change (me), when (4 months ago) and why (ticket number). By doing a diff, we can also see what change was made.
Ok, now QA should already know who did the change and what the change was since they have the ticket in hand. But 6 months after that, long after it's been released, no one is going to remember that ticket number. And let's say that Joe is assigned to the task. He looks and wonders why something was done a certain way (or at all for that matter). Byt checking the history, he sees that I was the one that made the change, and what the ticket number was. He can then look up the ticket and stop by my desk to ask me about it. It doesn't necessarily mean that it's wrong, but it's simply a case of learning more about the system and why somethign was done the way it was.
Kulrom - if you are working with "bad" developers, then something needs to be changed. it sounds like these are people who aren't being held accountable for their actions (inaction?). And granted, the process is only as good as the people willing to following it, but then they need to be given incentive, which it doesn't sound like they do. Unfortunately I think it's rather difficult to do once things are up and running, and that it's better to implement this kind of stuff early on. But if the team isn't flexible enough to roll with new changes.... then maybe it's time for a little organizational shake up.
Tg
ADDED: Also, I have worked with bad and good developers. And yes, despite the tools, we've had some pretty big cockups, and even the tools in some cases made it worse. But you work around it the best you can.