views:

623

answers:

15

I am of the opinion that the quality of the documentation of a language (programming language, API, Harware/Technical specification etc) has a direct correlation with the long-term popularity of that language.

Good documentation can not only provide an 'all-in-one desk reference'-type resource for developers but also help to build a community of interested parties around a language. A community which in the future can help to shape and mould the language.

I feel that good documentation must also give a good first impression to someone wishing to start out with the new language and describe in detail how to get started and what issues they may come across in those early stages.

In the hope that language specifications can be improved in the future by this list, I would like to know:

What are the best examples of technical documentation that you have ever seen?

...and, in your opinion, what is it that makes that documentation so good?

+1  A: 

For languages, Python's documentation is very easy to use, comprehensive and easy on the eye. Likewise, for frameworks, Django's documentation is very good.

In the Java environment, I've found Spring's documentation to be very good.

In all cases, I think it's because it is written by people with good communication skills and not machine-generated.

Vinay Sajip
+3  A: 

K&R. The opposite: Stroustrup's book(s). K&R is well written, great examples, readable font. Stroustrup's book is dense, humorless, dull, and not the least bit inspiring (IMHO). Anything with "Learn X in 21 days" can be assumed to be garbage. Richard Stevens is a great author. Jon Bentley is too.

xcramps
xcramps
+8  A: 

The perl documentation is hands-down the language winner, IMHO.

It is exhaustive, well-organized, rigorously cross-referential and practical, showing contextualized problem after problem and solution after solution, from "entry-level" solutions to advanced approaches. It's also got a touch of humor, and gives gentle idiomatic advice throughout.

How many SO questions tagged [perl] are rightly and tersely answered, perldoc -f your_question ?

pilcrow
+9  A: 

PHP

PHP has a fantastic reference in the form of its website.

The feature I like best is the 'user contributed notes' under each function.

Take for example the reverse array function. Even though the function is simple, there are 11 user contributed notes which can get you started very quickly.

Jon Winstanley
The commenting system just lacks a rating system and a tagging system...
Arno
A: 

I like java docs.

asb
...and I can not lieYou other brothers can't denyThat when a girl walks in..sorry I couldn't resist
Phill Duffy
only if they're well written. Poorly-written Javadoc may look nice on the screen but can be just as frustrating as any other poorly-written documentation.
Jason S
+2  A: 

MSDN

Good structure, good documentation.

+1 Haha. Great timing, I just wrote that as well.
Chris Kaminski
But the navigation pane down the left hand side is too slow and unusable isn't it?
Jon Winstanley
@Jon: switch to the "Low bandwidth" view - it's a tremendous improvement over the default interface, IMHO.
NickFitz
@Jon: I use the desktop version, as a Windows app it is able to do the tree view properly.
Martin Brown
Sorry, I would have to say poor structure, adequate documentation (that doesn't usually go in to nearly enough detail)
Jimbo
The lack of community suggestions underneath MSDN content always hurts me
Jon Winstanley
-1. Too many hours spent roaming through a maze of twisty little web pages, all exactly alike in that they add very little value.
Jason S
I had to use MSDN relatively frequently when I was developing addons to MS Office. Seaching Google with "+site:msdn.microsoft.com" gave me better results than using Bing or whatever MS has as the current search engine. The structure for Office developer documentation is bewildering and messy as well.
A. Scagnelli
I too like MSDN. Perhaps the organization could be better, but then again with such a mountain of documents I doubt it. And they do reorganize it periodically to make it better. Search features could be better, yes. Google is better for searching it. But the individual articles themselves are the best ones I've seen by far. They also contain all the gotchas, useful remarks where appropriate and the coverage is excellent (every function has a complete documentation).
Vilx-
A: 

The BEST technical documentation I have ever seen resides at msdn.microsoft.com/library. It explicitly spells out platform availability, is grouped mostly logically, and breaks down API to reference [structs, constants, functions], usage and examples all in one. Couple that with a wiki-style ability to flesh out and improve documentation with edge-cases and observed behavior and examples from the real world, and you have an unbeatable combination.

Chris Kaminski
uh... we must be looking at different documentation. MSDN docs always strike me as something that has just been autogenerated from a database that has been filled in with data from inexperienced engineers relegated to documentation hell. It's fragmented: you look at an interface document and to find out the details on one particular method, you have to click on another link and wait the 10 seconds for the page to download before you can decide whether this is what you're looking for. And there's no way to print a section of documentation (several related pages) for future reference.
Jason S
I will agree that the interface has gotten steadily worse since the IE 4.0 days, especially from Firefox. I'll agree to disagree about it's content and usefulnss. :-)
Chris Kaminski
A: 

