Kuro5hin.org: technology and culture, from the trenches
create account | help/FAQ | contact | links | search | IRC | site news
[ Everything | Diaries | Technology | Science | Culture | Politics | Media | News | Internet | Op-Ed | Fiction | Meta | MLP ]
We need your support: buy an ad | premium membership | k5 store

[P]
Toward Saner Version Control (Technology)

By skyknight
Tue Oct 25th, 2005 at 10:54:34 AM EST

Software

Software engineering is not just a technical domain, but also an intensely social one. Once a project team grows beyond a single developer, the need arises to coordinate the parallel efforts of multiple contributors. To this end source code management tools exist.


Anyone who has worked on a software project with a team of people knows how difficult the coordination of efforts can be. Students of Fred Brooks' The Mythical Man Month, or people who understand it implicitly by virtue of their experiences in the work place, are well aware of this. Intelligence, quite simply, does not scale. The number of communication channels for a team grows with the square of the number of participants, and presumably the efficiency of such a team shrinks with a corresponding inverse relationship. To keep things from grinding to a halt, good tools must be at one's behest.

Among these tools, a good source code management tool must reside on a developer's belt. There are many options from which to choose, some better than others. In the open source and Unix community, CVS has long been a favorite. There also exist myriad commercial alternatives, such as ClearCase, Razor and Perforce. More recently, the open source community has added Subversion to its arsenal, a tool superior to CVS and one that has breathed new life into the non-commercial offerings.

CVS has long been maligned by proponents of commercial alternatives, but Subversion largely undermines any claims that proponents of such tools can make. For a full list of the improvements that Subversion makes over CVS, see the documentation, but the main ones follow...

For one thing, Subversion provides atomic commits. This is huge. When you commit code from your sandbox back to the repository, there exists a race condition with CVS that may cause you to fumble. When doing a commit, even a batch commit, you are actually just committing one file at a time. Furthermore, the commit operation may fail should it be the case that a newer version of the file has been committed since you last updated. If you try to commit a batch of files in CVS, it may be the case that one or more of the file commits may fail, leaving the repository in a broken state. This is bad, very bad. Subversion, on the other hand, operates not on a per-file basis for commits, but rather on the basis of change sets. You can commit a group of files together, and either they all commit or none of them commit. This does wonders to forfend breaking the build.

On a related note, revision numbers in Subversion are not done on a file by file basis. Rather, the whole repository has a revision number that increments with the commission of each change set. This has the advantage of lumping changes together into logical units. For a given revision number you don't really care that file Foo changed. What you want to know know is what feature was implemented for a given revision, and what modifications were made in the course of doing so. Subversion makes this a reality. From revision 442 to 443, you can see the list of files that changed, and the corresponding comment "fixed bug #256". To do this in CVS you will have to resort to ad-hoc measures, perhaps writing tools of your own.

Another big win with Subversion is that file renaming is a first class operation and directories are first class objects. In CVS, moving a file was a horribly clumsy operation. You had to copy the file to its new location, issue a delete command for the old location, and issue an add command for the new location. In the process of doing so you would lose the history of the file. If you did not wish to lose the file's history, you were literally forced to go into the repository and hand move the corresponding file at your own risk. That sucked, and with Subversion is entirely obviated. Now you just issue a "svn mv" command and life is good. Given how central this operation is to refactoring code, I wonder how I ever lived without it as a CVS user.

Another big gripe about CVS is the tedium of branching with it. In Subversion, branching is trivially easy. Whereas in CVS the general opinion seems to be that branching is akin to being bitten by rabid coyotes, in Subversion it basically consists of a directory copy operation. You issue a "svn copy" command, which is actually a light weight copy-on-write method, creating a new node in a directory tree that comprises the branch. An "svn merge" command specifying that branch will merge things to wherever you desire with minimal hassle.

All in all, Subversion is a fantastic tool, and one that I believe to represent the future of version control. However, this doesn't stop the snooty and recalcitrant proponents of commercial tools from claiming that Subversion is an inferior tool, and that everyone would be better off if only they would adopt a "real" tool. This claim, as far as I am concerned, is nonsense.

