Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm writing an architecture/technical documentation for an inhouse project and I'm becoming more and more frustrated with Microsoft Word as I seem to use most of my time getting things to align correctly. Word has horrible usability issues but I didn't come here to rant, rather I'd like to know whether there exists something more suitable for the job.

The point of this documentation is to provide a "big picture" of the system, and as such I'm not generating documentation from source code but rather writing it all by hand.

Are there any alternatives to Microsoft Word for writing properly formatted technical documentation with less frustration?

share|improve this question
1  
Have you tried looking for a Word template? I found one for creating an instruction manual book. Microsoft Online Office|Books|Other Books | Manual Template – JeffO May 27 '11 at 13:46
7  
"most of my time getting things to align correctly" ... sounds like you need to invest some time in learning Word a little better. (no judgement, most people do) – John MacIntyre May 27 '11 at 17:20
1  
I dunno, you're a web developer, if you use Word's Styles and Formatting just like you would semantic HTML and CSS, I don't see how you can have much trouble getting things to line up properly. Unless you're talking about its drawing tools, shudder! – Lee Kowalkowski May 27 '11 at 20:51
2  
If drawing diagrams, get and learn how to use Visio. For word - learn about styles, and use them. A day of pain = a lifetime of gain. – quickly_now May 31 '11 at 9:55
show 6 more comments

17 Answers

up vote 29 down vote accepted

It depends if you want looks or control. I prefer python sphinx: http://sphinx.pocoo.org - you write docs in rst ( http://docutils.sourceforge.net/rst.html ) and then compile them into format you want - html, pdf or other.

So you will have to write docs from hand, and you get nice looks and usability just while writing/codding in rst format.

Sphinx written docs sample: http://docs.python.org/

More at http://en.wikipedia.org/wiki/Sphinx_(documentation_generator)

share|improve this answer
10  
+1: Sphinx and RST totally, totally rock. Nothing is better than putting the documentation under ordinary source code control and editing it with ordinary IDE text editors. – S.Lott May 27 '11 at 11:54
5  
It is hard to overstate the value of having your docs in RST and under version control. – Peter Rowell May 27 '11 at 15:49
2  
Wow, this is kind of sad. This is exactly what we used to do with FORTRAN programs back in the 1980s (using DEC RUNOFF instead of rst). Le plus ca change... – TMN May 27 '11 at 16:37
6  
@TMN: Not sad. It just shows that you were geniuses and it took people a long time to realize it. Simple technology is the best. Sometimes folks flirt with bad ideas and get back to simple. Not sad. – S.Lott May 27 '11 at 17:15
show 2 more comments

If you don't use much diagrams, learn LaTeX. It will take a while to get to know it good enough to use it, but you never have to care about indentation again because it's written with the WYMIWYG (What You Mean Is What You Get) principle. It also has perfect possibilities to include pieces of source code, or auto-referencing to existing source code.

And packages for software documentation solutions have others already crafted for you.

Otherwise, doxygen is a good option - but as the name says, it is more used for generation of documentation (more like JavaDoc) - and I don't think you're looking for that.

share|improve this answer
6  
LaTeX is good if you write numerical software and need to insert many equations. I wouldn't recommend it for general use because of the difficulty of inserting graphics and tables. – quant_dev May 27 '11 at 11:38
4  
That depends. When you're used to software like GraphViz it is actually quite easy to insert graphs (and always vector-based, thus good-looking). Tables have never been a problem IMHO. Other graphics are less trivial, and if you're using lots of pictures LaTeX isn't the way to go indeed :-). – vstrien May 27 '11 at 11:51
6  
Using lyx on top of LaTeX can help with some of the tasks like graphics. – Karl Bielefeldt May 27 '11 at 13:23
4  
Because it's just plain text, LaTeX also plays nice with version control. Also, you can use various libraries like TikZ to draw really smart-looking diagrams right in the same document. No longer do you have to seek out the program that was used to export an image of a diagram, discover that the original file is lost and end up re-creating the original diagram before you can recreate it - the source codes is all there. Right beside the text describing it. Finally, there are libraries for everything in LaTeX - even some of its libraries have libraries. – Scott May 27 '11 at 14:37
2  
And, topping it all, THERE IS A TEX STACKEXCHANGE SITE!!! ;-) – vstrien May 27 '11 at 14:41
show 1 more comment

