aspose file tools*
The moose likes IDEs, Version Control and other tools and the fly likes from a tech journalist: so, just how important is CM to a development project? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Engineering » IDEs, Version Control and other tools
Bookmark "from a tech journalist: so, just how important is CM to a development project?" Watch "from a tech journalist: so, just how important is CM to a development project?" New topic
Author

from a tech journalist: so, just how important is CM to a development project?

Geoff Koch
Ranch Hand

Joined: Mar 19, 2006
Posts: 35
Hello,
I'm writing a few articles for two sw trade pubs on the topic of configuration management. In one, a Special Report for SD Times, I'm looking at just how central CM is to a development project. Of course, many vendors say that everything hinges on selecting the right CM tool and using it properly. But what do developers say? Surely in the age of quick, agile, lightweight, Web 2.0, etc. development, open source or even roll your own CM can suffice in many (or most) contexts, right? If you had to select three or four tools in your core developer toolkit, would some of sort of CM application be there (open source or otherwise)? I'm also working on a piece on best practices in CM for STP Mag. I'm hoping I may find information for both of these pieces with some back and forth here. As usual, I'm looking for folks who wouldn't mind being quoted. But if you prefer that I don't use your comments in print, I'm happy to just take your thoughts on background (meaning I may ask a few follow-up questions just to get informed on the topic, but then won't quote you in my articles.) Thanks for any help. My deadline is Tuesday, 9/26.
Best regards,


--------------------<br />Geoff Koch<br />Freelance technical writer, journalist<br />Lansing, MI<br />AIM: geoffinmichigan<br />Yahoo: geoff_pdx<br />MSN: geoffarnoldkoch
Paul Santa Maria
Ranch Hand

Joined: Feb 24, 2004
Posts: 236
Hi -

A lot depends on the scale of the project and the size of the organization, of course.

But I would suggest that "Configuration Management" is *always* important (although far too many small shops don't necessarily realize it ;-))

I would also suggest that an Open Source CM solutions like CVS (the one we're using) or Subversion aren't only adequate - they're actually *superior* to many commercial solutions (such as MS Source Safe).

Just my $0.02 .. PSM
[ September 17, 2006: Message edited by: Paul Santa Maria ]

Paul M. Santa Maria, SCJP
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
I wouldn't start *any* project, however small, without using some version control system (like Subversion for Java, Monticello for Squeak).

In fact, that's not only true for software development - I also use subversion to store articles, presentations etc. I'm working on. That is, if I were writing those articles, I would put them under version control.

So, yes, some form of CM tool would definitely be in my core developer toolkit.

Feel free to quote me.


The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Geoff Koch
Ranch Hand

Joined: Mar 19, 2006
Posts: 35
Thanks, Paul. Can you give just one example of a case where open source source CM proved superior to a commercial tool? And Ilja, I'm curious, if you could only have three core development tools at your disposal (assuming one was a CM tool), what would the other two be? Or is that really too much of an oversimplification on my part?
Thanks!
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by Geoff Koch:
I'm curious, if you could only have three core development tools at your disposal (assuming one was a CM tool), what would the other two be?


Out of the head, probably a refactoring browser (drove me to choose Squeak over Ruby for a private project recently*) and ... mhh, the third already isn't easy to pick. I can't decide between an automated build system and a unit testing tool - mostly because if one of those (or both) were missing, I simply would write my own. That's not so easy to do with a CM tool or refactoring browser...

(*) Yes, I know there is one for Ruby that integrates with Emacs, but I really don't want to work with Emacs if I don't have to...
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30762
    
156

I wouldn't start *any* project, however small, without using some version control system

I second Ilja! I wouldn't do any coding that I wanted to see again without CM. (The exceptions are when writing code to learn how something works.) This includes writing development utilities.

Reasons the CM system is central to development:
1) If your machine crashes, the code is there.
2) If someone is out unexpectedly, the code is in a central place.
3) If I mess up the code I am working on, there is a point I can rollback to without having to start over.
4) If I need to deploy some changes and not others, I can.
5) I can see a history of why I made the changes I did.
6) I have a clear record of which artifacts (like the database schema) go with which code base.

I think an open source CM tool is more than adequate. For Java, this would be Subversion, or even CVS. I can't imagine why you would want to roll your own.

On the topic of rolling your own, we have more informal (read: not a tool) CM for certain types of artifacts. For example, our team process document isn't under a CM tool. Whenever there is a change, someone makes a copy of the document with the current date. Similarly for UI prototypes, we make copies of the folder. Even though this isn't a tool, it shows we value some level of CM for non-code artifacts.

