Without documentation, software is a black box. People can use it, but they cannot easily see how it works, why it behaves the way it does, or what to do when something changes.
Software documentation turns that black box into a glass box. It explains how software works, how to use it, how to maintain it, and how teams keep that knowledge accurate as the product evolves.
You have seen this done well if you have used Slack developer documentation: pages are organized by task, related references are linked, and developers can understand the API without reverse-engineering the product from scratch.
This Process Street guide covers what software documentation is, where to host it, which software documentation tools still deserve attention, and how to make documentation part of the way your team ships work.
“Documentation in software engineering is the umbrella term that encompasses all written documents and materials dealing with a software product’s development and use” – Prototype.io, Software Documentation Types and Best Practices
All pieces of software should have some form of documentation that explains, in detail, what the product is, how it works, and why it works that way.
“If it isn’t documented, it doesn’t exist” – Sitepoint, A Guide to Writing Your First Software Documentation
As a developer, your main aim is to write the best code you possibly can. You want your code to be best in class, easy to read, easy to use, and you want great things to happen as a result of it. Right?
But without documenting what you’ve done and why you’ve done it:
No one else can use your code but you
Without documentation, it’ll be incredibly difficult, nigh-on impossible, for someone else to pick up your code and work on it. They might even scrap it and start again, as, in some cases that would be quicker than trying to work out what you’ve done and why you’ve done it.
You can’t update or improve it
Can you remember what you ate for dinner on Saturday, three months ago? Unless you’re a complete creature of habit, chances are you can’t. So it’s fair to say you probably won’t remember what code you wrote and why you wrote it, two, three, four months after you wrote it. If you can’t remember the reasons behind your coding decisions, then you will struggle to be able to update or improve it.
Despite this, software documentation is a task that gets rushed, is often done badly, and sometimes gets deprioritized or even forgotten about.
Before we start talking about what tools you can use to write software documentation, we need to think of a way to make sure the task gets done in the first place.
This is where Process Street can help.
Process Street is a Compliance Operations Platform that can be used to create, manage, and follow recurring processes with review, approvals, and proof.
More about what Process Street is later, for now, let me show you how you can use it as a tool to help you fit software documentation into every software development project you work on.
Below is an example of a pre-made Development Process template. This template was created to help software engineers and programmers build and deploy their software in the best way possible.
Click here to access the Development Process!
Use this template as a starting point, then adapt the workflow to your team’s documentation and release process.
This template is a perfect example of a process that you can follow every time you want to build and deploy a new or updated piece of code.
It has clear steps that will guide you through the whole process, from creating a branch to work in, to putting your changes live. These steps will make sure nothing gets missed and that the entire process goes smoothly, every single time.
We’ve designed this template to be used as a guide to help you create a development process that works for you. Every company is different, every software project is different, and every development process is different.
You can edit this process and add in the tasks that are relevant to you, your company, and your project.
Which brings me back to software documentation. You could add ‘software documentation’ as a task into this development process, or any other process you create. That way, anyone working through it will be reminded and encouraged to complete it, as part of the process.
I’ve got a few more premade process templates that might be of use to you, which I’ll include at the end of this post.
Before we get to that, let’s look at where you can store your software documentation.
Use Process Street to document any recurring process
For training new developers and keeping your documentation living all in the same place, Process Street is a solid choice for software documentation.
First, you could create a process for writing your documentation, to make sure you capture all the right details and make it as useful as possible.
Then, using the following easy-to-use features, you can write up and store your documentation in one single place:
Creating and storing all your recurring software documentation within Process Street means it can be accessed by everyone in the company. You can share it with others, send it for approval, set reminders to review it, and update it easily.
It’s simple to set-up and even easier to use. Here’s a sneaky look at one of our checklists in action:
If something can be documented, it can be documented in Process Street.
See how Process Street keeps recurring documentation work on track.
Document360
Document360 is a software documentation tool that gives you complete 360 support for your project documentation. You can create rich documentation with ease using features such as the Markdown & WYSIWYG editor for efficient and structured writing. Other notable features include an uncompromised authoring experience, a rich theme, built-in analytics, enterprise-grade backup & restore, versioning capabilities, and so on.
With simple configuration features, you can manage various project documentation, configure numerous users, and examine analytics to help you maintain your knowledge base content fresh and relevant. It offers robust security like IP Restriction, Custom Domain Mapping, Enterprise SSO, Cookie Consent etc.
You can also integrate with a variety of third-party helpdesk, chatbot, and CRO technologies, such as Zendesk, Intercom, Hotjar and Zapier. As a result, it is appropriate development software for all business sizes
Read The Docs
It’s remarkable that Read The Docs is free when you see all that it can do. Similar to GitHub, you can create as much open-source material as you like that gets openly indexed on the site, but it’s going to cost you if you want to make the docs private and internal to your company. For our purposes, it’s likely you’re going to be alright with having the docs readily available for users on the web.
The reason Read The Docs is so good is that you can effortlessly import documentation from any version control system including Git, Mercurial, Subversion, and Bazaar. It also supports webhooks so the docs get built automatically whenever you commit code.
Check their Getting Started guide to get a feel for how it works and how your docs would behave when hosted there.
GitHub (& GitHub Pages)
If you’re using GitHub to manage version control for your software, you have, at the bare minimum, a README.MD file in the repository. To use GitHub for documenting your software, like millions of others have done in the past, just fill that README in with markdown.
A great example is sferik’s t repository, screenshotted here:
If you want more than just one sheet of formatted text, you can take advantage of GitHub’s Pages tool (you get one free webpage + hosting with each GitHub account, and you can even route a custom domain to it). Pages even has great looking default themes that make your documentation look professional.
Above is atom.io documentation for Electron hosted on GitHub. It’s a smart choice because it automatically works with GitHub’s version control, just like the rest of your software. See the site’s repository here.
Dropbox Paper (for internal use)
For internal software documentation use, Dropbox Paper is an excellent choice. Like its predecessor Hackpad, you can use it to create a private wiki for employees. You can link documents together, insert code blocks, images and page jumps, just as you’d demand from any documentation tool.
As you can see from the comments on the right, you can also use it to go through approval processes and collaborate over the creation of documentation. Overall, it’s a great tool for internally developing and creating documentation, perhaps with the view to publicize it later, or just keep it for internal use.
Atlassian REST API Browser (for API use)
Atlassian’s REST API Browser (RAB) is included in JIRA Server, Confluence Server and Stash instances by default. It’s built for discovering APIs available for use in JIRA/Confluence environments, and also a place to host your documentation. If, of course, your API fits the bill.
Document your API using this tool to give your JIRA/Confluence compatible API more exposure. Check here for Atlassian’s documentation on doing that.
Tettra (for internal use)
Tettra is a kind of knowledge base software where you can document your development, or anything at all.
We use Tettra internally at Process Street for a bunch of use cases. Day to day, I use Tettra to have a single place where all my processes are documented so that I never forget how one relates to another or how the various automations we’ve built have been set up.
Tettra is great if you’re looking to create a library of sorts. This means it’s brilliant for software documentation or even just as an internal wiki for your company.
Given that Tettra is specifically designed for knowledge management, it comes with a host of other supporting features too. For example, it can make suggestions as to what extra content or sections you might want to add to give a more complete picture of your org and how things fit together.
You can see a little video here for how a dev team might look to use Tettra: How Product & Engineering Teams Use Tettra.
Or, you can go here to read about how we use Tettra alongside Process Street: Automating Workflows and Checklists: Process Street Case Study.
Check it out!
Apiary (for API use)
As well as being a place where bees live, Apiary is a dedicated host for API documentation. Write in markdown, add mock API calls and Apiary collates that into something like you see below:
Anyone can test the API without having to go into the app or actually program a call, which makes it a super accessible way to share your API, document it in-depth, and boast about what it can do.
We’ve discussed where to store your software documentation, now it’s time to look at how to write it.
With a free and premium version – both with a ton of great features – MarkdownPad is the most popular markdown editor for Windows. It’s optimized for blog posts, websites, articles, READMEs, and, of course, software documentation.
You can get MarkdownPad for free, or get the premium version for $14.95.
iA Writer (Mac)
iA Writer is a simple, beautiful markdown editor with a library feature meaning you can easily reference back other documents in the sidebar. It’s missing internal links between documents like you’d expect there to be in software docs, but you can always do a pass on those when it’s in its final form (that is, if it’s going to end up on the internet in a site).
If you write your whole documentation in one, broken-up page, you can use page jump anchors to help users navigate.
iA Writer costs $9.99 from the Mac App Store.
ProProfs Knowledge Base
ProProfs Knowledge Base is a fantastic little tool for all stages of document creation; from writing and editing, to customizing, setting workflows, and publishing. You can add multimedia, import existing content from word docs, PDF, or PPTs, save multiple versions of the document, and restore them when required.
But the real beauty of this tool lies in its useability. Anyone and everyone can use it to write software documentation. Whether you’ve been documenting software for years or have only recently started, it’s an incredibly simple and easy to use tool.
ProProfs is free to use, or you can upgrade to the premium package which is $112 per month.
SimpleMDE (browser)
While you can technically write markdown in any text editor because it is a way to format plain text, not strictly a ‘tool’, it won’t surprise you that it’s also possible in your browser! SimpleMDE is a both a functional markdown editor built on JavaScript and an open-source project to learn from and adapt for your own use, if necessary.
For current projects, evaluate EasyMDE or another maintained browser Markdown editor instead.
reStructuredText editors
Markdown is one of the two most commonly used languages for writing software documentation, but there’s another we’ve not looked at so far, and that’s reStructuredText. It’s verysimilar to markdown, but worth learning for software documentation purposes.
Docutils, the creator of reStructuredText, has put together a list of reStructuredText editors here, which includes:
The point of reStructuredText is that it’s easy to convert between different formats, especially from plain text to a static website. See more info here.
Tools to automatically generate documentation from source code
There’s nothing like the human touch when it comes to documentation (it’s clear in the docs of Slack and Giphy, to name a couple). However, as a starting point (especially for huge source libraries), it’s best to generate the skeletal documentation automatically. This work by analyzing the source’s functions and comments, and there are a few different options depending on language:
Before I give you these templates, let me explain what Process Street is a bit more.
Process Street helps teams create, manage, and run recurring processes. It brings together Docs for governed SOPs, Ops for execution-by-default workflows, and Cora, an AI compliance agent that monitors activity and flags gaps.
But, there’s more to Process Street than just that. Watch this intro video to find out what I mean:
You can create a process template, run individual workflow runs every time you need to complete the process, and customize it using these features:
You can assign tasks, get approval, enforce an order that the tasks need to be completed in, and connect your workflow to thousands of apps via Zapier, webhooks, or API integration.
So, with all this in mind, take a look at the below, premade templates:
Network Security Audit Checklist
This template can be used by a risk manager or equivalent IT professional to assess a network for security vulnerabilities.
Click here to access the Network Security Audit Checklist! Software Deployment Template
Use this checklist for each piece of software you deploy, so you can ensure a consistently solid approach to updating and fixing the products you work so hard on.
Click here to access the Software Deployment Template!Monthly Website Maintenance Checklist
Use this monthly website maintenance checklist to optimize your site’s loading speed, scan for vulnerabilities, and review your search visibility.
Click here to access the Monthly Website Maintenance Checklist!Software Testing Tutorial
This process can be used to finely comb through individual sections of your code, before submitting them to your software deployment.
Click here to access the Software Testing Tutorial!
Use the tools that make documentation easier, but make the process unavoidable. That is how software documentation stays useful after the first draft.
Get our posts &
product updates earlier by simply subscribing