While not "official" documentation per se, "Delphi 4 Unleashed" by Charlie Calvert from back in the 1990s is one of the best programming language reference books I've ever had the pleasure to read. (Maybe it was "Delphi 3 Unleashed". Or both. It's been a while...)

Alan
A: 

The Qt documentation:

Michaël Larouche
+7  A: 

The Apple dev resources are fantastic.

They have great reference docs, as well as guides to give overviews on subject areas and are written in a clear and consistent style. The topics are often written in a generic style so they apply equally to other platforms and languages. The Apple Human Interface Guidelines is an excellent read for all developers.

However, the docs are not perfect. My main criticisms are:

  • some of the newer and more obscure classes are not as thoroughly documented as the main classes
  • the lack of user contribution (users can provide feedback on the quality of the doc). I guess allowing users to comment on Apples docs isn't the Apple way.

Class references are easy to search for in Google too. The main Cocoa classes all start with NS which is very handy. (Does this count as a legitimate argument against 'proper' namespace systems?)

Benedict Cohen
+2  A: 

Symfony PHP Framework

The PHP framework, Symfony, doesn't have great documentation. Their site could do with some work, especially in terms of their function refernce.

However, they have published 2 extremely detailed projects, available as 24 day walk-through sessions.

Each of these starts off with installation/setup tutorials, then goes on to get deep into some of the more tricky and complex features of the framework.

They have also published several books on the topic which are available to buy OR read online for free. Which is an excellent addition.

Jon Winstanley
Yeah baby !! Creative commons rules !!
Arno
+1  A: 

ESRI ArcObjects and ESRI Scripting help are definitively great. Documents all aspects of the API and provide examples in different languages (C#, VB.NET and even Java).

George
+2  A: 
Jon Winstanley
+2  A: 

What makes for good doc ? A broad question: paper / online, languages / software systems, reference / tutorial, for beginners / for experts ... make for as many different kinds of doc.

A couple of broad criteria:

  • overall structure: where are we (author and reader), where's more / less, how can I search the doc ?
  • a clear picture of the reader: who's this document for, what level ?

On paper language references:

Imho the C++ reference in Stroustrup (second edition) is very well written. (The language is just too big, a 50-page reference in a 700-page book too much for me -- I lack even a 50-page memory -- but that's another story.)

On Python doc:

I use Python daily (for one-man stuff), but find the language soft and squishy at the core, not clear and solid (example: __new__.) The zillions of Python packages have wildly non-uniform doc quality -- not surprising with zillions of anything and no compass.

A stackoverflow-like feedback system for Python packages and package doc separately would be most useful, would speed up evolution of packages / of doc. (Why hasn't it happened -- entropy ?)

A cookie on doc evolution: "the list of deleted features in this standard is empty" -- Fortran 90.

Pessimism:

Good doc takes time, effort, and a longer timescale than most managers will give you. This may be a universal, print is dying -- look at the doc that comes from legislators and politicians.

On adding tree views, maybe a question to ask separately:

say I have a long long html doc with no tree view (naming no names) but can hack from it a list of (level 1 2 3, key phrase, href) s. How can I generate a tree view from this, to navigate through the doc? Is there an API, examples ? (Whether it runs in a browser with the big html, or separately, is secondary.)

Denis
+1  A: 

Oh, PostgreSQL docs are really nice too. After you get to know the way things are organized its a piece of cake.

George