Shineyguy wrote on Apr 2, 2014, 12:01:
If you're not touching something to do with that code, how the f*ck do you break it?
Sometimes I think that it's my full time job to ask people that question.
You don't have just one person doing the coding for a big project, it's more like dozens of them or even hundreds if you count all of the external libraries and tool kits used. And each one of them is busy checking out bits and pieces of the source code, modifying them and then checking them back in. In theory it works perfectly and allows everyone to do their own thing without stepping on one another's toes.
In reality it usually leads to people checking out code and then sitting on it, building their own private branches and then merging about 50% of what they do with the main branch whenever they feel like it, applying last minute fixes directly to the final build without ever committing them to source control, overwriting or undoing changes made by other developers and generally making a mess of things.
So you may launch with a "gold" version of a program, built directly from the main branch, only to replace it with a "fixed" version which comes from one developer's branch, followed by another "fixed" version from a second developer's branch which never received the first set of fixes and reintroduces all of the original bugs, and so on and so on until nobody has any idea of what fixes were applied and where they are now. The only solution to this sort of problem seems to be using Klingon pain sticks on anyone who doesn't check their code in correctly. For first offences the QA testers who discovered the regression problem can perform the ceremony while for repeat offenders you need to call in the end users who were affected by it.