خلاصه کتاب Pragmatic Programmer. درس 3

درس 3: انتروپی نرم افزار (Software Entropy)در حالی که توسعه نرم افزار از قوانین فیزیکی(جسمی) در امانه، افزایش انتروپی سخت به ما ضربه میزنه.(نگرخین الان معنیشو میگه خودش). انتروپی یک مفهوم در دنیای فیزیک هستش که نوعی معیار سنجش بی نظمی در یک اکوسیستم هست. متاسفانه علم ترمودینامیک ثابت کرده که انتروپی در کل کهکشان هستی رو به افزایش و بی توقف هست.وقتی بی نظمی در نرم افزار زیاد میشه، ما بهش "پوسیدگی نرم افزار" میگیم، برخی هم به معنی خوش بینانه تر بهش "بدهی تکنیکال" میگن، که به این معنیه که یک روز برمیگردن و این بی نظمی رو درست میکنن. که معمولا هم برنمیگردن(Lol)از اسمش که بگذریم، چه پوسیدگی چه بدهی، هر دو به شکلی خارج از کنترل ما پخش میشن تو سیستم...فاکتورهای مختلفی میتونه منجر به پوسیدگی نرم افزار بشه، مهمترین اونها جنبه های روانشناسی و فرهنگ کاری مسلط بر پروژه است. پروژه هایی وجود داره که علیرغم بهترین برنامه ریزی و بهترین افراد، باز هم در طول عمرشون خراب و خراب تر میشن.در مقابلش پروژه های دیگه ای هستن که برای حل مسائل سخت تر، با وجود تاخیرهای زمانی، در مقابله با بینظمی موفق عمل میکنند و در نهایت هم بسیار خوب ظاهر میشن.چه چیزی تفاوت ایجاد میکنه؟توی همه شهرها ساختمون هایی وجود دارند خوشگل و تمیز در حالی که توی همون شهر ساختمون هایی خراب و تقریبا متروکه هم به چشم میخوره، چرا؟ محققای حوزه شهرشناسی طی تحقیقایی که انجام دادن به یک عامل محرک رسیدن که خیلی سریع میتونه یک ساختمون تمیز و مرتبو تبدیل به یک ویرانه و متروکه بکنه."یک پنجره ی شکسته"وقتی یک پنجره توی یک ساختمون میشکنه و تعمیر نمیشه، در طول زمان حس رها شدگی به ساکنین دست میده و ناخوداگاه منجر به کم اعتنایی و شکستن پنجره دیگه ای میشه. مردم شروع به آشغال انداختن میکنن، دیوار نویسی شروع میشه، آسیب های جدی سر و کله شون پیدا میشه. تو مدت زمانی کوتاهی انقدر آسیب وارد میشه که فراتر از اراده صاحب ساختمون برای تعمیر، احساس رها شدن تبدیل به واقعیت و ساختمون به متروکه تبدیل میشه.محققا بر این باورند که ناامیدی مسریه، رها کردن یک پنجره شکسته منجر به این فکر میشه که چیزی قرار نیست درست بشه تو اون محیط، و کسی هم بهش اهمیت نمیده و همه فکر میکنن که محکوم به فنا هستند و این به شکل مسری بین اعضا پخش میشه.با پنجره های شکسته زندگی نکنید. (Don’t Live With Broken Windows)پنجره های شکسته پروژه رو رها نکنید فرقی نمیکنه چی باشه، طراحی بد، تصمیمات اشتباه یا کد کثیف...به محض اینکه هر کدومشونو پیدا کردید، اونو هرچه سریعتر رفع کنید، اگر زمان کافی برای رفع اون در همون لحظه شناسایی ندارید، حتما به صورت جدی توی برنامه تون بزاریدش، حتی شده کامنت بزارید که این قسمت رو میخاید درست کنید یا Not Implemented بزارید، و نشون بدید که بر اون مشکل سوار شدید و پلن حلشو دارید.شاید فکر کنید که هیچ کس از تیم زمان کافی نداره تا تمام پنجره های شکسته پروژه رو درست بکنیم، اگر اینجوری فکر میکنی، پس منتظر تبدیل شدن به یک آشغال دونی و مهاجرت به یک محله دیگه رو داشته باش. "نزار انتروپی ببره"در وهله اول، آسیب نرسون:خسارت وثیقه ای ایجاد نکن، برای اینکه یک موضوع مهم و حساس توی لحظه رو حل کنی، یک پنجره شکسته ایجاد نکن. اون پنجره میتونه یک کد کثیف باشه، یا تصمیم مدیریتی اشتباه، که تیم مجبوره با اون سر بکنه تو سیر انجام پروژه. و این شروعه پایین اومدن پتانسیل های پروژه است.اگر مشغول به کار روی پروژه ای شدی که کدش چندین پنجره شکسته داره، شروع کن به اصلاح کردن شاید زیاد خوشایند نباشه ولی قطعا نتیجه شو میبینی، به این فکر کن که اگر یک ماشین روزها کنار یک خیابون پارک باشه شاید هیچ اسیبی نبینه ولی به محض اینکه یکی از پنجره هاش بشکنه دخلش اومده، همش این مثالای پنجره شکسته رو توی مخت مرور کن...اگر هم روی پروژه ای سوار شدی که کلین کد محض، حرفه ای و تمیز طراحی شده باید تمام توان و تمرکزت روی این باشه که خرابش نکنی و به همون نحو توسعه و رشدش بدی.درس های مرتبط: 10,40,44منبع کانال تلگرامی : https://t.me/pragmaticprogrammer_fa