Live data from Hacker News

Ask HN: How To: Internal Documentation?

news.ycombinator.com

1–10 of 53 posts

Ask HN: How To: Internal Documentation?

#1
Have you worked at a company where it was easy to get up and running as a new hire? Where it was easy to find instructions on setting up your development environment, how to do database migrations, seed data, or how to get access to AWS?

In my experience, this process is always subpar. There is no clear place to find documentation; even if it's there, it's often outdated.

I've been thinking about this for a while, and I feel like writing, reading, and maintaining documentation could get much smoother and, frankly, more fun!

Do you have any ideas on how to improve it all?

Re: Ask HN: How To: Internal Documentation?

#3
Two places were notable, one because it was a practical sweatshop and required it... the other because of magical culture I haven't seen since.

The first place was doing support in web hosting. All the layers worked well to create feedback loops. Think phone techs, stats, and engineers all working to drop queues. Very high turn over but they had the absolute best training staff I've ever seen.

The second place wasn't in web hosting, but was similar in rigor. The culture was generally more relaxed. They relied less on trainers but still had very good ones. Their docs were more well-maintained. The work was reasonably well-distributed until they were acquired...

Most places don't have trainers (quality or not), feedback loops or docs. Opting to learn while chasing the dragon, ignoring the hoard.

Re: Ask HN: How To: Internal Documentation?

#4
Small company, but putting READMEs in the root of each repository for specific documentation on that service and build/deploy process.

More READMEs live in a monorepo for things that aren't specific to one service (e.g. secret sharing, key rotation steps)

Re: Ask HN: How To: Internal Documentation?

#5
I strongly believe that proactively keep documentation up to date is not worth the effort. Here is what I recommend in my teams:

- There’s an onboarding guide that is usually only updated when new people onboard. If something is not right they raise it and their onboarding partner fixes it.

- When someone shares a technical document/RFC we add it to a central repository with a creation date on it. These are point in time and usually not updated but still useful for new hires.

- We sometimes do onboarding sessions to walk through the architecture, these are recorded and added to the central information repository.

Note that in the things I wrote above there’s a mix of up to date content and slightly outdated content, ultimately the code is the source of truth. It’s not worth spending time writing docs that no one is gonna read.

Re: Ask HN: How To: Internal Documentation?

#6
Docs should be as close to source code as possible, ideally in the same repo so they can be updated and reviewed in the same PR as the source changes themselves. Markdown works fine.

For docs that don’t relate to source, just have a repo for general docs. Not only is Confluence absolute crap, tech docs in it rot because it’s a separate system developers don’t want to use. Similar story for MediaWiki.

Re: Ask HN: How To: Internal Documentation?

#7
I've documented how to onboard to my team and start doing dev work, and have received positive feedback from new team members as well as people who have been around a while and are starting to work in my area, saying that it was easy to follow and they went from 0 to coding in under 15 minutes.

So it can be done. The how is less about tools and process and more about simply making it a focus. I consider documentation of how to work with the codebase to be as much a core feature of the product as anything customer-facing. It is maintained, tested, and updated as deliberately as any other feature, and we log bugs on it and call out missing updates in PRs.

I use the README in our primary repo to be the starting point, and link to other places as needed. I include all the pre-reqs and instructions to get running, without assuming anything is already on their system or they know anything about our organization. Or even what OS they are running. And I include a goal-based list of FAQs - How to add a model, create a new API endpoint, change front-end routing, create new front-end components, tie everything together into a new feature, etc. How we branch, how we interact with PRs, team standards and norms, etc.

Exactly what your docs say will vary based on what type of work you are doing, but the key is to make documentation a primary feature of the product, and treat it as such when testing and reviewing code.

Re: Ask HN: How To: Internal Documentation?

#8
At the beginning of my career I always thought it would be amazing to have complete documentation and extensive onboarding guides. Over the years I've realized that every attempt at documentation failed and always gets out of sync too quickly. Especially as you'd have to update documentation you don't even know existed if you change some behavior that is also used / documented in other places by another team.

People sometimes don't agree and say "Chat isn't documentation", but being good at Slack search and sharing information on Slack with the right keywords (function names, column names etc.) is a super power. It always allows me to track down why a decision has been made or find the right people with context on a particular topic faster and more efficient than any documentation would ever do.

Metrics, GitHub search, Slack search, Source code comments are way more valuable than any documentation that will almost all the time be outdated in some parts. I believe that people who can work with that and know how to get information themselves vs. needing everything to be neatly summarized or collected for them in onboarding guides are the ones you want in your team.

Re: Ask HN: How To: Internal Documentation?

#10
post #5

I strongly believe that proactively keep documentation up to date is not worth the effort. Here is what I recommend in my teams: - There’s an onboarding guide that is usually only updated when new people onboard. If something is not right they raise it and their onboarding partner fixes it. - When someone shares a technical document/RFC we add it to a central repository with a creation date on it. These are point in…

Funny, I just posted the exact opposite. And find that everyone reads my docs, and comes back to them frequently as they work in different areas of the codebase. Of course, we are a remote team who swaps people in and out often, so onboarding is not a one-time event where you have partners to hold your hand. If you really only onboard once and don't have a fast-growing team, I could see where the needs would not match up and we'd both be correct for our own situations.
Post reply on HN