Season of Docs
developers.google.com
developers.google.com
But is there a similar community of technical writers? I've only known a few but if I asked if their idea of a good time on a Saturday was banging out some technical documentation they would look at me like I'm crazy.
I pointed someone in this direction on an hn thread a few years ago.
My educational background is in writing, but occupationally I'm primarily a programmer. I do some work on doc contributions, too. It's a nice way to give something, however small, back to a project I use but am not prepared to contribute code to.
I think it can also build naturally to more substantive contributions. People who did not write a system but have to understand it well enough to document it are well situated to ask questions that expose design flaws, write blog posts/tutorials that help you onboard new users, triage issues, help out on any forum/list/chat, and more.
Not the kind of mundane technical writing where one is merely documenting APIs, but where one is explaining stuff in a tutorial-like fashion or writing about cool new features.
Most people who write computer books must surely enjoy technical writing to some extent. (Would love to hear what motivates O’Reilly authors, if there are any here)
For me there’s something satisfying about writing something in Sphinx and seeing the beautiful final product on readthedocs.org.
I’m also the sort of person who feels a sense of satisfaction seeing my writing end up in the form of aesthetically pleasing LaTeX output. Aesthetics is unrelated to the writing process, but oddly it does seem to provide motivation for it in my experience. Also, producing a piece of writing makes me feel like I’ve made a creative contribution to the world, however small.
API documentation is one area that really, REALLY needs the latter kind of writing. There is far too much Doxygen-generated "documentation" which says things like "int foo(int power): Does 'foo' with power set to 'power' and returns the result."
Because I tend to write numerical algorithms, I also embed math via LaTeX tags. Sphinx converts them to MathJax which renders the math quite nicely.
The final output from Sphinx is beautiful (I use the Solar theme [1] for Sphinx). As long as I keep my docstrings up to date, the API documentation generates itself and does so beautifully.
I’m sure something similar exists for other languages but I would agree with you that most Doxygen docs are mechanical and devoid of the human touch (most only contain method signatures and non descriptive comments if they exist at all). They are also aesthetically unpleasant which affects their usability, which in turn dampens devs’ motivation to document their code (“why document if the final output is ugly and no one looks at it?”). I wonder if a better theme would help.
[1] theme preview here https://vimalkvn.github.io/solar-theme/
These demonstrate, I think, that Doxygen isn't irredeemable--but the exception does also highlight that the ecosystem has some tendencies that aren't great :)
I think it's often a symptom of things like: just trying to tick the box (i.e. doc-building rules that only include "documented" members, satisfy a doc linter/coverage tool), and being too close to the code to imagine what will and won't make sense to unfamiliar users.
I think your "trying to tick the box" cause is most likely, especially because that often results in "get the newbie to do it" or even "outsource it to India" where the person writing the docs has no idea what to write and so they just translate the function prototype into English.
You can definitely also get it from being too close to the code (or to the problem domain) - I looked up the help for a form in my new accounting package and the help literally says "fill out the form"! Super helpful when populating columns like "Amount".
I fondly remember a college class where we had to produce a software product, complete with documentation, over the course of the class. Groups were randomly assigned, and one of those on my team was a technical documentation major who immediately volunteered to handle all documentation tasks. It was awesome and made appreciate having such folks around at various points in my career.
https://developers.google.com/season-of-docs/docs/program-ru...
That broken link is on the FAQ:
https://developers.google.com/season-of-docs/docs/faq
That broken link might be intended to point to the mentor "terms":
https://developers.google.com/season-of-docs/terms/mentor-te...
Or if you are already a lucid, efficient writer.
But if you aren't, or if quality and usefulness are more important than ticking a box... It's probably time well spent.
I think this idea has legs.
It's not much, particularly as this seems to be out of the holiday season (Sep-Nov) which makes it hard for students. That said, in much of the world $2k a month (ie $24k pro rata) is a reasonable salary for writing documentation. There are worse paying graduate jobs.
How do they know they're correct?
That's the whole point of having project team members (R&D, QA if a distinct organization, product management, and, ideally, Support) participate in the review process.You need someone who can write, follow (or prepare) a style guide for a consistent motif across products, and understand what the customer needs in a document. It's not their job to understand all the minutiae in a product -- that's what the broader team is for.
A great tech writer is a treasure, and that person will treasure diligent reviewers. One I worked with later became a published author of historical novels.
Broadly, good writing (even poetry, fiction, and creative non-fiction) has a deceptive amount of research involved. One of the subtle skills of a good writer is knowing what they don't know, and knowing how to fill the gap.
Whether they're flagging things they don't understand as they go and resolving them in bulk, or regularly checking their understanding with maintainers as they encounter problems, a good technical writer isn't going to just pretend they understand.
I disagree, I've seen some terrible docs on otherwise good software. Furthermore developers usually are not that interested in creating (user) documentation.
In your whole spiel could "technical writer" could be replaced by "customer service", "UX designer", "system administrator" or any number of software-related tasks/jobs. Theoretically they could all be done by software developers, but as some point you'll need to split responsibility if you want to work with more people and writing documentation is as good a split point as any.
Why? Are you suggesting that technical writers don't have enough understanding? Good technical writers have a thorough understanding of the product they're documenting. An ex colleague of me switched from being a software developer to a technical writer. He very much understands things from a software developer perspective.
As a software dev, I'll take docs written by a technical writer over docs written by a software dev:
- Writers can organize the docs better, will avoid wall-of-text rambling.
- Writers can write (they eg know the difference between "pouring" and "poring").
Technical writers can bridge that.
Writing as a process also helps expose gaps in thinking — in this case, in the user facing implementation. This feedback can in turn be useful for devs.
One example of where technical writing can help is PySpark. Because Spark is JVM centric, it can be relatively difficult for Pythonistas to get started with unless one already knew how things were laid out. I had to read multiple tutorials to set things up the right way before “import pyspark” would even work. Not to diminish the tremendous amount of efffort that has gone in the Spark docs, but that is one area where a good technical writer could add a lot of value.
Side note: “findspark”, for the trivially simple package that it is, simplified getting up and running with PySpark. But I had to find out about it through a random tutorial.
I've seen some companies doing that (worse, I've seen them doing it with their programmers' reference guides -- not for libraries, but for hardware devices). The result is nothing short of catastrophic. They are, by far, the worst and least usable docs I've ever read. They are so mind-bogglingly bad that it would probably be better if they didn't publish them at all, and just made it easier to get a hold of sample code for their development boards.
I don't know if dedicated technical writers with no technical experience are the way to go, and I am more partial to paying big bucks to software developers who also know how to write well, but I might be a little biased here :-).
But coming from a "docs aren't hard to write" perspective is a really bad idea. Good documentation is extremely hard to write (anecdotally, if I'm covering a complex topic, it sometimes takes me more time to figure out which terms to introduce and in what order than it takes me to actually write the damn thing). Once you know the language, writing stuff that computers understand is orders of magnitude easier than writing stuff that people understand well -- unlike people, computers work the same way, and many instances of unclear language are also syntax errors, so there's less potential for disastrously misunderstanding things.
(Sauce: many lifetimes ago, I used to work for a computer magazine, the printed kind, so I'm the one who always gets sent to confer with the tech writers, I write "getting started" guides for new colleagues and so on.)