Notes on Technical Writing

A few suggestions on what to do and not to do



This one is a little bit different. It is not about DSLs, but about writing. I have been writing a lot over the last couple of years — blog posts, papers, and books — and I was also involved in helping younger engineers to get a grasp of how to write well. And maybe even enjoy it a bit.

This post is a collection of best practices that I try to stick to when writing. They might not be totally obvious for people who do it less. Needless to say, all of them only apply to non-fiction writing, and in particular, text that explains (or argue for) technical topics.

Before we get into the specifics, there are two preconditions you should think of. First, you must have something relevant to say. In other words, you have to define a target audience that is interested, because that is more or less the definition of “relevant”. Once you know your target audience, you should figure out what they already know so you don’t bore them with too much repetition. And you should understand the aspects they are most interested in and the level of detail they will be willing to follow you to.

The second thing you should think about before starting to write is: do I actually know what I’m talking about? Do I have enough understanding of a topic so that I can explain it well to my target audience? Even if your goal is to explain something in a simple/superficial way, you will probably have to understand it much further to be able to judge what is relevant and what is not.

Alright, so let’s dive into the details.

A good Abstract

In many technical writings the abstract almost sounds like an introduction, and/or the introduction repeats the abstract. This is annoying, nobody wants to read the same thing several times (there are exceptions, see below). In particular, the abstract should also briefly mention the solution and/or results of your writing, its purpose is not to build suspense (“you’ll learn about my clever idea if you read 10 more pages”).

The purpose of an abstract is to help the reader decide whether to invest the time to read the rest. You should give them as much relevant info to make this decision as possible.

Similarly, the conclusion or summary part of the paper should not just repeat, yet again, what you’ve already said (“In this paper, we have explained …”). Instead, bring in some vision or future outlook.

Overall Structure

The recommended overall structure of your document obviously depends very much on what it is you want to communicate and it is hard to give definitive guidance. The three-part introduction/main/conclusion structure we’ve all learned in school isn’t wrong, but it is probably a little bit too simple for most technical topics. I find the format used by software patterns very useful; while there are differences in the details, most pattern authors stick to the following outline:

·       Context — where are we coming from, where does the problem occur

·       Problem — what are we trying to solve with whatever we describe in the text

·       Forces — which influences guide the way we are going to solve the problem

·       Solution — how, in general, are we approaching the problem and what is the general structure of the solution

·       Implementation — what are relevant details of the solution, things that have to be kept in mind or addressed specifically

·       Tradeoffs — what are the good and bad aspects of that solution, ideally connecting to those the and potential alternative solutions

·       Resulting Context — where does this leave us, what do we do next

This idea of starting with context, problem and rough solution is really crucial. I can’t think of many writing where this is no the right choice.

Importantly, you should sprinkle interesting and illustrating examples throughout the sections. For most people, examples are what helps them understand.

There is one more thing. Even though a non-fiction document should not have an arc of suspense, you have to tell a story. What I don’t mean by that is what you find in science communication quite often these days, where a text on a particular technical topic is built around the personal story of a scientist. In fact, I hate that. But a document written as a tutorial that takes the reader along as we solve the problem is often much more readable than a “reference documentation” which lists facts and their relationships. One particular step to help with this is to try to write in the “we” style, where “we” refers to you, the author, as well as the reader. You’re going on a “journey” together.

What’s in a paragraph

Alright, let’s get a little bit more concrete. Paragraphs. A paragraph should contain one idea. To force yourself to stay with that one idea, it is very useful to give each paragraph a one/two/three-word title (at least during the writing process, you might delete it for the final release). A paragraph should also be more than a single sentence. An example of how not to do it are the texts found on many US news websites, where a paragraph is often only one or two sentences, and all kinds of unrelated things are mentioned: “The plane, operated by Los Angeles, Calif. based company Flycorp, crashed and burned during landing after taking off in San Francisco”.

Consistent Abstraction Level

Make sure you stay on the same abstraction level within each part of the text — it applies to paragraphs just as much as for sections and subsections. This is the reason, why in the pattern format above the solution is separated from the implementation, you provide the details later after you have sketched the overall landscape. Importantly, when you describe the details, you should continuously point to how they fit into the big picture.

This is useful for two reasons: first, often it is helpful to understand the complete big picture to be able to understand details. And second, people who do not need the details can only read the part that describes the big picture and skip the rest. A particular example are computer science papers that sprinkle the formal mathematical stuff all over the paper instead of first explaining the idea and then having one section where it is formalized.

Make reasoning explicit

This one is hard, but it is central: make sure you make your reasoning transparent. Explain the intermediate steps. Consider this example: “The aircraft had a problem right after take-off, so it had to circle for two hours before landing.” It’s probably not clear to you why the “problem after take-off” causes it to circle for two hours. Let’s rephrase with the reasoning included: “The aircraft had a problem right after take-off. Since it was scheduled to fly to Japan, it had a full load of fuel and therefore was significantly heavier than its maximum allowed landing weight. Landing this heavy would risk damaging the airplane. So they circled for two hours to burn and dump the fuel and become light enough for a safe landing.” Whether and how much of this additional explanation is needed depends on who you explain it to, but even for aviation nerds I would say “… so it had to circle for two hours before landing (max landing weight!)”.

