Understand the system around the team, not a developer leaderboard
Preview team-level workload, collaboration, and delivery signals designed for process improvement rather than performance grading.
Preview the Sample Report·Analyze My GitHub DataRead-only GitHub · Your code stays yours · Team-level by default · No credit card
Every engineering team runs on knowledge that was never written down. It surfaces the week someone is on leave, when a deploy fails and the only person who understands the rollback is unreachable. This guide covers what tribal knowledge actually is, the four types it comes in, how to find yours in git history, and which parts are worth transferring.
What is tribal knowledge and why does it matter?
Tribal knowledge is the understanding of how a system works that exists only in people's heads: architectural decisions, undocumented workarounds, and who to ask when something breaks. In the 2022 Stack Overflow Developer Survey, 68% of respondents said they hit a knowledge silo at least once a week, rising to 73% among managers. It matters because the cost is invisible until a person leaves, at which point the context leaves with them. CodePulse surfaces the concentration from git history, ranking files where one developer wrote nearly every change.
What Is Tribal Knowledge in Software Teams?
Tribal knowledge is what your team knows collectively but has never recorded. It covers the reasoning behind a schema, the sequence a set of services has to start in, the reason a timeout is set to 4 seconds and not 30, and the name of the person who understands the billing reconciliation job.
The usual framing calls this a documentation problem. That framing is why so many attempts to fix it fail. The team writes documents, the documents go stale, and the same person still gets pulled into every incident on that service. The problem is not that the information is unwritten. It is that the understanding sits in one place.
"Tribal knowledge isn't a documentation problem. It's a concentration problem that documentation sometimes solves."
The scale is easy to underestimate. The same Stack Overflow survey found 63% of respondents spend more than 30 minutes a day searching for answers, and 25% spend more than an hour, which the survey puts at 333 to 651 hours a week across a 50-person team. Not all of that is tribal knowledge - plenty is ordinary reference lookup that no amount of internal documentation would remove. The share that is worth attacking is the part where the answer exists in a colleague's head and nowhere else.
What Are the Four Types of Tribal Knowledge?
Treating all undocumented knowledge the same is the reason documentation initiatives stall. These four types have different causes and respond to completely different interventions. Three can be written down. One cannot.
Archaeology is decision history. It answers why the retry limit is 4 and not 40, why an obvious refactor was tried and abandoned, and which constraint that shaped the design no longer exists. This is the type that disappears completely when someone resigns, because nothing in the code records a decision that was never made explicit. It is also the cheapest to capture: a short architecture decision record written at the time costs minutes.
Operational knowledge is how to run and repair the system. Deploy sequence, rollback steps, which dashboard tells you the truth during an incident. Runbooks work here, and they stay accurate if you write them during real incidents instead of in a planning session.
Relational knowledge is the social graph: who owns which service, who reviews what, who to escalate to. Teams underrate this until an org change invalidates all of it at once. Ownership maps and review coverage data keep it current.
Craft is judgment: the sense that a particular abstraction will be painful in six months. This is genuinely tacit, and no document transfers it. It moves through pairing, code review, and time spent working alongside someone. Teams that pour effort into documenting craft produce long documents that read as vague advice, then conclude documentation does not work.
🔥 Our Take
Writing more documentation is the wrong first move. Find the concentration first, then apply the right fix per type - and accept that one of the four types will never be written down.
The standard response to tribal knowledge is a documentation mandate, which produces a wiki nobody reads and leaves the single-owner file count exactly where it was. Documentation is an output, not a diagnosis. Measure where knowledge is concentrated, target the decision history that vanishes when people leave, and let craft transfer the only way it can: through people working on the same code.
Why Does Tribal Knowledge Form Even on Good Teams?
This is not a discipline failure, and teams that treat it as one make it worse. Tribal knowledge forms because of incentives that are individually correct.
The person who knows a service best is the fastest person to change it. Routing the work to them is the right call on any given day, and it is the wrong call across a year. Every time the fast path wins, the concentration deepens. Nobody decided to hoard anything.
"You don't have a bus factor of one because someone hoarded knowledge. You have it because letting them do it was always faster than teaching anyone else."
Three other forces push the same direction. Deadline pressure removes the slack that pairing needs. Specialization is rewarded, so people deepen rather than broaden. And systems that are genuinely complex resist being explained quickly, which makes the explanation feel expensive every single time.
The DORA research puts a number on what good documentation is worth once it exists. In the 2022 State of DevOps Report, quality internal documentation acted as a multiplier on every technical capability measured. Teams practicing continuous delivery with above-average documentation saw a 656% lift to organizational performance, against 63% for teams whose documentation was below average. For trunk-based development the gap was wider still: 1525% versus 36%. Documentation was not the practice. It was what made the practices pay off.
How Do You Find Tribal Knowledge in Your Codebase?
Asking people what only they know does not work. The knowledge is invisible to its owner precisely because it feels obvious to them. Git history is the better instrument, because every commit records who touched what.
The signal is two dimensions crossed, not either one alone:
You can get a rough version of this from git directly. Run the first two and cross them by hand: a file near the top of the change-count list that also sits at one or two authors is your Critical quadrant.
# 1. Files changed most often in the last year
git log --since="1 year ago" --name-only --format="" \
| grep -v '^$' \
| sort | uniq -c | sort -rn | head -40
# 2. Distinct authors per file, fewest first.
# The awk pass tags each filename with the commit's author, so a file
# touched 50 times by one person still counts as one author.
git log --since="1 year ago" --format="@%an" --name-only \
| awk '/^@/ {a=substr($0,2); next} NF {print a"\t"$0}' \
| sort -u | cut -f2 \
| sort | uniq -c | sort -n | head -40
# 3. For one file: who has touched it, and how often?
git log --since="1 year ago" --format="%an" -- path/to/file.py \
| sort | uniq -c | sort -rnThe shell version gets you started and stops scaling quickly. It reads one repository at a time, treats a rename as a new file, and counts commits rather than weighing how much of the file each person actually wrote.
📊How to See Knowledge Concentration in CodePulse
Two pages run this analysis across every connected repository, and they answer different halves of the question:
- File Hotspots ranks files by change count and total lines changed, with unique contributors alongside and a high, medium, or low risk level derived from the two together. This is the "what is actively load-bearing" view.
- Knowledge Silos lists the files with a single sole contributor, scored Critical, High, or Medium by touch count. This is the "who is the only one who knows it" view.
- Both support filters for tests and dependencies, so vendored code and fixtures do not crowd out real findings.
How Do You Reduce Tribal Knowledge Without Stopping Delivery?
The failure mode is a documentation sprint: two weeks of writing, a burst of pages, and no change to who can safely touch the payment service. Transfer happens through work, not through writing about work.
Four moves, in the order that costs the least delivery time:
| Move | What it targets | Cost |
|---|---|---|
| Route the next change to a second person | All four types at once | One slower ticket |
| Require a reviewer who is not the owner | Craft and relational | Slightly slower reviews |
| Write a decision record when a choice is non-obvious | Archaeology | Ten minutes, at the time |
| Write the runbook during the next real incident | Operational | Near zero, it is being done anyway |
The first move does the heaviest lifting and is the one teams skip, because it means deliberately giving a task to the slower person. That is the entire cost of fixing this, and it is paid one ticket at a time rather than in a quarter-long initiative.
"A wiki page is not knowledge transfer. A second person shipping a change to that file is."
Pair the routing change with review rules. If the same person authors and effectively rubber stamps everything in an area, review is not spreading understanding. Our guide on code ownership heatmaps covers reading ownership concentration across a repository, and the engineering enablement guide covers the org-level version of the same problem.
How Do You Know the Transfer Actually Worked?
Documents produced is the wrong measure. It counts effort rather than outcome, and it goes up whether or not anything changed. Three measures that respond to real transfer:
- Single-owner file count, trending down. The direct measure. Track it monthly on your highest-change files rather than across the whole repository, where noise from vendored code swamps the signal.
- Second-author coverage on critical paths. For each file you flagged Critical, has anyone else shipped a substantive change to it this quarter? This is binary and hard to game.
- Review distribution. If one person reviews every change in an area, they are still the single point of understanding even when others write the code.
Watch delivery speed alongside these. If cycle time degrades sharply while single-owner counts fall, you are routing too much work to unfamiliar people at once. Slow it down. The target is a steady decline over two quarters, not a step change. Code churn is a useful companion signal here, since a file being rewritten repeatedly by one person is usually a sign the understanding never spread.
One caution on framing. Every measure above describes files and review patterns, not people. The moment a single-owner count becomes something an individual is graded on, engineers will spread commits thinly to look diversified, and you will have destroyed the signal while making the underlying risk invisible. This is a property of the codebase, and it is a management outcome rather than an individual one.
Where Should You Start This Week?
Rank your highest-change files by contributor count and take the top five. For each one, ask who else has shipped a change to it in the last six months. Where the answer is nobody, route the next change in that file to a second person and have the current owner review it.
That single loop covers more ground than a documentation initiative, because it moves all four types of knowledge at once: the second person reads the archaeology, runs the operational steps, learns who to ask, and absorbs some of the craft through review. Repeat it five times a quarter and the concentration measurably drops.
For the file-level risk model behind this - the matrix, dormant risk, and how to run a quarterly review - see our guide on bus factor and knowledge silos.
Frequently Asked Questions
Tribal knowledge is the working understanding of a system that lives in people's heads instead of anywhere written down: why a service was built the way it was, which config to touch when a deploy stalls, and who to ask when something breaks. What makes it dangerous is concentration - the context sits with a small number of people, and it becomes visible the moment one of them takes leave or resigns.

Get this view for your own teams
Connect GitHub for team-level workload, review distribution, and delivery signals. Individual views stay off unless your organisation explicitly turns them on.
Read-only GitHub · Your code stays yours · Team-level by default · No credit card
See These Features in Action
Detect bus-factor-1 code before it becomes an operational risk.
Find high-churn files and correlate change frequency with ownership.
Related Guides
The 'Bus Factor' File That Could Kill Your Project
Use the Bus Factor Risk Matrix to identify where knowledge concentration creates hidden vulnerabilities before someone leaves.
Code Ownership Heatmap: Visualizing Who Owns What
Build a code ownership heatmap to identify abandoned, under-owned, and bottlenecked code. Use git data to distribute ownership for healthier teams.
High Code Churn Isn't Bad. Unless You See This Pattern
Learn what code churn rate reveals about your codebase health, how to distinguish healthy refactoring from problematic rework, and when to take action.
100% Review Coverage Is a Lie (What Actually Matters)
Why 100% review coverage matters, how to track it, and practical steps to build a consistent code review culture across your team.
Engineering Enablement: The Complete Guide for 2026
What engineering enablement actually means, who owns it, and how to measure its impact. Includes a maturity model and team structure templates.