In dealing with said Philistines, it would seem that the most common complaint centers on Subversion's lack of deference to strict file locking. This is unfortunate, as said mechanism is in fact a crutch for a crippled process. If coordination of developers in your group depends on knowing who is editing what file, then, quite frankly, you are doing something very wrong.

In developing software, the fundamental unit of work is a feature, or perhaps a bug fix. The fact that you are operating on a directory tree of files is accidental. It is an artifact, something that is not an intrinsic facet of software development. Along these lines I would argue that file locking operations represent a faux feature. They provide a false sense of security that lulls developers into a state of complacency, a state of mind that assumes that everything is A-OK just as long as people aren't working on the same files.

Nothing could be further from the truth. If someone is working on file A, and a co-worker is working on file B, and file A includes file B, depending on the API that it exports, then the benefits of file locking to you are precisely NOTHING. The functionality provided by file B could change out from under the developer working on file A, and unless the developer working on file A is communicating with the developer working on file B, then he is hosed. That's all there is to it.

Quite simply, there is no substitution for good communication between developers. Furthermore, there is no tool in existence that truly facilitates it. You can lead a horse to water, but you can't make it drink. If your developers refuse to talk with one another, then there is no piece of software that can save you. Software development is a very social process, and if developers are not talking to one another then all is lost. File locking will not keep people from stepping on one another's toes. It will merely provide the illusion of concurrency management, and that illusion can oft prove disastrous.

Of course, it would seem that the various and sundry commercial tools are in the habit of providing such features. This begs the question, why? The answer, presumably, is simple. Lots of people are hot for the aforementioned security blanket, and commercial enterprises are typically more interested with making money than in improving the state of software engineering. As such, they are naturally inclined to give people what they want, even if what they want is stupid and short-sighted.

Software engineers don't need snazzy tools. They need solid tools, ones that implement a few core features in a robust fashion and that refrain from providing nonsensical features that appeal to PHBs and the talentless hacks who are self-styled "software engineers". As such, there exists a conflict between those who would sell said tools and those who would use them. Having smart developers who communicate effectively and write good suites of automated unit tests will buy you much more than any piece of software that comes in a shiny box.

This brings me to my last point... I have noticed a distinction between the various people that one encounters in the work place, a distinction made by Pirsig in Zen and the Art of Motorcycle Maintenance. Apart from the truly useless wards of the state, there are two kinds of people: those who are educated, and those who are trained.

Educated individuals tend to be generalists. They might be especially good in a few specific things, but that is not their main selling point. By far and away, their main virtue is adaptability. They have absorbed a large body of knowledge and generalized it into a framework that allows them to reason about and solve novel problems. They do not tend to get into ruts. They do not tend to bump up against walls and get stuck. No matter what the environment is into which they are thrust, they can adapt and prevail.

Trained individuals, when in their domain, are indistinguishable from educated folk, or perhaps even superior. They have absorbed some particular body of knowledge and are now purveyors of it in the same way that followers of a religion are purveyors of their faith. Pointed in the right direction they are very capable people. Put them up against a novel situation, however, and they are damn near useless. They will spout ideological nonsense that aligns with their programming, and there is quite simply nothing that you can do to convince them that there exists a better way. If they learned system A, and part of their indoctrination is that system A is the best system ever, then there is nothing in this world that you can do to convince them that system B is better. You may just as well try to make a Satanist of a fundamentalist Christian.

It is this latter variety of people against whom I have vainly butted my head trying to convince them of the insanity of relying on such silly features as strict file locking. It does not matter how destructive a reliance on such a strategy may be. If they cut their teeth on a broken process, and were trained instead of educated, then there is nothing that can be done to break them of this habit. You cannot reason with such people and are wasting your time in doing so.

Realistically speaking, it's probably going to be twenty to fifty years before we have a software development process that doesn't totally suck. Until then, your best bet is probably to use Subversion, write unit tests competently, and regularly chew the fat with your fellow developers. Also, for the love of God, use an editor that doesn't suck. If you're not using Emacs, then I hope that you're using vi, and if you're not using one of the two, then please kill yourself.

That is all.

