Writing Programs

An article in this month’s rewrite takes a look at the things writers know that have proven useful to programmers. Specifically, programmers who want to have more fun writing more efficient programs that other programmers can more readily understand. ‘Literate programming’, originated by Donald Knuth in the ’80s, championed a style that turned programmers into essayists (Knuth’s term) as much as they are engineers.

Our interest was piqued in case there was an opportunity for literate programmers to return the favor, and pass on news we could use to become “programming writers”.

What Writers Know

Writers, some more than others, are good at sorting and presenting data, arranging argument, illustrating issues and, perhaps most significantly, making information interesting and accessible. They spend time figuring stuff out, so that readers don’t have to spend that time themselves. They try to avoid ambiguity, to ensure readers get what they need, and to convey messages clearly. They follow rules of grammar and style that are known to be effective, and they strive to make all this look as easy as possible to keep focus on the message rather than the medium.

What Programmers Know

Programmers, some more than others, are good at solving complex problems as efficiently as possible. They spend time applying logical principles and tried and tested algorithms to seemingly disorganized and incoherent sets of functional requirements. They use languages, tools, and program development environments to produce program components designed to be read by humans, by machines, and by other programs. They know different languages and styles of programming, and they use their experience to judge those best-suited for the task in hand. And they save time and effort by re-using components that have already been written and tested.

What Each Offers the Other

The two are converging. Programmers know that one of the main costs of software development is supportability. So programmers see the value of languages and tools that help write programs that are readily decipherable, supported, and enhanced by others.

Writers, particularly those involved in large projects written by teams, are learning to produce writing (or “content”) that is readily re-usable, and that can be readily transformed and repurposed for specific audiences and output devices. So these writers’ documents must now contain additional information to enable humans and machines to understand something of their purpose and design.

In short, programmers are programming a little more like writers, and writers are writing – and using computer-based tools and utilities – more like programmers.

A literate programmer writes for humans first, and in the process will often write programs that are more efficient also for the machine. Programming writers are now working in a computerized environment that can transform their content into audience- and device-specific variants, and they write with that content development environment in mind.

Documents today are not only written, edited and published; they are linked, they’re compiled, and they are shareable – all familiar features to programmers. And programs aren’t just highly structured and sparsely commented files full of computer language: literate programmers can write programs that disclose the decision processes and trains of thought that went into their design.

More Information

This topic, and more, is further discussed in the August 2010 issue of rewrite, where we provide short, immediately useful and engaging articles relating to obtaining, organizing, transforming and producing written information. Take a look and see if a subscription might be useful for you; in the meantime, thanks for your interest in the readytext blog.

Tags: , , , ,

Leave a Reply