This question may seem backwards to all logical reasoning, but I encountered a team member who was working on a side project out of the main tree, and had decided ( rephrased )
I'm the only developer, we don't need version control, that's stupid
Now personally, the idea horrifies me, and I can't for one justify it.
So now my stance is clear, I want some legitimate answers why somebody can excuse themselves from using version control. The default answers will of course be "there is no excuse".
Not what I want to see. If you can't see an excuse, then just don't post. ( Feel free to downmod excuses others post that are illegitimate/bad and give reasoning )
There are no good reasons not to use version control. Not one.
I can think of one:
I'm the only developer, we don't need version control, and I'm stupid
A delightful mix of laziness and incompetence.
An anecdote I heard one time in regards to version control:
A younger programmer asked an elder about his code and his coding style, and how the older programmer would do certain things. The older programmer said 'Let's take a look at your code', so the younger took out his laptop, opened his editor, and showed him.
The older programmer looked at the code, thought about it for a bit, and then started editing it. He deleted the class internals, leaving only the structure, and then rearranged the structure, saying 'Here's how I would do it to make it more efficient and readable'. After he was done, he saved the file and gave it back to the younger programmer, who was ashen-faced.
'That... My code is gone!' said the younger programmer. 'But you have it in version control somewhere, right?' asked the elder. 'N.... no.' was the reply. 'Well then,' said the older, 'now you've learned two lessons.'
Excuse for not using source control:
"The only source control system I am allowed to use is Visual Source Safe."
The sense of danger gives my programming an edge
you want to leave no evidence :)
Possible 'excuses':-
"My code is buggy, unstructured, and unreadable. It's simply not worth trying to keep"
"Management will understand if my project slips by six month because I accidentally deleted something I shouldn't. They do it all the time."
Feel free to add your own...
Visual SourceSafe ate my dog.
You hate your company and want to see them fail.
"For the first 10 years of kernel maintenance, we literally used tarballs and patches, which is a much superior source control management system than CVS is" --Torvalds
If you've got quick/easy/automatic backups, you've already got 95% of what most of us use VC for. Somebody with a local DVCS repository on his HD but no backups is actually in much worse shape.
Using a VCS does have a real cost, and it's usually a small one but not always. Every VCS I've ever used, I've had days where I had to fight with it for hours just to get it to do something that should have been simple.
To those that think "There are no good reasons not to use version control", where does it end? Must every project have 100% unit test code coverage? Must every project have code reviews? Coding standards? A complete functional spec?
There's a whole spectrum of programming projects in the world. Not everybody is writing code for the space shuttle. Sometimes being able to diff my code from 11:00am and 11:30am is simply not that important.
Some are merely managing globally-distributed teams of thousands writing operating system kernels.
How about...
It's not really my code in the first place. I just copied and pasted it from a web tutorial. If I lose it, I can just find that web site and get it again. Besides, it doesn't work, anyway.
Excuse:
A side project is a prototype/throw-away exercise so to see how a concept or idea works in code. The code won't be kept around after learning from it.
Small, and by small I mean less than a half hour of playing around in a new project, just to try out a method, run a quick test on a service, answer a forum question, etc.
I have literally hundreds of these tiny projects that I've done over the years. Most of them are just a way to try something out in a clean environment, before importing it into a larger (and source controlled) project. Every once in a while I go through the folder of these and delete old ones that I know I dont need anymore. Typically some of these apps last on my hard drive less than a week.
"I am the 'Pantless Prima Donna'! I need none of your mortal tools! I am infallible. Version control is only for people who expect to get it wrong the first time!" :-P
Everybody is giving some variation of "there is no excuse" or "well maybe if you're stupid!", but this seems entirely inconsistent with what I see other people actually do.
For example, how many people here have all your email, digital photos, web browser bookmarks, and system configuration in a version control repository? I know some people do (hi Joey!), but most people I know, even most programmers, don't.
The comeback is probably going to be "well, I have backups, and I don't need to track changes to email, or branch my photos, or ...". Great! So let's try to extrapolate from that to when a reasonable person might think that version control is unnecessary:
That seems like a good starting point.
Of course, I want to track everything in VCS, but due to the above issues, it would take more effort than it's worth. I wish programs I used would store data in formats that made it easy to use a VCS, and I wish VCSs were better about tracking data which isn't just "all text files below a certain folder". (Text files were something Unix got right! Sadly we've got some kind of AT&T-MIT-Microsoft-Xerox hybrid architecture going on, which doesn't let the best of any philosophy really shine.) That's just not the world we live in, for better or worse.
"In my free time, I like bondage, having hot wax pour in my mouth, and sticking forks in my eyes. I'd like to bring some of my hobbies into work, but as the work council objects, I had to find an alternative"
That's about all I got? Since I told myself off for not using SCC at home (and losing all my previous code) I have NEVER looked back. I use it all the time, I check in all the time.
Why the hell would you not like to be able to:
All I got is "my dog ate my head".
I can't find a version control system which works with punch cards.
No excuses. Even a single developer will benefit from having his/her code under version control.
You don't want to know why you made a certain change 3 weeks ago because theres NO way you could ever want to be able to simply check the change log, and you love pain and misery and prefer to do things the old-school way, with comments and pages of commented code.
You also like modifying code and having bugs you fixed earlier come back, and you like not knowing why.
You like the sense of "mystery" and "excitement" it adds to your life.
There are two main parts of version control.
For part 1 there is no excuse I can think of. Part 2 however, there are situations you can argue against it since the way in which you're coding renders it useless.
I for example spend four weeks on a project where 'code' was stored in a binary format such that you couldn't diff or merge or do any of that good stuff.
I also spend a much larger amount of time (shudder, I don't like to think about it) 'coding' on a project which was essentially configuration into a web application which pushed stuff into a DB we didn't control. No source control possible there either. Or backups of old files.
Oh, how fun that was..
ClearCase -- this is a very good reason not to use source control ... (but I used the demo version of Perforce instead :-) )
"I'm the only developer, we don't need version control, that's stupid"
That's putting your job on the line, period. Suppose his computer DOES crash, all his work is gone, so in effect, this person hasn't worked at all in the last few days, weeks, months (years???). Is slacking off like this tolerated in your company? I hope not.
Not using Source Control is like having this code in the initialization routine of the application you're developing:
if (Random(1234567) == 0)
{
DeleteSourceCode();
}
Would you bet on that never to happen?
...maybe if they're holding a gun to your Dog's head?
But, then I think you have bigger problems.
You may not want version tracking in a highly classified, highly paranoid environment, where who/when/why and what-came-before, are exactly what you want to expunge.
(I have never actually encountered this, and I have worked on classified projects.)
Think CIA black op, or presidential campaign.
Some might think that it's job security. I disagree, but I've seen that line of thinking manifested that way.
I see only developer's personal gain of you being tied to him as he may be the only one to remember changes within versions.. if i got the question right ^^
It's just an "Hello World!" application. We don't need version control for that!
Your VCS system is a hassle to use. Too much trouble for this small project
If it is a one off thing which is going to be thrown out after an hour, I would not use a source control.
But unfortunately all one off things I am asked to do in my company magically turns around after a week and I am asked to fix something in the (lost?) code and make it a part of the project.
To me this seems like repeating the same (very popular) topic as in:
Source control system for single developer [1]
[1] http://stackoverflow.com/questions/45400/source-control-system-for-single-developerVersion control makes most sense when there are versions to go back to. For very early in a project, and for throw away programs, there usually isn't anything to go back to. I usually only check stuff into version control once my program does something
Perhaps you use Plan 9 operating system. If I were using that OS with its native filesystem, I would not need source control.
My boss won't let me? (true story, I do it secretly :S)
I've got one... seriously:
I can re-create all the code that was not in source control faster than anyone can retrieve it from source control.
It can and does happen to very very small amounts of code.
There is only one version of my code. Just one.
I maintain a complete version history of each file, within the file itself. I always comment out old code instead of changing it, that way I have a visual history. Example:
// float calcInterest(float value) {
// return 0.0125 * value;
// }
// never return a negative amount 2009-05-01
// float calcInterest(float value) {
// return Math.abs(0.0125 * value);
// }
// increase in interest rates 2009-06-03
float calcInterest(float value) {
return Math.abs(0.015 * value);
}
The beauty is in the simplicity!
This project is for my personal use and I don't care if I lose it.
Hey, leave me alone, I'm not a programmer, I just came in to repair plumbing...
For me, reason #1 is the following:
A bad behavior without consequences, is repeated.
I wrote about the subject on this post: Why developers don’t use a Version Control System (CVS, SVN, Git, Hg, ...)? [1]
All examples are from real people, but changed a little to avoid
[1] http://tales-of-agile-adoption.blogspot.com/2011/09/why-developers-dont-use-version-control.htmlI think the best excuse for not using version control are
A) Ignorance: Not being aware of such a thing.
B) Not being able to figure out how to set it up and having no one to show you how!
vim has a recovery mode right?
I have actually heard a good answer to this question.
I did not know what it was, and I do not know how to set it up
If you are new to programming, you just would not even know source control existed. And all the tools out there, have a learning curve involved. Those sorts of programmers at least have an excuse for not using source control.
But still, always use source control.
Real men don't use source control.
Not sure if someone else has already said this, but perhaps:
"I'm working on gigantic binary files (raw HD video footage, etc) where the structure changes drastically when you save it. This means diffs provide no extra compression, so each revision would take a ton of (read: gigabytes of) space."
If you're talking about source code there are no excuses. Git, Mercurial or Bazaar would take a day to learn and a tiny amount of time to use, and they would pay for themselves a hundred times over the first time something went wrong.
Because I trusted Bill when he said,
640K ought to be enough for anybody.
.....and I just ran out of space...
masochism
There is truely no single good reason.
I even use source control for private use, e.g. when coding just for fun, trying out some new technology, or something else. I would even use version control for all other files I've got, but that would be quite of an amount of storage and it wouldn't make sense mostly for binaries.
I think it would be a great excuse if you were clinically insane.
you're the best coder in the world (and all your teammates as well) - then it's just needless
I thought it maybe worth adding quickly that if you're on a strict short term deadline and don't know how to use source control it's probably better not to go through the paces. yes it's easy to use, but it may not be worth it in the long run. (This happened to my brother recently as he go thrown in to a programming role he probably wasn' prepared for).
You don't need version control if you are Chuck Norris, else its definitely required!
I have avoided checking my code into VCS systems many times.
First, if the project is disposable/only used once, the last thing I want is to have a project in source control where years later, I can't remember its purpose. You might respond, "That's what documentation is for", but that would be a disengenuous comment because why would you take time to document a disposable project unless you have a lot of time on your hands?
The same is true for prototypes. If a prototype fails to prove itself valid then it is disposable. However, if it proves itself true then I would agree that it is important to check it in.
If you're worried about backups, then put the code on the network server so it's backed up.
Consider the main functions of VCS: 1. Collaboration and 2. Change management. If you're the only developer, there is no need to collaborate, and if it's a disposable project, there's no reason to manage changes.
Your post would be better off describing the purpose of your co-worker's side project especially since it's off the main tree, otherwise, you offer a generalization that leads to the many overly cynical/critical comments that have been left.
Good excuses include:
If your IDE has source-control like features, you may be able to get away with no source control... Netbeans, for example, has a "local history" feature that will keep a history of every save you make to your project files. You can perform diff's and reverts back to local history much like source control. For a solo developer, this may give them the basic set of features they want out of source control.
If your choice is between Visual Source Safe and manually performing version control (i.e. manually making snapshots via the file system), I would opt for no version control... VSS to this day still has reliability problems (at least for me).
Even with a version control (or local history), you still need to backup... I've seen way too many developers keep their CVS/SVN repo on on their development machine (often a laptop), or check-in to a server with no backups...
All that said, I always use version control... and my paranoia extends to having redundant backups of the source control server as well as offsite backups.
The only reason I can think of why a developer who is aquainted with source control, and works at a company that uses it for other projects, would want to keep a project separate is that he's somehow ashamed of it. He doesn't want people to scrutinize his code, or he doesn't want others to know the details of the project.
If the given project is of such minor importance that completely breaking it or losing it forever would be of essentially no consequence.
Note that a program used by more than one person will almost never satisfy that criteria.
If I had enough reputation I'd mark you down for the title. You made my hair stand on end reading that title!
You hate your job and want to get fired.
Or maybe your company cannot fire you and they can only "let you go" which means severance package?
Not exactly an answer to your question but I like these stories from The Daily WTF [1] in regards to Version Control.
[1] http://thedailywtf.com/For tiny program or projects, used just as a proof of concept. Not using version control saves you the trouble of creating a repository and configuring it.
I thought long and hard, even looked at my own situation at work. I just couldn't think of a good reason. I tried, I really did...
If you a masochist that loves to re-write and redesign applications, then I would avoid using source control.
Unless of course you have an actual job in software development, in which case it's unlikely you are a masochist that loves to re-write and redesign applications.
False security: If I delete my local source, assuming that it is in the SCC, and the server hosting the SSC crashes, the whole thing is gone.
You MUST always use source version control, specially if your are part of a team. Not in a million year should this be left out of any software development project!
excuse:
I don't have time to set up / learn how to use version control because I'm too busy to rewrite code that I accidentally deleted.
I'm too lazy to learn how to use it?
"There is no VCS on my iPhone/Blackberry/other small device/Apple ][, where I do all my development."
On the serious side, indeed, starting from scratch to learn to use such system can be hard, even more if delays are tight, but it is time well spent, like writing comments or making unit tests...
I admit it took to me some time to decide to learn to use SVN and to install it (I used other VCS at work, at least!). So either I did changes and sometime regretted not to be able to go back to a state where it worked; or I used primitive means like copying a state of a source in another directory or to some archive or to a name like MySource-1.1.c...
Kludges, of course, which bite later.
Of course, then, you have to discipline yourself and commit on important steps.
i don't need to revert back, so i don't need version control !
The only time you need to use version control is if a) your code is important, and b) you are fallible. If either of those is false, then no, you don't need version control.
Source code is for wimps
I tried installing VCS and it wouldn't install. I tried building it from scratch and the build failed. It was an earlier version of VCS, and it ran on an earlier version of an operating system and hardware that I no longer use. VCS had all of these dependencies, and shared libraries that it assumed were already installed. I could not get access to the older operating system and hardware anymore. I was basically locked out from accessing my source code because I couldn't run VCS anymore. VCS was no longer maintained by anyone. I wish I had a backup of my source code even without the older versions.
So, I wrote a command called ci (copy it) which would automatically increment a revision number, prompt for a comment, and tar my current project folder with the new revision number and include the comment in a little text file named CHANGES in the same project folder.
The Pragmatic Programmer [1] actually makes the case for using cvs for all config files on your system. I've not yet gone that far, but it's on my list.
[1] http://rads.stackoverflow.com/amzn/click/020161622XHow about this
I don't need version control because I have incremental backup system.
I am an ABAP programmer... :)
Excuse given to me: "I never make mistakes and won't need to restore previous versions."
Now that I'm using TFS, I can safely say, I get nervous writing code while not using it.
Excuse:
I'm using VB3 and source control breaks frx compatibility!
Actual reasons against the adoption of version control,
Reasons which make version control less compelling,
For the casual programmers - those to whom programming is just a tool, such as many of the people I work with (scientists) - much of the work is hackish and small scale with relatively little shared code, there may be a dozen other things that are more likely to fail outside the code which could also be eliminated with better practices.
As a colleague put it, "we don't get published for writing beautiful code".
Honestly, the only time I've ever not wanted to use source control was when I was coding some actionscript on a Mac. We use subversion (f'in awesome, it is) and the SVN plugin for Finder was less than functional. I simply LOVE the Windows Explorer TortoiseSVN extension, and it's not that painful to use the command line on a linux box either. I find terminal on the Mac to be frustrating at times, however, probably because it just feels so disconnected from the rest of the OS.
VSS has reliability problems, I keep hearing. I admit it lost something on me once in five years. Even if it's one of five, it's better than no source control at all. In fact, I almost wish it would do that because then I'd be able to persuade management to buy (or allow use of) something better.
As for one-off code, I recently got off my back a kludge that was supposed to last a few months six years ago and just kept growing and growing.....
How about this?
"Source Control systems keep a permanent record of every mistake/bug I have ever made and then later fixed. I am a poor programmer that frequently needs to clean up the crime scene."
If the person is adamant about not using source control, then I hope that they atleast back up regulary to an external device.
Would you code without an undo feature in your editor?
(I did, the other day; I was editing Visual Studio macros and the undo feature broke for some reason. It's an absolute nightmare to realize you miscorrected something and can't just undo to get it back.)
Version control is akin to a multisession historical undo.
Good answers all -- gave me a chuckle. I suspect anyone who's developed software with one other person in their life learns version control religion in a hurry. However, I recently wrote an article on revision control (from an OS- and VC-agnostic standpoint) and mentioned that while there are few situations I'd want to not use VC, someone on stackoverflow did bring up what I thought was a legitimate reason: suppose you're working on a legal case where all your stuff is discoverable. You might not want the opposition to be able to see all that development information, mistakes, etc.
You are a programmer in a developing nation sharing an OLPC with the rest of your community, there is no internet access, and the computer lacks adequate space to support a version control system.
My Answer: You program on a mac that uses Time Machine or you can't use Subversion (I personally use both.)
The excuse someone above gave that using VCS isn't going to help if your system crashes is just dumb (for one thing you can still usually recover data from corrupt hard drives).
Never ever host your version control system on the same computer/hard drive you use to develop.
If you're worried about bigger disasters then host or backup your version control data to an external source. It's really not that hard considering how many times you'll throw up if you lose the past 5 years of work.
One time I thought I lost about 3 years of work and I nearly got sick. A few months later I managed to recover it from the trash folder on another hard drive. My relief did not compensate for the reaction to thinking I lost it all.
Security implications: I need to store passwords in my source code. Company policy forbids giving other employees (including other developers) the opportunity to read those passwords.
I'm a professional programmer and I don't have to justify my working practices when they don't impact on anyone else.
Copying directories of code around is the same thing as version control and it's free!
I use Apple's Time Machine and I work alone, so that works for me.
It's redundant.
I plan to create regular backups of my hard drive instead.