🎉 hey, I shipped skillcraft.ai It's like Reddit, but for tech courses

As a developer myself, I know how important it is to keep learning, which is why I created this community.

Up to date
Published
5 min read

Trevor I. Lasn

Building skillcraft.ai and blamesteve.lol

Minimum Viable Documentation

How to create essential documentation that actually gets read and used.

Let’s face it, most devs hate writing docs. We’d rather be coding. But everyone knows good docs are a game-changer. They help teams work smarter and share know-how like pros. So what’s the catch? Many teams end up with sprawling wikis and overflowing Google Docs that nobody actually reads.

I’ve seen way too many docs that make my eyes glaze over. You know the type - endless walls of text that seem more like a PhD thesis than practical guidance. It’s time we rethink how we approach documentation.

Enter Minimum Viable Documentation (MVD). Think of it as the Marie Kondo approach to tech writing - we’re keeping only what sparks joy (or in this case, what sparks understanding). It’s about distilling your docs down to their essence. No fluff, no filler, just the good stuff that keeps your team running smoothly.

MVD is an approach to documentation that prioritizes essential information over exhaustive detail. It aims to create concise, focused documentation that’s easy to maintain and actually gets used by the team.

MVD flips the script. It focuses on quality over quantity, ensuring your docs are lean, mean, and actually useful. Here’s why this matters:

  • Time is precious: In a fast-paced dev environment, nobody has time to wade through pages of text to find what they need.
  • Knowledge evolves quickly: Detailed docs often become outdated faster than we can update them.
  • Context is king: Understanding why something was built a certain way is often more valuable than knowing every implementation detail.
  • Improved collaboration: Clear, concise docs make it easier for team members to get on the same page quickly, reducing misunderstandings and speeding up development.
  • Faster onboarding: New team members can quickly grasp the essentials of your projects without getting lost in unnecessary details.

The Core Principles of MVD

  1. Capture the ‘why’, not just the ‘how’: Don’t just list steps. Explain the reasoning behind critical decisions. This context is gold for future you (and your teammates).
  2. Focus on fundamentals: Document core architecture, key protocols, and critical workflows. Skip the nitty-gritty details that change often.
  3. Keep it current: Less documentation means it’s easier to keep updated. Regularly review and prune outdated info.
  4. Make it actionable: Every piece of documentation should help someone do their job better. If it doesn’t serve a clear purpose, cut it.
# User Authentication Endpoint
# Purpose
Securely authenticate users and issue JWT tokens.
## Key Decisions
- Using JWT for stateless authentication
- 15-minute token expiration for security
## Usage
POST /api/auth
{ "username": "string", "password": "string" }
## Response
{ "token": "JWT_STRING" }
## Notes
- Implement rate limiting to prevent brute force attacks
- See security_best_practices.md for password hashing guidelines

Transitioning to MVD

Shifting to MVD can be challenging, especially if your team is used to extensive documentation. Here are some tips:

  1. Start small: Begin with one project or component.
  2. Involve the team: Get buy-in by explaining the benefits and addressing concerns.
  3. Iterate: Regularly review and refine your MVD approach based on team feedback.
  4. Lead by example: Start by applying MVD principles to your own work.

Putting MVD into Practice: A Developer’s Guide

Let’s say you’ve just implemented a new feature: a password strength checker for user signups. Here’s how you might document it using MVD:

# Password Strength Checker
## Purpose
Ensure user passwords meet security standards without overly frustrating users.
## Key Decisions
- Using zxcvbn library for strength estimation
- Requiring a minimum score of 3 out of 4
- Providing real-time feedback as user types

Implementation

import zxcvbn from 'zxcvbn';
function checkPasswordStrength(password) {
const result = zxcvbn(password);
return {
score: result.score,
feedback: result.feedback.suggestions[0] || ''
};
}

Usage

const { score, feedback } = checkPasswordStrength(userPassword);
if (score < 3) {
showError(`Password too weak. ${feedback}`);
} else {
allowSignup();
}

Why This Approach

  • zxcvbn provides nuanced strength assessment beyond simple rules
  • Score of 3+ balances security with user experience
  • Real-time feedback educates users on creating strong passwords

Notes

  • Update strength requirements in security_policy.md if changed
  • Consider adding password breach checking in future (see ticket SEC-123)

MVD isn’t just about writing less - it’s about communicating more effectively. By focusing on the essentials, you’re not just saving time; you’re creating a shared understanding that can supercharge your team’s productivity.

Start small. Next time you wrap up a feature, take 10 minutes to document it using these principles. You might be surprised at how quickly it becomes second nature.

Your docs don’t need to be flawless - they just need to be useful. Over time, as you and your team embrace MVD, you’ll build a knowledge base that’s actually helpful, not just a digital dust collector.


Found this article helpful? You might enjoy my free newsletter. I share dev tips and insights to help you grow your coding skills and advance your tech career.


Check out these related articles that might be useful for you. They cover similar topics and provide additional insights.

Reflections
5 min read

Attracting Top Engineering Talent to Your Startup

Advice on competing for great software engineers without name recognition

Sep 21, 2024
Read article
Reflections
3 min read

Barnacle Strategy for Startups

As a founder, you're always on the lookout for smart ways to grow your startup without burning through your limited resources. That's where the barnacle strategy comes in.

Oct 3, 2024
Read article
Reflections
3 min read

Internal Mobility

Just like a utility player on a sports team discovering their ideal position, internal mobility allows you to explore different areas of engineering and find your true passion.

Sep 23, 2024
Read article
Reflections
5 min read

You Can Choose to Be Someone Who's Competent in Many Things, or Unbelievably Good at One Thing

Should you diversify your skills or specialize?

Sep 26, 2024
Read article
Reflections
5 min read

Conway's Law: The Hidden Force Shaping Your Software Architecture

If you've ever wondered why your carefully planned software architecture ends up looking suspiciously like your org chart, you're not alone. Welcome to the world of Conway's Law.

Sep 24, 2024
Read article
Reflections
4 min read

Build Your Army

If you want to do great things, you'll need people with skills that complement yours. You can't do everything yourself. You need a team. You need an army. You need to build your army.

Oct 4, 2024
Read article
Reflections
7 min read

Can Scrum Be Salvaged?

Scrum is failing engineering teams and what it's actually costing us

Nov 14, 2024
Read article
Reflections
8 min read

What Makes a Great Engineering Manager?

People don't quit jobs, they quit bad managers. Here's what great engineering leadership actually looks like

Dec 8, 2024
Read article
Reflections
3 min read

Code Wins Arguments

How Meta and other companies use the 'code wins arguments' mindset to turn ideas into reality

Sep 19, 2024
Read article

This article was originally published on https://www.trevorlasn.com/blog/minimum-viable-documentation. It was written by a human and polished using grammar tools for clarity.