I put it in the company's wiki.

If you're wondering which wiki software is best for you, there's already question about that: Good Wiki Software for IT Company

share|improve this answer
3  
Wiki is excellent for static documentation which never changes, but for 'big picture' design documentation which is actually associated with the version of the application at the time, having your design docs in your code repository is much more powerful. – Mark Booth May 27 '11 at 16:20
show 13 more comments

I understand your frustration. I can't begin to count the number of times I found myself frustrated with software attempting to be 'too smart' and end up wrecking my document. Word is one of the top instigators, I admit, but I haven't found an better suited replacement for writing my documents in.

To answer your first question: What program do you use to write technical documentation?.

  1. Microsoft Word - I keep using this although sometimes it makes me scream. I'm afraid I have used it often enough to know the issues and have found a way to work around them. I use it mainly for technical documentation not containing too much other then explanation and additional images. I can also paste flowcharts from Visio - which is an awesome plus.
  2. Microsoft Visio - I found this to be the absolute best when it comes to creating visual representations like required for UML. It, like Word, sometimes thinks too much, but other software usually thinks too little. Visio lets me work quicker and more efficient - even with some issues that it has.

For your second question, alternatives.

Alternatives for Microsoft Word I have used/tried:

  1. Google Docs - This is alot more basic, avoiding most of the annoying markup issues word has. It just works. The main problem I have with Google Docs, is that it is Google Docs.
  2. Open Office - It is free, but not as smooth as Word, and comes with some of the same annoying problems. I wouldn't suggest this - but perhaps you could try.

Alternatives for Microsoft Visio I have used/tried:

  1. StarUML (here) - Some people inside my company prefer this over Visio. I think it is too basic - causing me to click/drag alot, which makes me inefficient.
  2. Numerous others - Somehow they all lacked having all type of documents I'd like to create.

I have added some additional explanations, since my unedited post was short and brief.

share|improve this answer
3  
I've started using Google Docs with my team, as we are slightly geographically dispersed and you can work collaboratively on the same document/spreadsheet/diagram in real-time. Invaluable. – Orbling May 27 '11 at 11:30
1  
"Word has horrible usability issues". while not an actual fact, the answer doesn't address this consideration, does it? – S.Lott May 27 '11 at 12:31
3  
The original poster has two questions, one being "What do you use?", see the title. And the question "Are there any alternatives?". I don't see your point, please help me out. What should I have written? – Wesley van Opdorp May 27 '11 at 12:33
1  
The original poster has a dumb, unfounded complaint. "Word has horrible usability issues". The words are still there. It hasn't been edited. This answer says "Word" -- in direct opposition to the poster's opinion. But this answer fails to provide any evidence or argument or support or rationale. It simply refutes the complaint without providing any data or information. "Yes it is". "No it isn't". It doesn't seem helpful to refute an opinion without providing some evidence. – S.Lott May 27 '11 at 12:51
2  
My answer doesn't suggest word as an alternative, but it mentions what I use myself. I clearly state that I suggest Google Docs or Open Office as possible alternatives. It is possible though I have written this unclear, and I apologize - English isn't my primary language. – Wesley van Opdorp May 27 '11 at 12:58
show 5 more comments

What I use

I've recently re-discovered Graphviz which is excellent for knocking up quick automatically formatted directed and undirected graphs.

After years of trying to coerce Visio to do simple diagramming quickly, it's really refreshing to know that a few lines of text can give you all you need for the simplest of diagrams, and even quite complex graphs can be built up quite quickly.

For a quick look at the sort of things you can do with the dot language, check out the Gallery.

Other benefits

Also, like rst (mentioned by JackLeo) the graph data is stored as simple text files, so it is easy to edit in ordinary text editors and easy to keep in your source code repository along with your code.

In my experience, the closer technical documentation is to the code, the more likely it is to be kept up to date, and if your documentation builds along with your application, it's even less hassle to maintain up to date versions.

share|improve this answer
show 2 more comments

I personally love storing technical documentation on a wiki. They allow collaborative work, backups, search features and many offerings can export to Office formats.

