Blog
Git Blame Is Not A Weapon, It's A Diagnostic Tool
Git blame has terrible name. People use it like weapon: who wrote this disaster?
Better question: what system allowed disaster to reach production?
Blame Finds Person, Not Cause
A junior changed timeout. Service melted. Easy story: junior broke production.
Real story: no test covered timeout. Code review missed risk. Runbook was outdated. Alert fired late. CI allowed risky config. Team knowledge was tribal.
Person touched line. System created conditions.
Use Blame As Map
git blame tells when and why line changed. Follow commit. Read PR. Understand context. Maybe change was correct for old requirement.
This is diagnostic work, not courtroom.
Blameless Does Not Mean Consequence-Free
If someone was reckless, address it. But most incidents are normal humans inside weak systems.
Blameless post-mortem asks how to make same mistake harder next time.
Good Post-Mortem
Includes timeline, impact, detection, contributing factors, what went well, what went poorly, and action items with owners.
Bad post-mortem says “be more careful”. This is not action item. This is prayer.
Engineering Fixes
Add test. Add validation. Add safer default. Add feature flag. Improve alert. Make rollback easier. Document runbook. Remove confusing API.
Culture improves when system improves.
Final Rule
Use git blame to learn history, not assign shame.
Production reliability comes from stronger systems, not louder finger pointing.