Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I've very recently had to have a bit of a holy war with a friend of mine over the merits of a VCS.

We were collaborating on a small project, he doing the front end work and I doing the middle and backend. He is not a developer in any sense of the word; WordPress Assembler is more of an apt description. He had never needed to use, nor came across any reasons demonstrating a need for, a VCS.

Trying to get him to realize why it was such a good idea is still an ongoing battle, but I eventually won him over with the following argument:

"Just take my word for it. I can sit here and keep trying to hammer home the same points, over and over, and you'll sit here and keep denying them. So lets just stop this, and you just take my word for it. This project is going to live in source control. If you hate Mercurial and want something simpler, we can switch to something else. But you aren't getting away from this. And any projects we do in the future, will ALSO be in source control. So you may as well make peace with it now."

The thing I believe he was really missing, and that we (I) haven't implemented yet is a continuous integration solution, with simplified deployments directly from the checked in source. His major gripe about not developing directly on the production server was the time it took to see changes. Which is a little silly, but when I look at it from his perspective, I can see his point. If I had taken the time to set that up from the start, he would've seen the benefit of it more immediately.

The moral of my story? Always use some kind of VCS. It may seem like a waste of time with just yourself on the project, but you'll always know for sure you have a copy of your work, safe and sound, accessible from anywhere you need it from. Just make it a part of your life, and before you know it, the "overhead" of using one will more or less disappear from your life. It's an essential building block to a successful project.

I can completely see how, if you had been forced to use VSS for anything, you'd see VCS as something that could get in your way. VSS was/is a blight.



Trying to get him to realize why it was such a good idea is still an ongoing battle, but I eventually won him over with the following argument:

"Just take my word for it. I can sit here and keep trying to hammer home the same points, over and over, and you'll sit here and keep denying them. So lets just stop this, and you just take my word for it. This project is going to live in source control. If you hate Mercurial and want something simpler, we can switch to something else. But you aren't getting away from this. And any projects we do in the future, will ALSO be in source control. So you may as well make peace with it now."

No offence, but I do not think that's called winning over. It's more like he was forced and who knows, he might still be doubting or having apprehensions about using it.

The thing I believe he was really missing, and that we (I) haven't implemented yet is a continuous integration solution, with simplified deployments directly from the checked in source. His major gripe about not developing directly on the production server was the time it took to see changes. Which is a little silly, but when I look at it from his perspective, I can see his point. If I had taken the time to set that up from the start, he would've seen the benefit of it more immediately.

I'm afraid I don't really understand this point, can you give an example? I thought everyone can pull one's own copy, make code changes and check out their output/results, and if all's good, just merge/save into main mercurial repository.

The moral of my story? Always use some kind of VCS. It may seem like a waste of time with just yourself on the project, but you'll always know for sure you have a copy of your work, safe and sound, accessible from anywhere you need it from. Just make it a part of your life, and before you know it, the "overhead" of using one will more or less disappear from your life. It's an essential building block to a successful project.

Well said, I do intend to make it a part of my life, as I don't think I will always be working alone. :)

I can completely see how, if you had been forced to use VSS for anything, you'd see VCS as something that could get in your way. VSS was/is a blight.

It wasn't that bad, but I didn't have an "oh, this is so radical" kind of moment when I first used it (even though it was). I mean, I was used to taking backups with text file of changes, as I previously mentioned. I guess such an automated system would show its true potential when working in a team, or collaborating over the net.

Well, thanks for your thoughts. Appreciate it.


Well, you're right about one thing: I haven't really "Won" the argument with him. He's a bit of a stubborn guy (as am I), and until it really "clicks" for him, I know hes not going to see the benefit. Since he isn't really a developer, and he isn't using these systems day in and day out, he doesn't have nearly as much of a chance to really understand the benefit; Which is why I finally just took the tone of a stern parent and told him he was going to wash his hands before dinner whether he liked it or not, and one day hed thank me.

I honestly believe I'd be doing him a disservice to let him think it was ok to develop straight on the production machine, and that VCS just "got in the way", and so I'm happy to butt heads with him over this all day long.

About your second point, what I meant there wasn't about how Mercurial worked, it was about what I had called the "missing leg" of the table: Continuous Integration. He was upset because, when developing live on the server, he immediately got to see his changes. Now, he had to commit them, then pull them down onto the server, and copy them into the deployment directory manually. To him, this is a complete waste of time. So had I set up some kind of CI solution by which new builds could be run automatically upon checkins, and a copy of the built artifacts deployed onto the server directly, we could have a test deployment that he could access and see changes almost instantly on, before moving the approved changes over to the main site (This is still very much a work in progress, and so the deployment site is little more than a test bed in and of itself right now).

I feel if I had taken the time to set that up from the get-go, he would have had a much more positive reaction than to call VCS "needless overhead".

He is also very much "anti-cloud", and the concept of storing our repository in BitBucket gave him hives. So all in all, he's completely out of his comfort zone with this project.




Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: