So there are lot of developers who write open source because they love writing code, feel passionately about open source, and want to increase their employment prospects.
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.
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.
> 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.
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."
I normally write API documentation as reStructuredText directly in Python docstrings which are then auto generated via Sphinx.
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.
Mosra has put a lot of nice work into what is roughly a Doxygen theme (I'm not certain, but AFAIR it technically builds from the XML output and isn't a true drop-in replacement for the default theme), m.css, which you can see in action at https://doc.magnum.graphics/magnum/ and https://mcss.mosra.cz/doxygen/
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 :)
It does. I think you know this given how you phrased the last part, but I do want a mount a tiny defense of Doxygen, here: it's just as easy to write the same low-effort documentation in a simple comment, docstring, RST, markdown, docbook, latex, etc.
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.
Oh, absolutely. Doxygen is a good tool - possibly TOO good, because it allows lazy devs to produce something that looks like documentation with almost zero effort. There are plenty of other ways for them to achieve the same goal, though.
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".
Probably not a ton. But technical writers need resumes, too. Some of them might also be programmers. Or interested in transitioning into a programmer-writer.
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.
If you look around at the github pages of a lot of the successful open-source projects, you'll noticed that there's emerged this pattern of well-written readmes that give you a great overview of the intent of the project and then how to get started using it. Especially for newer projects, the lack of such a page can be a death sentence. And then such developers start to write deep technical blogs that everyone starts sharing and following. And then they start going to conferences and giving in-depth talks. All it is to say, lots of people work on open source, but if you want to become known for your work, you must become good at technical writing.
> 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 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.
I'm sure one of these already exists. I kind of like writing docs or rather tutorials. I often wonder if there is a startup there, docs as a service. Hire us, we'll make your docs site and write all the docs.
I would absolutely pay for this. If i could walk through verbally how everything works on a large system I'm working on with a company, and then magically get some confluence docs, diagrams, autodocs, readmes, guides, this would be incredibly valuable.
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.
I don't think I trust the whole idea of "technical writers". Software is a complex thing. Is was recently pouring through docs of Kubernetes and Spinnaker, and with the minutia of one-off, OS specific warnings and use-cases, strange naming conventions, gotchas, and conceptual jargon, I find it really terrifying that somone who's only a "technical writer" would be writing the published documentation of such things. How do they know they're correct? Have they run the tests?
Docs are hard enough to read as they are, and often, you're reading them over and over again because there's some detail that you've missed for your use case, and these are generally details possibly known only by the issue reporter or someone who actually implemented the thing. Docs aren't hard to write, and if you have to, you should just copy paste them from your comments and/or unit tests (unless you haven't written any of course). Making docs pretty and easy to write by someone else because you're too lazy too is an even bigger sin IMO. That's all I have to say about that.
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.
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.
I think this is the big thing the previous poster is missing. The technical writer isn't going to go out in the wilderness with a copy of the source, assume they understand it after reading it once, write the documentation, and hit publish.
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 find it really terrifying that somone who's only a "technical writer" would be writing the published documentation of such things
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").
Another advantage: Technical writers write from the perspective of users. Devs are sometimes too close to the code (too much scaffolding and presumptions) to understand what the user’s experience and thought processes are like.
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.
> Docs aren't hard to write, and if you have to, you should just copy paste them from your comments and/or unit tests (unless you haven't written any of course).
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.)
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.