Share acquired knowledge within development teams

Completed

Development teams accumulate valuable knowledge through daily work—solving problems, making architecture decisions, discovering tool capabilities, and learning from incidents. This organizational knowledge represents significant investment and competitive advantage. Without intentional effort to capture and share it, this knowledge disappears when team members change roles, leave the organization, or simply forget details over time.

The cost of lost knowledge

Repeated mistakes: Teams encounter the same bugs, make identical architecture errors, and repeat failed approaches when previous lessons aren't documented.

Slower problem resolution: Without documented troubleshooting guides and known issues, teams spend hours rediscovering solutions to previously-solved problems.

Inconsistent practices: Each developer creates their own approach to testing, code style, deployment, and tool usage without shared standards.

Extended onboarding: New team members take months to become productive when critical knowledge exists only in conversations and individual experience.

Expensive context switching: When the one person who understands a system is unavailable, work stops until they return to explain.

Example: A team spends three days debugging a production issue caused by a specific database configuration. Six months later, with staff turnover, the team spends two days debugging the same issue—the solution was never documented.

What knowledge to document

Not everything requires documentation—focus on knowledge that provides lasting value and addresses recurring needs.

Critical documentation categories:

Architecture decisions:

  • Why document: Future developers need to understand rationale behind technology choices, design patterns, and system structure
  • Examples: Why microservices vs. monolith, database selection criteria, authentication approach, API design principles
  • Format: Architecture Decision Records (ADRs) capturing context, decision, consequences

Coding standards and conventions:

  • Why document: Consistent code is easier to read, review, and maintain across team members
  • Examples: Naming conventions, file organization, error handling patterns, testing requirements, code review checklist
  • Format: Style guides with code examples, linting rules, PR templates

Setup and configuration:

  • Why document: Developers and operations staff need to establish consistent environments
  • Examples: Development environment setup, local testing procedures, deployment configuration, tool installation guides
  • Format: Step-by-step guides with commands, screenshots, troubleshooting sections

Common problems and solutions:

  • Why document: Teams repeatedly encounter similar issues—documented solutions save time
  • Examples: Known bugs and workarounds, performance optimization techniques, integration gotchas, deployment issues
  • Format: Troubleshooting guides, FAQ pages, runbooks

Process and workflows:

  • Why document: Clear processes help teams work consistently and efficiently
  • Examples: How to submit code for review, deployment approval process, incident response procedures, release checklist
  • Format: Flowcharts, checklists, process documentation

System knowledge:

  • Why document: Understanding system behavior helps developers modify and troubleshoot effectively
  • Examples: How authentication works, data flow through system, integration points, dependency maps
  • Format: Diagrams, sequence flows, component overviews

Documentation strategies that work

Start with "just enough" documentation:

  • Document when you feel pain from missing information—don't create comprehensive documentation upfront
  • Begin with simple README files and grow documentation as questions arise
  • Focus on the 20% of documentation that answers 80% of questions

Make documentation discoverable:

  • Use consistent locations—team knows where to find information
  • Create clear navigation and search capabilities
  • Link from code comments to detailed documentation
  • Include documentation in onboarding checklists

Assign ownership:

  • Designate documentation owners for each area
  • Include documentation updates in definition of done
  • Review documentation currency during sprint retrospectives
  • Make documentation part of code review checklist

Keep documentation close to code:

  • Store docs in same repository as code when possible
  • Use README files for component-specific documentation
  • Reference wiki from code comments for detailed explanations
  • Publish code as wiki when appropriate

Use templates:

  • Create templates for common document types (ADRs, troubleshooting guides, setup instructions)
  • Templates ensure consistency and reduce friction in documentation creation
  • Include prompts for essential information

Automate where possible:

  • Generate API documentation from code comments
  • Auto-generate dependency graphs and architecture diagrams
  • Extract configuration documentation from code
  • Use tools that update documentation as code changes

Tools for knowledge sharing

Azure DevOps provides multiple integrated tools for knowledge sharing that work together seamlessly.

Azure DevOps Wikis:

  • Purpose: Structured documentation with pages, sub-pages, navigation
  • Best for: Project overviews, architecture docs, process guides, onboarding materials
  • Features: Markdown editing, Mermaid diagrams, attachments, permissions

GitHub Wikis and README files:

  • Purpose: Repository-level documentation accessible to all contributors
  • Best for: Project documentation, API guides, contribution guidelines
  • Features: Git-backed, Markdown support, easy editing

Azure Boards work item descriptions:

  • Purpose: Capture decisions, acceptance criteria, and context with work items
  • Best for: Feature requirements, bug details, spike research findings
  • Features: Rich text, attachments, links to code

Code comments and docstrings:

  • Purpose: Document why code exists and non-obvious implementation details
  • Best for: Complex algorithms, business logic, integration points
  • Features: Lives with code, visible during development

Microsoft Teams channels:

  • Purpose: Real-time communication and transient knowledge sharing
  • Best for: Questions, discussions, alerts, quick coordination
  • Features: Threading, file sharing, integration with DevOps tools

Decision: Choose the right tool for each knowledge type. Use wikis for lasting documentation, work items for feature context, code comments for implementation details, and Teams for real-time collaboration. The integration between these tools allows cross-linking and unified search.

Reflection questions

Consider your current team's knowledge sharing practices:

Current state:

  • Which knowledge-sharing tools does your team currently use?
  • Where does critical team knowledge currently reside?
  • How do new team members learn your systems and practices?
  • When was the last time your team couldn't solve a problem because the knowledgeable person was unavailable?

Pain points:

  • What information do team members repeatedly ask about?
  • Where do you waste time searching for information?
  • What knowledge would be catastrophic to lose if specific people left?
  • How current and accurate is your existing documentation?

Improvement opportunities:

  • What documentation would provide the most value if created today?
  • Which repetitive questions could be answered with documentation?
  • What knowledge sharing tools would reduce your team's friction?
  • How could you make documentation creation easier and more consistent?