رابرت سی. مارتین،در فصل چهارم کتاب "The Clean Coder"، به یکی از مهمترین بخشهای حرفهی توسعه نرمافزار یعنی کدنویسی میپردازد. مارتین در این فصل به اصول، طرز فکر و رویکردهای شخصی خود برای نوشتن کد باکیفیت و تمیز اشاره میکند. او به وضوح بیان میکند که کدنویسی فقط به معنای نوشتن دستورات برای اجرا شدن توسط کامپیوتر نیست، بلکه شامل حالت ذهنی، رفتار و آمادگی عاطفی و ذهنی یک برنامهنویس نیز میشود. این فصل به چندین اصل و توصیه برای کدنویسی بهتر و مؤثرتر میپردازد که از تجربیات شخصی نویسنده الهام گرفته شدهاند.
آمادگی برای کدنویسی
کدنویسی یک فعالیت پیچیده و سخت است که نیاز به تمرکز، دقت، و انرژی ذهنی بالایی دارد. مارتین تأکید میکند که برای نوشتن کد خوب، یک برنامهنویس باید از لحاظ ذهنی، اخلاقی، و عاطفی آماده باشد. او بیان میکند که کدنویسی نباید در شرایطی انجام شود که تمرکز کامل وجود ندارد، زیرا کدی که در چنین شرایطی نوشته میشود، احتمالاً دارای اشکالات زیادی خواهد بود و نیاز به بازنویسی خواهد داشت. بنابراین، اگر برنامهنویس خسته یا حواسپرت باشد، بهتر است به جای کدنویسی، به حل مشکلات یا بهبود شرایط روحی خود بپردازد.
برای مثال، مارتین به تجربهای در دوران جوانی اشاره میکند که تصمیم گرفت در یک شب طولانی تمرین تایپ کور (بدون نگاه کردن به صفحه کلید) کند. او با تمرین مستمر متوجه شد که یکی از کلیدهای موفقیت در کدنویسی خوب، داشتن اعتماد به نفس و توانایی احساس اشتباهات است. این تجربه به او یاد داد که باید در هر زمینهای که میخواهد به مهارت برسد، اعتماد به نفس و حساسیت به اشتباهات خود را پرورش دهد.
کدنویسی ساعت ۳ صبح
یکی از مثالهای مهمی که مارتین در این فصل ذکر میکند، به تجربهای در سال ۱۹۸۸ برمیگردد که او و تیمش در یک استارتآپ مخابراتی به نام Clear Communications کار میکردند. او با کار مداوم و طولانیمدت در ساعت ۳ صبح، راهحل نامناسبی را برای یک مشکل انتخاب کرد که منجر به یک معماری ضعیف و پر از اشکال شد. این مشکل بارها و بارها بازگشت و تیم مجبور شد با افزودن "پچها" و اصلاحات متعدد، آن را بهبود بخشد.
این تجربه به مارتین یاد داد که کار کردن در ساعات طولانی شب و در شرایط خستگی، به معنای حرفهایگری نیست؛ بلکه نشانهای از عدم انضباط حرفهای است. او بر اهمیت خواب کافی و مراقبت از سلامتی برای حفظ کیفیت و بهرهوری تأکید میکند. او توصیه میکند که برنامهنویسان حرفهای به جای فداکاریهای بیجا و خستهکننده، بر حفظ تعادل بین کار و زندگی تمرکز کنند تا بتوانند هشت ساعت کار مؤثر در روز داشته باشند.
کدنویسی در شرایط نگرانی و استرس
مارتین همچنین به موضوع کدنویسی در شرایط نگرانیهای شخصی و استرس میپردازد. او بیان میکند که اگر برنامهنویس در حین کدنویسی به موضوعات دیگر فکر کند، نمیتواند به طور کامل تمرکز کند و کیفیت کار او به شدت کاهش مییابد. او به تجربیات شخصی خود اشاره میکند که چگونه نگرانیهای خانوادگی یا مشکلات شخصی میتواند تمرکز او را مختل کند و او را به نقطهای برساند که حتی قادر به نوشتن یک خط کد نباشد.
برای حل این مشکل، مارتین پیشنهاد میکند که برنامهنویسان زمان خاصی را برای حل و فصل مسائل شخصی اختصاص دهند، حتی اگر به معنای تماس با خانه یا صرف یک ساعت برای فکر کردن به مسائل مالی باشد. این کار به کاهش استرس و بهبود تمرکز کمک میکند.
وضعیتی ذهنی
حالت "فلو" یا "زون" وضعیتی ذهنی است که در آن برنامهنویس کاملاً غرق در کار خود شده و احساس میکند بسیار بهرهور و خلاق است. این حالت زمانی رخ میدهد که تمرکز ذهنی به شدت بالا میرود و فرد احساس میکند با سرعت بالایی پیش میرود. برنامهنویسان معمولاً این وضعیت را دوست دارند، زیرا حس میکنند که در این حالت میتوانند بدون وقفه به کدنویسی بپردازند و کارهای بیشتری را انجام دهند.
اما رابرت سی. مارتین هشدار میدهد که این وضعیت همیشه به نفع برنامهنویس نیست. او توضیح میدهد که در حالت "Flow"، تمرکز شدید روی جزئیات ممکن است باعث شود که برنامهنویس تصویر بزرگتر و اهداف کلی پروژه را نادیده بگیرد. در این وضعیت، برخی از عملکردهای منطقی و تحلیلی مغز کاهش مییابد و تصمیمات سریع و غیرمحتاطانهای گرفته میشود که ممکن است در آینده نیاز به بازبینی و اصلاح داشته باشند.
به عبارت دیگر، در حالی که در وضعیت "ّFlow" ممکن است حجم زیادی از کد نوشته شود، اما به دلیل نداشتن دید کلی، کیفیت تصمیمگیریها پایین میآید و احتمال خطا افزایش مییابد. به همین دلیل، مارتین پیشنهاد میکند که به جای تلاش برای ماندن در این وضعیت، برنامهنویسان باید تلاش کنند از این حالت خارج شوند و با استفاده از روشهایی مثل برنامهنویسی دونفره (گروهی) (Pair Programming) یا انجام کارهای متفرقه مثل پاسخگویی به ایمیلها، تعادل ذهنی خود را حفظ کنند.
برنامهنویسی دوتایی به این صورت است که دو برنامهنویس با هم روی یک مسئله کار میکنند و این همکاری باعث میشود که همواره دیدگاهی انتقادی نسبت به کار حفظ شود. در این حالت، یکی از افراد میتواند تمرکز خود را روی جزئیات بگذارد، در حالی که دیگری تصویر کلی را در نظر دارد. این روش کمک میکند تا از ورود به حالت "زون" که ممکن است به کاهش بهرهوری و افزایش اشتباهات منجر شود، جلوگیری شود.
اهمیت موسیقی و محیط کار (Music and Environment)
مارتین به تجربه خود در گوش دادن به موسیقی در حین کدنویسی اشاره میکند و بیان میکند که موسیقی، برخلاف تصورش، به تمرکز او کمک نمیکرد. او توضیح میدهد که گوش دادن به موسیقی در حین کدنویسی ممکن است برخی از منابع ذهنی لازم برای نوشتن کد تمیز و با طراحی خوب را مصرف کند. او نتیجهگیری میکند که برای برخی افراد، موسیقی ممکن است به تمرکز کمک کند، اما برای او، این کار بهرهوری واقعی را کاهش میدهد.
پرهیز از عجله و "امید" بیجا (Avoiding Rushing and False Hope)
مارتین به تأکید بر اجتناب از عجله و فشردگی زمانبندی میپردازد و بیان میکند که باید به جای تلاش برای انجام سریعتر کارها، به کاهش محدوده و بهبود برنامهریزی متعهد شد. او بیان میکند که توسعهدهندگان باید به ارزیابیهای اصلی خود پایبند باشند و از تغییرات ناگهانی و تصمیمات عجولانه پرهیز کنند.
او هشدار میدهد که عجله کردن و تلاش برای انجام سریعتر کارها بدون توجه به کیفیت، نه تنها به تأخیرها و مشکلات بیشتر منجر میشود، بلکه به اعتماد به نفس تیم نیز آسیب میزند.
کمک کردن و دریافت کمک
مارتین تأکید میکند که کدنویسی کار دشواری است و حتی بهترین برنامهنویسان نیز از کمک دیگران بهرهمند میشوند. او بیان میکند که کمک کردن به همکاران و همچنین درخواست کمک از دیگران، نشانهای از حرفهایگری است. او توصیه میکند که برنامهنویسان زمان خاصی را برای کمک به دیگران و دریافت کمک اختصاص دهند. همکاری و تبادل نظر با دیگران میتواند به بهبود کیفیت کد و تسریع فرآیند توسعه کمک کند.
فصل چهارم کتاب "The Clean Coder" بر اهمیت آمادگی ذهنی و محیط مناسب برای توسعهدهندگان نرمافزار تأکید میکند. مارتین نشان میدهد که کدنویسی تنها نوشتن کد نیست، بلکه نیازمند مدیریت هوشمندانه انرژی ذهنی، حفظ تمرکز، و ایجاد تعادل بین کار و زندگی است. او توصیه میکند که برنامهنویسان حرفهای باید به کیفیت کد، همکاری با دیگران، و حفظ انضباط حرفهای خود متعهد باشند تا بتوانند بهترین نتیجه را در کار خود به دست آورند. این اصول و توصیهها برای هر توسعهدهندهای که به دنبال بهبود مهارتهای خود و ارتقای حرفهایگری در صنعت نرمافزار است، ضروری و حیاتی است.