Mike over at Sideline asked an interesting question and it is one we have debated before. The question was, “Do you use source control”? I believe using source control is one of the practices that separate hobbyist from professionals.
The first programming job I had out of school was in a three-person shop. The owner, who believed that “GOTO” made your code more efficient, thought it would be a good idea to introduce source control (using Visual Source Safe). His reasoning was because the software we were developing was so valuable it was important to keep the source code someplace where it was encrypted and the employees couldn’t steal it (seriously, I think he was insane). I’m lucky I escaped with the little amount of sanity I have today.
Regardless of my previous employer’s motivations for using source control like Mike said most developers would agree using source control is a no brainer.
� It allows you to share code amongst a team
� It allows you to find out who made a change.
� It allows you discover what new functionality has been developed in other areas of an application (i.e. a common library)
� If all else fails you can rollback to a previous version
� If source control is being used it is probably being backed up (not usually the case with individual workstations)
So Mike’s second question:
Which makes me wonder about source control. If it’s so valuable, then why don’t most “good” developers use it at home?
“Good” is relative. I have been in the industry long enough to know what a command prompt is. Surviving this long could be a complete fluke but for the sake of argument let’s say I’m “good”.
In the past 8 years I have used source control on home projects twice. Both times the motivation was similar. I was working with other developers outside of work and I was interested in trying a different source control program (first CVS and more recently SubVersion).
On all the other projects I have worked on at home they have mainly been geared around learning a new language, trying out a class I never used before or writing a small application to work through a problem. On these projects:
� I work alone
� I don’t care about changes between file revisions
� I’m the one who wrote the code so I should understand it
� I will never rollback a file on a personal project (I only look forward never back)
� I back up my source code on a “fairly” regular basis
At home when working on a project for myself I’m a hobbyist not a professional. If I was a professional at home I would have to finish what I start and have to find a way to get paid for some of this.