Ask Slashdot: Explaining Version Control To Non-Technical People?
New submitter billius writes "I was recently hired (along with another guy) as a web developer at a large university. Our job is to build tools to support the social science researchers on our team. When I got here the codebase was an unholy mess: the formatting was terrible, there were .bak files scattered everywhere and there was no version control system in place. We quickly went to work cleaning things up and implementing new features. My boss was so pleased with our work that she took us out to lunch. During lunch, she asked us if there were any additional tools we needed to do our job more efficiently. We both told her that version control was an invaluable tool for any kind of software development, but had a difficult time describing to her what exactly version control was. I attempted to explain that it created a log of all the changes made to the code and allowed us to make sure that multiple developers working on the same project would not step on each other's toes. I don't think we really got through to her and a few weeks passed with us hearing nothing. Today we were asked by another supervisor if we needed any additional tools and we went through the same spiel about version control. She suggested that we try to write up a brief description of what we wanted and how much it would cost, but I'm drawing a blank an how exactly to describe version control to a person who isn't very technical, let alone a developer. Does anyone out there have any tips on how to sell version control to management?"
She suggested that we try to write up a brief description of what we wanted and how much it would cost ...
I don't understand why this story is tagged with git and svn then asks how much it will cost. Check out Gitstack, roll your own git on Linux, or any of a million ways to do svn or cvs ... I mean, every version control system I've used in the past ten years has been free. I mean, if you're talking about ... what, SourceSafe? Is there some crappy IBM like ClearCase thing? You think you need to pay for an online service? I don't think you need to move this off your own personal servers unless you want it open sourced. What features are the tagged version control systems missing that you need to request funds for?
Here's how I explain version control to non-techies: "Remember that time you had to work on a group project and you started writing a word document in MS Office and then you passed it out to the group while you still worked on it and then you got four more versions back with corrections and updates and you just started cursing out your computer? Yeah. Believe it or not, they fixed that problem for software a very long time ago and it's dirt cheap. In fact, if developers follow simple rules, those versioning nightmares you had with your group's powerpoint and other Microsoft files never happens."
People have dealt with this problem in other realms for a long time so you just need to find something to relate it to that they've experienced and it'll start clicking much faster. Failing that, wikipedia has visuals.
My work here is dung.
You could say it's like Mac OS' Time Machine, where files are backed up and can be pulled up from the past. Then say it's like each user can work on their own copy in time and put the files together in the future.
Or you could just ask for server space and stick the repo in a central location.
First, you should've added a 'Mercurial' tag. :-)
Explain what it will do for them. For example...
So, let's say we're working on the website and the code behind it. We push out some new code one day, and a few days later, after we've already started working on a bunch of other stuff, someone reports a bug. One of the form fields isn't validating correctly.
But, we've been working on that form already. We can't really tell if the bug is still there, or if maybe it was something that was wrong that got moved around. We also can't tell how the bug got there in the first place. That's because we don't know what the old code looked like exactly anymore.
But, suppose we had a version control system.... Then, when we push new code out to the site, we know exactly which version we push. When someone reports a problem, we can easily go back to that version in a testing environment to find the problem for ourselves and figure out exactly what's causing it. And then, once we've determined the cause, we can analyze the history (because we've been keeping a history of everything we do) to figure out how the problem got there in the first place so we can do better next time.
There you've explained how it helps you. You no longer need them to understand what it is exactly. You've just explained why it would be good for them to get it for you, and that's all they really care about anyway. They don't want to understand what it is. Understanding stuff like that is why they hired you in the first place.
Need a Python, C++, Unix, Linux develop
I will quote from Stack Overflow (http://stackoverflow.com/questions/1408450/why-should-i-use-version-control):
Have you ever:
Made a change to code, realised it was a mistake and wanted to go back?
Lost code or had a backup that was too old?
Had to maintain multiple versions of a product?
Wanted to see the difference between two (or more) versions of your code?
Wanted to prove that a particular change broke or fixed some piece of code?
Wanted to submit a change (patch) to someone else's code?
Wanted to see how much work is being done (where/when/who)?
Wanted to experiment with a new feature without interfering with working code?
In all these cases a version control systems should make your life easier.
Get his attention with this:
"Would you run a business without a ledger?
We've been running our software development like that and it's high time we started doing it right."
Now that you have his attention, you can sell him on the particular version-control-system you want and, if necessary, explain the other good things a VCS can do, like provide legal accountability of which employee checked in what, forking off maintenance releases, and more.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Why are you explaining and asking permission to use a tool? Download git, install it, use it, done. Standard practice, free, so what's the issue? Just do it. The management doesn't want to see how the sausage is made.
Also, there is a "manage your management" issue here. When the bosses ask if you need anything, you need to provide answers that they understand and can accomplish. Asking for something they don't understand and don't know how to get for you leads to them feeling stupid and ineffective. Line up your own tools without bothering them. When they ask what you need be ready with something that they can easily accomplish, like stocking the fridge with Mt. Dew.
Light cup, beer drink, thin so chain, neck turtle fat, man I won't say it again
"It's like massively-multiplayer undo!"
"I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)
Very much this. Trying to give a technical reason to a non-technical person who doesn't understand the benefit is futile. Take a lesson from Apple. They explain technical benefits in a 'what it will do for you' way.
Give a scenario where the lack of version control does something suitably bad, and then explain what it does when properly implemented.
One caveat. Keep the benefit a bit more watered down than above. When dealing with management, keep it simple, and meaningful to them, not to you. Talking about validating a form field or whatnot isn't a good way to go about it. Talk about the lost time and productivity, potential impact while troubleshooting and finding root cause, etc.
Version Control for code is exactly like accounting software for money. Without accounting, your business would fail as it becomes more complex. Eventually, without version control, the process of building software will fail as development becomes more complex.
-- Mike
As a blatantly non-technical person, your manager neither needs to know, nor cares, why a developer would want version control. You were hired to develop software, this is part of developing software. If it was a matter of cost, you would need to discuss it, but since there are good free source control systems available that don't require a dedicated server, just pick one and start using it.
Do you also need to justify your use of a particular text editor or IDE? If management is technical I can see how they'd want input on these decisions (even in that case maybe unwanted), but for somebody non-technical you are just producing your own confusing mess by bringing it up in the first place.
Your job is to develop, go do that.
She thought enough of your work to take you to lunch? I think you have to declare that. I've been doing version control for years and never even got a Twinkie.
I hate being bipolar; it's awesome!
Management
One of their students was "Little Bobby" T.
OT: I wonder how many /.'ers saw this comic in their mind without having to follow the link? :)
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Metaphor can be useful, but it can also cause problems. Here is a shot at a simple explanation without metaphor.
A version control system maintains a log of all changes that are made to the source code of a piece of software. When a problem arises in a piece of software, the version control system can help find out what code was changed, when it was changed, and who changed it. Without this information, tracking down the piece of code causing the new bug can take a lot longer. This log can also be used to undo changes which prove to be problematic.
Explaining how version control helps developers recognize conflicting commits is a specific example and likely lost on lay folk without quite a lot of explaining.
Version Control is like a very long cat. You pull the latest stable version off in New York, meanwhile an unstable beta is mewing in Los Angeles. Version Control is the same, only there is no cat.
<blink>down the rabbit hole</blink>
Mod the parent up, this is the first non-techie analogy that makes sense to anyone with any accounting or business background.
The "ledger" idea is the elevator speech you can give to the pencil-pushers. It's one thing to know what the bottom line on a balance sheet is, it's another thing to know how the numbers got there. Multiple sources of changes (Payables, Receivables, Sales, Petty Cash, etc...), in multiple directions (debits/credits), in multiple categories (Assets, Liabilities, Equity) . You'd be foolish to run a business without a general ledger. Source control is the ledger for the software.
Get off my lawn.
Cost is *not* the issue. You don't just "put the website under version control" that's a command in a free to download, free to use software package called [ git | svn | cvs ]. Source Control is *not* a tool. It's a technique. You don't need supervisor permission to backup your files, and you don't need supervisor permission to use source control. What you need to do is start using it, and ensure that everyone *else* who contributes uses it, too. That's a policy detail and needs someone to enforce it.
The selling point of source control is that it is more than just a backup - it allows you to track changes to the site and more importantly *who* made *what* changes and *when* and *why*. Otherwise you don't know if changes are made, who made them, when they made them, or why they were made. One would think that *social scientists* would be able to appreciate knowledge of history without any notion of "cost"!
Read the summary: The OP is working for the social science department of a university. So the answer to the question, "Would you run a business without a ledger?" might very well be, "What's a ledger?"
Have gnu, will travel.
Wow, despite the stereotype you peddle to the angry at the world basement dweller *portion* of Slashdot, these same social scientists you mock include most of the founders of any significant human civilization and the documentors/philosophers of high level thinking; which I'm told is something required even to do even "real" science. Heck many of them were "real" scientists as well and not just wimpy philosophy space wasters. Back when people were only considered wise if they valued both understanding the physical and the metaphysical. These beta test scientists understood silly things like maintaining analyzing history, being able to speak/write coherently, and many other social innovations were key to a society where ""real" science could be performed. These proto-social scientists found patterns and themes in history, created structured language, documented things, and otherwise enabled the wide spread acceptance and clear reasoning for the social contract distinguishing humans from other animals through mutual generational information transfer. This is what makes us able to understand the value of interaction over pure instinct and creates an environment where experiments and science can exist. Humans didn't do much of anything to progress up until this point. Before all this a lab would have been pointless and useless, specimens/materials from far away lands would be impossible to acquire or identify, the concept of the academic collaboration/review model would seem pointless. Heck good luck building anything even resembling a piece of modern scientific equipment over the course of a lifetime. Even if you did you would be all alone in figure out how to use it. Though none of that would interest you because you likely would be too focused on survival, unfamiliar with anything you hadn't personally experienced, and without any way to compile, compute, or transfer knowledge to future generations. So science, "real" or "social" would seem like a total waste, and in the just another thing distracting you from the next meal. Luckily some early humans understood what you do not. Thank them everytime you do anything that you wouldn't see your dog do.
From TFA:
We both told her that version control was an invaluable tool for any kind of software development, but had a difficult time describing to her what exactly version control was
I attempted to explain that it created a log of all the changes made to the code and allowed us to make sure that multiple developers working on the same project would not step on each other's toes
Look, geeks evolve too.
In the olden days, geeks were geeks, and geeks didn't have to say non-geeky things to non-geeks.
Nowadays, it's different. We have to explain very geeky things to non-geeks and you just can't load up all the jargons and tell it to the non-geeks. They will go bonkers !!
Nowadays we geeks have evolved into geeks who can speak every-day-language using non-geeky-examples, ie., analogies
In the case like TFA, the submitter could have use the example of a recipe, a kitchen, and 3 cooks.
The intended project is the recipe. The cooks as the programmers, and the kitchen is the programming environment.
Where the version control fits in? The food, of course !
If the recipe calls for 3 eggs, two scrambled and one sunny side up, and cook A already done one egg scrambled, he better let cook B and cook C know what he has accomplished. That's where version control comes in.
In this way, non-geeks can get a clearly picture in their mind, on how a version control software functions.
In my career spanning decades, I had to explain all kinds of very geeky things to very very awkward non-geeks, and I have to make them understand the details without making them jumping off the 55th floor.
Muchas Gracias, Señor Edward Snowden !