惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LINUX DO - 最新话题
G
Google Developers Blog
J
Java Code Geeks
The GitHub Blog
The GitHub Blog
F
Full Disclosure
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Vercel News
Vercel News
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
Help Net Security
Help Net Security
The Hacker News
The Hacker News
IT之家
IT之家
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
L
Lohrmann on Cybersecurity
C
CERT Recently Published Vulnerability Notes
V
Visual Studio Blog
博客园 - 聂微东
Hacker News: Ask HN
Hacker News: Ask HN
H
Hacker News: Front Page
Know Your Adversary
Know Your Adversary
Security Latest
Security Latest
Security Archives - TechRepublic
Security Archives - TechRepublic
Simon Willison's Weblog
Simon Willison's Weblog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
Last Week in AI
Last Week in AI
Schneier on Security
Schneier on Security
N
News and Events Feed by Topic
博客园 - 【当耐特】
有赞技术团队
有赞技术团队
AWS News Blog
AWS News Blog
Blog — PlanetScale
Blog — PlanetScale
博客园_首页
Google DeepMind News
Google DeepMind News
Cloudbric
Cloudbric
N
News | PayPal Newsroom
A
About on SuperTechFans
S
Schneier on Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hugging Face - Blog
Hugging Face - Blog
M
MIT News - Artificial intelligence
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
雷峰网
雷峰网
T
The Exploit Database - CXSecurity.com
罗磊的独立博客
K
Kaspersky official blog
The Cloudflare Blog
I
Intezer

Yusuf Aytas

When Code Is Cheap, Does Quality Still Matter? Why Crouching Tiger, Hidden Dragon Is a Masterpiece Why We Ignore Advice The Mirror Is Part of the Machine When Too Many Maps Overlap on One Person The Work Runs on Different Maps Your Work Introduces You Trial By Fire The Dude Why Headcount Math Lies Capacity Is the Roadmap The Roadmap Is Not the System Torres del Paine W Trek Escaping Status Theater Incentives Drive Everything Scaling Culture Without Dilution What Good Looks Like Why Airport Security Feels Random Why Politics Appear How to Work with Me The Janus Protocol Multi-Horizon Delivery Framework What Good Execution Looks Like Managing Your Manager Why Kingdom of Heaven’s Director’s Cut Is Better AI Broke Interviews Most of What We Call Progress Managers Have Been Vibe Coding All Along Stop Wasting Brainpower Why Over-Engineering Happens Prisoner's Dilemma Climbing No More The Weekly Win Mevlana Candy Brewing Turkish Tea Onboarding Your Engineering Manager Technical Deep Dives Yapay Zekâ Çağında Bilgisayar Mühendisliği Building Remote Teams From Idea to Launch in 2 Weeks Reflecting on Software Engineering Handbook Representing the Business New Manager Survival Guide Take Self Reviews Seriously Chasing Real Respect The Invisible Difference Learning the Johari Window Management is a Lonely Place Simple Task Management AI Balance in Work PIP Manager Insights Engineering Manager Interview Preparation Work-Life Balance as a Manager Bridging the Management Disconnect Tech Hiring Bubble Bursts Traits for EMs Simple Acts of Recognition Matter The Question I Ask Every New Report The Reality of an Employer's Market Bridging Ideals and Reality Hiring Red Flags Why The Godfather Is So Damn Good Subteam Tenets No Fluff Please Losing a Top Performer Balancing Act of Reliability Building Trust in Engineering Teams Ideal Number of Direct Reports Overriding a People Leader’s Decision From Misperception to Promotion Perception vs Perspective Setting Goals From Engineer to Manager Getting Delegation Right Interviewing Your Future Boss Celebrating Our Book in Iceland Operational Skills Needed On Writing Software Engineering Handbook Charlie Munger Quotes Working with Dependencies From Las Vegas to Canyons Navigating Layoffs Handling Competitive Dynamics A Weekend Getaway to Malta Engineering Health Essentials Should Dev Managers Code? Confronting the Life on Pause Winning Eleven Kindness is A Choice Bireysel Katılımcılar ve Yöneticiler Leading from Where You Are The Subtle Art of Listening Coding in Leadership The Power of Consistency The Making of a Leader The Path to Leadership Embracing TikTok Talent Sourcing Journey Leading Self Managing Teams Cracking Coding Bottlenecks
Code Author
Yusuf Aytas · 2021-03-11 · via Yusuf Aytas

