خلاصهی The Clean Coder - قسمت ۰۹ - مدیریت زمان (بخش ۲)
این مقاله یکی از مجموعه مقالات کتاب the clean coder هست. برای پیدا کردن دید بهتر از کل این مجموعه و محتوایی که تو این مقاله میخونید، پیشنهاد میکنم مقالهی صفرم رو هم یه نگاه بهش بندازید.
سهمیهبندی تمرکز
برنامهنویسی یه کار ذهنیه که توش لازمه تو بازههای زمانی طولانی، تمرکز بالایی به خرج بدیم.
تمرکز یه منبع کمیابه.
وقتی که ما سهمیهی تمرکزمون رو بسوزونیم، باید دوباره خودمون رو با انجام کارهایی که به تمرکز احتیاج ندارن شارژ کنیم. پیادهروی طولانی، حرف زدن با یه دوست، به افق خیره شدن از پنجره و ...
توسعهدهندههای حرفهای یاد میگیرن که زمانشون رو مدیریت کنن و تمرکزشون رو جای درستی خرج کنن. ما وقتی که وقتی که هنوز سهمیهی تمرکز داریم، کُد میزنیم و وقتی که تموم شد یا آخراش بود، میریم سراغ کارهایی که به اندازهی کد زدن نیاز به تمرکز ندارن.
تمرکز یه منبع زوالپذیر (decaying) هم است. یعنی چی؟ 🤨 یعنی وقتی هنوز توانایی تمرکز کردن رو داری، ازش استفاده نمیکنی، قابلیت تمرکز کردنت به مرور کمتر میشه. [مثلا دیگه به جایی روزی ۴ ساعت، کم کم ممکنه فقط بتونی روزی ۲ ساعت کار با تمرکز انجام بدی]
نگرانی و حواسپرتکنها هم سهمیهی تمرکز ما رو مصرف میکنن. [دعوایی که با همسرت داشتی، قبضی که پرداخت نکردی، بدهی که باید تسویه کنی و ...]
عمو باب میفرماید که بعد از یه خواب خوب و با کیفیت، احساس میکنه که سهمیهی تمرکز فولِ فول شده.
توسعهدهندههای حرفهای، برنامهی خوابشون رو جوری مدیریت میکنن که وقتی میخوان کُد بزنن، بیشترین توانایی رو واسه تمرکز داشته باشن.
یه موضوع جالبی هم میگه راجب اینکه تجربهش اینه که انجام کارهای فیزیکی مثل ورزش یا هر چیزی که عضلهها و ... درگیر میکنه، توانایی انجام کارهای ذهنی رو هم بیشتر میکنه.
[یه چیزی یادم اومد تقریبا مرتبط با همین موضوع. یجایی شنیدم اینو و تجربهی خودم هم هست. اینکه خستگی ناشی از کار ذهنی 👨🏻💻 رو میشه با کار فیزیکی 🏃🏻♂️ برطرف کرد و خستگی کار فیزیکی رو هم با خواب 😴]
🍅
[ خب اول بریم سراغ گوجه. چه ربطی به مدیریت زمان داره؟ تو زبان ایتالیایی به گوجه میگن pomodoro. پومودورو یه تکنیک مدیریت زمان واسه انجام کارها هست که تو یه بازهی زمانی مثلا ۲۵ یه کاری رو بدون هیچ وقفهای انجام میدیم (به این بازه میگن گوجه!)، یه استراحت کوتاه مثلا ۵ دقیقهای میکنیم و بعد دوباره میریم سراغ انجام اون کار.]
تکنیک پومودورو رو بصورت سنتی با یه تایمر آشپرخونه انجام میدادن.
تو بازهی مربوط به انجام کار (🍅)، «هیچ» وقفهای نباید باشه. [نه تلفن جواب دادن، نه چک کردن شبکه اجتماعی و ایمیل و ... و نه هیچ کار دیگهای]. هر کاری که پیش میاد رو باید موکول کنیم به بعد از این بازه. و خیلی بعیده یه کاری پیش بیاد که نشه حداکثر ۲۵ دقیقه بعد انجامش داد!
بعد از تموم شدن بازهی کار، بلافاصله کار رو متوقف کنید. کارهایی که تو این بازه پیش اومدن رو سر و سامون بدید (هندل کنید). بعدش ۵ دقیقه استراحت کنید و بعد برید سراغ گوجهی بعدی.
تو بهترین حالت احتمالا بشه ۱۲ تا ۱۴ بازهی کاری (🍅) انجام داد. بعضی روزها هم شاید دو سه تا بیشتر نشه! اگه تعداد گوجههای هر روز رو بشماریم و ببریمشون رو یه نمودار، خیلی سریع متوجه میشیم چقدر تو روز داریم کار مفید میکنیم و چقدر مشغول کارهای دیگهایم.
[یه نکته از تجربهی خودم اینجا اضافه کنم. یه تکنیک جالبی هست که یه کاغذ کنار دستتون باشه. هر فکری که اومد تو ذهنتون یا هر چیزی که میخواست حواس شما رو یه جوری پرت کنه، اون رو بنویسید. اینجوری اون دغدغه موقتا از ذهنتون میره بیرون میتونید با تمرکز ادامه بدید. بعد از تموم شدن بازهی کارتون، برید سراغ چیزهایی که نوشتید و بهشون فکر کنید یا انجامشون بدید اگه واجبن. نکته اینه که حتما بعد از کار برید سراغ اون کاغذ وگرنه دفعات بعد مغزتون به شما اعتماد نمیکنه و بعد از نوشتن هم ممکنه نتونتید مثل قبل تمرکز کنید. ]
اجتناب
بعضی وقتها دل و دماغ کار کردن نداریم. شاید کاری که باید انجام بدیم ترسناکه یا معذبمون میکنه یا صرفا خسته کنندهس. شاید فکر میکنیم مجبوریم یه جایی از کار با یکی بحث کنیم. بعضی وقتا هم صرفا نمیخوایم انجامش بدیم!
تو این جور حالتا ممکنه ما یه کار دیگه واسه انجام دادن پیدا کنیم و خودمون رو قانع کنیم که الان انجام دادنش ضروریه! به این پدیدهی زیبا میگن «وارونگی اولویت».
توسعهدهندههای حرفهای چیکار میکنن تو این موارد؟ 🤔 حدسش سخت نیست! اولویت هر کدوم از کارهایی که وجود داره رو ارزیابی میکنن، فارغ از ترسها و مودشون و ... و کارها رو طبق اولویت واقعیشون انجام میدن.
کوچههای بن بست
بعضی وقتها ما یه انتخابی فنی میکنیم (استفاده از یه لایبرری، فریمورک، روش یا هر چیز دیگهای) ولی نهایتا به بن بست میخوره. چه بخوایم چه نخوایم، این چیزها بعضی وقتها پیش میاد.
هر چی تجربهی ما بیشتر میشه، میتونیم زودتر این کوچهها رو تشخیص بدیم ولی هیچ کامل از دستشون خلاص نمیشیم. مهارت واقعی که بهش نیاز داریم اینه که زودتر تشخیص بدیم که تو همچین کوچهای گیر افتادیم و شجاعتشو داشته باشیم که از همونجا برگردیم.
قانون چاه: وقتی میفهمی تو یه چاه گیر افتادی، دست از کندن بردار!
باتلاقها
تو این قسمت راجب mess توی نرمافزارها حرف میزنه. mess یعنی جای بهم ریخته و شلوغ پلوغ. به نرمافزارهایی میگن که کدهای تمیزی ندارن و نظم و ترتیب و قاعدهی خاصی وجود نداره توشون. از best practiceها توشون استفاده نمیشه. کدهاشون اسپاگتیه و ... . چندتا اصطلاح دیگه هم به کار برده اینجا که من باتلاق رو انتخاب کردم.
باتلاقها سرعت ما رو میگیرن ولی ما رو متوقف نمیکنن! باتلاقها از کوچههای بن بست هم بدترن. چرا؟ 🤔 چون آدم فکر میکنه میتونه به راهش ادامه بده و بالاخره به یه جایی برسه، و فکر میکنه این راه از راه برگشت کوتاهتره (ولی خب... نیست).
هیچ چیزی به اندازهی یه باتلاق رو بهرهوری یه تیم نرمافزاری تاثیر نمیذاره. هیچ چیز.
یه جایی از کار بالاخره آدم متوجه میشه که تو طراحی سیستم اشتباه کرده و این سیستم واسه پروژههای بزرگتر از این جواب نمیده (scale نمیشه). این نقطهی عطفه. اینجا میشه برگشت و طراحی رو اصلاح کرد یا میشه به مسیر قبلی ادامه داد. برگشتن به نظر هزینهبر میاد چون کد فعلی رو ریفکتور یا بازنویسی کرد ولی برگشتن تو این لحظه، کمهزینه ترین برگشته و از این به بعد هزینهش فقط بیشتر میشه! اگه به مسیر قبلی ادامه بدیم، پروژه رو کم کم به یه باتلاق تبدیل میکنیم.
توسعه دهندههای حرفهای از باتلاقها به مراتب بیشتر از کوچههای بن بست میترسن. همیشه حواسشون به باتلاقهای در حال شکلگیری هست و هر کاری لازم باشه انجام میدن تا تو کوتاهترین زمان ممکن از شروشون خلاص شن.