A related topic is to use the right connectors. Some words (because, since, so) suggest causality, whereas others (and, but) suggest a (temporal) correlation. “The guy didn’t wear a helmet while biking {so|and} was hurt when he fell.” Depending on whether you use “so” or “and” in this sentence, you express something quite different. It is astonishing how often I have seen text get this wrong, suggesting causality where there is none or reducing causation to correlation.

Make assumptions explicit

This one is related to the previous. Make assumptions about what you expect the reader knows explicit. “The beam diverges as it travels along the beampipe, which is why it has to be focused actively”. The author assumes that the reader knows that * the beam is made of protons * protons are all negatively charged * they are initially close enough so that they feel each other * so they repulse each other * and make the beam get “wider”. Just as in the reasoning example, tell the reader what you expect them to know and maybe point them to additional reading. You could write this as: “Since the beam consists of tightly packed positively charged protons, they repel each other (see [ref] for details) and the beam diverges as it travels along the beampipe. This is why it has to be focused actively.”

Point out Navigation

Many topics are quite expansive and faceted. Likely, you will touch many aspects of the topic as you write about it. Make sure that you explicitly say when you’re moving to a different aspect. Here’s an analogy: Imagine you’re describing the interior of a house. Your readers probably can’t make much sense of your descriptions if you don’t say when you start describing a different room.

Avoid unnecessary synonyms

Within a particular community there are often many terms for the same idea, maybe subtly different in detail but potentially exchangeable in many circumstances, or just slang terms. Your readers might not be aware of the fact that these different terms are synonyms, which might make a text very confusing to read. A particularly nice example is that some people in the gliding community called their aircraft a “ship”. Imagine you’re reading about aviation and then people start talking about ships. Very confusing. So avoid the needless use of synonyms, especially relating to technical terms in a particular domain. It’s also generally a good idea to define terms and the relations between them. So if you need to use a (almost) synonym, explain what the difference is and why it is important.

Justify Claims

Whenever you make a claim, make sure you justify it. In a science paper, such a justification must be a reference to other published work or a cross-reference to a section of the paper where you provide a justification (see a collection of common proof techniques here). Oh, and don’t use a reference as the subject of a sentence (as in “[12] argues that …”).

In non-scientific writing, the requirements are less strict, but you should at least provide a bunch of examples, a short “because” clause, or a pointer to an assumption you make. Just a naked claim is annoying to the reader.

Stylistic Variation

There are many more stylistic options beyond just chaining sentences together. For one, there are colons, semicolons, and dashes. You can use all of them to vary the way you structure your sentences. But aren’t there other stylistic means as well? Yes. There are rhetorical questions, (potentially made-up) verbatim speech, quotes from famous people, and analogies. “Overusing those might make a text look gimmicky but judicious use makes the text more interesting”, a copyeditor once told me. Enumerations and bullet points are also an option, but they are traditionally overused in an attempt to make things concise. This is annoying because

·       they tend to skip the connectors between the items, which is where much of the interesting story often hides

·       they waste space in papers where the page count is limited

·       they make the layout look ugly

The first of these, plus the “story” thing I mentioned earlier is also why I generally prefer to writing a document over creating a Powerpoint: the latter leads to you bulletpoints that don’t flow and don’t connect.

Shorter Sentences

A lot of apparent complexity, especially in science papers, comes from sentences that are way too long and complicated, so it is almost always better to use multiple shorter sentences cleverly connected instead of one very long one, but don’t overdo it though, because it might read simplistic or childish. Also, you’ll get half of the commas wrong.

Avoid gratuitous color

It really is very important to avoid these annoying filler words like “really”, “very” or “annoying”. While it is sometimes a deliberate stylistic choice to add them, most people sprinkle these words all over the text without thinking much about them. Don’t.


Never publish a text directly after you’ve written it. Leave it alone for a few days, come back to it, and improve it. This is a good time to explicitly look for some of the things I’m suggesting in this text. You should also try to get at least two other people, ideally from your target audience, to read the text and give you feedback on content, logical structure, and style. And if you do not write in your native language (or unless you are very experienced) it’s probably a good idea to have the text proofread by a native speaker. I don’t know how many science papers I had to review over the years where I was turned off just because of really bad language. This is unnecessary. There are also tools such as spellcheckers (which you have to use) and grammar checkers and style optimizers (which you should consider using).


Obviously, this is not a complete guide for good writing. That would be much longer, and I am certainly not the right person to write such a guide. For that, I suggest you read Steven Pinker’s The Sense of Style and/or Williams’ STYLE, The Basics of Clarity and Grace.


I have made a few changes to the initial version of this article after some suggestions by Johannes Link and Tamas Szabo. Thanks guys :-)