Published · 4 min read

Throughout the years I have worked on many software projects. In most of them, the code header included the authorʼs name. At first, it seemed natural to have the authorʼs name. In time I realized having a code author in the header is irrelevant, discouraging, and often negative. That realization changed how I think about authorship in teams.

Practically speaking, in many projects, the header file is dictated by the coding style for the company or the project itself. So, we donʼt really have a choice. It is better to stay consistent and follow the same pattern. Nevertheless, I believe the code author in headers should be avoided for new projects. The intent is not to erase accountability, but to move it where it actually lives: in commits, reviews, and ownership docs rather than in brittle header comments.

Code AuthorCode Author

Source Control Already Answers Who

First of all, we really donʼt need author information. In modern teams, itʼs a piece of information thatʼs easily reachable through source control. You can check out who the original author or subsequent authors were, when they made changes, and the intent behind them via change history and review notes. In most cases, nobody even touches the author line even if the whole code is rewritten. When it happens, itʼs even misleading as the original author didnʼt implement the new changes. Therefore, itʼs better to rely on revision control instead of manual updates. That way, authorship lives where it’s accurate and up to date.

In practice, the version control systems can easily show which changes were made by different authors over time, across releases, and alongside discussion threads. This keeps accountability searchable, contextual, and honest.

Collaboration Over Nameplates

Having a code author can discourage another programmer from changing the code. Even subtle nameplates create hesitation during reviews and refactors, especially in high-stakes or legacy modules. Programming is often a team effort. In practice, that means policies, tooling, and social norms should reinforce shared stewardship.

The code shouldnʼt belong to individuals. Everyone in the team should feel OK to change any piece of code regardless of the person who wrote it. This reduces bus factor risk and speeds up incident recovery. If thereʼs no sole author for the code, people would feel better when refactoring the code. Engineers approach changes with fewer social barriers, focusing on correctness and design rather than permissions.

I remember a time when a colleague furiously deleted all the code-author headers I had added. At first it felt awkward. He even sent the review directly to me and I wasn’t sure what to think. But when I read his pull request, it made sense: he had rewritten most of the module, and leaving my name on top felt inaccurate and unfair to him. That experience clarified how nameplates can distort credit, complicate emotions in reviews, and distract from the actual goal. It’s shipping the best version of the code.

When the author implemented the code, it probably solved a business problem. In time, the same code probably has to handle more cases. Requirements accrete, edge cases emerge, and abstractions need pruning. Thus, removing such friction is an important enabler for people who maintain the code. It turns ownership into a team capability, not a personal badge.

In Consequence

I see almost no value in specifying a code author in the header. From a practical point of view, we can have better information from source control. From a collaboration perspective, it can potentially become damaging. For new projects, try to avoid code authors and push back on people who want it. As a practical alternative, keep headers focused on the code itself: purpose, key invariants, and links to design notes or runbooks. Track ownership and review paths in source control and lightweight team docs rather than in brittle nameplates.

  • Purpose: a single line stating what the module does.
  • Invariants: rules that must always hold true (e.g., “IDs are immutable after creation”).
  • Sharp edges: brief guidance like “call close() after init() to release resources.”
  • Pointers: links to design docs, ADRs, or runbooks for deeper context.

A simple policy for new projects

  1. No author nameplates in headers. 
  2. Use source control history for authorship and review context. 
  3. Keep a CODEOWNERS (or equivalent) file to route changes. 
  4. Prefer small design notes for architectural intent. 
  5. Let headers age well by focusing on purpose, invariants, and pointers.

Coding is a team sport. Move credit and accountability to where they stay accurate. It’s history and ownership docs. Let headers teach the next engineer what the code does and how not to break it.