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

فصل 7: While You Are Codingدرس 37: Listen to Your Lizard Brainغرایز ما پاسخ های ساده هستند به چیزهایی که در مغز ناخودآگاه ما وجود داره. برخی ذاتی هستند و برخی هم از طریق تکرار زیاد آموخته میشن. همونطور که شما به عنوان یک برنامه نویس در مورد یکسری چیزها اینطوری هستید، روشهایی که همیشه برای استفاده های خاصی کار میکنن، روشهایی که برعکس کار نمیکنن و جواب نمیدن، علت برخی از خطاها و ... که در طول روز هم خیلی براتون رخ میده. یا بخشی از مغزتون که به صورت غیر ارادی فرمان میده دکمه سیو رو بزنی وقتی میخای متوقف بشی و جواب کسیو بدی.غریزه ها از هر منبعی که باشن در یک چیز مشترکن، اونها هیچ توصیف مشخصی ندارن. غرایز باعث میشن که احساس کنید، فکر نکنید.نکته اینجاست که بتونید وقتی این رفتارها رخ میده، متوجهشون بشید، بعدش دلیلش رو بررسی کنید. بیاید ابتدا به چند موقعیت متداول که مارمولک(Lizard) درونی شما در تلاشه به شما چیزی بگه ، نگاهی بندازیم. بعدش بررسی میکنیم که چطوری می تونید اون مغز غریزی را از محافظش خارج کنید.FEAR OF THE BLANK PAGEاکثرا از یک صفحه خالی، که کرسر به تنهایی توش چشمک میزنه، میترسن. شروع یک پروژه جدید (یا حتی ماژول جدید در یک پروژه) میتونه یک تجربه دلهره اور باشه. بسیاری از ما ترجیح میدیم که تعهد اولیه شروعو به تعویق بندازیم.به نظر ما دو مشکل منجر به این حس میشه که هر دو شونم یک راه حل داره.مشکل اول اینه که مغز لیزاردتون سعی میکنه بهتون چیزی رو بگه، یک چیزی شبیه به شک و تردید. موقعی که برای انجام کاری شک و تردید میکنی یا بی میل هستی ممکنه این حسو تجربه کرده باشی. به این حس توجه کنید، و روش وقت بزارید، احتمالا این شک ها شمارو به منشا و علتش میرسونه ، بزارید غرایزتون به عملکردتون کمک کنه.مشکل دوم، نگرانی از اینه که ممکنه باگ و یا مشکلی رو ایجاد کنید. و تا حدودی منطقی هم هست این احساس. یا این پروژه فراتر از شماست و چشم انداز روشنی از خاتمه اش نمیبینید.FIGHTING YOURSELFبعضی موقعا، کد مثه آبشار از مغز شما به سمت IDE روونه میشه و خیلی شسته رفته و بدون توقف ایده هاتونو پیاده میکنید.بعضی موقعام مثه پیاده روی در گل و لای توی یک سربالایی میمونه، برای برداشتن هر قدم تلاش زیاد و حتی عقب گرد دارید.کد شما سعی میکنه بهتون چیزیو بگه، شاید مسئله سخت تر از اون روشی باشه که انتخاب کردید، یا ساختار و دیزاین پترن اشتباهی انتخاب کردید، یا اصلا شاید صورت مسئله ای که مشغول به حل کردنش هستید اشتباهه و حاصل یک تحلیل یا نیازمندی غلطه، به هر علتی که باشه این مغز Lizard تونه که توی این شرایط سعی داره بهتون سیگنال بده و باید بهش توجه کنید.HOW TO TALK LIZARDنکته اینجاست که باید با غرایز و مغز Lizard ناخودآگاهتون صحبت کنید.در قدم اول، از انجام کاری که مشغولش هستید متوقف بشید. یکم به خودتون زمان بدید تا مغزتون ی سازمان دهی بکنه خودشو، به کد فکر نکنید، به کارهای دیگه مثل تایم نهار، کمی قدم زدن یا صحبت با دوستتون مشغول بشید. بزارید تا ایده ها خودشون به لایه های مغزتون غلبه و ورود کنن، نمیتونید مجبورشون کنید.اگر جواب نداد، مسئله رو بیرونی کنید، مطرح کردنش با یک دوست یا همکار و مشورت کردن راجعش میتونه اثر بخش باشه.اگر بازم جواب نداد، دیگه وقت اقدامه، هرچیزی به ذهنتون میرسه رو عملی کنید و ما اینکارو با نمونه سازی prototyping انجام میدیم.طی این سالها ما به یک روش هک مغزی رسیدیم که به نظر موثر میاد، به خودتون بگید که نیاز به نمونه سازی اولیه پروژه رو دارید، اگر با صفحه خالی روبرو هستید، به دنبال اون جنبه هایی از پروژه باشید که میخاید چیزهای جدیدی رو به کار ببرید مثلا ممکنه روش دیتابایندینگ یک فریمورک جدید باشه، یا نحوه برخورد یک الگوریتم با استثناها و ... شما میخاید یاد بگیرید که چجوری کار میکنن.این کارها رو بکنید:1- روی یک استیکی نوت بنویسید من در حال نمونه سازی هستم و بچسبونید کنج صفحه نمایش2- یادتون باشه نمونه سازی ممکنه با شکست مواجه بشه، یا حتی اگر شکست هم نخوره، ممکنه به درد نخوره و پرتش کنید دور.3- صفحه خالی ادیتورتونو با یک کامنت شروع کنید، توش کاری ک میخاید بکنید یا چیز جدیدی که میخاید یاد بگیرید و ازمایش کنیدو بنویسید4- شروع به کدنویسی کنیداگر شک و تردید سراغتون اومد، به اون استیکی نوت نگاه کنید یا به خودتون فرصت بدید و اون تایم استراحت یا مشورتو انجام بدید.طبق تجربه با انجام این روش، وقتی در حال نمونه سازی هستید، خودتونو تو شرایطی پیدا میکنید که دارید موسیقی که گذاشتیدو زمزمه میکنید و از کد زدن لذت میبرید و شک و تردید و اضطراب شروع رو هم ندارید. در نهایت به جواب میرسید، روش نهایی رو پیدا میکنید، موارد نمونه سازی شده رو کنار میزارید و شروع به زدن کد اصلی میکنید.NOT JUST YOUR CODEبخش زیادی از کار ما سر و کله زدن با کدی هست که دیگران نوشتن و ممکنه روش های دیگه ای رو به کار برده باشن، نه لزوما بدتر فقط متفاوت. خوب شما باید کدشونو بخونید و دیتکت کنید که شاید کار طاقت فرسایی باشه. شاید هم اجرای اون و دیباگش بهتون کمک بکنه تا سریعتر بفهمید روش و یا پترن اعمال شده چجوریه و چیزهای جدیدی ام یاد بگیرید.NOT JUST CODEاینکه حین کد نویسی یاد بگیریم به غرایز و احساس درونی مون توجه کنیم، خیلی مهمه. گاهی اوقات اونا کمک میکنن تا شاید تصویر بزرگتری از یک فاجعه پیش رو، رو متوجه بشیم، فقط متوقف بشید و آنالیز کنید، شاید روی روش اشتباه، پترن نامناسب، نیازمندی غلط و ... هستیم.دروس مرتبط: 13, 22, 46منبع کانال تلگرامی: https://t.me/pragmaticprogrammer_fa