Invest the time and server space to set up a Wiki. If you have the money, Confluence is a great investment. http://www.atlassian.com/software/confluence/

share|improve this answer
show 3 more comments

Docbook is a good format for technical writing.

The format is based on XML, and can be used to generate html, pdf or online help. Its text-based nature allows it to be tracked in a version control system.

To edit a Docbook document, you can use a text editor, an XML editor, or a dedicated application. I personnaly use XmlMind.

Dita is another format you can use, similar to Docbook. There is also a Simplified Docbook, fully compatible with the original format.

In short, these formats defines high-level structures, such as chapters, paragraphs, notes, legends, listings, links, emphasis, etc... So, when you edit the document, you only focus on the content.

If you need to precisely paginate the document, or if you absolutely want to apply specific formats (font color, font size, alignment), then these formats are not suited to your needs.

share|improve this answer
1  
I used docbook for a couple of days and just hated it. XML is not a human-friendly format, and specialized XML editors are weak compared to customizable editors like Emacs and VIM. – kevin cline May 27 '11 at 14:32
show 2 more comments

I wrote a blog article last year on this very subject, describing how I set up my new toolchain to create HTML and PDF output from simple, easy to edit, VCS-friendly text files. I use Asciidoc, Docbook, Saxon and FOP. Works well for me, and is much nicer than LaTeX or editing Docbook directly IMO.

You can find the full write-up here: http://www.stevestreeting.com/2010/03/07/building-a-new-technical-documentation-tool-chain/

share|improve this answer

LyX is pretty nice. It was mentioned in a comment on the LaTeX answer, but I think it deserves its own answer.

It's basically a GUI around LaTeX based on the principle of WYSIWYM. While the final result might look a bit different than what you see on screen it's close enough to get an idea of what it'll look like.

As a GUI it also makes sure you don't have to remember all of the LaTeX command names, which is nice :).

share|improve this answer

Another option (especially if you're in the Ruby world) might be JDoc, which is a very simple documentation framework that lets you use widely-supported markup and put it under source control. It lets you edit the documentation in your text editor of choice (my personal favorite way of doing things), and it supports:

  • Markdown or Textile
  • syntax highlighting
  • easy internal links
  • a hierarchical documentation structure (useful for large projects)
  • customizable styling and structure (but it looks nice out of the box, too)

It generates static HTML, so the resulting documentation is easy to host and doesn't have much of an impact on your server load.

For an example of it in action, check out wpmvc.org.

share|improve this answer

You are right about MS-Word. It was designed to let relatively unskilled people produce professional-quality documents for paper publication. Your skills and goals are different.

Your documentation will almost always be read on a screen, and not on paper. So there's no need to worry about formatting for paper. To speed the writing process, you want a tool with simple inline formatting. I work in a small shop, and the second thing I did was set up Trac. Wiki markup is easy to learn, unobtrusive when composing, and more than adequate for internal documentation. If your documentation is mathematical, you can install a plugin so you can format math via TeX.

share|improve this answer

Personally I use Adobe InDesign.

It is not the ideal choice for composing text, that would be Microsoft Word or Corel WordPerfect (for grammar, spelling, etc.). However the control over layout and positioning of all types of elements (vector, raster, text) is unmatched.

I come from a printing and design background so InDesign was something I knew very well before switching to software engineering.

share|improve this answer

I've never seen anything that could beat FrameMaker at technical docs, but it was pretty pricey and required a high-end workstation (back when that meant a Sun-4 or Apollo). The version I used ten years ago was far superior to today's MS Word for tech docs. The way it handled multiple figures, graphs, footnotes and page references was like magic.

share|improve this answer

I recently began using Scrivener for all my large writing projects. It was developed as Mac Software for Novelists but they have recently released a version for Windows. It is designed in a way that it is easy to keep everything organized and when it is ready to be published it compiles everything into a document in a format of your choosing. The best part is that it only costs around $50 or so. I am hoping to use it to design my next big software project.

http://www.literatureandlatte.com/scrivener.php

share|improve this answer

In spite of its cost, I think Confluence is a great tool too for writing technical documentation allowing you to handle versioning of your product very nicely amongst other benefits.

share|improve this answer

I use Docmenta. It's free of charge and provides a web-application frontend for the docbook stylesheets.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.