RFC و پروپوزال فنی؛ متنی که تصمیمِ بزرگ را میسازد
RFC، «پیشنهادِ تصمیم» به شکلِ سند است: زمینه (چرا الان؟), طرح (چی میسازیم), بدیلها (چرا نه اینها؟), پیامدها (چه چیزی بهتر/بدتر میشود). فرمولِ لحن: مستند و بیلحنِ شخصی — "The trade-off section is where the document earns its keep." سندِ خوب، بحث را از اتاقِ جلسه به متنِ داوریپذیر میبرد.
در شرکتهای فنیِ بزرگ، تصمیمهای معماری در «سند» گرفته میشوند نه در جلسه: کسی یک RFC مینویسد (Request for Comments — درخواستِ نظر), تیم چند روز کامنت میگذارد، و تصمیم با سابقهی مکتوب متولد میشود. برای تو، دو دلیلِ یادگیری: اول، نوشتنِ RFC، پلهٔ رهبریِ فنی است — سندِ تو، صدای تو را در اتاقهایی میبرد که درشان نیستی. دوم، خواندنِ RFCهای دیگران، نصفِ درکِ فرهنگِ فنیِ هر شرکت است.
این درس، RFC را با همان چارچوبِ گفتاریِ درس ۶۸ (مخالفتِ فنی) پیوند میزند — با این تفاوت که اینجا همهچیز نوشتاری، سرد و داوریپذیر است.
ساختارِ پنجبندی؛ استخوانِ هر RFC
۱) Summary — یک پاراگراف: "This RFC proposes moving session storage from Redis to DynamoDB, to remove the single-region limit before the EU launch." (این RFC انتقالِ session از Redis به DynamoDB را پیشنهاد میدهد تا محدودیتِ تک-ریجن قبل از عرضهٔ اروپا رفع شود.) ۲) Context — چه مسئلهای، چرا الان: داده بیاور: "EU users see +180ms; churn in that cohort is up 2%." ۳) Proposal — چی میسازیم: بلوکبهبلوک، با شکل. ۴) Alternatives considered — بدیلها و چرا نه: مهمترین بندِ سند (از نظرِ خوانندههای سنیور!). ۵) Consequences and risks — پیامدها و ریسکها: چه چیزی سادهتر و چه چیزی سختتر میشود؛ migration و rollback کجاست. و بندِ صفرِ فرهنگی: Status: Draft و author + reviewers + deadline for comments بالای سند.
لحن؛ مستند، فروتن، بیِ «منِ پیروز»
سه قاعدهٔ لحن: ۱) معیار، نه سلیقه: بهجای "Redis is bad at this" — "Redis single-region writes cap our failover time at ~90s (see load test, appendix A)." ۲) پیروزی را به بدیل هم بده: "Option 1 would be reasonable if our EU traffic stays under 10% — it doesn't (34% and growing)." ۳) نقاطِ نفوذ را اعلام کن: "The strongest objection I anticipate is team X's on-call load; mitigation is in §6." — پیشبینیِ مخالفت و پاسخِ مقدماتیاش، تو را از دوجنگِ کامنتها نجات میدهد. و یک قاعدهٔ طلاییِ متنِ تصمیم: جملهٔ پرسشدار در RFC ممنوع — یا میدانی و مینویسی، یا در بخشِ open questions با پاسخگِ نامزد میآورد.
چرخهٔ بازخورد؛ از Draft تا Decision
آیینِ انتشار: پیشنمایشِ خصوصی به دو-سه نفرِ کلیدی ("Early feedback welcome — is the framing right?"), بعد انتشارِ عمومی با ضربالاجل: "Comments open until Friday EOD; after that we decide." پاسخ به کامنتها — هنرِ ظریفِ RFC: هر کامنتِ معقول را با نامبرکردن جواب بده ("Good point — added a mitigation paragraph in §4.2") و مخالفتهای بنیادین را نه با جوابِ تکخطی، که با دعوت به گفتگو: "This deserves more than a comment reply — 30 minutes this week?" بندِ پایانیِ تصمیم: "Decision: proceeding with the proposal, with the amendments from the review. Owner: platform team. Revisit: after EU launch metrics, ~3 months." — سندی که این بند را دارد، بسته شده؛ بقیه، پیشنویسِ جاوداناند.
گرامرِ عمیقتر: زبانِ بیطرفِ سند و بخشهای استاندارد
سندِ تصمیم، زبانِ «سومشخصِ بیهیجان» دارد: This document proposes… (نهِ «I think we should…»), The system currently… , We considered three alternatives; Option B was rejected because… — فاعلِ «ما/سیستم»، نهِ «من». و ساختارِ سرفصلهای استاندارد: Summary / Background / Proposal / Alternatives Considered / Consequences / Open Questions — ششتایی که خوانندهٔ سنیور، دنبالشان میگردد. برای ریسکها: "The main risk is X; mitigation is Y." (ریسکِ اصلی Xئه؛ جبرانش Y.) — ریسکِ بیجبران، در سند، یعنی ناتمامی.
گفتگو: بازخورد روی RFC و پاسخِ نامبر
اشتباههای رایجِ فارسیزبانها در همین درس
این بخش را با یک قرارداد بخوان: هر ❌ یعنی «مغزِ فارسیزبانت این را میسازد و طبیعی است»، و هر ✅ یعنی «این همان چیزی است که گیرندهٔ انگلیسیزبان میشنود». خطاها اثرِ مستقیمِ ترجمهٔ ذهنیِ فارسی به انگلیسیاند؛ با هر جفت بلند تکرار کن تا شکلِ درست در گوشت نشست کند.
تمرینهای این درس — چهار قدم، بیعجله
سندنویسی ورزشِ حذف است: حذفِ «من»، حذفِ هیجان، حذفِ ابهام؛ هر پاسخ را اول بلند بگو، بعد باز کن.
- این جملهٔ احساسی را به زبانِ بیطرفِ سند تبدیل کن: «I really feel the current queue is very slow and it worries me.»
- شش سرفصلِ استانداردِ یک RFC را به ترتیب نام ببر.
- ریسک را با قالبِ درس بنویس: ریسک = بارِ اضافهٔ آنکال (دو داشبوردِ جدید و یک رانبوک)؛ جبران = یک آموزشِ یکساعته و دو هفته همراهیِ ناظر.
- این جملهٔ ردِ تند را به سبکِ RFC بازنویسی کن: «Option A? No way, nobody wants that.»
پاسخ تمرینها — اول خودت جواب بده، بعد باز کن
پاسخ تمرین ۱
پاسخ تمرین ۲
پاسخ تمرین ۳
پاسخ تمرین ۴
چالشِ امروز
🎯 یک تصمیمِ واقعیِ این هفتهات را در قالبِ شش سرفصلِ RFC بنویس — حتی با پاراگرافهای تکجملهای؛ قالب را یک بار با دستِ خودت بسازی، برای همیشه مالِ تو میشود.
نکات مکالمهٔ واقعی که کتابها کم میگویند
- بدیلها را با دلیلِ رد بنویس — «rejected because…» — بخشِ بدیلها، جایی است که سندِ تو «تولی» را جواب میدهد؛ نصفِ اعتبارِ RFC همینجاست.
- پاسخِ کامنت با شمارهٔ بخش — «added in §5.2» — پاسخِ نامبر و محلدار، بازخورد را از گفتگو به ساختار میبرد.
- ضربالاجلِ تصمیم در خودِ سند — «Decision deadline: Friday EOD» — سندِ بیضربالاجل، پیشنویسِ جاودان است.
RFC = Summary یکپاراگرافی + Context با داده + Proposal بلوکبهبلوک + Alternatives با «ردشده: دلیل» + Consequences و rollback. لحن: معیار نه سلیقه، حقِ بدیل، پیشپاسخِ مخالفتِ پیشبینیشده. چرخه: پیشنمایشِ خصوصی → انتشار با ضربالاجل → پاسخِ نامبرده به کامنتها → بندِ Decision. متنِ خوب، جلسه را به داوریِ سرد تبدیل میکند — و برندهاش، تیم است.