ترفندهای ریز، بهرهوری درشت
خلاصهٔ کاملتر
ایدهٔ اصلی این پست سادهست: به گفتهٔ نویسنده، بخش زیادی از بهرهوری روزمرهٔ مهندسی از تیکهدانشهای کوچیک میاد — اینکه بدونی یه امکان تو زبون وجود داره، بدونی تأخیر عجیب TCP احتمالاً به تنظیم TCP_NODELAY و الگوریتم Nagle مربوطه، یا دستور درست git برای بیرون اومدن از یه دردسر رو بلد باشی.
نویسنده میگه یه دسته از این نکتهها ارزش خاصی دارن چون تقریباً هیچ زیرساخت ذهنیای لازم ندارن. مثالش اینه که لازم نیست پایتون بلد باشی تا با python3 -m http.server یه سرور ساده تو یه پوشه بالا بیاری، ولی همین یه نکته کار رو کمی راحتتر میکنه.
چند تا از نکتههای ترمینال و گیت: ctrl + r برای جستوجو تو تاریخچه رو با fzf میشه به جستوجوی فازی تبدیل کرد و atuin کلاً تاریخچه رو با یه پایگاهدادهٔ SQLite قابلجستوجو عوض میکنه. git log -S که بهش «کلنگ» یا pickaxe میگن، همهٔ کامیتهایی رو میده که یه رشته رو اضافه یا حذف کردن، و git checkout - مثل cd - برمیگرده به HEAD قبلی.
تو حوزهٔ پایگاه داده هم یادآوری میکنه که SELECT بدون FROM مجازه و برای امتحانکردن رفتار یه تابع عالیه، و هم پستگرس و هم مایاسکیوال explain analyze رو دارن که کوئری رو واقعاً اجرا میکنه و اطلاعات خیلی بیشتری دربارهٔ کاراییش میده.
چند نکتهٔ جاوااسکریپت و نود هم هست: Array.flatMap و Object.entries و Promise.withResolvers که حالا در دسترسن، و این ترفند که تو Node میشه با ساختن یه https.Agent و پاس دادنش به درخواستها، اتصال به یه سرویس بیرونی رو باز نگه داشت — چیزی که به گفتهٔ نویسنده میتونه اثر چشمگیری روی تأخیر بذاره.
یه نمونهٔ کوچیک که خودش میاره، استفاده از لگاریتم روی متریکهاست تا بدون ذخیرهٔ مقدار دقیق، از توزیع یه فیلد باخبر شی:
const bucket = Math.floor(Math.log10(userInGroupCount))
metrics.increment("my_metric", { bucket });بخش پایانی مطلب جالبتره: نویسنده میگه داخل یه شرکت، حجم بیشتری از دانش دقیقاً همین شکلیه — اینکه برای دیباگ فلان مشکل باید سراغ کدوم منبع داده بری، کی درمورد کدوم حوزه بیشتر میدونه، یا کی باید دستی اسکیل کنی. تجربهٔ خودش این بوده که هر روز یه ترفند تو اسلک با تیم مهندسی به اشتراک میذاشته و روزی یکی عدد درستی بوده: نه اونقدر زیاد که خستهکننده شه، و گاهی جرقهٔ یه بحث مفید.
نکات کلیدی:
- ترفندهای کوچیک ارزش بالایی دارن چون پیشنیاز ذهنی سنگینی ندارن
- fzf و atuin جستوجوی تاریخچهٔ ترمینال رو کاملاً عوض میکنن
- git log -S یا همون «کلنگ» گیت، کامیتهای اضافه یا حذف یه رشته رو پیدا میکنه
- تو Node نگهداشتن اتصال با https.Agent میتونه تأخیر رو حسابی کم کنه
- دانش داخلی شرکت هم بیشتر از همین جنسه؛ اشتراک روزی یک نکته جواب میده




