Slashdot Mirror


Beginning Project Documentation?

mirthe_v writes "Hi, I'm working for a small webcompany (about 20 people), with ColdFusion programmers and designing staff. We all work on a bunch of projects (Internet, intranet, cd-roms, etc.) on the same time, with different people and different or no methodologies. There is an ever growing need for documentation, but we have no idea where to start."

mirthe_v continues: "I was just wondering how other people/companies keep track of their current and older projects.
Do you put stuff in a database, if so, what about all those diagrams and handwritten notes.
If not, do you store things in a folder per project, and how do you then stop documentation from getting lost and making sure people store things where they should.

"As I said, I don't know where to start, especially since the staff varies greatly in the need for documentation, technical background, experience with writing documentation and even different languages (English and Dutch).

"Please share all your thoughts and experiences. Cheers, Mirthe"
"

310 comments

  1. I've got the answer... by binner1 · · Score: 3, Funny

    Hire a new guy/girl...it's easier to saddle the new guy/girl with the crappy (but very important) jobs!

    -Ben

    1. Re:I've got the answer... by bkr1_2k · · Score: 1, Insightful

      I don't know about hiring someone new but couldn't you just start by compiling comments and formatting them into a reasonable sounding document? Are you looking for user manual type documentation or comment style docs for coders or what? The longer you wait to get this rolling though, the worse it will get, that's for sure.

      --
      "Growing old is inevitable; growing up is optional."
    2. Re:I've got the answer... by binner1 · · Score: 1

      Whoever modded this as flamebait has obviously never been the new guy/girl...!

      -Ben

    3. Re:I've got the answer... by shogun · · Score: 2, Insightful

      Its very useful learning excercise for the new person to start documenting the current project. As they will actually learn what everything does as well as having to talk to everyone else when they encounter something they dont quite grok and need an explanation.

    4. Re:I've got the answer... by Moderation+Tester · · Score: 2, Insightful

      TWiki, a flexible, powerful, and easy to use Web-based collaboration platform has worked well for us.

      http://www.twiki.org/

    5. Re:I've got the answer... by Anonymous Coward · · Score: 2, Interesting

      well we created our own custom Documentation System which basically is a bunch of XML Tags embeded into our code and a PRogram that crawls thru the Code files creting descriptions of functions etc on the fly. I works flawlessly and is at the same time available in our development intra under the project name . All you have to do when you make a dchange, is write inthe codefile the comments to ir and run the update script on the file, it then updates the online documentation on the fly and the new things are available.
      total development time for this was 3 months and had 1 guy dedicated to developing it. We then made it so that everyone was "excused" from projects for one week where he/she went thru the code of a project that she worked on (or more) adding the comments to functions.
      We have now over 1 GB in documentation and new employees grasp the coding principles VERY fast.

      Anyway thought i put my 2 Cents

      PS: we have 60 people working in our Company and only 20 coders. But the documentation applies to all including us in the IT Department.. and with the scripts its VERY easy...
      //Vic--- from Finland

    6. Re:I've got the answer... by Raedwald · · Score: 1

      Hah hah only serious. As shogun says in his comment, this can be valuable for the new hire, but more importantly, it can be good for the team.

      The new hire has none of the details of the system in their head. They will have a more objective view of what is gnarly and requires documentation, not being responsible for the abominations in the first place. This works best if you allow the new hire to produce the documentation in whatever form they wish, rather than, say, requiring them to produce a 'High Level Design' document and a 'Detailed Design Document' and a 'Data Model' etc. Specifically tell them that Your task is to create documentation that rapidly allows new team members to learn enough about the product to work on it. Produce documentation that you would have found useful, had it existed. A case can be made that all new team members should be given the job of updating or improving the documentation along those lines.

      When I joined my current team, I made doing this one of my personal objectives. Fortunately, I had an existing Technical Guide to start with. Whenever I found it deficient, I made an amendment to my copy of the 'Guide. The result is a fully marked up copy ready to become the next version.

      --
      Ne mæg werig mod wyrde wiðstondan, ne se hreo hyge helpe gefremman.
  2. CowboyNeal-Flow by Filberts · · Score: 1, Offtopic

    We have a semi-customized document management system. He conducts real-time surveillance and documentation of our systems and files them according to the CNFS (CowboyNeal File System.) We've run into a few bugs with the eccentric cataloguing mechanisms (CowboyNeal's pockets) but otherwise it seems to run smoothly.

    1. Re:CowboyNeal-Flow by sinserve · · Score: 1

      > it seems to run smoothly.

      Yes, only when going *down* the stairs. But it seems to
      halt for long periods, when going UP. Garbage collection, rumor has it.

  3. KDE by EricKrout.com · · Score: 5, Informative

    I know that the KDE team uses DocBook,
    for which there's a great guide (crash course)
    that they encourage their writers to use.

    m o n o l i n u x :: All Day Long. All Day Strong.

    1. Re:KDE by Anonymous Coward · · Score: 1, Interesting

      I would love to use docbook but are there any WYSI-Frickin'-WIG tools which will allow lusers to edit documents. I tried with lyx a while ago and gave up after a brief struggle.
      Try asking your average windows dweeb working on ms word to write documentation which is version controllable as well as readable across both windows and unix.
      Are there any GUI tools which allow you to edit docbook without having to bother with tags?

    2. Re:KDE by Anonymous Coward · · Score: 1, Informative

      First and foremost, stop the dweeb from using Word, eh.

      Then, a gentle introduction to Xemacs w/ XAE

      Docbook, Docbook, Docbook. 'Sgot a lite version but with a little DTD knowledge you can trim it down as much as you'd like.

    3. Re:KDE by threefifteen · · Score: 1

      From memory, Abortext do produce visual editor. There are also several other products on the market.

    4. Re:KDE by eison · · Score: 1

      Ugh. DocBook is a good way to keep people who would otherwise document from doing so - it unnecessarily raises the bar to starting.

      Your average schmuck these days can write simple plain HTML with zero startup effort, so if you ask them to do so they're likely to since it's no great bother and the format is remarkably tolerant of mistakes. If you ask them to go learn docbook first, there is a good chance they'll never get around to it, or if they do then it won't compile or look reasonable since they never figured out how to process their docbook and look at the results.

      It horribly violates the 'simplest thing that could possibly work' principle.

      --
      is competition good, or is duplication of effort bad?
  4. java idea is really good... by edrugtrader · · Score: 3, Informative

    in java you just comment the functions in a certain way, and it will build the documentation for you.

    maybe you could design something similar, and then use your new program to document itself!

    --
    MARIJUANA, SHROOMS, X: ONLINE?! - E
    1. Re:java idea is really good... by cheese_wallet · · Score: 2

      I think this person is talking about Design Documents, whereas you seem to be referring to a User Manual.

      One teaches someone how to use a product, and is frequently written after it is done.

      The other teaches a programming group how to code a project. (Interface definitions, conventions, hierarchy, etc...) This is supposed to be done before the first line of code is written. Most programmers don't write these, unless their manager makes them, and most managers don't see the use anymore than the typical programmer does.

      And when the manager does make them write one, they usually do it as they go, writing the document, and coding side by side, rendering the document useless. Sigh.

    2. Re:java idea is really good... by edrugtrader · · Score: 2

      actually i wasn't talking about either... the end result is how a programmer actually did code the project.

      it defines all the function, pre-conditions, post-conditions, input, output, what it does... all in a highly readable and understandable form.

      i'm not sure if that is what they want...

      --
      MARIJUANA, SHROOMS, X: ONLINE?! - E
    3. Re:java idea is really good... by Anonymous Coward · · Score: 0
      Actualy what you end up with is documentation that looks like this: http://java.sun.com/j2se/1.3/docs/api/index.html

      I wouldn't exactly call that a user manual ;o)

    4. Re:java idea is really good... by cduffy · · Score: 2

      Yes, that's fine for after-the-fact documentation... except when it isn't. And there are plenty of places where it isn't.

      100 pages of javadocs do little more to help one understand a project from a high level than no documentation at all. What most projects really, really need is a good high-level explanation, then some mid-level documentation, and *then* finally the nitty-gritty stuff that can be generated automatically. If you do XP (that's Extreme Programming, not the OS), then the testcases you use to test high-level functionality are pretty darned good documentation -- usually better than the code itself, because they only discuss the visible API, and less about how each object actually does its thing internally.

      That all said, when it isn't asked to be something it ain't, javadoc kicks ass -- and its C++-based cousin, doxygen, is perhaps even sweeter (except, of course, for having to deal with C++).

    5. Re:java idea is really good... by ddelikat · · Score: 1

      there is a series of tools 'out there' in a class called 'literate programming tools' one such tool is called cweb. these allow programmers to write documents which can be used to generate code or documentation ( in a variety of formats ) look at yahoo: http://search.yahoo.com/bin/search?p=literate+prog ramming -dav

  5. http://twiki.org/ by freebsd45 · · Score: 5, Informative

    TWiki, a flexible, powerful, and easy to use Web-based collaboration platform has worked well for us.

    http://twiki.org/

    1. Re:http://twiki.org/ by cbcbcb · · Score: 1

      We've started using usemodwiki at work for doing preliminary documentation.

      The real benefit of it is that it is much more fun than 'real' documentation and at least some engineers update it voluntarily. We do have official documentation processes, but it's much easier to use the wiki. In principle, documentation could be done by pointing our technical author at the wiki and letting him get to it :)

    2. Re:http://twiki.org/ by shobadobs · · Score: 4, Insightful

      Or, if you want to use PHP, try PHPwiki, at http://phpwiki.sourceforge.net/

      I'd give a working example of a wiki, but I'm worried about the Slashdot effect on it -- the guy might run up bandwidth costs (and he's not my enemy), and it might become too popular (which means too expensive to run, and it means that it would be edited too quickly and by too many people so that it would lose its small-community feel that Slashdot has also lost).

    3. Re:http://twiki.org/ by Peter+HoneyO · · Score: 1

      Yep, works for me too... Recommended...

      I've been documenting large Perl projects with it, with database integration, and I'm very happy.

    4. Re:http://twiki.org/ by alexburke · · Score: 1

      by freebsd45

      Why on earth would include (what appears to be) a version number in a Slashdot nickname?

    5. Re:http://twiki.org/ by Arandir · · Score: 1

      Every wiki or related documentation site I have every found has been a mess of disorganization. Wiki may have its place in the overall documentation scheme, but it shouldn't be the centerpiece.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    6. Re:http://twiki.org/ by sharkey · · Score: 3, Funny

      TWiki, a flexible, powerful, and easy to use Web-based collaboration platform...

      Does it have an audible announcement for notifications? Maybe something along the lines of, "BeeDeeBeeDeeBeeDee. Hey, Buck!"

      --

      --
      "Outlook not so good." That magic 8-ball knows everything! I'll ask about Exchange Server next.
    7. Re:http://twiki.org/ by skybrian · · Score: 1

      Opinion-heavy, fact-free rant in the best slashdot style:

      It is more important that the documentation be written and updated than it be organized. If you make individual contributors jump through hoops, lots of documentation will never be written. And documentation shouldn't wait until there's a place to put it.

      Organization is important too, of course. The best way is to have someone be the librarian. Once there are useful conventions, people will follow the librarian's lead.

    8. Re:http://twiki.org/ by lesmikesell · · Score: 1

      Hmmm, since the point of a wiki is that it is easier to fix something yourself than to complain about it, if those wiki sites are still disorganized it is your own fault....

    9. Re:http://twiki.org/ by p3d0 · · Score: 5, Funny
      it would lose its small-community feel that Slashdot has also lost
      You mean back in the good old days when you first joined, when it was only you and the 264,599 other users?
      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    10. Re:http://twiki.org/ by JordanH · · Score: 1
      • Every wiki or related documentation site I have every found has been a mess of disorganization.

      This wiki on the lua programming language seems to be fairly well organized.

    11. Re:http://twiki.org/ by Peter+Harris · · Score: 1

      A Wiki is a good place to *start* documenting stuff, precisely because it doesn't impose any structure and is faily lightweight to use.

      I use Zwiki on Zope for this purpose. When it comes time to pull a whole bunch of Wiki pages together into a formal document, then yeah, you probably want to use Docbook or LyX.

      However, you probably also want to put it back in the Wiki in its newly structured form, so it will get updated when necessary.

      I would like to see something that supports expiry dates (or review-after dates) for Wiki pages, so you could go back into a document and check that all the expired stuff still accurately reflects the current situation. Not sure how you would do this.

      --

      -- What do you need?
      -- Gnus. Lots of Gnus.
    12. Re:http://twiki.org/ by jperegrino · · Score: 1

      Wiki allows you to document without getting bogged down worrying about structure and organization. Great for just dumping what's in your brain. Which at least documents info *somewhere*.

      Much better than sitting in meetings discussing how the documentation should be organized and where it should go on the web -- just watch your developers go to sleep in those meetings.

      Once you determine what the important documentation is, then you can clean it up.

      In our twiki, I (as the manager) go in from time to time and clean things up.

    13. Re:http://twiki.org/ by herderofcats · · Score: 1

      We also have been using TWiki for several years. The best thing about it is that ever wiki page is RCS'ed, so that you can see versioning back into the past. Some of our system documentation hundreds of revisions, and you can go back and see what changed.

      From a manager's perspective TWiki's RCS capabilities also allow the manager to just click the 'See All Changes' button, and see all the work that was done in the last day or so. From a collaboration perspective, all the documents are live for all editors with simple locking, so it will sometimes say "John is currently editing ProductionSystemDoc", etc.

      I highly recommend it for small teams.

      -- Herder of Cats

    14. Re:http://twiki.org/ by Arandir · · Score: 1

      No matter how good the documenation is, it is utterly useless if you can't find it.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    15. Re:http://twiki.org/ by Arandir · · Score: 1

      When I want documentation to be organized, I don't be structured markup or slavish adherance to style, or anything like that. I want the entire documentation *set* to be organized. When I need to fix a bug in a module, I want to be able to access the documentation for that bug right now, without having to spend days tracking it down, or only finding part of it.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    16. Re:http://twiki.org/ by Anonymous Coward · · Score: 0

      Compared to some communities, that is small...

  6. Old Fashioned Notebooks by bioart · · Score: 4, Insightful

    I always liked the record keeping as done in the biotech area... Every scientist has a lab notebook (offline) where references are made to everything that was done (and where things can be found).

    I'm always suspect of documentation and record keeping that is 100% digital. If the notebooks are witnessed and microfilmed, there will never be a question on when the work was done.

    If notes about how things are done are kept on a notebook like that, it is a lot easier to go back and figure out what was done and how it was implemented when it comes time to writing real documentation. This does not address the inprogress documentation, but you should not forget about the tracking aspects. (CVS is good, but it could be falsified easier than a notebook I would think).

    Don't get me wrong, I hate doing this... but it is a good idea :)

    DrArt

    --
    -- Huh?
    1. Re:Old Fashioned Notebooks by Anonymous Coward · · Score: 1

      Paper notebooks are great but only really useful for the notbook owner. Also they are not searchable. That's why, in addition to Twiki, we use the wonderful Elog program.

      It is completely standalone (has its own web server built in) and is super-simple to configure. A great tool for tracking things like configuration changes on machines.

    2. Re:Old Fashioned Notebooks by number6.3 · · Score: 1

      I agree with this approach only if you think you're working on something you can get a patent on. Your basic webmonkey isn't going to come up with anything that hasn't been seen before.

      I wonder if the following approach would work: collect everybody's online notes (docs/email/etc), put it on a CD (or several Cd's), and mail it to yourself (return recpit requested?), and don't open the package when you get it. This will help with copyrighting, and it would prove "prior art"

  7. WIKI by krokodil · · Score: 1, Redundant

    WIKI is very informal and easy way to do
    technical documentation.

    One of Wiki implementations: http://www.twiki.org/

    1. Re:WIKI by RickySilk · · Score: 4, Informative

      We started using a wiki about a month ago and we love it! We named it "The Brain" and it "keeps getting smarter". Highly recommended.

      Since you seem to be a cold fusion shop, try this out http://www.cdsi-solutions.com/cfwiki/ we had it running in about 2 minutes.

      --
      Ricky Silk
      kung foo ezine let me waste your time.
    2. Re:WIKI by Anonymous Coward · · Score: 0

      I'll second (or Nth) the Wiki comment. I'm part of a new startup; there are currently 3 of us, one business guy, one sorta technical business guy, and myself. I setup a ZWiki ( http://www.zwiki.org ); it requires Zope ( http://www.zope.org ), but we're interested in using Zope, anyway. Within a couple of days all three of us were very familiar with the style conventions, etc. I setup links to allow easier integration of images and other document types, which we now store in Zope.

      I've also used TWiki, which is another very featureful Wiki implementation. Both ZWiki and TWiki are well suited for business environments where you may want to restrict access to certain content or allow only certain users to add/change/delete pages. TWiki has the added virtue of versioning content, so you can easily go back and see previous revisions of specifications, documentation, etc.

      I especially like the fact that Wiki's require only a browser to edit them. That means I can open up my firewall and allow users to make changes at home, etc.

  8. Filing Cabinet by korruptDOTcom · · Score: 0

    Go with a filing Cabinet and some notebook paper. Hire someone from Burger King to keep it organized.

  9. use your web skills by envelope · · Score: 1

    Since you're a web development company, I'd suggest you set up a documentation intranet site.
    With a little planning, you can make it easy for folks to figure out where to put their doc files and where to add a link.
    If you want to go that far, you could also scan in handwritten notes and diagrams and post those to the site as well.

    --

    appended to the end of comments you post, 120 chars
    1. Re:use your web skills by Anonymous Coward · · Score: 0

      But to properly design such a system they'd have to document it!

  10. More is better than less! by lynx8625 · · Score: 2, Interesting

    It's very, very easy to let documentation fall out of date, but even old documentation is preferable to none. Your most important job here will be to get people in the habit of creating and committing documents to some kind of record. Ideally, you should have a source control system, and you can easily place documents under source control as well, so you can go back to previous versions of documents or recover in case you accidentally overwite documents or lose something important in an overly ambitious cut. Be at least systematic enough to put design documents in appropriate project folders. Set a good example and people coming after you will look at what's already there as a model for making their own documents. Use descriptive file names. Naming something 'design1.txt' may seem simple enough now but three months later you'll be wondering if that was your first rough or final design concept, whether it includes feedback from the customers, and so on.

    1. Re:More is better than less! by questionlp · · Score: 2, Funny

      But I like less better than more (at least when using Solaris ;-)

    2. Re:More is better than less! by humblecoder · · Score: 1
      I disagree with you that out of date docs are better than none. If something in your documentation is wrong, it is WORSE than having no docs because you'll wrongly take the doc at face value rather than scrutinizing the code to figure it out.


      I've been bit before by this problem and it is definitely a pain!

    3. Re:More is better than less! by lynx8625 · · Score: 1

      You can at least have an idea what principles are being followed... Though yes, you (as in the author of a project) should note when a document is outdated -- but it still gives you a starting point because it was at one point, accurate.

  11. Ever thought about this eventually? by Anonymous Coward · · Score: 0

    There's no documentation where none is to be found, and no documentation required where none is expected. If you do expect documentation, you have to write specific goals and outline them in a summarizing document that one of you becomes in charge with. With said documentation, you can now go about your buisness without that growing need for documentation which seemed to be your problem to start with. Damn I have a bad cold. Beers wouldn't help it, so I'm smoking something stronger than grass. I hope that what I wrote is still somewhat coherent.

  12. Document repositories... by sterno · · Score: 5, Interesting

    I've found that CVS works well as a document repository. Any sort of version control system is well suited to the task of keeping documents. The only trick beyond that is establishing an organizational structure for it.

    As far as organizational structure, base it on the development process you use. So in each phase of development, you have the documents needed for that phase seperate from everything else. If you have deliverable documents, put those in a directory and then have subdirectories for any supporting material.

    That's a suggestion. I would highly recommend sitting down and formally structuring this. If everybody knows where the documents are, and where to put new documents as they generate them you'll have a lot easier time of things.

    --
    This sig has been temporarily disconnected or is no longer in service
    1. Re:Document repositories... by cca93014 · · Score: 1, Funny

      Ok, I've been drinking Stella Artois and smoking green all night but why the fuck is this parent set to +5 Funny?

    2. Re:Document repositories... by donheff · · Score: 1, Funny

      Come on editors - why rated as funny?

    3. Re:Document repositories... by vexil · · Score: 2, Funny

      Its a self defining gag. The funny thing is that it is rated as funny, when it's not, and you guys are freaking out about it.

      (yeah, its a stretch, I know.)

    4. Re:Document repositories... by Anonymous Coward · · Score: 1, Funny

      There appear to be a few rogue moderators who assign +1 Funny to highly rated posts. They think it's funny.

    5. Re:Document repositories... by paddlebot · · Score: 2, Funny

      Every single web based document management system I've ever seen has been a complete pain in the ass. As a consultant I've seen 3 or 4 at various client sites. No one ever knows how to use it right, it is always klunky and it mostly gets ignored.

      What is important with whatever documentation you keep is that you have it easily available for everyone. Everyone also needs to be able to easily get the most current copy and be able to submit new information into the current copy.

      Sound like version control to anyone? Yup, just use whatever version control software you have on your project. Something that the developers already know how to use. Put the docs under the same project as the source code. When I cvs update (or whatever) to get the current code, I should also get the current doc.

      Using CVS will not be the most efficient if you are using Word for your docs, since you have to store the whole binary each time. This isn't usually a problem, but the storage can get big quick. Also you won't get what changed each time since it is a binary. Text files clears this up.

      Getting your business guys to use CVS is another whole can of worms, but at least all the developers can get the docs easily.

    6. Re:Document repositories... by Anonymous Coward · · Score: 0

      I don't find this funny at all.

    7. Re:Document repositories... by kiwaiti · · Score: 1
      ...rigging the moderation system, making it less useful.

      Remember, you can assign arbitrary moderation effects to every rating. What if someone chooses not to want the funny stuff (no time)?

      Very funny indeed.

      Just because they're incapable of communicating doesn't mean they should break the system for others. Stupid jerks. They deserve an $rtbl.

      Kiwaiti

      --
      Member of the Legion Of Microsoft Haters
  13. Start like writing started: Oral Tradition by Seth+Finkelstein · · Score: 2
    Start by the way writing started: Transforming the oral tradition to print. That is, "How do you do X? What happens when Y goes wrong? What's the quirks in the Z process?". It's very much like interviews or oral history - having someone talk with the Engineers, and put down what they say.

    Then refine this.

    It's a fairly painless process, and you can do it in teams.

    Of course, the big step will come when you need to get someone to update and maintain what you've created.

    Sig: What Happened To The Censorware Project (censorware.org)

    1. Re:Start like writing started: Oral Tradition by abe+ferlman · · Score: 5, Funny

      I say keep the oral tradition. Hire a master storyteller and have this person write lays and epics about the overwhelming odds and unimaginable challenges your programmers faced, and the way that these struggles between good and evil shaped the interface you see today.

      Who wouldn't buy the support contract if it included a yearly visit from the master storyteller? By jove I believe I've just solved the "how to make money from GPL softare" problem...

      :)

      --
      microsoftword.mp3 - it doesn't care that they're not words...
    2. Re:Start like writing started: Oral Tradition by Pig+Hogger · · Score: 2
      Start by the way writing started: Transforming the oral tradition to print. That is, "How do you do X? What happens when Y goes wrong? What's the quirks in the Z process?". It's very much like interviews or oral history - having someone talk with the Engineers, and put down what they say.
      Looks like a job for NNTP. Hmmm. I guess I'll try setting up a NNTP server where I work, just for that...
    3. Re:Start like writing started: Oral Tradition by qslack · · Score: 2

      1. Train for years as a master storyteller.

      2. ????

      3. Profit!

    4. Re:Start like writing started: Oral Tradition by ajlb · · Score: 3, Funny

      Hey can you imagine a Beowulf of these?

      (He runneth for cover)

      --
      I say the future is a serious matter
      And so for god's sake - hock and soda water!
  14. lab notebooks by Anonymous Coward · · Score: 2, Interesting

    Give each person a real lab notebook, the kind that you can't rip pages out. Require that employees use the lab notebook to record project notes, observations, and thoughts during their work day. When the employee resigns or is fired, the notebook stays. These notebooks create a threaded history of projects and the issues encountered along the way. The value of well maintained lab notebooks is truly priceless. These notebooks become the raw material for more formal documenation, and serve as documentary bridge between the project requirements and its actual implementation.

    1. Re:lab notebooks by Anonymous Coward · · Score: 0

      In my lab notebook I wrote things like:

      - Buy pizza at Pizza Pizza. Toppings:

      John
      -- Pepperoni, Double cheese, extra sauce.

      May
      -- Pepperoni, Sausage, Bacon, sweet peppers.

      Carl
      -- All Veggies

      Because that was on my mind longer than my work. :-)

    2. Re:lab notebooks by Anonymous Coward · · Score: 0

      I know. Mine too, but there are a few more important entries on occasion. One good use is to "cover your ass". Make a note when you see a project taking a wrong turn. It's great to be able to refer to an "I told you so" entry.

    3. Re:lab notebooks by leed_25 · · Score: 1

      I have kept such notebooks over a career as a software engineer that spans 30 years. I regard these journals as personal property. I would not be averse to supplying xerox copies to an employer if they were requested, but no such request has ever been made.

    4. Re:lab notebooks by xnok · · Score: 1
      In my prior employments, the lab notebooks were considered the property of the company. However, no one ever asked me to return them when I left.

      The problem of consolidating the team's lab notebooks into actual documentation remains. The collection of lab notebooks might be useful to a historian, but is no substitute for formalized documentation.

  15. Docbook by Anonymous Coward · · Score: 0

    Docbook is the ideal solution to all ones documentation concerns... Using the Open Jade parser it is perfect for any open source project desiring to use only open source tools. It allows one to create HTML or POSTSCRIPT output. A single document can even be made from multiple files in different directories.

  16. off the shelf package by Anonymous Coward · · Score: 0

    Try macromedia's sitespring. I've only skimmed over it but seems to do everyhitn oyu want

  17. Documentation Consultants by zpengo · · Score: 4, Informative
    Hire a massively-qualified technical writer to serve as a consultant in order to help get things in order. They can start establishing conventions, getting a team of writers together, determining your current and future documetation needs, and figuring out how to resolve those needs.

    Far too many companies approach tech writing as the "music department" of the company: Nice to have, but not really necessary. The problem is that the lack of attention given to quality documentation winds up costing the company later. If you don't know where to find such a consultant, you could always shoot off an e-mail to a highly qualified individual such as myself. *smirk*

    --


    Got Rhinos?
    1. Re:Documentation Consultants by BWJones · · Score: 3, Insightful

      Far too many companies approach tech writing as the "music department" of the company: Nice to have, but not really necessary. The problem is that the lack of attention given to quality documentation winds up costing the company later.

      This is true and it can cost them dearly. My wife's company recently did a review of their products and that included feedback from customers. It turns out that in the past six months three big customers are considering moving to a competitors products because of lack of documentation. The company previously had decided to outsource all documentation to India as they figured there had to be something written up but they did not see the benefit of quality documentation. Additionally, a good technical writer may have experience in other arenas such as interface design. No offense to the full time programmers here, but some of you folks create the most attrocious interfaces I have ever seen and could use a little direction when it comes to interface. It may make sense from a technical standpoint, but put a lousy interface in front of an end user and they can be totally lost.

      The other issue is when companies try and cheap out on documentation and hire "writers" that have no experience or training in the documentation arena. What results is poorly managed and poorly documented projects that can cause more harm than good. My reccomendation is to find someone that has several years experience and preferably a masters degree in technical communication or better. Like most things, you generally get what you pay for, so don't cheap out.

      --
      Visit Jonesblog and say hello.
  18. Focus on making money by litewoheat · · Score: 2, Interesting

    I know this may sound evil but when a company is as small as yours, worrying about ANYTHING besides making money and pleasing the customer is detramental. You may get people who want do things "the right way". Fire them QUICKLY!! The "right way" people are always the ones who blow schedules and bring down companies. The only way is the way that ships your product and keeps customers calling. As you grow you can begin to focus on some level of procedure, documentation etc. This comes from someone who has seen "right way" people destroy a company and keep those people out of his company which has not only survived but still flourishes.

    1. Re:Focus on making money by Infonaut · · Score: 2
      That's an interesting thought, and I see where you're coming from, but in my experience a good system that documents institutional memory is worth its weight in gold. Why? Because when those people you hired leave, there will be no record of how they did what they did.

      You pay the piper now, and it takes less time and money, or you pay him later, and it takes a lot longer and costs a whole lot more money.

      It seems to me that the "right people" (aka - process-oriented people) in the company you worked for before were likely more focused on process than on results. But there is a happy medium where the process leads to better results.

      --
      Read the EFF's Fair Use FAQ
    2. Re:Focus on making money by Anonymous Coward · · Score: 0

      I worked at a web company where the management didn't care about doing anything the "right way"... just getting the product out the door so they could get paid. Problem was, when the products broke, the recycled staff spent too much time fixing the hacks that were programmed in by the people who didn't care about doing it the "right way".

    3. Re:Focus on making money by Macrobat · · Score: 1
      I know this may sound evil but when a company is as small as yours...
      Not evil, but stupid. If you can't be bothered to do things right the first time, you will lose money eventually, when Product 2.0 fails to ship because nobody can comprehend or find the specs. With the size of even modest software projects these days, you might not even get past Product 0.9. If a company really cannot afford the time and effort to set up some kind of infrastructure, then they're really too poor to be in business in the first place.

      Your advice is like going to the bank and asking them to finance a business, then telling them you didn't have the time to write a business proposal because you were too worried about making money.

      The "right way" people are always the ones who blow schedules and bring down companies.
      And your evidence of this is...?
      --
      "Hardly used" will not fetch you a better price for your brain.
    4. Re:Focus on making money by Anonymous Coward · · Score: 0

      I'm a right way person. Every company I've been in has not done things the right way and far be it from me to change company policy (one company went under, and whilst I have tried to convince, many have the same attitude as yours). When at the end of the day the client asks wheres the spec, the requirements, why's this got so many bugs (due to lack of reqs to test against) and generally find the end product is a mess of ill conceived ideas with no backgrounding, I get to say I told you so. I should think you've been lucky so far, good luck when you finally get a big client (such as IBM) and they ask to see your specs at short notice and you can only provide a three page pile of drivel that wouldn't get an pass at degree level computer science.

    5. Re:Focus on making money by litewoheat · · Score: 1

      I don't want to get into a pissing contest here. We've shiped 4.0 of one product line, 3.0 of another, 2.6 of another, 3.5 of yet another. Never laid anyone off. Never had a loosing quarter. We are hiring now. So your whole will thing is bogus. Netscape is a perfect example of "right way" people bringing down a company. I was there.

    6. Re:Focus on making money by Anonymous Coward · · Score: 0

      You don't get it. A small company can't afford to pay the piper now. The gains in the future don't matter at all, since the company won't be around then to collect them.

      The choices are:
      1) Complete failure
      2) Moving as quickly as possible with the bare minimum quality the customer will accept.

    7. Re:Focus on making money by sunluvr · · Score: 1
      Classic example of an amateur vs a professional mentality.

      The company is probably a paper route that never gets the little orange rain bags on...

      This "I have no time for quality just gimmie the money, and if you want to do good work, you're fired" attitude will work for a short time. That is, until your customers want changes or mods to the code, and you're left with 40,000 lines of 3 dimensional arrays and regular expressions just to print a web page. All this pain because some goob thought it made him look smarter to write cryptic code that no one else could read, and left you high and dry when he bolted because you wouldn't buy him a company laptop.

      If you run a business like that, I would imagine you do have customers calling often. Probably to complain about the lack of quality when the product doesn't perform as designed.

      Oh, wait.... You don't invest in design, documentation, or anything that takes time from delivering something importaint like a bad product. nevermind.

    8. Re:Focus on making money by macrom · · Score: 1

      If doing it the "right way" brings down your company, then it must not be the "right way", eh? Doing good design and documentation usually fails at a company that only does it because it sounds like the thing to do. Unless you have people that know how to design, document and develop on a feasible schedule, then you'll go down in flames everytime.

      greg

    9. Re:Focus on making money by Anonymous Coward · · Score: 0

      Netscape was not full of "right way" people--those people were no better than you, just on the opposite side of the spectrum. I've worked with code written by people who have the same mindset as yourself--it essentially makes you want to .kill.whoever.wrote.this.crap. The reason that so much of today's software is shit is because of people thinking like that. What if sysadmins blew off network maps? "! There's some problem with machine X24! Where's X24? Doesn't the "X" mean something? Or maybe it was the 24... And who's routing over there? Dunno..." It's the same situation with software. "Why are these API calls being made? Uh.... I think it had something to do with.... something...." Chances are it's because of someone's shitty job with some other piece of undocumented code relying on undocumented features elsewhere to get around the million-and-one bugs introduced by someone else's *absolute*shit*code*. What's that? You write *good* code? If it's not documented, it's WORTH SHIT. Where are the fire exits? I DON'T KNOW, I GUESS THEY'RE NOT DOCUMENTED. LEMME JUST CALL UP THE BUILDING ARCHITECTS AND ASK. Chances are 4.0 is shit, 3.0 is shit, 2.6 is shit, and 3.5 is shit. Do you really know what it's like to dive into version 4.0 of a quite popular piece of very complex software, which on the surface looks very nice, AND FIND OUT IT'S COMPLETELY UNDOCUMENTED EXCEPT A SCRAP OF PAPER FROM THREE YEARS AGO, FULL OF WHAT IS OBVIOUS HACKS BUILT UPON HACKS, WITH NONE OF THE ORIGINAL "DESIGNERS" AROUND, AND BRIMMING OVER WITH "QUIRKS" BECAUSE NOT ONE SINGLE PERSON TOOK THE TIME TO RESEARCH A NICE DESIGN AND ENFORCE SOME KIND OF STANDARD? I know, because I was there.

    10. Re:Focus on making money by crimoid · · Score: 2

      I agree that the bottom line (finance) should rule the roost in a new company, but it should not do so at the expense of organization.

      I work at a company that started small (dozen or so people) and grew to many hundreds over just a few years.

      I can't tell you how much time we (as a company) have now wasted trying to go back and re-document everything that we have done. Sure the code we have is readable, but there is so much more than clean code to making a company work well.

      So, document as you go. Keep it simple and straightforward in the beginning and grow into more advanced techniques/tools/etc.

      And by the way, if anyone ever says "You may get people who want do things "the right way". Fire them QUICKLY!! " ........ make sure you fire THEM quickly. The last thing you want is someone who will sacrifice quality to make a quick buck.

    11. Re:Focus on making money by rtaylor · · Score: 2

      I always try to meet midway.

      I'm more than willing to make my code readable and documented inline with a quick README explaining usage and initial intent. It's been enough information for the hundred page books to be written later in about the same time as it would have taken initially (NOTE: don't know of anyone whos ever actually read the books, they always go for the readme and code -- but they exist now).

      No documentation is bad, but so is a 'make work' project where the only benefit was an employee had work to do.

      A .plan for a project todo list, dedicated whiteboard with highlevel design notes on it (take digital photos), inline docs and reasonable abstraction that covers 70% of future code directions (ask marketing for their thoughts) with minimal time should be good for a with a small (~20 or less) team under a tight budget.

      Larger companies get the project manager(s), a proposal, business case, technical writeup, lead contact, lead developer, and projects which never complete or don't actually meet the proposal.

      My experience is heavily limited, but fly by the seat of you pants has done a much much better growing the company I work for than the plan everything and document when people sneezed method shrunk it shortly after. (35 people to 160 to ~200k [buyout by large company who turned over most staff with their methods in mind] back to 70 and another turn over to get those people out.

      As a final note, if you code an interface between 2 components that isn't to the spec initally declared (but it has equal or greator functionality and both components work as advertised) just make the coded version the new spec and toss out the old one. This even works with intercompany projects till the 'do it the right way' person comes along.

      --
      Rod Taylor
    12. Re:Focus on making money by cpparm · · Score: 0

      First let me say I completly agree that for a company this size, your first priority is make money.

      Secondly, I also think some document will be helpful. However, for a company with 20 people and each person is doing multiple projects, the amount and type of document they need is dramatically different anything you can learn in a techical writing class. When your audience are engineers who sit two cubicles away from you, it's quite a challenge to make them read the document instead of choosing a number of alternatives. There is a break even point how much effort you should put into document.

      Last, from my own experience, at this stage, the most important document is THE CODE ITSELF. If your code is not self-documenting, no amount of document, and no amount of comment in the code can save you. Especially the last bit: people think putting comment lavishly in the code will make up for bad code. If I had a dime every time I saw a piece of code is not doing what the comment says it does... My favorite comment is: "When I wrote the next three lines of code, only God and I knew the subtleties in them. Since then, the number has been fewer".

      Bottom line is: I really don't think document should be one of your higher priorities, neither is reading /.

    13. Re:Focus on making money by Anonymous Coward · · Score: 0

      Real world example of why documentation is good ...

      Company founded, product made.
      Product starts to sell, work on next version.
      Ignore mamager, skip documentation.
      Lead programmer hit by truck, knowledge gone.
      Company cannot release next version, company goes into toilet.

    14. Re:Focus on making money by Anonymous Coward · · Score: 0


      ....and you're left with 40,000 lines of 3 dimensional arrays and regular expressions just to print a web page. All this pain because some goob thought it made him look smarter to write cryptic code that no one else could read,


      I do this, all my database access is via arrays. it is the fastest way to retrieve data from the database. if you are doing it any other way, then you are not doing your job too well.

      As for regex's, pick a web programmign language and a regex will replace anywhere from 5 to 10 lines of code.

      Bottom line, if you are a web programmer and you have problems with arrays and regexes, then either learn or find another job.

    15. Re:Focus on making money by Anonymous Coward · · Score: 0

      > I do this, all my database access is via arrays. it is the fastest way to retrieve data from the database. if you are doing it any other way, then you are not doing your job too well.

      If you're accessing a PostgreSQL or Oracle database this way, it's far from the fastest/best way to do it.

    16. Re:Focus on making money by danielrose · · Score: 1

      Never had a loosing quarter.
      A loosing quarter?? Good thing they have all been tight!
      Hopefully your products have better spelling! =D

      --
      i hate pansy republicans
    17. Re:Focus on making money by the+eric+conspiracy · · Score: 2

      I work for a small company that has traditionally used a 'get it done and worry about the right way later' method. And of course by the time later comes it's too late.

      What happens is that we never get the projects that would take us to the next level because we can't show the the skill set needed to handle the large project to a customer.

      We are constantly bogged down maintaining poorly or undocumented web sites that work only by accident and fire fighting on servers that have not properly been maintained. Every server that we have has been hacked or infected by viruses at least once, some times multiple times. Our main web server is also where we keep credit card numbers and is also where we do development.

      None of the code we have can be reused on the next project because it is crap.

      Projects take 2-3 times longer than needed because there was no written specification of what the customer wanted - so when we show him something he says, nope - it's all wrong and has to be redone.

      Our proposals to the customer are so vague that they come back and say that you were supposed to supply feature xyz as part of the project, and there is no way to argue the point.

      The result is a company that doesn't learn from it's mistakes, and hasn't grown over the years, and can only handle one major customer at a time. Employees are hired with a minimal level of experience because that is all the company can afford - and leave as soon as they realize that they can do better elsewhere.

      Management is always underbidding projects because they have no record of how long it actually takes to build such and such a feature. The result is many projects that lose money.

      The fact is that best practices are known, and unless you make a real effort to follow them you will never be able to get to a point where you will really be able to prosper as both an individual and as a company.

    18. Re:Focus on making money by ranulf · · Score: 1

      If I was hit by a truck, I don't think I'd really give a damn about the next release of the product...

  19. Some thoughts... by Yoda2 · · Score: 1
    In general, we use a hierarchical directory structure for documents (i.e. programming/project_a, programming/project_b, etc.) and place it on a network drive with access privileges for the appropriate people.

    CVS can be a pretty good option for text/html-based documentation. It can work for binary files too, but then you can't see diffs.

    For hand-drawings, etc., you could always use a scanner, but I don't know how practical it would be. It would give you the ability to back stuff up in case of disaster.

    Whatever you do, be consistent and be sure to document your documentation scheme.

  20. Users or developers? by Pinball+Wizard · · Score: 4, Insightful

    are you documenting for users of the projects or are you documenting for present and future developers of the project? The two are completely different and have different requirements as such.

    A web application by nature should almost always be self explanatory. A help link or button should be available prominently on every page. The better you do this part, the less it costs to support your app.

    Developer documentation for a web app also works well with HTML. Not only can you use comments extensively, you can link variables and functions from where they are used to their actual definition. A common way to structure HTML documentation is to have a frame with the left frame containing a tree of links, an index, and a search. I would use something like ht://dig rather than a database to index your docs and allow searches.

    --

    No, Thursday's out. How about never - is never good for you?

  21. Beginning Projectt Documentation by ksoltys · · Score: 1

    Save yourself a lot of grief and hire a technical writer.

    If you have to do it yourself, look at some of the articles at www.raycomm.com and check the techwr-l mailing list archives there.

    There are a lot of good technical writers, with experience with API and system documentation, as well as user docs, who are out of work right now. It shouldn't be hard to find somebody.

    Regards
    Keith

  22. documentation by 56ker · · Score: 1

    I just put things in a readme file. If it's going to be a big project instead of a text file I use html pages.

    For instance one text file/ html change would be a list of versions & the changes that were made - another would be bugs/ future modifications etc

    1. Re:Documentation by PugMajere · · Score: 1

      I found that when comments are embedded in the code itself (POD for Perl in my personal experience) - I feel obliged to correct things that are incorrect as I go - that doesn't mean I will keep adding new information, but I *will* make sure that incorrect assumptions are removed from the code.

      I believe javadoc works in a similar manner (embedding the documentation as semi-structured comments in the code).

      If nothing else, it gives you a nice template to follow when you do go back and document some things, and for complex functions you can stick documentation of the flow of the function as it goes, to make it clear what is going on in each step.

  23. Producers by Anonymous Coward · · Score: 0

    Do you have producers? They're the intermediary between the programmers and the clients. They interpret the clients desires, and we programmers implement those features.

    They keep track of all the documentation.

  24. I hate to say it but... by Mr.Intel · · Score: 3, Informative

    what about all those diagrams and handwritten notes.

    When I worked for Intel Software Testing (hence the nick) we used Visual Source Safe. It allowed us to store any kind of document in it (source, jpg, vsd, mpp, etc). With the check-in/check-out feature and version history it allowed us great flexibility and reduced wasted time figuring out who changed what.

    I know it's a M$ product, but it did the job for us.

    --
    ASCII tastes bad dude.
    Binary it is then.
    1. Re:I hate to say it but... by Anonymous Coward · · Score: 0

      I will have to agree. Source safe works really well at keeping projects organized. You can put comments/notes on anything you check in, and you can set the server up to keep back-ups, so if somthing gets messed up you can roll back. It is quite usefull.

  25. CVS Link by Yoda2 · · Score: 1

    Transposed letters in the URL. This is the link for CVS.

  26. documentation by Anonymous Coward · · Score: 0

    Gee, software without much documentation. Who'd a thought that would ever happen?

  27. SoureForge by adamy · · Score: 2, Interesting

    I do not now, nor have I ever, worked for and OSDN company. That being said:

    Documentation does not live in a vaccuum. For every project, you want a certain set of communication tools: Revision Control, Mail lists, Documentation, Releases, etc. For my old company, I set up an example site of sourceforge running of my workstation. The idea was to set up a quick and easy project website. SoureForge (the project) had everything we needed. One of the nice things is the document erepositor portion. Since SF is by project, documentation is already per project. Etc, etc.

    Php groupware also looks to be promising, as does phprojekt. I am not sure if there is an open source Cold Fusion based solution, but that may suit your needs better, since it sounds like you have some in house exp. with it.

    --
    Open Source Identity Management: FreeIPA.org
    1. Re:SoureForge by scotch · · Score: 3, Funny
      Documentation does not live in a vaccuum.

      My documentation lives in a vacuum. My tech manuals live in a Hoover, and my user manuals live in a Sears Craftsman Shop Vac. I guess you could say my documentation system sucks

      Thank you, I'll be here all week.

      --
      XML causes global warming.
  28. Documenation is not your only problem... by soap.xml · · Score: 4, Informative

    From the what you said with different people and different or no methodologies there is a lot that needs to be done. First off, standards:

    • Literate Programing: What you write, should make sence. Variables such as a, b, c, thing, object, stuff, crap etc should not be allowed. A new programmer should be able to come into your shop, read the code and it should make sense.
    • Commenting: All source should be commented. That doesn't mean that hlaf your source files should be comments, but anything that doesns't make sense by simply reading the code needs to be commented. At a bare minimum, the person who wrote the code should have there name in there ;)
    • Source Control: Please tell me you have CVS or something like that setup. If not, set it up
    • Testing: Test early and test often. When your done with that, test again. ;) You might want to investigate Extreme Programming. This will help quite a bit to launch good solid projects, on time.
    • Standard Design Methods: It will help you out quite a bit to have standard design methodologies. Standard patterns to follow and ways of doing things will help you quite a bit.
    Secondly, make sure you have a forum for you developers to work together. Setup an IRC channel or something, just make sure you have a place to chat and share experiances / bugs ;)

    Those few things should get you started. They don't totally address the commenting issues, but I would say that is the least of your problems... I could be reading way to much between the lines. Just my two cents.

    -ryan
    1. Re:Documenation is not your only problem... by Anonymous Coward · · Score: 0

      anything that doesns't make sense by simply reading the code needs to be commented.

      Anything that doesn't make sense by simply reading the code should be refactored to make it readable.

    2. Re:Documenation is not your only problem... by JordanH · · Score: 4, Insightful
      • Literate Programing: What you write, should make sence. Variables such as a, b, c, thing, object, stuff, crap etc should not be allowed. A new programmer should be able to come into your shop, read the code and it should make sense.

      Maybe you mean something different here, but Literate Programming is a field, invented by Donald Knuth, that has little to do with what you are saying here.

      There are many good reference, try this one, for example.

      AFAICT, the tradition of Literate Programming comes out of Mathematics where proofs are given as narrative, but the equations (programs by analogy) are terse.

      For example, this example, written by Knuth himself, contains many example of terse variable names like rx, h, t, l, etc.

    3. Re:Documenation is not your only problem... by cpparm · · Score: 0

      anything that doesns't make sense by simply reading the code needs to be commented

      anything that doesn't make sense by simply reading the code should not be there, unless this is some kind of hardware manipulating code and the hardware demands you do weird things. Then you should talk to the HW guy.

    4. Re:Documenation is not your only problem... by mark_ledwich · · Score: 1

      Yeah, there is heaps of information and standards on the Software Process. Alot of large organisations now use PSP(personal software process) and TSP (team software process) which cover all aspects of software devlopment, from specification and documentation to testing and maintanace. Beoing and many other organisation have published there data to show the difference that these processes make.

    5. Re:Documenation is not your only problem... by DonK · · Score: 1

      You could find out about spell-checkers.

    6. Re:Documenation is not your only problem... by soap.xml · · Score: 1

      Sorry about that. I was reffering to the way your code would read. It should read like a book, not like an encrypted file ;) Sorry for the confusion.

      -ryan

    7. Re:Documenation is not your only problem... by soap.xml · · Score: 1

      Good point. I guess what I was trying to say was that if something is difficult to understand. Deep nested recursion or something along those lines then it needs to be commented and commented well.

      But if your function/method is something as simple as int getIndex(); you really don't need much other than, what index your getting ;)

      -ryan

    8. Re:Documenation is not your only problem... by dgroskind · · Score: 1

      Beoing and many other organisation have published there data to show the difference that these processes make.

      After the recent discussion on Slashdot of the futility of measuring productivity by lines of code, I am surprised to find this method still in wide use. The PSP/TSP Web site says: With code developed using TSP/PSP, they are saving approximately 120 hours/KLOC in integration, system, and field testing.

      The methodology measures software quality in "defect density", that is, defects/KLOC

      The site concludes: Although the productivity of individual engineers tends to remain unchanged after they adopt the PSP, overall productivity increases. Product cycle time is shortened and the productivity of projects is improved because integration and system testing costs are reduced.

      Predictably, the report shows the savings ("$5.3 million to date") but no estimate of the cost of implementation. It shows an admirable determination to wring some meaning out of KLOC despite the apparent irrelevance of this metric.

    9. Re:Documenation is not your only problem... by technopinion · · Score: 1

      You can create as many standards and methodologies as you like, getting knucklehead programmers to follow them is a completely different ballgame. The last place I worked, half the web developers were eastern-european, and some of them, no matter how much encouragement they were given to do things according to company standards, seemed to persist in naming variables in Russian. These individuals just didn't seem to understand that the next person to look at the code most likely wouldn't be them.

  29. Budget Yourself Time by Webmoth · · Score: 2

    Documentation takes a lot of time. Perhaps up to as much as half of your development time, especially in the initial stages. Plan for this extra time.

    Having a record of what you did to get to the point you're at is INVALUABLE in saving time later on: a process that takes 4 hours (including documentation) may take only 1 hour the second time, IF you have proper documentation, 3 hours if you don't.

    --
    Give me my freedom, and I'll take care of my own security, thank you.
  30. Document what you are doing by JacobO · · Score: 2, Insightful

    This may sound trite, but documentation is there to document your actions, plans and outcomes. I don't think it really matters how you organise your documentation so long as you can get it back again later without too much hassle.

    I suggest having templates for all the major areas you would need to have documented - or at least identify the things you want documented and make sure everyone does their part. Things like proposals, project charter, agendas, minutes, functional specs, design documents, project plans, change requests, test cases, test plans, etc.

    Obviously, this all ties in with project management and your methodology of choice. If you don't go out and get a consultant to guide you, at least read a few books and get some ideas.

  31. MS Route by KDENCE · · Score: 1

    In my workplace we considered using MS Project to keep track of all our junk, however we came to the conclusion that we were too small a place for this.

    Take a look at it and if you don't like walk away and never look back!

  32. WikiWebs and/or Source Control by drig · · Score: 3, Informative

    I've used, successfully, two systems. SourceControl is standard way of doing it. Basically, treat it like a shared filesystem. You have to be very careful about the structure or things tend to get lost. Also, it becomes very easy to make duplicate docs when one gets lost.

    I found it easier to use Twiki (which is a WikiWeb-like project). Twiki has built-in version tracking, can store any kind of information, including meta-data, and has pretty advanced search features. We've just started using it at my new company, but I really like it so far.

    The only thing Twiki is lacking is proper authorization. Anyone can go in and write over my docs. Of course, it logs that change wit the user's name, so there are decent forensics. Still, I'd rather not have these hassles than be able to track the perpertrator down.

    --
    Citizens Against Plate Tectonics
    1. Re:WikiWebs and/or Source Control by denny_d · · Score: 1

      +1 here for Twiki. The new plug-in architecture for TWiki is quite nice and gives users the option to create custom interfaces for controlling the way the data is handled and displayed.

      There's even a whiteboard like draw program that could be used for ProtoUml designs.
      hth
      Dennis

    2. Re:WikiWebs and/or Source Control by schlaber · · Score: 1

      Correction: TWiki does have fine graned access control. You can define groups and based on those impose read/write/rename access restrictions on webs and web pages.

    3. Re:WikiWebs and/or Source Control by drig · · Score: 2

      You don't expose your email address, or I'd just send this directly.

      Can you send me a link to the docs where they describe how to use fine grained access control?

      Thanks,
      Dave

      --
      Citizens Against Plate Tectonics
  33. Source code managment/Documentation managment by rufusdufus · · Score: 2

    Seems easy enough to keep your documentation in the same place as your source code. You do have source code managment right? If not, you should start there. [sourcesafe,cvs]
    Documentation can be written in whatever format you want, but a standard which is compatible with your management systems change log tracker is a good idea.

  34. Why? by stevewz · · Score: 1

    I've yet to see a small company of your size successfully implement a full-blown documentation and project management system. Why expect a small company to act like a big one? Instead, find the top three frustrations and risks in your current processes and address them individually, rather than trying to put in place a system that's bigger than it needs to be. There will be time enough for that when the company grows.

    Otherwise your people will be spending more time documentating what they're doing than they will spend actually doing it. Billable hours are key at that stage.

  35. It's a combination of things by _Ash_ · · Score: 1

    Working for a small (about 15 people) software company I found out the best way to take care of documentation is a combination of things.

    First off, if you're using java, make sure you use javadoc code for every method and class you write (make sure that this is required by the company, we have code and documentation standards). If you're using any other language, still write comments for every function. Also, every bit of code which isn't very clear should have some comments to shed some light on it. And don't forget to add comments for every bugfix you did (at the start of each sourcefile you could make a small index of all changes that have been made, with the date of the change and the name of the person responsible for it).

    Second, make sure that before you start to program, you have a detailed set of requirements and a well written project plan (design). This makes it easier to structure the program in a nice and tidy way which in turn makes it easier to document.

    Third, always make a docs directory which includes all standard documentation, the before mentioned requirements and project plan, the notes from every meeting you have had, user manuals, etc.

    Fourth, use CVS (or a similar system). This makes it very easy to document changes in your program (and also to find out what other people have been doing).
    Five, for every project you're in, make sure a seperate mail alias is setup. In that way you can filter every mail from a certain project to a seperate folder, which is a nice way to keep track of things.

    Other things you could do (which are not (yet) in use in our company but of which I heard) are setting up news groups for projects, setting up intranet sites for every project, etc.

    Ofcourse, the methods I've described above are very effective when you start with a project. If there is a great need for documentation for already finished projects, you've been doing something wrong (one of my first lectures in software engineering was about documentation or, better, the lack there of). However, if you want to document those projects, I recommend you start with documenting the code. This is a hell of a job, but it is VERY useful (think about bug fixes and so forth). After that, try to describe how you've build up the product.
    Ofcourse, these are only hints, but I've found them to be very effective in our company.

  36. Re:the problem is.. by digitalgiblet · · Score: 0

    A trolling we will go, a trolling we will go...

  37. doxygen by penguin_nipple · · Score: 3, Interesting
    For the code that I work on, doxygen is the way to go, it generates a nice html document structure which is easily customizable through it's config scripts, you can place it directly in your cvs source tree, and have all users check it out. It expands brief and detailed code comments and puts those descriptions where they ought to be in the documentation tree, with links to the actual code. Since the documentation is part of the CVS module, it will always get checked out correctly by developers and the maintainer can update simply by running doxygen whenever needed.

    In fact this doxygen was only part of the solution, our research projects had other documentation which required addition, however we simply had the developers get into using LyX and had the doxygen script merge in the static docs with the code documentation. Made for a nice doc tree which was easy to update (and if you really want to get fancy every once in a while, import into LyX and whip up a tasty DocBook). Of course the developers has to conform to the commenting style required, however if this is a problem for your development team, then the whole 'team' concept isn't going so well.

    If you don't use CVS and/or doxygen, and those tools don't fit into your workplace (although CVS should be used, IMHO). You could easily whip up a php or perl script to merge TODO and Changelog files, this is of course assuming that all the developers use these files to track their work, which they should do anyhow (at least in some form). It would be trivial to whip up a parser in perl and merge those files into some sort of report. Thus the whole Practical Extraction and Reporting Lanuage thing...

  38. Poor journalism by horza · · Score: 1

    Slashdot has alread covered this here, and here. How on earth this is news for nerds I don't know, it's 1st year Software Engineering material (you mean you didn't ever study the subject? then why should we do your homework?). Insult to injury is that it's proprietry ColdFusion, not even a PHP project.

    How this gets posted over the EuroLinux Alliance winning in Europe and defeating software patents, I'll never know (sure, mod me down offtopic).

    Phillip.

    1. Re:Poor journalism by jchristopher · · Score: 3, Insightful
      Insult to injury is that it's proprietry ColdFusion, not even a PHP project.

      You're just jealous that someone using ColdFusion can do something in half the time it would take using PHP.

      Seriously, because it's "closed source" it's bad?

      A good analogy would be Apple. Yes, Macs cost money, and OS X is not open source. But a Mac with OS X is far more elegant and easier to work with than a Windows PC.

      Similarly, ColdFusion costs money and is closed source, but is easy for new people to understand, and incredibly powerful at the same time. It has a plain-english syntax that actually makes sense, and has tons of built in functionality that let you get work done, instead of chasing down some PHP component that you read on a message board might work if you can track down the guy who wrote it in some foreign country. It's backed by Macromedia, a real, permanent, profitable company that has tech support and a phone number.

      Perhaps you're just scared that someone without a CS degree could take your job using ColdFusion?

    2. Re:Poor journalism by horza · · Score: 2

      You're just jealous that someone using ColdFusion can do something in half the time it would take using PHP.

      In my opinion, someone that knows his language well and has developed a decent library will do things faster no matter what the language.

      Seriously, because it's "closed source" it's bad?

      I never said it was bad, it's just not as applicable to the majority of the readers.

      A good analogy would be Apple. Yes, Macs cost money, and OS X is not open source. But a Mac with OS X is far more elegant and easier to work with than a Windows PC.

      Not a good analogy. You are comparing one closed source system that costs money with another.

      [snip sales pitch for Cold Fusion]

      Perhaps you're just scared that someone without a CS degree could take your job using ColdFusion?

      Someone without a CS degree will never be in demand as someone with one. There are many basic algorithms that apply to any language you choose. Where businesses use self-taught programmers, we tend to get paid even more to clean up afterwards.

      Phillip.

  39. Plain old HTML by hyrdra · · Score: 2

    It's the medium of choice for many very complex applications and scales nicely (think the WWW). Overall, it's going to be disorganized, but very organized as far as the document structure.

    Depending on what type of software your company writes or is producing documentation for (I'm guessing web applications), the structure of the document would be tailored for this, with appropriate entries for functions, global variables, and document constructs.

    What's good about this is you can turn HTML into anything any language, and if you write it right you can show it through just about any device. Later on, you might want to package windows help files with your shipping product for your client -- HTML would work well for that. Well, HTML would be much better than any custom or home-brew solution you could come up with.

    I would start by looking at what other projects have done. Which project's docs are easy for you to understand and progress through? Copy them. Start with a good synopsis for your own, introduction, and begin planning your document structure. What you will probably find is that your documentation is going to look like (or should look like) your source tree.

    --


    "I'll just chip in a bit for RedHat: I actually have that installed on my university machine." - Linus, '95
  40. Study patterns by icoloma · · Score: 1

    Go wiki (http://c2.com). Learn patterns. Not only design patterns (hey, they won't hurt you) but also documentation patterns. Learn also about XP (okay, eXtreme Programming, not that Big Brother new Window) since its methodologies could apply.

    More on that: CVS, docbook, XMI. CVS for code repository, docbook for generic document in XML (check oasis.org) and XMI for a standard for UML diagrams storage. These are the best options found in my case.

    Supposing that you can make the effort. If not, I'm afraid that you will have to live with generic folders as code repository, Word documents and Rose files.

  41. Documentation by kichiguy · · Score: 1

    I was the manager of a development group. During the development process it wasn't too difficult to go through the necessary steps of requirements, design, etc. The company had a list of documents we had to write and have reviewed and everything progressed smoothly. (If you don't have a list of required documents and what should be in them you should definitely do that as a first step.) However, once coding started all bets were off. About all we were able to accomplish was user documentation and man pages (along with some testing and installatrion procedures) before the developer could declare themselves done. During implementation things change too fast and there is no motivation to go back and make old documentation current. The best thing you can do is to take steps to insure the code itself is maintainable as well as is possible (use code reviews, etc).

  42. Start at the very beginning by Anonymous Coward · · Score: 0

    Have a meeting of minds and come up with a standard document template within which you expect defined *stuff* (tm) to be defined. Maybe begin with a brief 'This is what it does' paragraph. Give documents numbers so that they're referrable. Tell people to document before coding (hopefully). Follow software engineering principles (like the books tell you to). Define what the salespeople expect, then what you interpret that as, then let the programmers give their codal(tm) view of it, then let them define how what they're doing behaves in a manner to keep the salespeople/customers happy, then start actually doing stuff. Engineers are the master of cut-and-paste. They'll follow the templates until you modify them. I was a nubient non-documenter until my current job. I follow the templates. It works. Trust me.

  43. Knowlegebases by psycht · · Score: 1

    Theres alot of customer service sofware that provide KNowlege bases. And your IT/HR dept can use it for bug/call tracking. You can store your documentation here. Its searchable and (based on what you get) easy to maintain.

  44. A little extreme by SirWhoopass · · Score: 2
    There's nothing wrong with doing it "the right way". There is a problem if that way interferes with the end goal (shipping products).

    Documentation wasn't invented by some lunatic who liked to file things. I have seen many projects and organizations who were failing because they lacked documentation. The key, I think, is to keep the ultimate goal in mind. Don't generate documentation simply because that's the way it is "supposed to be done". If it will help you, then do it. If it is interfering with actually building the product, then don't do it.

  45. Start a wiki. by Anonymous Coward · · Score: 0

    zwiki, zope.

    easy for everyone to add into.

    Make it a rule that everyone has to use it, and document all the crap code they are making.

  46. "... NO methodologies"???? by TheMonkeyDepartment · · Score: 1

    That comment really worries me. At the risk of sounding anal retentive, I'd like to point out that a total lack of programming methodology is, in my experience, a recipe for disaster.

    Especially with a large group of developers. You will find it very difficult to build cohesive, useful documentation unless all the developers are at least in agreement on basic methodology to be used (code organization, division of scope, etc). You don't have to follow a college textbook but at least get some basic coding guidelines.

    Do you have one of those obnoxious newbies programmers who fancies himself a total hax0r, creating variable names like "it3r80R" when a simple "i" would do, or putting hundreds of little in-jokes and wisecracks throughout the comments? If so, he's got to cut that shit out.

    Good code documentation flows, almost naturally, out of good code design & commenting.

    1. Re:"... NO methodologies"???? by lkaos · · Score: 3, Interesting

      Do you have one of those obnoxious newbies programmers who fancies himself a total hax0r, creating variable names like "it3r80R" when a simple "i" would do, or putting hundreds of little in-jokes and wisecracks throughout the comments? If so, he's got to cut that shit out.

      In my experience, peer review is more important here than methodology. In fact, methodology can afford to be rather sparse (and it should be for most circumstances) when peer review is relied upon.

      Peer review is good because it helps good programmers become better programmers and at the same time, stops bad programmers from doing really stupid things. I think documentation is something that should be done, for the most part, after a project is close to completion.

      For instance, we followed the standard procedure of design, then implementation, etc., etc.. Problem was that the people who did the design and implementation, weren't a part of the maintenience phase and all that design stuff was no where near how things were actually implemented.

      It's really something that can't be avoided. Code tends to have a mind of it's own once it's written. There's a bit of a chaotic factor in it to where the slightest unforeseen bug in the most obscure case senario leads into a huge design problem.

      Besides, it's alot easier to manage with a working product with poor documentation that it is to manage with a broken product, and acceptable documentation (or even good for that matter).

      --
      int func(int a);
      func((b += 3, b));
  47. You mentioned Cold Fusion by DeltaOne18 · · Score: 5, Interesting
    Since you use Cold Fusion I would recommend checking out FuseBox is a web application methology develop orginally with Cold Fusion but now applicable to all the major web app languages (PHP, Java, ASP, ect).

    Part of FuseBox is FuseDoc which is a XML based spec for putting docuementation inside your CF code. By using Fusebox and FuseDoc you can break your web apps out into separate modules that work together much like different objects in C++ or Java. This allows you to have multiple people working on an app at the same time, while also separating your content from programming logic. I have used this approach in several web apps and it has worked well. Couple these techniques with something like CVS and some organizational programming standards (make standards that make sense!) you should be able to improve your work enviroment.

    1. Re:You mentioned Cold Fusion by gavlil · · Score: 1

      Fusebox is seriously underrated, I have been using it for 18 months now and it has changed my way of coding and designing forever.

      I have used it in coldfusion and Im now learning php (with fuesbox) and it has made learning php so easy as I am already on home turf!

      I am also using a design tool calld Adalon which is designed for modelling web applications and has been tailored for fusebox. The only thing Adalon is missing is some flash support, now that would be nice.

      --

      Do Unto Others As You Would Have Others Do Unto You - ONLY HARDER!
    2. Re:You mentioned Cold Fusion by brian428 · · Score: 1

      I second that (or third or whatever). Fusebox is by FAR the most effective methodology/architecture I have come across in over 5 years of ColdFusion development. It is simply fantastic. And not just for CF, it works with JSP and PHP as well (and ASP to a more limited degree due to the way ASP parses included files). Further, the XML Fusedoc code documentation / program definition language is also awesome. To sum up, if you are using ColdFusion I would highly recommend that you check these out. Fusebox is rapidly becoming the de facto standard for ColdFusion application development.

  48. wrong place to ask? by RestiffBard · · Score: 1, Troll

    a majority of /.ers are open source types. have you read open source documentation? is this really the best focus group to ask about documentation? in fact i suggest you do what most /.ers do. wait till O'reilly releases a book on your project. :)

    all in jest, folks.

    --
    - /* dead coders leave no comments */
  49. Welcome to the music department by fm6 · · Score: 3, Insightful
    Far too many companies approach tech writing as the "music department" of the company: Nice to have, but not really necessary.
    Or worse, they think of documentation as a problem with a purely technical fix. Documentation generators like Javadoc. "Methodologies" like mirthe_v is asking about. These things have their uses, but documentation chores are still mostly things that can be done only by carbon-based units. This is true even for internal documentation, not just product manuals.

    It is very hard to make development people see this. Part of it is a real antipathy to the whole chore of producing documentation, even if your role is just to being interviewed by a tech writer and answering a lot of "stupid" questions I put "stupid" in quotes because it's the really stupid questions that your customers most need answering.

    To be fair, the technical communication profession itself is a big part of the problem. There are a lot of "technical writers" out there who think an English degree, a little computer experience, and maybe a quickie certification course is all they need. Or recycled engineers whose prose style would make Bulwer-Lytton blush. There are companies where most or all of the writers are like this. Engineers find them a pain to deal with, and the docs they produce are mostly useless. Small wonder so many engineers think of technical documentation as a lost cause.

  50. Documentation by Anonymous Coward · · Score: 0

    try reading How to write Usable User Documentation by Edmond Weiss. it gives an engineer view into writing documentation and at least allow you to focus on what type of documents and who they are for. on the other hand, some people would say that documentation is a waste of time with the time better spent making your product/system so user friendly that no documentation is needed and the systems engineering so self documemted that no systems doc. is needed.

  51. Like the old quote says by Corporate+Troll · · Score: 3, Funny

    Documentation is like sex: when it is good, it is very, very good; and when it is bad, it is better than nothing.

  52. Fusebox by petz · · Score: 1

    Unfortunatly their website (fusebox.org) is down but try fusebox. Its a self documenting, scalable methodology originally written for coldfusion but extended to other languages like php.

  53. A simple system that we use by humblecoder · · Score: 5, Informative
    Here is a simple system that might work for you:

    1. Code level documentation. Having good code-level comments is vey important for figuring out the nuts and bolts of how things work. Well commented and well structured code can make or break a long term project. The important thing is to keep the comments up to date so that you aren't providing misleading information. This is easy to do, however. All it takes is a little dicipline.

    2. Process and Design Documents. There are many ways to handle these, but one simple way to do it is to create a development "Intranet" and keep all of your developer docs in HTML format. HTML documents are easy to create, easy to organize with hyperlinks, and easy to view. Keep a copy of your HTML documents in CVS or some other version control tool. That way you can have a record of your changes.

    Code level docs are pretty easy to get started. If you have a good development team, you probably already have your code well organized. If not, assign pieces of your project to different programmers and have them document their assigned code.

    Design and Process docs can be handled the same way. Make a list of things that you need to document (ex: build instructions, class hierarchies, etc) and assign these out to programmers.

    The key to any documentation system is to keep things up to date. The best protocol is to have people make changes to the docs as they change the system, or as they discover bugs in the docs. Treat your docs just like you would source code. Strive for "bug free" docs. If you can't make a change to a document for whatever reason, log it as a bug so the change doesn't fall through the cracks.

    Once people get used to treating docs as code, they will keep them up to date. If people have the attitude of "I'll document it when I have the chance" your system is doomed to fail.

    Good luck!

    1. Re:A simple system that we use by number6.3 · · Score: 1

      Heh, I know this will never get read, but I did the same thing with great success. As a Linux guy living in a Windows world, the only thing we have in common is a browser that understands HTML.

      Now if only the Flash crowd can keep their damn hands out of the pie we'll all be O.K.

  54. You thought this a *good* thing? by horza · · Score: 1, Flamebait

    So instead of using a proven advanced version control system (CVS) with a wide choice of clients spread across many platforms, you used Visual SourceSafe (which screws up badly, I've used it)? Who said that "when all you have is a hammer, every problem starts to look like a nail"?

    Phillip.

    1. Re:You thought this a *good* thing? by Anonymous Coward · · Score: 0

      CVS is a disaster. It's implementation is so simpleminded as to be almost completely useless. Storing all it's DB info on the client and not allowind simple name changes to files of file movement without the user having to hand edit his local CVS files is wothless. It works great when there's only one "owner" of a piece of code and hundreds of "users". But having dozens of code "owners" in CVS does not work worth crap. The entire concept of letting multiple users check in the same piece of code and merging the changes is a nightmare, it fails more often that it succeeds. VSS may not be all that, but using CVS as some kind of better example is plain lunicy.

    2. Re:You thought this a *good* thing? by Anonymous Coward · · Score: 0

      Fact is, neither CVS nor VSS can handle a binary for sh*t.

      Burn it on CD, and throw it in a box. You'll be happier and CDs are cheap.

  55. I'll second that by g8orade · · Score: 1

    Get someone experienced who can lead you through the standard steps:

    1. Figuring out what docs you need
    2. Creation of standard boilerplates and templates for reusable objects.
    3. Scripting to automate as much as possible
    4. Establishing a data/document repository (at the least a standard consistent file structure.

    Finally, if you want a custom document database so you can enter metadata and search for your files later, consider writing up something in PHP or Tcl running over mysql or postgresql.

    You really need to know what your workflow is, what docs occur at each point along the way, then you build what's reusable. Make it as easy as possible but enforce it.

    Don't scrimp on this.

  56. doxygen by Anonymous Coward · · Score: 2, Informative

    There are many systems of documentation that do this, Java wasn't the first.

    I like doxygen, myself.

  57. Mod this up by crystall · · Score: 1

    Both FuseBox and FuseDoc are excellent tools/methodologies for Cold Fusion. This comment deserves to be seen.

    1. Re:Mod this up by dogbowl · · Score: 1

      I'll second that. Fusebox has really improved the CF code at our shop.

      --

      These pretzels are making me thirsty.
  58. A good place to start... by DA_MAN_DA_MYTH · · Score: 2

    How about rephrase that and when to start...

    RIGHT NOW

    Or suffer our fate...

    There will be a time were you will absolutely have to start documenting your products, how-tos, specifications, deliverables, whatever. Finally when you realize you have to do it NOW... you'll look at all the work you have to do, and nobody likes to write. The best thing to do right away is, if you have the money, is to hire a technical writer. Then have him or her write, that's what they do all day.

    Then you can worry about problems like versioning or storing the documents, whether storing them in the DB or in your CVS (I guess that is considered some form of database).

    One thing to bring up is there is a lot of great ways to document these days within your code. Javadoc is a great utility if you want your coders to start documenting their own stuff, learning javadoc is easy, but doing it is a pain in the ass. I think Microsoft in their Visual Studio.NET is introducing the /// that provides printable documentation, similar to javadoc. (But who cares about that) Unfortunately if you look at some of my in-line documentation you find stuff like:

    /**
    * @author Me!
    * It's 2:00 in the morning, I'm tired and drunk
    * the following ain't pretty but it works for some reason
    */

    --
    "It takes many nails to build a crib, but one screw to fill it."
  59. Multitple word processors is the key by DuncanMurray · · Score: 4, Funny

    Assign each person to use a different word processor - e.g. Word95, Word97, Word2000, WP5.1, StarOffice, OpenOffice, etc.etc.
    This way you will know exactly who maintains the document - store all the files on the users hard drive , dont worry about backups - hard drives are very, very reliable these days and the damn server is usually always on the blink.

    If someone needs to modify another document, they simply need to write notes on the old printed version and the document maintainer can update them later.

    At least that's how it was in my last job :(

    --
    I'll think of a funny sig later on
    1. Re:Multitple word processors is the key by dgroskind · · Score: 1

      store all the files on the users hard drive...

      The reason your system will fail is that users are not making frequent printouts of the documentation, photocopying them and distributing them to all interested parties. Each complete printout of the documentation should be stacked on a bookshelf and labeled with a Post-It note.

      In places I've worked, the automatic stappling function on the photocopier has saved hours of valuable programming time that was otherwise spent in collating and stappling.

      Shops that have laser printers without a stappling function aren't serious about documentation.

  60. Document what? by Chacham · · Score: 2

    First you must decide what you are documenting.

    Are you documenting:

    • The process?
    • What each function does?
    • How the system will be used?

    These three items have radically different approaches.

    The first, item, "The Process" has its own sub-itmes. Is it to get someone acquainted with the program. Is it used to help manage its growth?

    The second item too (pun intended) has a couple of sub-items. Is it to keep functions from overlapping? Is it to show what each one does once the user already knows that this is the function to use.

    The third item also can be divided into sub-items reflecting on who needs to read it.

    The approach for documentation is first to decide what *exactly* you are documenting, and then, who is it being documented for. Between these two details, you can decided on the approach, and the tools.

    Deciding where to store the documentation would be where everyone could get to it. Storing it ina database and displaying on an intranet sounds like an excellent idea.

  61. fusebox by jchristopher · · Score: 1
    If you're doing ColdFusion, you should look into the Fusebox programming methodology. Fusebox website

    It's not terribly complex, but it does help when you have to pickup where someone else left off by making everyone code in a similar style.

    Even if you decide not to use it, it incorporates some interesting ideas that might help you in other ways. (Organizing what the function of each page is, what variables are used, etc.)

  62. Incredible! by Anonymous Coward · · Score: 0

    You have a job?

    Someone still invests in web startups?

    Can you publish the contact info for the company investors? I have a few ideas I'd like to discuss.

  63. Just Do It. And Do It Now! by Anonymous Coward · · Score: 0


    Do it now. Don't wait for fancy doc support
    tools. Do it plain html .. or plain text if
    you must. If' never wasted.

    Do not repeat vendor information. Just doc
    gotchas and give links to vendor info.

  64. 36 months from now... by Anonymous Coward · · Score: 1, Funny

    The primer gray Raleigh sky cheers the regulars within the alley behind Bob's Free Software Café, but not enough to draw them beyond the confines of their narrow world. The pecking order is clear as occasionally one of those nearest the steel drums, each containing a low fire, barks out a command to "pass up another bible", 'bible' being slang for the Linux books lying in tarp covered piles along the sides of the alley. On arrival, the bible is torn asunder and carefully fed into the perpetual fire. Fingerless old gloves type on invisible keyboards as the small knots of aimless alley residents talk to one another, forever modifying their favorite section of code. Laptops were once common but have long since passed through the local Open Source Pawn Shop to become just another fondly recalled and often mentioned memory for it's former owner.

    The mumbling and air keyboarding is abruptly halted by a large steel door being thrust open, the doorframe filled by a huge biker entrusted with access control for the café. "Listen up", he cries, "send me in four guys with Wine experience, two with boot loader experience, and one of you stinkin' weenies with Gnome experience. And get a move on it." All heads at once turn towards the centermost steel drum.

    One man speaks quietly, so quietly that even those who stand beside him must lean towards him to hear. Assignments are being given out. People will move into the café' based on this man's decision, new code will be added to the sacred scroll, new reputations could be made or old ones broken depending on what happens within the café, and only Linus can decide who enters the café'. Linus has retained his laptop, he's even managed to retain sufficient funds to live at the Y and ride the bus down to the alley each morning. Not everyone has fared so well. Most struggle to hold onto a good packing crate or drainage pipe for their home, much less ride a bus. Those who still retain a skateboard for their transport are considered wealthy, as are those who still own a backpack. All are former shareholders in Red Hat or other Linux companies, and all were faithful to the end, going down with their choice of Linux ships. The faithful had not so much as batted an eye the captains from the assorted Linux liners were rowed to waiting yachts by their faithful executives. Now, the faithful share their faith here in the alley and eschew opportunities outside of Linux as a tenant of the faith.

    Linus decides, the word is passed through the crowd that the seven slots will be filled by six old timers and one "egg", a new guy no one knows much about. The old timers are near the door and line up, but the egg has to "pardon me" and "excuse me" his way through the mass of huddled hopefuls as he moves towards the door. It's some guy who once owned a whole ton of stock in Red Hat, something that's not supposed to make any difference. In his wake there's a lot of disgruntled chatter and an occasional complaint voiced loud enough to hear above the general murmur. "Hey, what's with the egg moving up so soon", someone finally shouts. Linus, obviously shocked as the challenge to his authority, slowly turns in the direction of the question. "You people know I make my decisions based on skills and skills alone. You all read the code. You all review it. You can see for yourself that this egg has made an important contribution. I don't like this type of insinuation and I don't expect to hear it again". He then turns back to the steel drum, bends over, and removes his laptop from his backpack. There will be no more comment from the crowd, Linus is coding, no one dares to interrupt Linus when he's coding.

    By now, the egg has finally reached the doorway and falls in line behind the old-timers, the line is then allowed to pass through the doorway, the door promptly slammed behind the egg and a loud clack is heard as it's locked.

    The café' interior is a stark contrast to the alley, something straight out of an old episode of "Miami Vice". The raised platform in the center is populated by several dozen obviously well heeled folk sitting before expensive flat panel displays, drinking gourmet coffee (the alley residents can still recognize that wonderful smell), snacking, and occasionally laughing, lost in the conversations piped into their hands free headsets, totally unconcerned with the grubby batch of Penguinistas who have just been shuffled in through the back door. Penguinistas called these people specialists, and specialists spent their time looking for arrangements and deals that made the PR people happy, the PR people being happiest when the deals resulted in PR adequate to sell shares of stock in the Café. At the rear of the café' are a half dozen old 386 machines with filthy keyboards and faltering monitors, all sitting on what appears to be countertop ripped out of an old kitchen somewhere. As a smiling guy with a Red Hat ball cap approaches, the mumbled name "Bob Young" passes down the disheveled line.

    "I'm awfully glad to see you guys and would love to chat, but we need to hurry right along guys, OK?" as if anyone in the line would dare challenge Young on anything. "Now, you old-timers can each move over to a terminal, I'm sure you can look at what's on the screen and know which one you need to work at. You all know the code, right? Sure you do, so you'll know what section is your specialty and know what to work on. We'll have some Maxwell House sent right over, but remember, only one cup each". Young then turns to the egg, his grin gone, replaced by an almost bland stare. "Follow me", Young commanded before spinning on his heel and heading rapidly across the café. The egg follows young across the café to a steel door almost identical to the one he's entered through.

    "OK, kid", Young said while unlocking a gray steel cabinet next to the door, "Linus says you're trustworthy, and you damn well better be". Withdrawing an envelope from the cabinet then quickly closing and locking it, he continued, "you take this CD over to the Y, the guy at the desk knows what to do, there's no need for you to open your mouth. Just hand it to him, wait until he hands you back an envelope, and then come straight back here. Knock three times on this door, then wait". The egg nodded, confused a bit by his assignment, wondering what was the goal, but then slapped back to reality as Young noticed his change of expression, with "don't fuck this up, egg. You do it right and you can do down the hall there on my right. Go ahead, look down the hallway to my right". The egg already had, he'd seen the lavish office chair sitting before a large flat panel display and already wondered what it was and why it was separated from everything else. "See it, don't you?" Young barked.

    "Sure, I mean, yes sir Mr. Young, I see it", stammered the egg. "Well", replied Young, "if everything is kosher when you bring back the envelope, you haven't opened it, you get your ass right back here in a hurry and keep your mouth shut along the way, you can go down the hallway and fire up that new machine. It's got XP on it, any game you want, and the very best audio and video. You'll get three hours in there, just you, the machine, and your favorite game. No hassles, a full coffee pot, even a pack of smokes if you want them. Everything clear?" Yes, yes, it was all clear. He was going to get his fondest desire, a chance to play "Monster Truck Rally" years before it would ever be ported to Linux. God, could it ever get better than this.

    "Wipe that stupid grin off your face, egg", whispered Young, "you want someone to notice you're thinking about something other than writing code for Linux? Now, I'll open the door and you hustle your ass off, egg, otherwise you're back out in the alley and just another egg fit only to pass out copies or Red Hat Linux in hopes of getting other eggs hooked". The egg fairly flew out the door, visions of Monster Truck Rally glowing in his head. He'd seen it on the Xbox, heard it had been put on the PC as well, but never actually tried it. Someone might have seen him in front of the Xbox at Wal-Mart where the game ran constantly for customers to try out, he'd never risk that. But now, a chance to actually play the game, this was even better than getting a chance to add to the code base. This was a chance to actually USE a computer just as if the main purpose of a computer was to let the user do what he wanted. You better believe he'd come straight back, he'd be back before Young could get the door locked if that was possible, thought the egg.

    He tried to put all thought of the CD he was carrying out of his mind. He'd heard the lies about the Y running Windows, now he wasn't so sure they were lies. He wasn't sure at all in fact since inked on the outside of the envelope in bold letters was "MS W2k Corp Serv. Product Key" followed by a series of numbers. "At least", he thought, "Linux is still growing in the third world. Once it gets a solid base there, once the new versions and new drivers are all built, then it can come back stronger than ever. So what if a compromise is made here and there along the way in order to keep a prospective customer happy. It's not like someone is actually buying a legal copy of this Microsoft shit, it's more like keeping the money out of the hands of the evil empire any way you can. Young knows what he'd doing, he'll make a go of the Café then start that support thing back up". And with that, he ran on, focused only on getting back to the Café and firing up Rally.

    1. Re:36 months from now... by Anonymous Coward · · Score: 0

      My worry is always that Linux would end up like FRACTINT. Sure it was the coolest thing for a while with loads of people cooperatively working on it, and sure you can still get the source. But nobody's been seriously working on it for 5-7 years.

      --LinuxParanoid, worried that Linux folks aren't paranoid enough

  65. Whatever you do... by UncleFluffy · · Score: 1

    Make sure your interface (both external and between internal modules) specs are clear, complete and up to date.

    Everything else that has been said is important, but this is *the* critical thing. If you fsck up your interface definitions on a project larger than about 3-4 people, you either won't ship or will ship way too late.

    --

    What would Lemmy do?

    1. Re:Whatever you do... by UncleFluffy · · Score: 1

      (yeah, replying to my own post and all that)

      One thing you might want to try that shows up flaws in both docs and code very early on, and improves everyone's understanding of what is going on is to have each developer write the docs for the module being written by the person to the right of them...

      Scary, painful, but it works really well.

      --

      What would Lemmy do?

  66. Start with commenting the code! by codewolf · · Score: 3, Insightful

    Start with documenting the code first! Since the code is what must be
    maintained in the long run, this is the critical place to make sure you have
    decent documentation so any programmer can pick up where the last one left off.
    Well documented code should contain as much comments (if not more) as
    code.


    Once the code is well commented, pull the comments out and use that as a
    start for technical documentation, a reference to the design, functionality, and
    interaction with other programs, modules, etc.


    Once this is complete, then, and only then, should you start documenting the
    programming project as a whole, mapping out database layouts, etc. (note: this
    is from the standpoint that you did not do it correctly the first time and are
    basically working from scratch). No matter what you use to document the system
    in, it should be a common format between all projects and systems. Databases
    should be documented using a decent data modeler, and don't forget to document
    the stored procedures (in the procedures as well as external
    documentation).


    Once all the technical documentation is complete, then you should start
    thinking about documenting the project from a user's point of view. If a system
    works well and is easy to navigate, the users will rarely reference a help file.


    I have walked into too many projects that were completed in haste, and looked
    at way too much code that was not commented at all to know that had the previous
    programmer done his/her job well, it would have saved me half the time trying to
    understand why they had done something the way they did. When writing code it's
    easy to assume that the code you write is blatantly obvious, but to someone not
    knowing the system from the start, it won't be, keep that in mind and all your
    code will end up being well commented, and writing documentation will be easier
    later for anyone looking at the system.


    In the future, remember that a well organized programming project will
    involve much more planning and pre-documentation then actual coding.


    --
    http://www.codewolf.com - Just good stuff to waste time
  67. too many methodologies out there by peter303 · · Score: 2

    Any large bookstore will have tons of books on various methodologies. Software developers fight religious wars over them. I think it is best to hire an experienced person who has worked with a methodology, rather try from a book.

    Some more popular ones:

    First is the one coming out of MicroSoft called SOLID. MicroSoft software development was pretty disorganized in the 1980s, but improved considerably in the 1990s. Love them or hate them, they manage to get a fair number of winners out now. You should know their methodology.

    A very popular "counter culture" slashdot-type methodology is Xtreme Programming. Emphasizes small groups, pair-programming, incremental project goals, e.g. shippable software every 2-4 weeks.

    And then there are the tools, for handling pieces of the projects. UML for capturing the objectness of a system. Source control for software versions. Nightly builds and automatic tests. Project Timeline Planners. VERY, VERY USEFUL is the bug/enhancement multi-user database. It ties together managers, developers, testers, and customers. It gives a measurment as to whether more bugs or fixes are being generated at given pahse of a project.

  68. Who the *bleep* needs documentation? by Anonymous Coward · · Score: 0

    Ask yourself why you need documentation? And what are you documenting?

    If your problem is unhappy customers because they product doesn't do what they expected, then your problem is in requirements.

    If you're doing maintenance on throwaway prototypes, then documentation is the least of your worries. Actually, even if you're doing maintenance on existing (legacy) systems, then documentation is merely a nice-to-have. But if the code isn't self-evident, then in my experience, documentation doesn't help much.

    You need to factor in a few things: (1) time to market, (2) effort & cost to develop, (3) lifetime/shelf-life of the system you're building, and (4) effort & cost to maintain those documents. If your company isn't going to be around in a year, or you're going to be switching jobs (either by choice or involuntarily), just grin and bear it. Others have before you... why be different?

  69. Delegation! by Steve+Cowan · · Score: 1

    You need an extra body. Software that collects documentation of so many different types (text, handwritten stuff, source, graphics) is cumbersome -- how could it not be?

    File folders are these incredible paper-like modules that fit into drawers in cabinets. Get a file clerk and put him (or her) to work. He should have knowledge, or at least an inclination to learn about the type of work you're doing. This is a great place to hire a student!

    Also maintain a shared network directory for each project. Let people go hog wild saving stuff in there.

    Allow each of your projects to have a master electronic file, and a master file folder.

    If you can't afford an extra employee, then delegate one of your programmers etc. to sit out on certain projects to act as the scribe.

    It's really important that you keep detailed notes of what you do and why you did it the way you did. There's nothing worse than having to revisit a 3-year old project and having to restart from scratch. Don't you think somebody should be responsible for that??

    Race car drivers need pit crews!

  70. Binaries by Anonymous Coward · · Score: 0

    How well does CVS handle binaries these days?

    1. Re:Binaries by cduffy · · Score: 1

      How well does CVS handle binaries these days?

      Just fine, if you configure it right.

  71. Make source the doc by mystran · · Score: 1
    The best way to document a project, is to make the source so well commented that no additional documentation is needed. Everybody reading the source must be able to understand from the comments what it is supposed to do.

    If you need to be able to generate formal documentation, you should probably go for JavaDoc standard (that works well with almost any other language too). There are following reasons why to keep the documentation in the same place as the code:

    • Anybody can read the documentation for something he doesn't understand just by reading the comments without having to find the same function/whatever in the documentation files too. Or check the implementation of something the documentation describes.
    • It's much easier to maintain one file with both the source AND the documentation than to separate files. If you have separate files it's more likely to have them out of sync.
    • When the documentation is done at the same time with (or before) the implementation, by the same person, it's much more likely to be correct, as the implementator is (should be) the one that knows best what the code is supposed to do.
    • If there is a bug, it's often spotted as a by product of trying the understand the code (since there is comments telling how it's supposed to work. This applies both to mistakes in implementation AND problems with documentation.

    Think of it. It should make sense.

    --
    Software should be free as in speech, but if we also get some free beer, all the better.
  72. Well... by wizarddc · · Score: 2

    I'm in pretty much the exact same situation. Except ASP instead of CF (sorry /. crowd).

    We've got about 15 people here, and generally, the way we do it, it we have project specific production folders on the network, and those folder get backed up at important points in time (delivery, every month, depends on the project and it's timeline). Thos CD's are stored in categorized drawer, which has an accompying spreadsheet available to everyone on the network. This spreadsheet is (or should) be updated every time a cd is put in the drawer. Most workstations have a cdr built in, plus we have a machine for just burning cd's, plus a USB drive for those unfortunate who don't have an internal, and too lazy to go into the other room.

    We also have a paper system, where all relevant materials, such as proposals, vital emails, as well as hand written stuff, goes into hanging file folders in a file cabinet. 3 months after final work is done on a project, the folder gets archived to the basement where we do all our file storage.

    And of course, the gratuitous entire nightly netowrk backup, which is kept off site, in case any of those cd's ended up kaput.

    It works for us, like I said 15 (which is generally our max, last summer we were down to 7) production employees, including programmers, designers, QA, and project managers (that list isn't exclusive, most of us where a few hats).

    --
    Th
  73. Okay, I'll bite... by Macrobat · · Score: 1
    We've shiped 4.0 of one product line, 3.0 of another, 2.6 of another, 3.5 of yet another.
    And what were the names of these products?

    --
    "Hardly used" will not fetch you a better price for your brain.
    1. Re:Okay, I'll bite... by litewoheat · · Score: 1

      Gearbox Connection Kit 4.0 Internet Setup Monkey for MacOS 3.0 FreePPP 2.6 Gearbox Personal Edition 3.5

    2. Re:Okay, I'll bite... by Macrobat · · Score: 1

      And these have no internal documentation, no coding standards, they were just whipped up from the get-go?

      --
      "Hardly used" will not fetch you a better price for your brain.
    3. Re:Okay, I'll bite... by litewoheat · · Score: 1

      Did I say that? No If you refer to the original post I said that as a company grows you can begin to implement proceses and begin documentation. Each product now has complete documentation but thats 7 years later. Had we been worried about documenting everything we'd be out of business right now.

  74. Macromedia Sitespring by Anonymous Coward · · Score: 0

    Have a look into Sitespring (http://www.macromedia.com/software/sitespring/). It is a web-based collaboration and file versioning system. It worked very well for a project that I was staffed on.

  75. called javadoc by Meech · · Score: 1

    What you are thinking of is called javadoc. There are some tags used with html that create documentation. The downside is that if they are not java, I am not sure if other languages have such a feature.

    1. Re:called javadoc by loconet · · Score: 2, Insightful

      You can actually use the javadoc tool that comes with the JDK to spit out html documentation on any language, it basically just looks at your functions. I've seen it done on C code and works nicely

      --
      [alk]
    2. Re:called javadoc by loconet · · Score: 1

      ARgh... not the functions .. but the "javadoc comments" above the functions,classes,member variables ,etc

      --
      [alk]
  76. Standardize Comments/Documentation by Anonymous Coward · · Score: 0

    One thing that I would stress is creating standards for your developer's comments/headers/documents. Creating templates is extremely useful. I hate coming into a project and you start looking at other people's code to see that EVERYONE has set up their own standard for commenting their code and documenting their functions. Inconsistency creates a steeper learning curve for new people coming into the project.

  77. software engineering by Anonymous Coward · · Score: 1, Informative

    From the look of most of these posts, there's not many software engineers out there. Sigh...

    Documentation begins with a Functional Specification. It continues with one or more Design documents.

    Without them, all you have is code that has comments. Not really useful, since no one actually updates their comments when they update the code.

    The point of documentation is communication. That is, it enables people to work on different aspects of a project, at the same time, to a common goal. It also enables people to follow behind you and fix your bugs and modify the way the system works. They can only do this if they know what the system is supposed to do.

    Thus, you *must* write a Functional Specification. You can't solve a problem that you can't define. That definition is the Functional Specification. If you can't write that, anything else you do is pointless.

    Its actually worse than pointless, it just slows you down for no reason. The people coming behind you will have to throw your code away rather than fix it, because no one will be able to tell how it fits into the (undefined) big picture.

    Look at it like this. Software engineering is a long term process. Its interested in the total life cycle of the system. Hacking is short term, interested in what's fun today. If you want to be a pro, you have to act like one...

  78. Use new productivity tools by i4u · · Score: 1

    Ideally you want to have a system that is a mixture between document management, collaboration and knowledge management. Take a look at the products from Entopia. http://www.entopia.com

  79. Just start documenting by bluprint · · Score: 1

    Word (or whatever for all you anti-M$ freaks) documents to start. There is a program called Visio that we use at work. It is a neat program that helps with flow-charts.

    We also use something called PVCS Version Manager and PVCS Tracker. Version manager is just that (there are other, even free, version managers). It allows for code versioning. You can also use it to version changing documentation.

    PVCS Tracker is a system of keeping track of open "issues". If there is an enhancement/bug fix/whatever, you just open a ticket, and close it when it is done. You can also assign owners to the tickets, as well as a progress label. So when the coding is done, you can change to "testing" and the person responsible for that would then take over...

    I'm not a PVCS advocate or anything, it's just what we use...company wide.

    I think the MAIN thing to do is to start doing something. If you START documenting, you will, over time, refine your documentation process. There will be mistakes, but just keep improving and working on them...

    --
    A modern day witchhunt.
  80. It depends.... by SgtOracleDBA · · Score: 1
    You may find some good information by digging through the CMM and ISO900x documentation. These docs describe organizational processes that naturally produce documentation throughout the project. Don't be frightened by the volume, it's really pretty simple once you get to the basic ideas: 1) grow EVERYBODY along the way, 2) be prepared for people leaving. Remember to only implement things that make sense for your organization at your current level.

    Regarding individual technologies for document storage, pick one. CVS works fine; if you have the money, Designer is loads of fun to play with. ;)

    Two other things. Idealy, much of the documentation should be done before coding starts. Also, the programmers shouldn't be the only ones writing docs.

    Good luck!

  81. Here is what We do by Anonymous Coward · · Score: 0

    We have a database created in lotus notes, send email me and i will send you some examples.
    Basically things are divided up into a few areas, there is a changelog for each program (all cookie cuter with different names)
    and a Service Request log to show the needs for change and who is working on what

    for example, a request is entered in to the SR database to change a program to jump throu hoop b instead of A that document is closed when it is done and a log is put into the other database saying
    date xyz changed blah to dlah see SR a3207zm$rulZ!

    this has helped us stream line our work flow!
    notes rulz!

  82. Project boxes by arget · · Score: 2, Interesting
    I feel your pain. I was in that kind of environment for a couple of years. The best method our office used was a crude but effective project box. Every project had archive time built into the budget and schedule, and at the end of a project the producer/project manager (uh, you *do* have some sort of project management? If not, start there, you've got bigger process problems...) would collect any paper documents or source materials, and archive onto cd any electronic source, documents, or other assets, and put it in a project box. The box is then labeled with the project name and stuck on a shelf until needed. Sometimes it worked well, sometimes it didn't, as it really depends on the team to collect and store the assets they use as they go along. For shorter projects, it worked better than the long, moving target type that started one place and ended up somewhere else a year later.

    If your company is affected by much turnover, then it's critical also to organize the boxes. For example, the first project of 1999 is numbered 99-1, the second 99-2, and so on. The archive shelves are ordered by project number. Put accounting in charge of keeping track of project numbers, as they already do...

    What to avoid:
    • each person responsible for keeping their own archives (no one remembers a year later if the guy who left did that....)
    • lack of centralized storage (no one remembers three months later where the cd with the source code is or who had it last)
    • depending on the client keeping the copy you send them. This is just stupid. They hired you for a reason, after all.
    • depending on the weekly server backups. Those aren't project oriented, may or may not be around for a given week a year later, and can be hopeless to use if you're not sure what you're looking for and where it was.
    Our company made some attempts to leverage work across projects. That usually didn't work so well. Each project, and each client, was just different enough. So you probably don't need everything from every project at your fingertips on the server all the time. The main goals for our archives was to be able to:
    1. Prove it was client changes causing problems, as what we sent them worked, and we're happy to send it again.
    2. Pick up where we left off when a client comes back wanting changes in six months.
    3. Deal with a project that gets cut or goes on hold, and then comes back the next quarter with more money and wanting to "add it all back".
    4. Provide documentation for any change orders or contract disputes that may arise, during or after a project.
    A good PM will archive at various stages, external and internal: every client delivery (alpha, beta, RC1, final), at end of design phase, when you've got a working prototype, etc.

    Good luck!
  83. Re:Welcome to getting fleeced by switcha · · Score: 1
    --
    You know what? ... A little club soda *did* get that out!
  84. A short and sweet reply by sielwolf · · Score: 1

    1. Come up with a inline code documentation standard (for the files themselves) and a general standard (for any other supplementary files).

    2. As I assume you are coding right now, only edit those files you are currently working on and on all future files via your standard.

    3. When time permits (or when you re-edit old code), document your old files.

    4. Tweak documentation with every change.

    This was is an easy incremental way of getting around to document everything without resorting to a big system.

    --
    What is music when you despise all sound?
  85. I was in the same situation... by MonkeyBot · · Score: 1

    I work for a small economic consulting firm as a systems administrator. Our company receives all types of documentation everyday from all of our clients, and we create many, many reports ourselves. What I did was write a small application that lets you check scanned documents into a MySQL database, and then runs through newly scanned documents using some OCR software (I can't remember what the name of it is...I did it a while back) to create an index of keywords that you can (slowly) search on. I did this because there is software called Hummingbird that works really well, but costs an ASSLOAD of money (in the tens-of-thousands range). It took me about three weeks on and off to write, but you could probably hire some intern to do what I did for a summer project for pretty cheap. Our server that we put together for the document repository has an 80gig hard drive, a 1.4 GH AMD processor, and has worked just fine for us so far.

  86. For ColdFusion, try Fusedocs by jpa5n · · Score: 1

    Since you specifically mention ColdFusion as the development target, make sure you take a look at Fusedocs, a part of the Fusebox development methodology. Fusedocs are similar to Javadoc -- it is a way to self-document ColdFusion code in an XML format which can then be turned into more formal documentation.

    You also owe it to yourself to check out Hal Helms website where he has tools for Fusedocs (including CF Studio VTML plugins) as well as the related wireframing and DevNotes tools -- both of which are extremely useful.

    I've been doing CF for nearly 5 years and Fusebox, particularly the new Fusebox 3, is a useful design/development methodology as well as framework for building CF apps. Plus its all free/open-source/community-based/etc.

  87. ZOPE - is a easy-to-setup document system by Anonymous Coward · · Score: 0

    ZOPE, http://www.zope.org/ with its Content Management Framework http://cmf.zope.org/ and Plone skin http://plone.org/ work as an excellent out-of-the-box intranet style system.

    you can catagorize documentation (it also has a search engine, so you can use the search box to search any of your documentation. but even more importantly.. you can easily assign keywords to documents.

    Wiki works well for engineers. but not really that well for designers. but designers work mainly in images, so keywords would work just fine.

    everyone will need to come up with a convention and load as much data into the system. if people dont use the system - its useless. so 1) technology piece, 2) commitment piece, 3) integrating it into other facets of information systems.

    I think ZOPE is ideal for managing documentation. you get some primitive version -- but on a whole it works *really* well.

  88. Buy a book or take a class on software engineering by npietraniec · · Score: 1

    I'm going to get modded as flamebait but...

    Buy a book or something, there's good structured ways on how to engineer software...

    Next on ask slashdot
    "I want to build a house... I bought a bunch of wood and stuff, but I don't know if I should pour cement or cut the grass first. What do you all think?"

  89. modules, etc by Alien54 · · Score: 2
    Basic ideas. Do some sort of database.

    Make sure that everthing you code is in modules/objects/etc.

    Then, as people code they enter data about how the modules and interfaces behave into a database.

    Everyone gets to add info about the modules, no one can remove it. You are building a database of knowledge about your work.

    Modules in the database have extra fields to identify functionality, connections, general areas.

    You can then run reports which become the basis for chapters, etc.

    Of course there are plenty of decent programs for this sort of thing, complete with version control, etc. In fact you could use any common coding version control program, storing basic text instead of code. Run it in side by side with the code. then export to a text file for reformatting, etc. just keep style, etc consistant.

    --
    "It is a greater offense to steal men's labor, than their clothes"
  90. obligatory Ask Slashdot parody by Super_Frosty · · Score: 1

    cluelessnewbie writes: "I have no idea how to run a business. Can you please tell me for free. Also, what is Linux, and will it write a business plan for me?"

    --
    No comment at this time
  91. Extreme Programming (XP) is the answer! by Anonymous Coward · · Score: 0

    With it you don't even _need_ to write documentation or design artifacts. It's assumed that all the documentation you need is in the heads of the programmers and the on-site client.

    YAY XP!!

    (But wait a sec.... what if one of the programmers leaves the project... OH MY GOD!!!)

  92. Once and only once by MSBob · · Score: 3, Informative
    When documenting a software project keep one important principle in mind:

    Write things Once And Only Once

    This means that whatever documentation you produce it should not duplicate information that can be inferred from reading the code. Documentation should only compliment your source. Describing algorithms in a Word document is a terrible idea as any duplicate information will get out of date. It's only a matter of time. Usually documentation should be more detailed around the user requirements and sparse around how the code works. Documentation is not an asset. It's a liability. Any new document introduced during the development process is an additional maintenance headache and a delay in project's completion. Always think twice before adding every single type of document into your development process.

    --
    Your pizza just the way you ought to have it.
    1. Re:Once and only once by jzitt · · Score: 1

      This means that whatever documentation you produce it should not duplicate information that can be inferred from reading the code.

      Sorry, you lose ten yards and a first down for handwaving via passive verbs. "can be inferred" by whom?

      Having been both a tech writer and a programmer, I've seen way too many cases where a programmer has failed to document what he did in a program, believing the code to be "obvious" and "self-documenting". Then the programmer leaves, another person looks at the code and is baffled.

      No two people ever come at code with identical backgrounds and assumptions, and it's most often those issues which people assume that other can understand "of course" that contain the deep land mines that cause misunderstandings and problems -- and often these problems happen after lots of new code has been built based on mistaken assumptions about the old code.

      I agree with an earlier poster: hire a documentation person. Now. Include that person in code reviews and give her access to the programmers. The stomach lining you save will be your own.

    2. Re:Once and only once by Anonymous Coward · · Score: 0
      Documentation is not an asset. It's a liability. Any new document introduced during the development process is an additional maintenance headache and a delay in project's completion.

      So obviously the best thing to do is not to write any documentation! I mean, all you really need is the source, right? If it doesn't match the source, it's dangerous, and if it can't be dervived from the source, it's not needed - so we should burn down the library in Alexandria.

      That's a relief. This topic came dangerously close to overturning one of the precious mantras of open source development: "Documentation? We don't need no stinking documentation!"

  93. Fusebox Link by booms · · Score: 1

    Being a CF programmer for several years (and hopefully I'll be a Technical Editor for an upcoming ColdFusion book), Fusebox is certainly the way to go in combination with a Source Control product. Ironically a lot of the changes I made for myself when using Fuse2 are incorporated into Fusebox 3.0, so I think I'll probably use it exclusively on my next project rather than the hybrid version of Fuse2 I've been using.

    I've only used MS SourceSafe with CF projects, but I'm currently getting curious about playing with CVS & CF Studio.

    Fusebox.org is down right now, but you can learn more about it at Hal Helms website in the meantime.

    1. Re:Fusebox Link by gavlil · · Score: 1

      sounds interesting.

      whats your opinions of cvs using it on win32?

      --

      Do Unto Others As You Would Have Others Do Unto You - ONLY HARDER!
    2. Re:Fusebox Link by booms · · Score: 1

      I honestly haven't used it at all yet, which is why its something I'm thinking about looking into. :)

      On a related note, the webhost I use supports MySQL & ColdFusion, and they host MySQL on NT/Win2K, and it seems fine thus far.

  94. right way chicken by Anonymous Coward · · Score: 0

    ...anyone afraid of 'the right way' lacks discipline. Best to ignore such people.

  95. 'scuse me? by Anonymous Coward · · Score: 0

    ColdFusion programmers? Typing a few cfquery tags doesn't make one a programmer, you know...

  96. Write it down! by dasspunk · · Score: 2, Interesting

    My favorite work montra is to "Document enough to put yourself out of a job". Meaning, write enough documentation so that anyone could walk in pick up where you left off.

    I like HTML for documentation because...

    - It's easy to work with and cross platform
    - Access it from any machine on your intranet (or internet if your brave)
    - Set up a standard documentation template to help keep everything uniform and to save time in creation
    - Use a scripting language to automate creation
    - Easy to convert to any other format
    - Easy backups at one location

    I would suggest treating your documentation situation like any other important project. Give it some attention, milestones, priority, manpower, etc. Start by documenting your documentation process!

  97. furgetaboutit by Anonymous Coward · · Score: 0

    documentation are for wimps

  98. Think cross platform by Cameron+Shorter · · Score: 1

    I figure I will probably be flamed for this, such is life.

    I worked in a company with web developers, sales people, coders and more.
    We had PC's, Macs, Linux, and everyone had different ideas about what package to use for documenting (from word to vim).

    The key mechanisms you want out of a doument management system are:
    * Store documentation in a standardised format.
    * Use a Versioning system which will track users and differences between versions.
    * Ensure that the data you put into the versioning system comes out in the same format.

    If possible try and get everyone using Linux, or tools compatable with Linux. However you might be like us and not have the power to wean the rest of the company off microsoft.

    In that case, you can go entirely commercial (Rational have some nice stuff for version managment) or try the following.

    Use CVS as the version managment system.
    Store your docs in either html, , sgml, xml, or txt.

    For HTML there are plenty of editors in numerous plaforms.

    Have a look at the Linux Documentation Project for SGML editors.

    It is possible to convert word documents from:
    Word->rtf->xml or html-> put into CVS (and then go back again.
    This does require management at the word end to ensure diagrams are referenced outside the word document rather than imported in. (Check the import options in word).

    Word docs can be stored in CVS, but they need to be stored in binary format, consequently you cannot see the differece between them by doing a "cvs diff".

    Unfortunately, using word docs means that the linux guys are forced to read them - yes, there are ways, but it is a righ pain in the arse.

  99. Re:Poor journalism ,good discourse by Anonymous Coward · · Score: 1, Insightful

    Not everyone comes from the same background of experiences as you. That does not make them inferior or wrong, it only means they come at things from a different viewpoint. Knowledge is not just information, it is the exchange of ideas. Without the exchange of ideas there can be no real knowledge or innovation. True innovation has never come from doing things the same way, but from doing things differently. Slashdot seems like the perfect place to exchange ideas and experiences and perhaps, each of us can learn something.

    So what's your problem, hemmoroids acting up again?

  100. Sure! by Micky+the+knife · · Score: 0

    For USD50 I'll be happy to do it for you!

    --
    Go ahead and mod me up. I dare you!
  101. $$$ for Slashdot... $0 for us by Anonymous Coward · · Score: 0

    Whenever the Slashdot Question and Answers, or Slashdot FAQ book comes out everyone who contributed online should get a share of the profit. Even the site advertisers should be paying us for our attention.

    Slashdot contributers, be aware.

    1. Re:$$$ for Slashdot... $0 for us by danielrose · · Score: 1

      Say what?
      |
      |
      |
      V

      --
      i hate pansy republicans
  102. Small Steps - Put Stakes In The Ground by qbalus · · Score: 1

    I've been involved over the years in implementing both processes and infrastructure to support engineering teams

    Following are some items that may be of help to you

    * I like to think of a software development environment as a 4 lane highway in the desert,
    where its easy to change lanes and easy to get
    off the highway if need be, and easy to get back
    on the highway. The opposite of this is a tight-rope, that is hard to get on, hard to stay,
    inflexible.

    In my experiences, most development environments I've worked in are a tight-rope, as they don't
    really provide an environment that help the developers productivity and quality.

    * I like to start out by identifying what process, practice, tool will make the project
    leads day-to-day work better. Working with the
    project lead to enlist team members to accept
    the change and then implement on their behalf

    * Start out be creating a well known repository
    to store all artifacts related to the change:
    documents, email, presentations, etc... it can
    even be a directory structure at first

    * Once some credibility and confidence is obtained
    look for bigger wins in terms of improvement.

    * Try to avoid creating the tight-rope. For example, some folks may want to write a spec in
    text format, others in a word processor, or html.
    Let it be a 4 lane highway. So you focus more on
    getting buyin for spec writing, then what tool
    or format it is in. Later on will be opportuntiy
    to refine.

    * You can strive for breadth, depth or both in terms of what process, practice, tool you want
    to change or implement. Let the owners of the project help you (project leads) determine how
    far or how deep to go.

    * Create a process change roadmap based on the product roadmap and so you can be sure as to not impact the development teams during critical stages of the release cycle. So is your product roadmap over the next 12 months is to release multiple version of the product, along with patch releases, the process roadmap should span all of
    the efforts.

    Best of Luck!
    Kramer
    www.qbal.com

  103. Cynicism... by fm6 · · Score: 2

    ...is such a convenient way to avoid facing your problems!

  104. thisIsAStupidVariableNameLikeJavaCodersUse by Grendel+Drago · · Score: 2
    Variables such as a, b, c, thing, object, stuff, crap etc should not be allowed.
    Um, if you have to write code like this:

    for (itemIterator=0; itemIterator < itemMax; itemIterator++)
    itemPointer[itemIterator].isFlagged = 1;


    ... then I really don't want anything to do with you. There are good and valid places to use i, j, retval and friends. There's a rule of thumb about the length of a variable's name being proportional to the logarithm of the scope (measured, for instance, by the number of lines of code it can be accessed from).

    --grendel drago
    --
    Laws do not persuade just because they threaten. --Seneca
    1. Re:thisIsAStupidVariableNameLikeJavaCodersUse by extrasolar · · Score: 2

      Heh. Two of my favorite Lisp functions are as follows:

      (define (next x) (+ x 1))
      (define (prev x) (- x 1))

      This, in my opinion, makes things like recursive functions easy to read and rather elegant. Such as:

      (define (factorial n)
      (if (= n 1)
      1
      (* n (factorial (prev n)))))

    2. Re:thisIsAStupidVariableNameLikeJavaCodersUse by soap.xml · · Score: 1

      If you look at what I said I did not mention i, j, and retval etc... Those are very usefull and I use them all the time in my programming. But having variable names such as: stuff or thing down the road you code will be VERY difficult to read. I am a Java developer and HATE it when I have to read through code that looks like what you posted. I agree, there are very good and valid places to use i, j, retval etc... But crap, stuff, thing etc... have no place in my world ;)

      My 2cents

      -ryan

    3. Re:thisIsAStupidVariableNameLikeJavaCodersUse by Anonymous Coward · · Score: 0

      Except those are scheme functions, not list functions.

  105. Project Documentation?! by NowIveSeenItAllGuy · · Score: 0

    Now I've seen it all!

    --
    Appended to the end of comments I post? 120 chars?!
  106. CVS! by Drath · · Score: 1

    I work on a team of about 20 people of diffrent diciplines. And we are ususally in smaller sub groups so documentation is quite important. What we do is use our CVS (Versioning System) as a sort of mutating users guide.

    We have some specific module definitions so everyone will know where to file what. Ie. General docs go in the General Docs, Netwoking Documents for Product X go in the PRoduct X -> docs modules. This also allows the documentation avaliable to be the most current as well as allowing you to view older versions.

  107. Wonderful frontpage troll by Pussy+Is+Money · · Score: 1
    Heh.

    Hi guys! What's the best way to document stuff?

    Love, Mirthe

    And they have the nerve to call me (-1, Flamebait)
    --
    Pushin' 'n dealin', shovin' 'n stealin'
  108. Document libraries in Lotus Notes by duckygator · · Score: 1

    We actually use a modified Team Room template on Lotus Notes to archive our documentation, deliverables, discussions, requirements, etc. Full text searchable (including all the attachments), built in review workflow, and more, all accessible via Notes clients or over the web through our Intranet.

  109. No idea? I can help! by ignavus · · Score: 2, Funny

    we have no idea where to start.

    "The "

    --
    I am anarch of all I survey.
  110. Documentation / CF / et al. by mjlesko · · Score: 1

    At the code level, in CF at least, I agree with an earlier poster about Fusebox and more specifically their documentation standard Fusedoc. In short, you state what the file does and define what goes in and out in terms of variable names, types, and scope. At a higher level of abstraction, I find Entity Relationship Diagrams (ERDs) are very useful because they force a group to use a similar vocabulary. Case in point, right now I am developing an accounting module for a larger project. Initial discussions gave the impression "Receipts" were the same thing as "Payments". Au contraire mon frere! They are simliar, but have key differences, that once we used an ERD became apparent. Lastly I agree with using some sort of version control system for your documentation and definitely implement one if your source code is not there already. Makes a huge difference - as long as you remember to back up the archive too!

  111. Recommended reading: Zope Fishbowl by bastia · · Score: 2, Interesting

    See Zope fishbowl. It's a nice summary of a very lightweight process with some well-written thoughts on why such/any process is necessary.

    As far as where to start, start with what you have. Most (not all) developers are happy to put their meeting notes, design docs, and such in a common/standard location and format (I recommend a text-based format in a revision control system) if one is simply designated. Someone whose technical ability they respect may have to remind some of the developers from time to time to put their docs in the designated place or to create a document from some important conversation.

    Be careful not to attempt to switch from what you have now (nothing) to something unrealistic (full UML class and system diagrams, workflows, and state transition diagrams for every project). Be realistic and simply start to collect what you've got. Designate a spot for hard copy documentation and electronic documentation. Another easy first step is to designate a common format (ASCII, HTML, PDF, StarOffice, whatever).

    Give that a few months to sink in. Then start to list common documents that should normally be associated with a project. Several separate "artifacts" of a project may include requirements, functional (user-visible functionality) design, detailed (class hierarchy and component interaction) design, implementation notes, decision log (bullet items of decisions made with date and those involved).

    Remember: something is better than nothing. If each project simply has a decision log (Greg and Sheila decided not to support wizbang with a froznobit because it would cause all the tulips to wilt), then you have a start. Six months later, when someone asks, "Why didn't we use froznobits to implement wizbang? Maybe we should fix that," they'll have somewhere to look for the answer. The same can be said of requirements and functional design. Developers can usually figure out detailed design by long hours spent pouring over code. There's no way to divine what a program is *supposed* to do if there are no comments and no requirements and no functional design.

  112. XML+XSL--HTML, man pages, headers, the works by KidSock · · Score: 3

    I didn't believe it but I was recently forced to use XSLT to generate unit testing code. So I read the XPath and XSLT specs (not long, easy reading) and thought I would document my personal library of C modules by defining the interfaces as XML and running an XSLT processor (Xalan-J) on it to generate an html reference, man pages, postscript, header files, etc. I'm still in the middle of it and trying to reduce the XML model but I have generated man pages and a very nice HTML reference. Here's an example. As you can see the style sheet isn't quite right. I'm working on it right now. If someone knows XSLT and wants to help, let me know...

  113. Project artifacts by PythonRules · · Score: 2, Interesting

    You touch on the fact that it isn't just docs, a key concept. I like to set up a Zope server and run Squishdot on it. I create 'topics' for each project. Evertime we do something of note, I make an entry, maybe put links in it, whole release notes and build reports. Now everything is indexed and searchable!

    Underneath the Squishdot app I have a projects folder. Under it, 2 more, software and firmware. Under those, a folder for each project. In them I use a plugin called LocalFS which exposes a system forlder to the Zope environment. We put all our docs, spread sheets, gantt charts and any other project artifact. Another page does an SQL query against our bug database and displays that kind of stuff.

    I can also pull in headlines via RSS to make the site more interesting and usefull. I even use Radio Userland at home to create a custom RSS feed tailored to our specifics needs.

    The last thing is to instill the culture, this takes time and patience.

  114. Comments lie. Code never lies. by rs79 · · Score: 2, Interesting

    If documentation is short, it's useless. If it's complete and accurate you'll never have time to find which page of the 35 volume set you want to read.

    Write good code and pray.

    --
    Need Mercedes parts ?
    1. Re:Comments lie. Code never lies. by Tijn · · Score: 2, Insightful
      Pray for what? That everyone writes good code? And what is good code?

      I'm new at my current job (3 months now), and am in the lucky situation that the guy who wrote all code I have to work with is sitting right next to me to explain it. But then still... it's a madhouse around here so he doesn't always have the time for it.

      The least you can do, is document the reasoning behind what you coded (needs to be no more than 5% of the code you wrote), and let the code itself tell the rest of the story. Without that small fraction of documentation you will get lost, unless you've had the exact same training as the others who work on the project.

  115. Do Not Badmouth PHP by jwinter1 · · Score: 1

    Have you ever programmed PHP? Have you ever read ANYTHING even tangentially related to PHP?

    First off, the web-based documentation for PHP on php.net is far better than anything ColdFusion offers. php.net's web documentation outstrips any language I've seen, including ColdFusion. This point, more than the rest of my post, I'd like to stress. php.net is a godsend, I just wish it existed for C and Perl.

    I've never experienced the "chasing down of foreigner's components" problem that you've apparently run into. I just appreciate the fact that PHP can leverage all of its built-in functionality, which is quite extensive (SWF, PDF, any database, zlib, the list is practically endless and still growing), with a few decent user-written classes (basically, what you'd find on Macromedia's Developer Exchange).

    Next, PHP's syntax is natural for even the novice programmer. Scope, arrays, even variable variables are all handled in a way that makes sense. Based on syntax that an experienced programmer will recognize quickly.

    Finally, I've used PHP for a while now, and, of course, have had a lot of questions. All of my questions were addressed either in php.net's docs, the user-added notes, phpbuilder, or somewhere on the Web. So, unfortunately, I never needed to call tech support for $5 a minute.

    PHP is open source done right. Please don't knock it with so little knowledge and so much ignorance.

    --
    Anything you can do, I can do meta.
  116. Standarization by Anonymous Coward · · Score: 0

    Whatever you do, beware excessive standarization. It is natural to require some standard things in every document - for example, that paths in the system where the can files be found should always appear in page 1 or 2. However, I've seen insane systems where even fonts and font sizes are controlled. Tell me. When you go to the Internet, is everything the same font? No. But usually, if you go to a site with "news" that's about the default view you get (i.e., the main page is not the link page instead). In the same way documents should have natural requisites but please do not become rigid past the point of usefulness.

  117. Documentation should be part of the process by Starky · · Score: 3, Insightful
    I don't know that much about ColdFusion, but with Perl one can generate POD documentation, Java has javadoc, etc.


    The first thing you should do is create coding standards in which documentation is part of the coding process. The documentation standards should be such that you can automatically generate documentation as the code base changes.


    For example, on every Perl project I work on these days, I introduce a script (about 30 lines of code) which auto-generates documentation from the PODs. The script can be run as a cron job that auto-updates the online documentation every week. That way, coders document as they go, and central documentation resource automatically regenerates itself on a regular basis.


    The second thing you should do is set up an intranet site (behind the firewall!) for developer documentation. Include the auto-generated documentation, documents describing your coding standards, project management documentation for developers, use cases, class diagrams (does ColdFusion even have objects?), activity diagrams, sequence diagrams, etc., etc. If you have a team of 20 people, undoubtedly you have someone who manages code revisioning. Likewise, managing the developer intranet should be included in someone's job description, and, what's more, they should be given the time to do it properly.


    Hope this helps :-)

    --
    -- My choice of computing platform is a symbol of my individuality and belief in personal freedom.
  118. The way it works for us... by SysKoll · · Score: 2

    We used to have the same problem when I joined my current project in 1999 (yep, 4 versions later, we're still doing the same product). We are using Lotus Notes (no choice), which has serious drawbacks (no Linux client, buggy SMTP, weird shortcomings, very bad help, crashes at odd times) but happens to work very well as a collaborative environment. I suggest you get a good collaborative environment that allows its users to:

    • easily author, edit, publish (share) and index documents
    • share remarks and notes
    • offer multiple "views" (indexed sorts) of the same database

    Then create one or several databases containing "how-to" documents. For instance, I see a few popular documents here: how to reload our DB tables, how to set debugging options of a certain product, how to configure SSL for our web server...

    We have one of these little document for each procedure that has to be done several times. One-off tasks are not documented. There is a strong incentive to document a procedure when you've been asked to perform it several times.

    Random papers and drawings are scanned, but their use is discouraged in favor of editable files.

    Mostly, whatever collaborative system you use, train people to use it and provide incentive for its use.

    And don't think it will be free. It will start saving money after several months, not next week.

    -- SysKoll
    --

    --
    Mad science! Robots! Underwear! Cute girls! Full comic online! http://www.girlgeniusonline.com/

    1. Re:The way it works for us... by Anonymous Coward · · Score: 0

      Spend some time learning the Everything system (at www.everydevel.com). Or the ArsDigita Community System. Or any of the other systems out there.

  119. Documentation at my workplace by Anonymous Coward · · Score: 1, Funny

    1) Create incredibly complex database systems and the applications associated with it.

    2) Hire a bunch of bright interns at 10 bucks an hour to figure out how the system works.

    3) Make the interns write extensive documentation.

    4) Write whatever the hell the interns want on their evaluation reports.

    5) A win-win situation for all. :-)

  120. For better or worse by Anonymous Coward · · Score: 1, Interesting
    Java has it's strength and weaknesses, but the one aspect I love about Java is javadoc. For low level details I prefer to put them in the source code and use javadoc to generate the HTML documentation. For general summaries or flow charts, I sometimes use a text editor to write additional over-view to make it easier for others to get a high or medium summary.

    I tend to write comments about why a particular API was designed that way and what limitations (be it time or requirements) result from that choice. The main reason I do this is when I have to go back to extend it, I have a note to myself about how to extend or fix it. Murphy's law says the feature you think won't be needed will be the first one requested.

  121. PLEASE! by wedg · · Score: 4, Insightful

    Read The Mythical Man-Month by Frederick P. Brooks, Jr. (ISBN 0-201-83595-9). This is one of the best books I've ever read when it comes to managing any sort of software product - and it gives great advice, including a chapter on documentation and why it is so IMPORTANT.

    Please, go out and buy it and read it - or check it out from your local library. It is a must for all programmers, even if you're not the one in charge.

    --
    Jake
    Dating: while( 1 ){ call_girl(); get_rejected(); drink_40(); } return 0;
  122. Look to Hal Helms by devleopard · · Score: 1

    Specific to ColdFusion: look at Fusedocs, DevNotes at HalHelms.com, look at SourceForge for Lee Borkman's WireFrameTool, and look at Fusebox.org for an overall methodology for keeping your CF apps clean. An additional advantage of Fusebox is that it's been ported over to PHP and JSP (with others to come), allowing you to develop all apps the same way, in spite of language. Also, look into Hal Helms's writings about Fusebox as an overall project management technique (Fusebox LIfecycle Process - FLIP)

    --
    The best thing about a boolean is even if you are wrong, you are only off by a bit.
  123. Don't. by dasmegabyte · · Score: 2

    You use ColdFusion. This language is a mess -- it's slow, expensive and embarassing to work with. It's also very easy to understand, which is why it's well worth the cost, sloth, and total lack of knowledgable people.

    I came into a codebase of about 5000 cf pages. Only two of the original developers are still with my company. There is no documentation and these were not good programmers -- my portion of the application was by and large coded offsite by amateurs. And at the same time, I have never really been halted in my work by the unavailability of documentation. Hindered, maybe -- slowed a bit, especially during a set of endless includes. But never halted.

    ColdFusion is a mess to program complex things in. Cfscript is apocryphal and best replaced by simple COM and Java modules that do the same thing faster and in a much more understandable fashion. What you're left with is a base of very simple, readable code that's actually spoiled by documentation. (those <!--- tags are murder)

    Oh yeah: name your variables wisely. That's the key to ColdFusion

    --
    Hey freaks: now you're ju
    1. Re:Don't. by devleopard · · Score: 2, Interesting

      The language isn't slow, expensive, or embarrassing. Like any language, it's only as good as the developer that writes it. Unfortunately, since CF is so easy to learn, there tends to be more novice code out there you'd typically find in other languages (hence the bad rap). No fault of your own, you seem to have some misunderstandings as to how CF works (for example, CFScript was never, never meant to replace compiled objects). From the sounds of it, CF isn't your primary language - however, I work in CF every day (I'm actually on the board of a CFUG and have contributed to a couple of CF books) so naturally, my perspective differs from yours.

      --
      The best thing about a boolean is even if you are wrong, you are only off by a bit.
    2. Re:Don't. by dasmegabyte · · Score: 2

      Untrue. Cold fusion is NOT as good as the developer that writes it...CF was my first "production" language and I have exceeded its capacity on numerous occasions. There is a point past which ColdFusion will not optimize, cannot keep up, gets buried under requests, and it's a significantly lower point than ASP or JSP/Servlets get bogged down.

      We wrote the same simple i/o algorithm -- extract rows from a database and loop across them to output a table -- in practically a dozen different ways in three different languages beneath IIS, and the CF implementations (CF using a CFX tag, CF using cfquery/Cfloop, CF using a cfscript to loop and call writeoutput()) were all slower than even ASP. A servlet with a pooled connection and a persistant bean was fastest, but this is almost cheating.

      We did extensive testing and have on numerous occasions sworn that we wouldn't accept ColdFusion anymore now that all the developers here know ASP and COM (all the CF only people are gone). And you know what? Despite the inefficiency and poor scalability we've noticed (which, I'll concede, is due in part to that fact that some parts of the application were not planned or coded correctly), we still do all new development in CF. It's just faster to get done because the syntax is easier and working with display is more like HTML than JSP or ASP. It's more natural.

      In summary: I disagree, the lanugage does suck, but I love it. Hell, it's paying for my house!

      --
      Hey freaks: now you're ju
    3. Re:Don't. by devleopard · · Score: 1

      You can implement both COM objects and Beans in CF - the speed of these compiled objects doesn't make JSP or ASP faster. Also, writeOutput() and for loops inside of cfscript are painfully inefficient - you should always use CFOutput when iterating over a recordset.

      --
      The best thing about a boolean is even if you are wrong, you are only off by a bit.
  124. Documentation can't be pulled from nowhere... by inquis · · Score: 3, Informative

    A lot of people are posting saying basically "use system X to keep track of your documentation" or "use system Y to keep track of it" but are not addressing the main problem: it really doesn't matter how documentation is archived. Sure, CVS or DocBook have advantages over papers in a filing cabinet, but efficient access to documentation means nothing if the documentation itself is garbage.

    What documentation would I consider garbage? A lot of these replies suggest you use "literate programming" and "comments in the code", and while these are very useful to maintenance programmers they are nowhere near as important the specification, analysis, and design documents that should have been generated before implementation had begun. For example, I'm sure none of the /. crowd would have any trouble figuring out what a 200-line, uncommented module does when they have access to the complete and accurate specification, analysis, and design documentation. On the other hand, it's ridiculously easy to cause a regression fault nightmare when you are modifying a 200-line module with copious comments but without the detailed specification, analysis, and design of the product handy.

    What you should be asking yourself:
    1) For each of the projects we are currently working on, do we have the design documentation?
    2) If 1, is the code we are writing completely consistent with the original design documentation?

    if (1 == false), you are in BIG trouble. While development on a project such as that may go okay, maintenance will be a minor disaster area. It's unreasonable to expect maintenance programmers to maintain a project that's so poorly documented, and for such a small organization spending gobs of time hunting regression faults because the idiot down the hall made a change to a module that he didn't understand and that wasn't documented could be fatal.

    if (1 == true) but (2 == false), you are still in trouble. Wrong documentation is orders of magnitude worse than no documentation, because what happens is that maintenance programmers don't realize that the code doesn't fit the specification and end up trashing half the project until someone finally catches the mistake.

    My suggestion? If you have projects like #1 or #2, consider all the work you've done so far as a rapid prototype, trash all the code, and start from scratch with a reanalysis of the specifications. It might sound brutal, but you'll spend less cash in the long run doing a total overhaul now rather than waiting until later and letting it all catch up to you on the bill for maintenance.

    If your projects are well-specified, analyzed, and designed, your employees already have the competence and the CASE tools they need to document their code well. Remember, the emphasis is on COMPLETE, COHERENT, CONSISTENT documentation; hell, even resort to printing your documentation on dead tree if you have to, as long as it's complete, coherent, and consistent it won't matter that much. Accuracy of documentation over efficiency of access.

    -inq

    1. Re:Documentation can't be pulled from nowhere... by devleopard · · Score: 1
      Sure ya can! ;) Someone posted an app/custom tag on the Fusebox list (fusebox@topica.com - subscribe from HalHelms.com to see the archives) that actually "reverse engineers" your app to produce Fusedocs.



      By the way, you're double negative means the opposite of what you're trying to say :=)

      --
      The best thing about a boolean is even if you are wrong, you are only off by a bit.
    2. Re:Documentation can't be pulled from nowhere... by inquis · · Score: 3, Insightful

      For some reason I highly doubt that Fusedocs are a substitute for proper system analysis and design. Sure, it might be smart enough to analyze the interrelations between modules and create class diagrams and generate documentation. However, automated systems still have a fundamental flaw: while they can tell you how everything is interrelated, they can't tell the people using the documentation WHY it was implemented the way it was, which has CRITICAL implications for maintenance. Automated systems can reveal structure but not purpose.

      Also, tools that generate documentation from code give you the design documentation just when design documentation is the least helpful. At best, documentation of this kind will only serve to show you how brain-dead your initial design was (because by the time the tool is useful to "reverse-engineer" your code it's already far, far too late to correct your boneheaded design gaffs).

      Finally, the title made sense to me but yes, it is a double negative; consider it revised to "Documentation can't be pulled from the ether...". Creating the documentation from nothingness is a classic case of selling the horse to buy the cart.

      -inq

    3. Re:Documentation can't be pulled from nowhere... by devleopard · · Score: 1

      Very true - you really should produce your Fusedocs during the architecture stage. I would never argue against that. However, it's not always possible to trash and re-write - so reverse engineered documentation is better than none.

      --
      The best thing about a boolean is even if you are wrong, you are only off by a bit.
  125. Depends on exactly which question you're asking. by rjch · · Score: 1

    If you're asking HOW to start off writing a large documentation project, then the method that always worked for me is simply to summarise the screens/forms, then to summarise the items/buttons/commands on each form, and (if necessary) to break down each item into each option. Once you've got this framework, it's quite easy to start filling in the blanks.

  126. the only choices aren't quality or speed by Infonaut · · Score: 2
    No, I do get it. I just disagree with it. ;-)

    The problem with your approach is that the bare minimum quality works in the short run, but it's very difficult to get out from under that hole once you create it.

    Also, you assume that moving as quickly as possible is the polar opposite of moving forward with a process in place. My counter to that is that a good process can actually save you time, even in the short run.

    I've been at places where everyone is in such a hurry to move fast, to get product out the door, that they had to do the same things over and over again because of duplication of effort, mistaken assumptions, and so on.

    Hell, look inside 90% of the burnt-out hulks of once world-beating dot-com companies in the Valley and you'll hear the same tale over and over again - "we were in such a rush, nobody knew what was going on, when the senior developer left, we had to redo everything from scratch.." etc. This isn't just hearsay - I've seen it first-hand.

    I'm not trying to argue with you, but just ponder that the choices might be less binary than you present them. There is a middle ground between complete failure and moving as quickly as possible with the bare minimum of quality.

    --
    Read the EFF's Fair Use FAQ
  127. Hire a secretary by mshurpik · · Score: 2, Interesting

    what about all those diagrams and handwritten notes. If not, do you store things in a folder per project, and how do you then stop documentation from getting lost and making sure people store things where they should.

    Try hiring a secretary. Organizing and keeping track of documents is centuries-old technology already.

    And good luck. You've just admitted that your organization doesn't have even the most basic organizational skill between the lot of you.

    1. Re:Hire a secretary by vidarh · · Score: 2

      I think that's a bit unfair. Most software shops doesn't use any formal methodologies until they get a reasonable size. It's what allow them to be competitive when working on projects that are small enough that adding overhead isn't needed. If a project is handled by 4-5 people, formalized procedures and thorough documentation may never be required. It is when projects grow that you need to start formalizing how you do your development, in medium sized teams mostly to ensure that you can add or replace resources on a project quickly without a lot of overhead in training. The level of formal procedures and organization needed also depend a lot on what kind of software projects you are working on.

    2. Re:Hire a secretary by mshurpik · · Score: 1

      Most software shops doesn't use any formal methodologies until they get a reasonable size. It's what allow them to be competitive when working on projects that are small enough that adding overhead isn't needed.

      Formal methodologies are not overhead. You would know this if you were a software engineer.

      Whoever modded you up isn't a software engineer either.

    3. Re:Hire a secretary by vidarh · · Score: 2
      Formal methodologies cause a huge overhead in small projects or for small teams. That does not mean they are bad for an organization that is large enough, but for a small team it is not a cost efficient use of resources.

      I've done both done consulting and development jobs with various sized development teams, and headed development teams of various sizes for several years, and I've seen large teams fail miserably because of lack of methodologies and small teams fail miserably because they where spending time on formal design and documentation phases where their competitors were not (guess who got to market first....), and the other way around.

      It is all about setting the requirements based on the projects size and complexity, not about insisting on using formal methodologies whether the project requires it or not.

      You may keep your illusions if you want, but if you truly believe that an organization spending time using formal methodologies for 2-3 month projects involving 2-4 developers or thereabouts (face it, the majority of software development projects are hacks, not major pieces of software) would be competitive, then I know I wouldn't even consider hiring you for my team.

      Once the team grows, formal methodologies isn't only a good thing, it is an absolute requirement for success, as it gets to difficult for even the good developers to keep track of all the interdependencies.

      Somewhere along the line you reach a point from where formal methodologies isn't overhead anymore, but a vital requirement.

      But don't kid yourself, if the project is small enough it isn't about structure or methodologies, but the qualities of individual developers, and imposing stringent rules on them will often have the opposite effet of what you intended.

  128. Actually, don't write any documents at all by matsh · · Score: 4, Interesting

    Whatever you do, don't write any documents at this time. Instead put everyone (if possible) in one big room, with pens and whiteboards along all the walls. Supply lots of coffee, food, snacks and soft drinks.

    Let them hash out all the details of what you believe the customer wants. If you have a real customer available, chain him to a table in that room and don't let him go until you're satisfied.

    Write down user stories on post-it notes, stick them to the walls, sketch UI designs and user interactions on the whiteboards. Don't worry about documentation! What matters is that you all have the same vision and understanding of what to do.

    Documentation on paper is just about the worst medium possible for transferring information from one person to another. It is one way, it is low bandwidth, it is not visual (unless you have lots of pictures and such). It basically sucks. Two or more persons by a whiteboard is the best possible technology for information transafer. The ultimate solution is if you have a printing whiteboard, which can give you a hard copy of what you just jotted down.

    The real documentation, on paper or on the web, can come much later, when things have stabilized a bit. In the end it may never be needed, in case your project is cancelled.

    All these tips comes straight from the book Agile Software Development, by Alistair Cockburn. The best SW related book I've read in years!

    Mats

  129. Re:http://twiki.org/ - is organized by Anonymous Coward · · Score: 0
    Unlike other Wikis, TWiki sites tend to be more organized since there are TWikiForms, embedded search and other variables to structure content, plugins, authentication, version control and file attachments to web pages.

    Browse around http://TWiki.org/ and have a look at the TWiki docs maintained in TWiki (TWiki web) and the developers corner (Codev web) where new features and bugs are tracked.

  130. Companies trying to escape facts .... by Anonymous Coward · · Score: 0

    Do not waste your time on documenting. Formal documnetation is a part of the current trend, where companies tries to escape the fact that they are enevitably tied to the heads of their IT employees.Companies try again and again to view their employees a 'resources', but this view will ultimately fail.

    When the lead programmer leaves your shop it WILL hurt you A LOT. Usually he/she has stored WAST ammounts of knowledge in their heads, and 99% percent of that 'online' knowledge can not be put on paper.

    When your system breaks down you do not have the time to wait for the new guy to read documentation for a couple of weeks,to solve your problem. You need knowledge 'online' in wetware NOW. Your only option is to keep your current wetware.

    Besides you need to weigh the risk that your lead developer leaves, against the time spent on documentation, its actual value if the guy leave AND the probability that the guy leaves ....

    This rarely goes in favor of doing documentation, but tends to favor making him teach others while he's still around ...

  131. Documentation methodologies by UNFAIRMAN · · Score: 1

    In a consulting job two years ago I helped a client install an over-priced and under-supported suite of tools called Process Continuum. The "suite" was actually a set of discrete tools that didn't really work together, and I cannot recommend it. However, it contain a gem called the Process Library, originally developed by LBMS, which contained rich project plan templates and outline documents that mesh very nicely with the project plans. Exposure to these materials has changed my professional life.

    This type of high-end packaged methodology is designed to help huge organizations run $1M+ projects, and they do not scale down very well. I don't think this is a solution for our cold fusion programmer friend. However, the best practices of building not only standard project plans, but project documentation templates, is an important first step. If one of your clients' methodologies includes one of these huge libraries, don't snub it - learn all you can.

    Document everything using your internal best practice documentation templates. As a last step, conform the deliverable to the client's methodology. If yours is good, the conversion will be relatively fast and painless. If you come across an outside idea that's better than what you're currently doing, plow it back into your best practice templates.

    The poster has a need for a tool to control documentation content. That's fine. There are lots of good suggestions from other Slashdot readers. But even more important in my mind is the robust base structure and succinct fleshing out of the deliverable documentation.

  132. Project documentation tool. by PGillingwater · · Score: 2, Informative

    My company had the same problem. We had dozens of little projects on the go at the same time, with lots of customers, and several outside contractors. How to coordinate, including across time zones, and with various documents to be shared?

    So, being a software company, we wrote a tool! It's called Outreach Project Tool, and we've GPL'ed it. You can check it out at http://outreach.sourceforge.net, and download the source from http://sourceforge.net/projects/outreach/. Note it's dependent on LAMP.

    --
    Paul Gillingwater
    MBA, CISSP, CISM
  133. Keep you documents with your code if you can by Henry_Doors · · Score: 0

    We use our source code repository for documents as well as code, keeps everything in the same place. The repository is split by project with the relevant documents for each project in that projects area. People check docs in and out in the way they would source code and you can always track down the latest version of the documentation

    As for the format and content of the docs you really have to think about what they are for, specifiactions for users to comment on and specifications for programmers to code from need to be different. Documentation also becomes useless if you can't keep it up do date so keep it at an appropriate level of detail.

    One example is to think about a new programmer coming onto the team will the documentation help them get up to speed quickly?

    As for document formats there are lots of examples of standard docs on the web. Check out Steve McConnels company Construx

    Both the project survival guide site http://WWW.CONSTRUX.COM/survivalguide/

    and there methodology templates http://WWW.CONSTRUX.COM/cxone/CxOneBasicDocumentMa p.htm
    but there are lots of others around

    --
    "I deny nothing, but doubt everything." Lord Byron
  134. When did using Cold Fusion become programming? by boltar · · Score: 0

    What next , people using FrontPage get called computer scientists?

  135. Perl has it, too by marnanel · · Score: 2

    Perl has POD, which can be embedded in your source in a manner similar to javadoc. You can then use standard Perl tools to turn the source into html, LaTeX, man pages or whatever.

    --
    GROGGS: alive and well and living in
  136. Unless there's a bug by Anonymous Coward · · Score: 0

    in which case the comment says what should happen, and the code says what doesn't. It's easier to compare the code against a good comment than the code with "// ..."

  137. If documentation is short, it's useless by Raedwald · · Score: 1

    Short documentation can be useful. I'd say it can be the most useful documentation. Reading the code can tell you about the low-level design decisions taken, but it does not give you the big picture. A short, high-level, document can be invaluable for placing the low-level information in context. For example, telling someone that the product has a database holding customer data, and extracts order data from system XXX, and has a YYY user interface, etc. This information is useful for only new team members, but they are the ones who need documentation.

    --
    Ne mæg werig mod wyrde wiðstondan, ne se hreo hyge helpe gefremman.
    1. Re:If documentation is short, it's useless by Chundra · · Score: 2

      I was recently looking through the source code to pysol and it was like that. Anyone who has problems writing good documentation, or wants to see just how good it can be should check it out. I've been coding for about 14 years now, and pysol took the cake. But then again, I'm one of the people who doesn't comment anything.

  138. Video Tape by juliao · · Score: 2
    Documenting is great, but takes a long time.
    The main problems are:
    • Developers are bad at writing docs
    • Writers are bad at understanding what was done and why
    • Writing tends to lag behind development
    • When writing actually happens, nobody remembers the what and the why anymore

    To solve this, i propose a novel approach:

    Video Tape everything

    Record:

    • Brainstorming sessions
    • Developers describing their code (highlighting it, showing it on screen, explaining what it does)
    • Building and integrating activites
    • Everything else you can remember
    Seems like a weird thing, but try it. When you document, having the tapes around is a precious resource.
  139. If it doesn't fit, it *is not* the right way by Anonymous Coward · · Score: 0

    Firing people who want to do things "the right way" is one of the worst things you can do. The others will see that there is no room for any thinking about what you're doing and churn out stuff that barely works and nobody can read.
    Instead, try thinking why "the right way" doesn't fit. There are lots of heavyweight "right way"s which don't fit a small company. But there IS nothing wrong in looking how you can achieve better quality by doing some things consistently one way round. The two books I know of which present better methods for software development (one about XP, the other about CD) both include a chapter of the kind "Don't do it the way I told you if...".
    If they keep pestering you with "the right way", discuss why the way you do it now is better or not. Do some analysis of the risks and costs involved. But don't forget doing real work in the meantime. If they still don't get it and won't see why their "right way" doesn't fit, start thinking about firing people.

  140. What you need by squeird · · Score: 1
    You don't just write documentation because it is fun to do so. You do it to get work done more quickly. Look for:
    • Documents your clients asks you to give
    • Things you explain twice or more to different people
    • Delays caused by misunderstandings or simply the absence of communication (e.g. useful comments in the code). You can find out where these breakdowns occur: everyone who does a task (something that takes less than 2 days) gives an estimate of the time he/she would need in an ideal world. Afterwards, you check the "ideal" numbers against the real time used. Compare these ratios and try to find out what has happened. You will find that either the estimate simply was too optimistic (they are at first) or there was something unnessecary which was in the way, possibly something which could be improved whith better communication.
    Once you know what has to be communicated, look for the technical solution
    • a folder for each project to place all those nifty drawings and a document that explains the overall design (so that you don't need to view it on the screen or print it out).
    • Some kind of database to put reusable information in, preferrably in some searchable way. This could be done with a Wiki or with Lotus Notes or with some kind of database
    • The things you use for yourself can be put where you can find them.
  141. Ease of use? by squeird · · Score: 1

    Video tapes may be better than no documentation, but I think it's awkward if you look for something and have to watch all the films if you're looking for some detail.

    1. Re:Ease of use? by juliao · · Score: 2
      I don't mean tapes should replace documentation, I propose them as a menas of collecting data for writing the documentation.

      Doc writers will use the tapes in order to assist them in writing the documents for the project.

  142. Documentation is only useful as part of a process by PinglePongle · · Score: 2, Insightful

    I joined a company about a year ago; they'd spent several million dollars on getting a website built by a big consulting firm, using a cutting edge content management system. "Is there any documentation ?" I asked, on my first day, and the project manager from the consulting firm proudly pointed at the shared drive with nearly a gigabyte's worth of stuff in the "Documentation" folder.

    I poked around - weeding out the huge screenshots and photoshop files the designers had created - and tried to find out how the system worked; I found a folder called "architecture", and started to read. Funny thing was, most of the documents were more than 6 months old; several were more than a year old. Hardly any were written by current project members. There was no road map, no versioning. In short - the documentation - though plentiful - was badly out of date, often actively misleading, and totally pointless without the writer to explain the context and intent.

    This is not an uncommon occurence; there are people with (parts of) the answer.

    Check out "Agile Development" by Alastair Cockburn; he has very strong ideas on the topic of documentation and how to keep it relevant.

    Next, buy "Code complete" by Steve McConnell, and make sure everyone in your development team reads it and understands it.

    You might also want to check out the ideas behind Xtreme programming - it sounds to me like you're starting to find it impossible to maintain code written by other people with different coding styles and are hoping that documentation will save your bacon....it won't.

    Most long-term projects rely on coding standards, a common vision and understanding of the architecture, effective communication and well-written code. Documentation is usually done because the customer insists on it, or the management team believe it's going to solve hand over problems. It rarely helps the development team to get to grips with what is really going on...

    Where's the documentation for the linux kernel ?

    --
    It's all very well in practice, but it will never work in theory.
  143. WebCONTACT by Anonymous Coward · · Score: 0

    We use WebCONTACT for project management, contact management and also helps keep track of the hours well. It's fairly cheap (about $10.00CDN/mo. or $7.95USD/mo. per seat on both prices) and does what it's supposed to do. That's a good way to manage products, as for documentation, I would highly suggest documenting all procedures for doing anything in the office, then document stuff like coding standards, who to see for what, and put it all in a central place. No one should ever have to guess where their documentation is, they should hit some internal website and see it all. And as for where to start, the answer is simple. Document everything. :)

  144. knowledge and code repository by demosi · · Score: 1

    I don't know whether you have a source code respository but we manage all our documentation using a combination of our perforce which runs on our linux and windows boxes and having accepted pracices for the use of collaboration tools such as groove and webloggers.
    All useful information is stored in a respository and may be accessed from our intranet website. We're investigating using XML to categorise our knowledge base. We do some work on knowledge management so technically the group I work for should be good at this and our current processes seem to work well. Don't underestimate the need to have formal documents emphasising that knowledge is your most important resource and outlining how everyone should achieve it's management.

  145. Perforce + Tech Writer by dejesus · · Score: 1

    I strongly suggest that you have a professional and experienced technical writer for this. That's what they're for. You don't want this to be a burden to the tech folks. The technical writer should have experience creating and managing document control systems.

    Perforce is a good document control system to use. It lets you check things in and out. You can set up different projects and so forth. It's easy to learn and use.

  146. doxygen by Anonymous Coward · · Score: 0

    for javadoc like code documentation one can use doxygen.. it can be found at http://www.sourceforge.org

  147. Start today, organize tommorow. by bluGill · · Score: 2

    You need to start documenting today. when you make a change, document the area you change, how it works, why it works that way, gotchas that you had to watch out for...

    I started doing that 3 years ago for code that I maintain, and I'm getting close to done. Often I go back to something I documented before and update it with knowledge I discovered latter that makes things clearer. I also discovered I maintain one module that is as close to perfect code as I've ever seen. I know that because I have not done any documentation on it which means nobody has found a bug, or a situation it doesn't handle already.

    Unfortunatly I've also discovered some things that I don't know how to document in a way that others will know what to do when it happens again. In my case hardware designed a new board that required different registers. We had to compile some things differently for that board, and to make our makefiles do that is really easy once you understand how they are generated, but difficult if you do it the obvious way. A simple change once I found it, but I don't know how to tell others so they will figgure out where to make the change.

    In any case, once you get some documentation it can be orginized. Thats not something I do well. I don't write documentation well either, but at least I write it, and that has helped.

  148. CYA by tarsi210 · · Score: 2
    From the Prevent-random-acts-of-lawsuits dept.

    Small company here (~20 ppl), and we keep notes on various projects in a custom application that we wrote with a database backend that allows us to write notes on projects, track time spent on projects, and run reports.

    Another major part of our arsenal is a CYA box. (Cover Your Ass) This is a box or other container into which all notes, drawings, printouts, scratchings, post-its, code scraps, etc....EVERYTHING goes. Why?
    Two reasons:
    1. It allows us to show a paper trail of our development. If you ever get sued for copyright or patent infringement, you'll be glad you had this. It shows, in order, how the application was developed. Since everything in the box is layered in chronological order, this works well (First item in is oldest, last item in is newest). We seal boxes up when they get full, date them with the start and end date and mark a destroy date on them (7 years hence, usually).
    2. Ever delete something you wished you hadn't? Had a HD crash and wipe out some of a program? Then a CYA box is a handy thing. I haven't had to use it very often, but trust me, restoring programming code from paper is better than nothing. (tape or CD is better, but it's a last-resort backup)
    Whatever you do, document EVERYTHING. If you sneeze on a project, document it. Documentation is one of those evils...if you don't do it, you'll be fast but you'll kill yourself later, and if you do it too much you'll slow down product. But it's worth the extra effort.
  149. my own documentation... by twiggy · · Score: 0

    I'm in the process of creating a documentation system similar to the docs at MySQL... basically it'll be database-stored, and allow user comments, but it'll have security features so that you could set it to only allow members of your company to add comments, if you so chose.

    The only catch? It's written in a language called RACE, which you haven't heard of yet. Why RACE? Because it's better and easier than anything else I've used. We (mostly my boss) developed the language in-house at the web design firm I work for, and I have trouble going back to coding in Perl and other languages because RACE is just so freaking easy and neat...

    The good part - RACE is freeware, runs as an apache module, and is easy to install on any *nix platform. However, you may want to wait until I'm done with redocumenting it and put up the latest source code.

    What the hell is RACE? It's a tag based language that can do just about anything PHP, Perl, Coldfusion, and ASP can. www.racekit.net for more (outdated, more on that in a sec) info...

    We're up to version 2.9.2 now (I believe the site download will give you 2.5.4 or something), but since we never really "advertised" the site, we haven't updated it in a long time. We've just gotten an identity for RACE created by a design firm, and are in the process of redesigning the site to accomodate my documentation etc... Until now the site has mostly existed just for us to go grab the [old] PDF documentation :-p

    All of this should be ready in the next couple of months, I'm hoping.

    If you want the latest source, with instructions on how to use it, let me know. And if you want to see a site that uses it, check out http://www.openingbands.com -- it's entirely RACE driven/managed.

    Okay, this sounds more like a RACE ad than help to you -- so let me get to the point... I have a feeling RACE is what you're looking for because whether or not you end up liking what document management software I finish up (which I'll release for free) - you could write your own really easily, and really quickly.

    Bottom line - if you want a document management system that fits your needs, you're probably going to want to write it yourself, or you'll be jumping around shortcomings of each different piece of software. I suggest you try writing it in RACE because I feel it'll be fast and easy to do (if you want the latest source code just email me). Of course any other language you're comfy with is fine too :-)

    Steve

    --
    http://www.babysmasher.com
    http://www.openingbands.com
  150. Good doc practices by TwoKids · · Score: 1

    Early on in my career, I wrote a great deal of docs & was responsible for getting the coders to document their stuff. Here's what I found works:

    1. Internal code docs: make it a requirement that interfaces and subroutine behavior are documented. Enforce this with code review (which is a great idea anyway). File noncritical bugs against undocumented code. Do this enthusiastically, and eventually your coders will expect to see good docs in their fellows' code.

    Tools: freeform embedded docs are OK here; they're only read by programmers. If your group has a code style policy, add a doc style to it.

    2. Programmer docs: it takes a programmer to write docs for programmers, and the internal code docs mentioned above won't cut it when you need to create an API manual. Instead, you'll either have to be lucky (or medieval) enough to find (or force) a programmer to generate the docs, or you will have to train up a tech writer to be a programmer. The latter is slower, but overall more effective.

    Tools: Programmers read docs while writing code, so that means paper output or docs they can view in or near their code editor. Plain HTML is surprisingly poor for reference docs, but if you add effective searching & automatic crossrefs, it's OK (see the online Apache docs for example).

    I like creating docs in FrameMaker (from Adobe) since it outputs serviceable HTML w/indices, graphics, & crossrefs, has an excellent WYSIWYG editor, gracefully handles massive documents up to encyclopedia size, prints books well, is available on Win/Mac/UNIXen, and (very important) stores files in a diff-able (plays well with CVS) format.

    3. End user docs. These are best written by a tech writer who's also a power user. You'll find that most programmers are not power users; they know their own bit of the system extremely well, but bupkus about the rest and often aren't really interested in using the whole product for which they're coding. Make sure the people selling/promoting the product review end-user docs, too.

    4. File bugs against docs. This has been mentioned elsewhere, but it bears repeating: treat errors and missing features in your docs at least as rigorously as you treat code bugs. Make sure the support folks can and do file bugs; they're the people who hear about the bugs after release.

    Tools: gnats is the bomb: simple, cheap, modifiable, works anywhere. Make a doc-bug category that your writers manage.

    5. Put tech writers on the engineering team. Many organizations think docs are sales materials or something, so they put the writers in the sales, marketing, or support department. This makes for bad docs. Instead, tech writers should work next to and at the pace of coders. Ideally, doc writing starts as soon as the design phase completes. (You do have a design phase, right?) Good in-progress docs are an excellent roadmap for the coders, and result in the docs & code converging on completion at the same time.

    6. Hire or grow professional writers. Pretty much anyone who speaks the language can write good docs, but only people who like writing will stick to it through ten releases. Personally, I didn't know I liked writing until someone hired me to do it. Presto, professional writer!

  151. The problem with "technical writers" by napthene · · Score: 1

    First off, hire a technical writer. And do so as fast as you can.

    Of course, there are some problems with this statement, the first being that the technical writing industry itself hasn't the first clue what it should really be doing.

    Maybe I should say, instead, hire a good technical writer. What makes a good technical writer, you say?

    A good technical writer:

    • Is fast.
    • Produces concise, clear, and elegant prose
    • Has a background in the same technologies you use regularly
    • Can read code without help
    • Can take input in any form, including a three-second coredump, and parse it without asking stupid questions (what's a UNIX?)
    • Can use CVS or other version control software
    • Can think and act like a programmer
    • Comes to every single development meeting, and understands the product cycle from the first scribbled napkin to its present form
    • Makes maximum use of documentation technologies (such as FrameMaker+SGML) to reduce wasted and redundant work
    • Applies procedures to their work which require minimal additional procedural silliness from you.

    That's the short list. Far, far too many technical writers fall into the trap promulgated by the TW industry as a whole, which appears to be:

    Stultifying bureaucracy is the key to successful technical writing.

    I consistently encounter "technical writers" who seem to think that what worked in their Master's dissertation at UC-Berkeley is what will work in this industry. You can easily identify bad technical writers by the fact that they're slow (1 week or more to produce a document), mistake bureaucracy for procedure (a good procedure is minimally invasive, and works around the expensive folks like programmers rather than the writer), and, for some reason, can never quite get things done on time because it's too complicated.

    It's also entirely unnecessary for your technical writer to have a degree or certificate of any kind, regardless of the (again) technical writing industry's opinions. What matters is what they can produce. The questions you should be asking of any prospective technical writer are (among the usual for any new employee):

    • May we see writing samples from your most recent job?
    • How rapidly were you required to produce these writing samples?
    • How quickly are you used to creating documentation? Do you have any problems with working faster? If so, what are they?
    • Do you use document templates? If so, do you build them so that there's no additional hand-tweaking required? If not, why not?
    • What strategies do you use to manage your time?
    • How are you going to simultaneously Hoover out the brains of my engineers and preserve their highly valuable time?

    You get the idea.

    When you interview a technical writer, submit them to a simple test, which should be most of the interview in a nutshell.

    Make them write something for you. Put them with your most turbopowered supergeek for an hour, have your supergeek describe one of your company's product components to them, and have the writer document what they hear.

    Any competent writer should give you something concise, clear, and reasonably elegant within a day or two, no longer. If they can't, you should seriously question whether they're worth hiring.

    My $.02 as a technical writer who is, apparently, unqualified in the eyes of the TW industry to hold either my current job or my last five jobs,

    .naptha

  152. Congratulations to Lanifex by horza · · Score: 2

    The Outreach Project Tool is superb. Easy to install, easy to use, and has a very slick professional feel. It wouldn't look out of place in any top corporate environment and I consider it to be a shining model that Open Source software standards should aim for. By "dependant on LAMP" he means "Linux Apache MySQL and PHP".

    Phillip.

  153. Keep it Simple: Word and Email by Quinthar · · Score: 1

    I've been doing technical writing with a few different companies (despite my engineering background), and I've found that the most workable solution is to just use Microsoft Word and email, with the final versions put up in shared folders on a common file server. As long as the set of documents in use at any one point in time is relatively small (even if the total body is large), this works just fine, even with distributed workgroups and erratic (offline) network connectivity.

    If you have a huge volume of documents that are in constant collaborative use, or people frequently take documents off site for long periods, consider using CVS or VSS for check-in, check-out ability. In practice, I've almost never used version control, however.

    As for distribution of drafts and collaboration, everyone I've worked with always uses email. Despite the prevalance of all sorts of neat tools, email just has the tightest and most convenient integration with everyone's workflows. It definitely has its problems, but its problems are less than using anything else.

    The most difficult part of the documentation process is not technical, it's personal. Once everyone is in the habit of documenting things in digital form, the details solve themselves: If you don't have a central server, people will just send it back and forth in email, and that works fine. If you don't have version control, people just write change histories into the documents themselves, and that works fine. If you don't have the same tools, everything goes to the lowest common denominator (GIF and Word, or even HTML, usually), and that works fine.

    In reality, if at all possible, just using *only* email works great. As long as you can get by without fancy formatting (or are ok using HTML-enhanced email), it works great. Everyone will end up mailing all the documents back and forth, and your email server will inevitably turn into your primary file server anyway (the latest server is always in your inbox, not on the file server), so just realizing this up front keeps everything simple.

    Indeed, I'd recommend starting out with a minimum of rules strictly enforced, rather than a few that are lenient. Were I to pick a single rule that solves most issues, it'd be "Return document reviews or a new ETA within 24 hours, always. No exceptions." In this way, progress always continues despite any technical problems.

    When it comes to documetnation processes, less is more. People are smart -- let them figure out the details as they come up.

  154. Where to start... by DarklordJonnyDigital · · Score: 1

    /*
  155. It's not how, but _what_ you document by nmnilsson · · Score: 1

    (With the risk being offtopic - sorry!)
    When maintaining and expanding software, the documentation you usually miss in a project are decisions that have been taken along the way.
    You know, the things that makes you go "That's an awkward solution. Why in the world did they do that?!"
    (E.g., it may be because of implicit customer requirements, or bugs in third party software, that otherwise would have been the obvious choice.)

    Since these decisions are above source code, yet below the 'requirements and specification'-level, they often go undocumented, and then the guys who inherit the project have to start all over.

    --
    No sig to see here. Move along.
  156. A Perl aside by fm6 · · Score: 2

    I'm not a big fan of Perl, but the way it manages all these little state-keeping variables is something you have to admire. Many of them have standard names, and are referenced by default in most contexts.

  157. Fusedocs by halh · · Score: 1

    The Fusebox community (ColdFusion, Java, and PHP) has created an XML-based documentation system that's quite popular. There's info on it at www.fusebox.org.

  158. Re:Good ol' Slashdot Feel by shobadobs · · Score: 1

    Before that, my username was Anonymous Coward.

  159. Weblogs by sonnyjz · · Score: 1

    I use weblogs much like slashdot because you can secure it via your web server and people can create accounts and the input can be moderated.

    Not to mention that searching is nice and easy, and for new employees they can pick up on it very quickly.

    --
    - Sonnyjz