Instadoc

2015-06-07

If you program in multiple languages, you probably don’t know every language’s core functions and standard library by heart. Being able to look up documentation and source code quickly is vital for staying in the flow. Here’s a test: can you look up your language’s documentation in less than 10 seconds?

In Clojure I’ve always found clojure.repl to be extremely useful in looking up documentation, source code and to search for functions using apropos.

Of course, you can always use online resources to look up documentation. While useful, they require you to be online, are sometimes confusing, and it can sometimes take a while to find things; it’s not uncommon that looking something up online breaks my flow.

Hypothesis

Ten seconds is a somewhat arbitrary limit, but I chose it for a specific reason: it’s widely seen as the limit for keeping a user’s attention. While that research was done for more passive tasks, I thought it was a good starting point. For example, if I have to type something really complicated to get the source code of a function, I’m much less likely to do it. Here’s my hypothesis:

In most languages you can look up documentation and source code in less than ten seconds, using built-in, offline tools.

Additionally, I was interested in looking up examples and finding code, i.e. search a.k.a. apropos.

When I say ten seconds, the important thing isn’t the absolute time, but rather that it takes a very short period of time. For example, writing man strncpy in a terminal, or evaluating (apropos "byte") in a Clojure REPL gives you results almost instantly (it still takes some effort to type though, and there are tools in Clojureland that gives you documentation of a function as you mouse-over it, which takes less than 0.1 seconds and is thus perceived as happening instantaneously).

Results

I took a look at a few languages I have used. There are probably errors in the following table, and I would love to be corrected. I found no dedicated tools for code examples, instead they are often put at the end of the documentation string, if there are any at all.

Here are the preliminary results:

Language Shell REPL Source Search
Python pydoc help inspect pydoc
Clojure No clojure.repl clojure.repl clojure.repl
Scala No No No No
Go godoc N/A No No
C man N/A No No
Perl perldoc N/A perldoc perldoc

I put up a live spreadsheet that you can see and edit here.

Conclusion

It’s probably too early to draw any real conclusions from the limited data, but I was surprised to find out how hard it seems to be to find source code in Scala, Go and C, and that Scala’s offline documentation is so bad.

Regardless, I hope this very incomplete list is useful for someone, and hopefully it can serve as a starting list for a more complete collection of getting documentation more quickly. I will update this post as I get more data.