Sponsors
Voxel dot net
o Managed Servers
o Managed Clusters
o Virtual Hosting


www.johncompanies.com
www.johncompanies.com

Looking for a hosted server? We provide Dedicated, Managed and Virtual servers with unparalleled tech support and world-class network connections.

Starting as low as $15/month
o Linux and FreeBSD
o No set-up fees and no hidden costs
o Tier-one provider bandwidth connections

Login
Make a new account
Username:
Password:

Note: You must accept a cookie to log in.

Related Links
o More on Software
o Also by skyknight


View: Display: Sort:
Toward Saner Version Control | 235 comments (132 topical, 103 editorial, 0 hidden)
One more time... (none / 0) (#217)
by Entendre Entendre on Thu Oct 27th, 2005 at 02:32:28 AM EST

...without the misguided tangent about commercial versus open-source software:

Interesting things are happening at bazaar-ng.org. It's not ready for prime time yet, but if they follow through to their goals, it'll be pretty cool. (And there's reason to be optimistic - they're funded and they've been self-hosting for a while now.)

--
I'm a different AC than the parent post...

Interesting article (none / 0) (#215)
by strlen on Wed Oct 26th, 2005 at 11:33:17 PM EST
(strlen)

First, the problem isn't technology, it is how it is used. The number one rule should be:

1. Do not comit broken code (or be shot).

The corollary from this is:

  1. Unit-test
  2. End-to-end test
Number one suggestion implies automation. Number two can be automated in most cases (this is especially true of things like CGI application, where curl and lynx could go a long way; of course this should always be done for CLI applications)

I don't see how locking would work, it seems more like a superficial solution. The real answer is:

1. do cvs update before you do cvs commit

See a conflict with code someone else wrote? Fix it. Get on the internal IRC server (hint: it isn't just for posting links to a flash animation you found funny), communicate to resolve the problem.

The issue with tools like Eclipse or MSVC is that they allow one to easily mess up the infra structure. Automake/autoconf or even regular make are far more manageable when created and edited by hand rather than by a tool. And if anyone claims that their $BLOATED_IDE can do something emacs can't, they're either ignorant or lying. Debbuging inside emacs has been done for least fifteen years  (note: I personally prefer to use vim to edit code and ddd to debug, but that is a matter of taste; emacs is still a far better tool than any IDE).

--
FATMOUSE + YOU = FATMOUSE

13. Omit needless words. (none / 0) (#200)
by bg ex plus alpha on Wed Oct 26th, 2005 at 11:51:18 AM EST



KDE and GCC (none / 0) (#196)
by joib on Wed Oct 26th, 2005 at 09:32:01 AM EST

For some reasonably high profile users of svn, there's KDE at least.

And GCC is switching, starting today in fact!

One gripe is that a checked out gcc tree will now take 900 MB instead of 300. But OTOH diff is faster since you don't have to contact the server. And disk is cheap anyway..

The future: no version control at all (none / 0) (#186)
by Philip Dorrell on Wed Oct 26th, 2005 at 03:39:44 AM EST
http://www.1729.com

In my article Disorganized Incremental Software Development, I outline a system for naming code components according to a cryptographic hash of their contents. This eliminates name collisions, rendering source code version control unnecessary, since every source file has only one version. (However version control is still required for the comments, for instance to explain that a function with a name like "a65ib9kjhjdkjj98733012kfkkdj5954gdoku" is actually an implementation of the quicksort algorithm.)

What is Music? Solving a Scientific Mystery
SVN? Neh... (none / 1) (#185)
by Surial on Tue Oct 25th, 2005 at 11:35:26 PM EST

For all the experience with team programming since the years of yore when CVS was introduced, SVN really isn't all that much to write home about. I guess not updating or changing paradigms too much can be a good thing, but SVN is NOT a superset of CVS, capable of acting just like a CVS server in a clinch.

So one major plus for not going overboard with renewals hasn't even been exploited.

I'm going to skip SVN and go straight for stuff like codeville.

NB: There's good reason to either be backwards compatible or, if an upgrade is neccessary, to go far enough so no new upgrade is neccessary for a considerable number of years. For example, eclipse has a very very good built in CVS system that is very tightly integrated. There is a SVN plugin but it lacks most of those integration features I just talked about. The upside to SVN is not nearly enough for me to consider abandoning almost all of eclipse's integration.
--
"is a signature" is a signature.

IntelliJ plugin? (none / 0) (#184)
by Milo Minderbender on Tue Oct 25th, 2005 at 09:06:20 PM EST

Does anyone know if the SVN plugin for IntelliJ actually works over ssh now? I tried it a few months ago, and it didn't work. Overall, the plugin didn't seem very well written.

The CVS integration into IntelliJ is the only thing that makes CVS remotely bearable.

--------------------
This comment is for the good of the syndicate.
SVN taggging sucks (none / 1) (#181)
by dxh on Tue Oct 25th, 2005 at 06:03:05 PM EST


The Tagging and Branching in SVN sucks compared to CVS.  The main result is because of SVN's very simple-minded approach to SVN's lack of the ability to keep track of each file independently.  It takes a lame-brainded approach at versioning the whole project at once.  

SVN can only do a branch on a WHOLE copy of the repository, and you can't copy a single file from branch to branch, you have to totally merge them etc.. very cumbersome and stilly.

In CVS I can use tags and branches to easily make a promotion model, by having all development go on in the HEAD of the tree, and by tagging individual version of files as being say "PROD", or "TEST".  You can then take a fix you develop in version 1.6 of file2.c and just "move" the PROD tag from version 1.5 to 1.6 of THAT FILE, but leave all the other PROD files the way they were.

This is very powerful in the right hands and for those that have a large team and want to inforce some type of software configuration management and promotion model methodologies.

SVN is blah.  Some nice features, but you loose to much to use over CVS.

That and the fact it takes an army of people to get SVN to work on a non-Linux platform because of its like 10000-different dependencies on other beta-quality open source software.

SVN 1.2 DOES HAVE LOCKING! (none / 0) (#178)
by n8f8 on Tue Oct 25th, 2005 at 03:08:46 PM EST
(tlowing@nospam.lowing.org) http://www.Lowing.org

Per the Release notes. Of cource you need to make a commit script to automatically lock a file.

Sig: (This will get posted after your comments)
educated Vs trained (none / 0) (#177)
by nietsch on Tue Oct 25th, 2005 at 02:31:53 PM EST
http://www.lassche-anwalt-in-holland.de

These two groups are not mutually exclusive. The educated person needs some place to pick up new knowledge, tha place may well be a training, or a teach-yourself book (probably has enough experience to avoid the really nast examples of that category). So the ducated person may appear trained on some points.
On the other hand, the 'trained' person most likely had a formal education too.
And since you have painted the picture so very black and white, I' doubt it if anyone would call himself 'trained' by your definition.
I think that is because your definition is wrong: you ment to divide by: people I like(and agree with me) and people that do not agree with me(And I don't like). You are right in the file-locking example, but I shure do not wish to have a disagreement with you.

CVS vs commercial, SVN vs commercial (none / 0) (#147)
by jongleur on Mon Oct 24th, 2005 at 11:52:58 PM EST

When you used CVS were you dismissive of commercial systems as well? How do you know there aren't some killer features that would make you feel toward SVN that you do now toward CVS and commercial ones?
--
"Box-cutters, penknives and cold anger are the weapons with which the wars of the new century will be waged. Anger is the lock-pick. It slips through customs unnoticed. Doesn't show up in baggage checks." -- Arundhati Roy
IAWTA (none / 0) (#133)
by actmodern on Mon Oct 24th, 2005 at 04:46:46 PM EST
(actmodern@gmail.com)

About the whole emacs and vi thing. I've seen people use the most craptastic shareware editors to have ever graced the modern computer. Death would come as a comfort to these hordes.


--
yesterday i woke up sucking on a lemon
Other SVN warts... (none / 0) (#128)
by sudog on Mon Oct 24th, 2005 at 03:51:13 PM EST

It also unofortunately suffers from a lack of merge history, slow backend operation, and doesn't scale so well. :(

Good as an OSS tool, probably not so good for large-scale operations, where intelligent merging can often be a necessity.

This is not to say it doesn't have promise of course--it's getting there. I just think it's not quite there *yet.*


SVN, Educ vs Train, Codeville (none / 1) (#119)
by OldCoder on Mon Oct 24th, 2005 at 01:12:23 PM EST

Interesting work on source control is being done at codeville.

It was the self-trained who discovered the knowledge and taught the educated. I've known exceptional people in both categories. As a developer, I have learned, for example, that I am not a talented tester. I have met some people who are and was awed. Not envious, but awed. Most testers aren't like that. I've also known engineers who were absolutely fantastic technicians and were the people the techs would go to when stumped. Most engineers aren't like that.

Some topics, even in Software Engineering, are not Settled Questions, and we are all just trained a little differently.

Mule-headed change-averse victims of Baby Duck Syndrome can pop up anywhere. I've known some mule-headed ducks in all walks of life.

Subversion has some unpleasant quirks on Windows. A normal way to start a project is to fire up the IDE and code for a while. When you have some files to be protected you try and put the directory under source control. When you put a directory under subversion source control you:

  1. Must make a new repository for a new project, lest your new project acquire the version number of your pre-existing projects. This would be okay if the documentation hadn't suggested sharing repositories across projects in the first place.
  2. Check in everything, including all the files your IDE made that you don't know much about. Some of the IDE files could be non-text (binaries).
  3. Check out the stuff you just checked in. But to a different directory. This means that your IDE files are duplicated and may possibly refer internally to the original directory. Depending on the IDE.
The wave of the future is for source control to be more tightly integrated with IDE's, build systems, and release management. IDE integration will make sure that only the stuff that needs to be saved will be saved and .objs and other temp files are automatically not archived, for example. Build systems really want to know what symbols changed rather than having to go on a file by file basis. Many is the time one tiny change triggered an overnight build. Change control, release control, configuration management and all that occupy too much time and effort. Sometimes testers and code reviewers have a real need to add comments (or hyperlinks) to source files. But if the source control system can't tell a comment from a statement, this is just too difficult.

The proprietary software firms continue to deliver innovation to the user at a brisk clip. Including innovations that originate elsewhere, for sure. But competitive firms like Microsoft, Oracle, and Apple need to provide a product a cut above the others. A look at the projects on sourceforge, like the 10 most active, shows a great deal of OSS is trying to deliver capability already available elsewhere. The OSS movement just doesn't have the moxie and the organization to try to deliver Avalon, for example.

Also, are we really sure that Subversion isn't just a stalking horse for Stalinism? (insert generic smiley)

--
By reading this signature, you have agreed.
Copyright © 2004 OldCoder

Quick note on file locking (none / 1) (#117)
by Trevasel on Mon Oct 24th, 2005 at 12:14:13 PM EST

First off, it is a mechanism of communication between programmers and artists. Also, in the game development community as well as others, I imagine, it is mostly used for binary files such as game assets where there is no opportunity for merging and on many occasions your data architecture doesn't have enough granularity to support fully independent operations by all of the assett developers. In this situation it is essential.
-- That which does not kill you only makes you stranger - Trevor Goodchild
Who gives a fuck? (1.50 / 6) (#116)
by bighappyface on Mon Oct 24th, 2005 at 12:03:37 PM EST

This is kuro5hin, not Slashdot. Submit it there.

So that's what Subversion is (2.40 / 5) (#115)
by BottleRocket on Mon Oct 24th, 2005 at 11:34:28 AM EST
(moc tod elttobeulb ta 10tekcorelttob)

I like this article, cuz it encourages the pretense that kuro5hin is technology-oriented. Also, as a linux user who doesn't code, it's nice to be told what to think about new stuff to appear well informed.
---------------

We are each our own devil, and we make this world our hell.--Oscar Wilde

shit is coming out of my arse as i type (1.54 / 11) (#93)
by bg ex plus alpha on Mon Oct 24th, 2005 at 05:06:41 AM EST



-1 CVS SUCKS!! (1.16 / 6) (#85)
by Lemon Juice on Mon Oct 24th, 2005 at 12:56:31 AM EST

I fucking hate CVS. I've had so many problems with it I don't know how anyone can use it.

Mutually consenting communication and interaction leading to gene flow and cultural diffusion. --Baldrson
change the API functionality? (2.50 / 2) (#66)
by sal5ero on Sun Oct 23rd, 2005 at 07:20:58 PM EST

Nothing could be further from the truth. If someone is working on file A, and a co-worker is working on file B, and file A includes file B, depending on the API that it exports, then the benefits of file locking to you are precisely NOTHING. The functionality provided by file B could change out from under the developer working on file A, and unless the developer working on file A is communicating with the developer working on file B, then he is hosed. That's all there is to it.

are you saying co-worker might change (not just add to) the API on file B? or change the result of calling the API with certain inputs? WTF?



See my reply to localroger below. (2.50 / 2) (#65)
by trhurler on Sun Oct 23rd, 2005 at 07:04:20 PM EST
(abuse@127.0.0.1) file:///dev/zero

Also, file locking is the worst sort of uselessness in version control. If you go to a two stage process where you have the source control used by developers and then they periodically release a snapshot into a release management system, then locking makes sense, but at that point you're locking the entire repository(on both ends,) rather than just individual files.

Incidentally, the two-repository system mentioned above is a fantastic way to do software releases, but almost nobody ever does it.

--
'God dammit, your posts make me hard.' --LilDebbie

Pathetic (1.28 / 7) (#62)
by Makenzie Smith on Sun Oct 23rd, 2005 at 06:59:35 PM EST

All the nerds on the Internet who think software actually matters.

-1 Does not mention 'darcs' n/t (none / 1) (#45)
by Vs on Sun Oct 23rd, 2005 at 03:57:44 PM EST
(vs + kuro5hin@foldr.org) http://lambda.foldr.org/~vs/


--
Where are the immoderate submissions?
No big deal. (none / 1) (#35)
by Lemon Juice on Sun Oct 23rd, 2005 at 12:14:24 PM EST

really isn't a big deal at all.

Mutually consenting communication and interaction leading to gene flow and cultural diffusion. --Baldrson
ClearCase? (3.00 / 2) (#32)
by t1ber on Sun Oct 23rd, 2005 at 11:42:10 AM EST
(josh_at_knarrnia_dot_com) http://www.knarrnia.com

As a professional systems engineer, I see that ClearCase (like commercial CVS) is missing.

Not that it's a huge loss, but it's got some snazzy features which CVS and Subversion lack. However, it still uses broken CVS logic and extends this to the developers desktop through shell extensions. Through this, it also extends those infuriating problems CVS has directly to your workstation. I manage to keep my hands out of the serious code which is reserved for the developers, but I still hear the Cries Of The Damned occaisionally. The latest wonderful ClearCase Cluster Cockup came from a recent upgrade which forces you to do the checkout-copy-delete-checkin file moving dance locally. It is quite possibly the worst thing ever. I understand why they do it: The idea is to keep the files in a location consistant to the ClearCase project layout. However, this makes reorganization and refactoring very hard.

I've been toying with the idea of just grabbing a NAS server and having everyone NFS mount the project.

Perforce is fighting The Last War (none / 1) (#31)
by QuantumG on Sun Oct 23rd, 2005 at 09:40:38 AM EST
(qg@biodome.org) http://rtfm.insomnia.org/~qg/

A centralized repository for source control is a model that has done more damage to open source than good. If you want to see the ultimate end result, look at OpenBSD. Brilliant workers making quality software at a snail-like pace whilst excluding anyone new from contributing. If you want to see how it should be done, look at the decentralized revision control systems. The most noted being Bazaar and Bazaar-NG. Massive parallel development is the order of the day, and the only way to do that is with decentralized workflow tools.

As for proprietary development.. it's a hopeless cause. Proprietary software will never do everything the customers want. It will never be bug free. It will always require a dedicated workforce of people to install, upgrade and maintain it. As soon as open source solutions start competing on an even playing field with it proprietary software will fail. The only hope of proprietary software developers is to make sure the playing field never becomes even, at the expense of customers.

Gun fire is the sound of freedom.

Ouch (3.00 / 9) (#30)
by localroger on Sun Oct 23rd, 2005 at 09:35:35 AM EST
(localroger@hotmail.com) http://www.kuro5hin.org/prime-intellect/

Re: Educated vs. Trained

I would much rather read the article you write on this topic than this one ;-)

I have an unusual perspective here because I'm both educated and trained, with the latter eclipsing the former as my college days recede into the blurry fog of ancient history. I do remember enough of my education not to resent the pointed remarks about training that might well be aimed at me.

A good example of the distinction is the engineer vs. the service technician. You will never see two groups each with a lower opinion of the other. The engineer considers the technician an ignorant buffoon who's barely capable of understanding the thing he's supposed to install and service; the tech sees the engineer as a buffoon in an air-conditioned office who wouldn't know which end of a crescent wrench to pick up or how to recognize his own creation in its native environment.

And both of them are right.

Since I mainly work with the technicians I get to hear them complaining a lot about dumb-ass things done by engineers. And the sad thing is, they're usually right. When you approach a problem from the design side, it's very hard to see how it will look through the eyes of the guy who has to pick up the pieces after it blows up five years down the line. On the other hand, while they have a lot of good ideas, those techs who are so sure they could design a better mousetrap would fall on their faces if they actually tried. They not only don't know the disciplines necessary to design things from scratch, they don't even know those disciplines exist.

That said, the one thing I have seen which can bring the engineers and techs into lockstep alignment is a suitably stupid PHB. Some people are neither trained nor educated, and when they're the ones with final decision-making authority, make sure you have your hard hat and safety goggles at the ready.

I am become Death, Destroyer of Worlds -- J. Robert Oppenheimer

I can not help but laugh: -1. (1.33 / 3) (#28)
by caine on Sun Oct 23rd, 2005 at 09:30:39 AM EST

Hm, you come off as having only done small open source projects, and having little clue of the famous "real world". I don't see the point of this article, nor do I find your comments about tools in any way insightful.

--

Is beer a tool? (3.00 / 4) (#12)
by bodza on Sun Oct 23rd, 2005 at 05:24:22 AM EST

I've always found it remarkably useful in facilitating communication between programmers.
--
"Most people are bad; if they are strong they take from the weak. The good people are all weak;
they are good because they are not strong enough to be bad."
- Commoro


Christians and Satanists... (none / 1) (#9)
by Alien zombie on Sun Oct 23rd, 2005 at 02:25:45 AM EST

are flip sides of the same coin, so converting one to the other is a trivial operation.

Concerning education vs. the training, I don't believe the latter is an obstacle to adaptation --in fact many of the so-called educated treat their college experience as glorified vocational training and never really master critical thinking skills.

Associating "change sets" with their intended feature enhancements and/or bug fixes seems an obvious incremental improvement, but mitigates only a small subset of possible conflicts, since change sets may be mutually incompatible.

I'm not familiar with any of the tools you mentioned (except vi) since I haven't done any serious coding in over a decade.


An idea for another article (none / 0) (#7)
by shm on Sun Oct 23rd, 2005 at 01:00:34 AM EST

I liked the comparision of the the educated versus the trained. I think that that's a key problem in the software business in particular, and the technology business in general.

There may be another article lurking in those two paragraphs.

Toward Saner Version Control | 235 comments (132 topical, 103 editorial, 0 hidden)
View: Display: Sort:

kuro5hin.org

[XML]
All trademarks and copyrights on this page are owned by their respective companies. The Rest � 2000 - 2005 Kuro5hin.org Inc.
See our legalese page for copyright policies. Please also read our Privacy Policy.
Kuro5hin.org is powered by Free Software, including Apache, Perl, and Linux, The Scoop Engine that runs this site is freely available, under the terms of the GPL.
Need some help? Email help@kuro5hin.org.
If you can read this, you are sitting too close to your screen.

Powered by Scoop create account | help/FAQ | mission | links | search | IRC | YOU choose the stories! K5 Store by Jinx Hackwear Syndication Supported by NewsIsFree