مستندسازی؛ README، کامنت و داکِ دور
داکِ خوب انگلیسی سه ویژگی دارد: کوتاه (رهبرِ جمله فعلِ امری است: Run the script), اسکنپذیر (سرتیتر و لیست), و مخاطبدار (این برای کیست؟). کامنتِ خوب فقط «چرا» را میگوید؛ «چه» را کد خودش میگوید. این درس قالبهای هر سه لایه — README, کامنت, ADR — را میدهد.
مستندسازی، دومین مهارتِ «پنهان اما ارزیابیشده» فنی است: کسی ا overt شاخص نمیگذارد، اما داکِ خوب، سالها بعدِ رفتنِ تو هم به تو اعتبار میدهد — و داکِ بد، هر روز از وقتِ همه را میخورَد. برای زبانِ دوم، نکتهٔ طلایی این است که نوشتارِ فنی از هر متنی سادهتر است: جملهها کوتاهاند، لحن امری است، و واژهها تکرار میشوند.
این درس مقدمهٔ فنی است؛ نسخهٔ حرفهایتر (RFC و پروپوزال) در فاز ۵ میآید. قالبهای امروز را در ریپوی خودت امتحان کن — اولین READMEای که با همین درس بنویسی، بهترین داکِ عمرت خواهد بود.
README؛ در چهار بلاک
قالبِ استانداردِ README: ۱) یک جمله: این چیست؟ "A tiny Python library for turning CSVs into charts." ۲) Quickstart: سه فرمانِ تا نتیجه: pip install x ← import x ← خروجی. ۳) چرا این؟ یک بلاکِ تفاوت: "No dependencies. Works offline. 10x faster than Y for small files." ۴) Contributing + License. قاعدههای زبانی: جملههای زیرِ ۲۰ کلمه، دومشخص (you), فرمانها در code block با ، و بدونِ تبلیغِ اضافی — داکِ خوب، خودش را با «کارکردن» میفروشد نه با صفت.
کامنت؛ «چرا» نه «چه»
کامنتِ بد: i++; // add one to i (کد خودش میگوید). کامنتِ خوب، سه چیز را میگوید: ۱) چرا: // Retry 3x: the payment API drops ~0.1% of requests under load. ۲) هشدار: // NOTE: changing this breaks the mobile client (v2). Ask the mobile team first. ۳) لینکِ منشأ: // See ADR-12 for why we chose gRPC over REST here. — و برای کدِ موقت: // TODO(alip): remove after the 2026-02 migration. Tracking in TICKET-841. قالبِ TODO با اسم و تاریخ و شماره، کامنتِ زنده میسازد نه سنگقبرِ فراموشی.
داکِ تصمیم و داکِ دور؛ ADR و postmortem
ADR (Architecture Decision Record): یک تصمیمِ فنی در چهار بند: Context (وضعیت), Decision (تصمیم), Consequences (پیامدها), Alternatives (بدیلهای ردشده). نمونه: "We will use Postgres for the event store. Context: team knows it, ops tooling exists. Consequences: no replay performance tuning like Kafka; we accept this for now." و postmortem (بازبینیِ حادثه) با بیاتهامترین قالبِ دنیا: "What happened / Impact / Timeline / Root cause / Action items" — جملهٔ کلیدی: "X caused Y" نهِ "Ali caused Y" — در داکِ سالم، عاملیت با سیستم است نه با آدم.
گرامرِ عمیقتر: زبانِ دستورالعمل — امریِ خنثی و مخاطبِ you
داک، زبانِ امریِ بیفاعلِ دومشخص است: Run the script. (اسکریپت را اجرا کن) · Do not edit this file directly. (این فایل را مستقیم ویرایش نکن) — بدونِ «you should» و بدونِ لطفِ اضافی. برای هشدار: WARNING: / NOTE: / TIP: — سه برچسبِ استاندارد. و برای گامها: First… Next… Finally یا شماره. جملهٔ کوتاهِ داک زیرِ ۲۰ کلمه؛ مخاطبِ داک همیشه you — حتی اگر داک را «ما» نوشته باشند، خواننده «you» است. برای چیزهای اختیاری: Optionally, you can… — برچسبِ درست، همیشه مؤدبتر از حذفکردن است.
گفتگو: رترویِ داک — «داکِ ما چه احساسی دارد؟»
اشتباههای رایجِ فارسیزبانها در همین درس
این بخش را با یک قرارداد بخوان: هر ❌ یعنی «مغزِ فارسیزبانت این را میسازد و طبیعی است»، و هر ✅ یعنی «این همان چیزی است که گیرندهٔ انگلیسیزبان میشنود». خطاها اثرِ مستقیمِ ترجمهٔ ذهنیِ فارسی به انگلیسیاند؛ با هر جفت بلند تکرار کن تا شکلِ درست در گوشت نشست کند.
تمرینهای این درس — چهار قدم، بیعجله
داکنویسی، تمرینِ قیچی است؛ چهار تمرین را با برشهای دقیق و بلند اجرا کن، بعد پاسخها را باز کن.
- این جمله را امریِ داک کن: «You should probably copy .env.example to .env before you start.»
- غلطِ معروفِ for را اصلاح کن: «For run the tests, use this command.»
- برچسب را انتخاب کن و دلیلش را بگو: «دادههای اولیه عمداً فیکاند» — WARNING یا NOTE؟
- سه گامِ راهاندازی را شمارهدار بنویس: clone کردنِ ریپو، اجرای docker compose، بازکردنِ localhost — هر گام یک فعلِ امری.
پاسخ تمرینها — اول خودت جواب بده، بعد باز کن
پاسخ تمرین ۱
.env.example to .env before you start." — should probably حذف شد؛ امری + ترتیبِ گام. داکِ خوب مثل کامنتِ گیت است: کوتاه و قابلِ اجرا.پاسخ تمرین ۲
پاسخ تمرین ۳
پاسخ تمرین ۴
docker compose up. 3. Open localhost:3000." — سه گام، سه فعلِ امری، هر گام زیرِ بیست کلمه؛ مقدمه لازم نیست.چالشِ امروز
🎯 برای کاری که امروز انجام دادی یک داکِ سهگامی بنویس — امریِ خنثی، بیمقدمه — و در ویکی یا فولدرِ مستنداتِ تیم بگذارش.
نکات مکالمهٔ واقعی که کتابها کم میگویند
- داک را با سوال بساز — هر بندِ داک، جوابِ یک سوالِ واقعی است — سوالهای تکراریِ تیم، فهرستِ فصلهای داکِ بعدیاتاند.
- یک صفحه، یک مالک، یک تاریخ — داکِ بیمالک، مردهٔ متولدنشده است؛ اسمِ مالک و تاریخِ آخرین بازبینی بالای هر صفحه.
- امریِ خنثی بنویس — «Run…» بهجایِ «You should probably run…» — کوتاهیِ داک، احترام به وقتِ خواننده است نه خشکی.
README چهاربلاک: چیست (یک جمله) + Quickstart (سه فرمان) + چرا (تفاوت) + Contributing. کامنت فقط «چرا/هشدار/لینک» — هرگز «چه» — و TODO با اسم و تاریخ و تیکت. ADR: Context/Decision/Consequences/Alternatives; postmortem بیاتهام: "X caused Y". داک، فقط نوشتن نیست؛ نگهداشتنِ دانشِ تیم است.