If I had to select 3-4 tools, they would be:
1) IDE
2) CM - Subversion or CVS
3) Static code analyzer (For example: PMD, FindBugs, JTest, etc)
I can't decide between an automated build system and a unit testing tool - mostly because if one of those (or both) were missing, I simply would write my own.

I agree with Ilja on this too. I went with a static code analyzer because it is harder to write one than a build tool or unit test framework. I find that the defects found by the static code analyzer save a lot of time.

Feel free to quote Ilja . I think he said everything very well. (It's fine to quote me if I said anything useful.)

Jeanne Boyarsky
Java Developer for a bank in NYC


[Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Blogging on Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, OCAJP, OCPJP beta, TOGAF part 1 and part 2
Geoff Koch
Ranch Hand

Joined: Mar 19, 2006
Posts: 35
Thanks very much, Jeanne and Ilja. I really appreciate it. To both of you: I take it neither of you really see a big difference between commercial and open source CM tools for most projects? And Ilja, I'd love it if you could share one or two specific examples from your professional experience of where proper use of CM made things run smoothly. Thanks again!
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30762
    
156

Originally posted by Geoff Koch:
To both of you: I take it neither of you really see a big difference between commercial and open source CM tools for most projects?

I like the open source CM tools better because there are more tips on how to do things. I find it easier to create custom reports and that there are more books on the open source tools. Beyond that, I don't feel a need for the extra features that the commercial tools offer.
Geoff Koch
Ranch Hand

Joined: Mar 19, 2006
Posts: 35
Thanks, Jeanne. Out of curiosity, do you think that CM is becoming less important over time? My guess would be that it is as we move toward more iterative programming but maybe I'm off on that. Certainly in the writing world, which I'm more familiar with, the formal "CM" that was built into traditional publishing organizations (newspapers, magazines, etc.) -- things like shepherding an article through editing, layout, adding photos, etc. -- seems to be giving way to much more chaotic model represented by blogging, for instance. Maybe it's not a good comparison, metaphor, whatever, but it seems like the same trends are present in software development, too? Or no?
Paul Santa Maria
Ranch Hand

Joined: Feb 24, 2004
Posts: 236
Here are some good anecdotes on just how bad Visual Source safe has traditionally been:

http://www.codinghorror.com/blog/archives/000660.html
Geoff Koch
Ranch Hand

Joined: Mar 19, 2006
Posts: 35
Thanks, Paul. Do you have any particular horror stories to share based on your work? I'm really look for tales from folks who touch these kinds of technologies on a daily basis. Also, I was reading that page... can you or anyone tell me just what an "atomic check-in" is?
Best regards,
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by Geoff Koch:
can you or anyone tell me just what an "atomic check-in" is?


I haven't read that page, but an "atomic check-in" is a check-in that you either see completely, or not at all.

With CVS, which hasn't atomic check-ins, it can happen that you update your working copy while someone else commits his changes. Then you can get only part of the changes - some files are still of the old version, some of the new version. That's obviously not so good...

With atomic check-ins, that simply doesn't happen.
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by Geoff Koch:
Out of curiosity, do you think that CM is becoming less important over time? My guess would be that it is as we move toward more iterative programming but maybe I'm off on that. Certainly in the writing world, which I'm more familiar with, the formal "CM" that was built into traditional publishing organizations (newspapers, magazines, etc.) -- things like shepherding an article through editing, layout, adding photos, etc. -- seems to be giving way to much more chaotic model represented by blogging, for instance. Maybe it's not a good comparison, metaphor, whatever, but it seems like the same trends are present in software development, too? Or no?


If I understand correclty, there are several aspects of CM we should talk about here.

The part you seem to be refering to would translate to software development to a cycle like developer checks in code, senior developer reviews the code, QA tests the code etc. pp. I agree that that aspect is simply infeasible with highly iterative approaches - the cycle time is just too long.

On the other hand, the version control aspect - the ability to look back through the version history of a file, to see who changed what and why, to merge changes done by different people at the same time - is becoming even more important.
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30762
    
156

Originally posted by Geoff Koch:
Thanks, Jeanne. Out of curiosity, do you think that CM is becoming less important over time? My guess would be that it is as we move toward more iterative programming but maybe I'm off on that. Certainly in the writing world, which I'm more familiar with, the formal "CM" that was built into traditional publishing organizations (newspapers, magazines, etc.) -- things like shepherding an article through editing, layout, adding photos, etc. -- seems to be giving way to much more chaotic model represented by blogging, for instance. Maybe it's not a good comparison, metaphor, whatever, but it seems like the same trends are present in software development, too? Or no?

No. CM is just as important if not more important with iterative programming. You need to keep track of more frequent checkins and are more likely to have to branch to support defect fixes outside of the planned iterations.

I think your analogy is more like a comparison to the lifecycle.
Geoff Koch
Ranch Hand

Joined: Mar 19, 2006
Posts: 35
Thanks to both of you. Ilja, I'm curious then: if CM isn't feasible for full lifecycle management (which I think is what you're describing, right?) then what's used instead? In other words, is there a replacement to CM when you go more iterative?

And Jeanne, I appreciate your comments. The one thing I seem to be running into is that CM is such a general term and it's coopted by all sorts of vendors who do anything even loosely related, including application lifecycle management. Do you agree that heavyweight ALM tools are slowly becoming less important? Thanks again.
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by Geoff Koch:
Thanks to both of you. Ilja, I'm curious then: if CM isn't feasible for full lifecycle management (which I think is what you're describing, right?) then what's used instead? In other words, is there a replacement to CM when you go more iterative?


When you go more iterative, that is when your iterations become shorter, your lifecyle management needs to be fast, too.

Imagine an iteration length of one or two weeks. And imagine that we really get from an requirement description of the customer to a deployable, quality assured implementation in one iteration. Then you simply can't afford to have waiting times due to hand-offs and sign-offs between different roles.

The solution is to have a colocated, highly collaborative, crossfunctional team. The whole lifecycle of a feature is handled by that team, mostly by working together as much as possible, and by face-to-face communication.

A software tool would just slow down such a team. And because the lifecycle is so short, there also isn't much need to persist intermediate work products - you don't need to save them to continue work on them later, because you don't stop working on them until all the work is finished.

Disclaimer: I only have experience with small teams (<10 developers). Don't know how bigger teams would handle that.

Does that make sense?
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
By the way, you may want to do some research on PatientKeeper. As far as I know, that team deploys new versions of its software to its customers every couple of weeks. And that's life-critical medical software!
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30762
    
156

Originally posted by Geoff Koch:
And Jeanne, .... Do you agree that heavyweight ALM tools are slowly becoming less important? Thanks again.

Yes. I think the ALM tools need to become more agile to compete and be useful.
Geoff Koch
Ranch Hand

Joined: Mar 19, 2006
Posts: 35
Absolutely, Ilja, it makes sense. So the solution is more about process and working together than any tool, right?

I should confirm: may I quote freely from this dialogue in my article?

I appreciate your help and feedback!
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30762
    
156

Originally posted by Geoff Koch:
I should confirm: may I quote freely from this dialogue in my article?

Not sure if this directed at Ilja or myself, but it is ok with me.
Geoff Koch
Ranch Hand

Joined: Mar 19, 2006
Posts: 35
Thanks. How about you, Ilja?
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by Geoff Koch:
So the solution is more about process and working together than any tool, right?


In fact, it is even more about team members deciding how to collaborate on a day-by-day basis than about process.

It's no coincidence that the first line of the Agile Manifesto states that we "value Individuals and there Interactions over Processes and Tools". (That is, while there is value in the latter, the former things are even more important.)

I should confirm: may I quote freely from this dialogue in my article?


Yes, feel free to do so.

Is there a way that we can see the final article(s)?

I appreciate your help and feedback!


You're welcome!
Geoff Koch
Ranch Hand

Joined: Mar 19, 2006
Posts: 35
Thanks, Ilja. The final article will appear on sdtimes.com in a few weeks. I'll try to remember to post a link to it here, as well, when it's published. Best regards,
Geoff
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by Geoff Koch:
I'll try to remember to post a link to it here, as well, when it's published.


That would be great, thanks!
Geoff Koch
Ranch Hand

Joined: Mar 19, 2006
Posts: 35
Ilja, I need some basic information about you: Where you live, what you do for a living, who you work for, when your book was published, etc. It's for attribution in the article. i.e., so I can say... "...according to Ilja Preuss, a developer based in X, Germany who coauthored the 2005 book Softwaretest mit Junit..." Thanks!-Geoff
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30762
    
156

Originally posted by Geoff Koch:
The final article will appear on sdtimes.com in a few weeks.

It's up now.

Ilja: make sure to read all the way to the end for where you were quoted.
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by Geoff Koch:
Ilja, I need some basic information about you: Where you live, what you do for a living, who you work for, when your book was published, etc. It's for attribution in the article. i.e., so I can say... "...according to Ilja Preuss, a developer based in X, Germany who coauthored the 2005 book Softwaretest mit Junit..." Thanks!-Geoff


Ups, I totally missed this post, sorry!
Geoff Koch
Ranch Hand

Joined: Mar 19, 2006
Posts: 35
Thanks again for the help on the story! I really appreciate it. Have a nice weekend!
-Geoff
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: from a tech journalist: so, just how important is CM to a development project?