رابرت سی. مارتین،در فصل ششم کتاب "The Clean Coder"، به اهمیت تمرین کردن برای برنامهنویسان حرفهای میپردازد. او این مفهوم را با تمرینهای حرفهای در حوزههای دیگر مقایسه میکند: نوازندگان موسیقی، ورزشکاران، جراحان، وکلا، و سربازان همگی برای بهبود مهارتهای خود به تمرینهای مداوم و مستمر نیاز دارند. برای برنامهنویسان حرفهای نیز این موضوع صادق است. این فصل به معرفی روشها و تکنیکهای مختلف برای تمرین برنامهنویسی و بهبود مهارتها میپردازد.
تاریخچهای از تمرین در برنامهنویسی
مارتین توضیح میدهد که تمرین در توسعه نرمافزار یک مفهوم جدید نیست، اما تا اوایل دهه ۲۰۰۰ این موضوع به عنوان یک مفهوم رسمی در این حوزه شناخته نشده بود. برای مثال، برنامه معروف "Hello, World" که در کتاب K&R-C آمده است، به عنوان یک نمونه تمرین اولیه برای یادگیری یک زبان جدید استفاده میشود. هر برنامهنویسی که در حال یادگیری یک زبان یا محیط جدید است، این برنامه ساده را مینویسد تا مطمئن شود که محیط و ابزارها به درستی تنظیم شدهاند.
او همچنین به تجربههای خود در دهه ۸۰ اشاره میکند، زمانی که اولین کامپیوترهای شخصی وارد بازار شدند. او به عنوان یک برنامهنویس، زمانی که از کنار کامپیوترهایی مانند VIC-20، Commodore-64 یا TRS-80 میگذشت، برنامههای سادهای مینوشت تا از عملکرد آنها اطمینان حاصل کند. این برنامهها به نوعی اولین تمرینهای او بودند، اما به گفتهی او، برنامهنویسان آن زمان به طور کلی به مفهوم "تمرین" در معنای امروزی آن فکر نمیکردند.
تغییرات در رویکرد تمرین و نیاز به آن
مارتین اشاره میکند که اگرچه قدرت محاسباتی کامپیوترها به طور چشمگیری افزایش یافته است، اما اصول اولیه برنامهنویسی مانند استفاده از "if" و "while" و دستورات تخصیص (assignments) همچنان تغییر چندانی نکردهاند. او به مقایسه کامپیوترهای قدیمی مانند PDP-8/I با لپتاپهای امروزی مانند مکبوک پرو میپردازد و میگوید که با وجود این پیشرفتهای عظیم، ما هنوز با همان اصول برنامهنویسی سروکار داریم.
او توضیح میدهد که با این حال، رویکرد ما به برنامهنویسی به طور چشمگیری تغییر کرده است. امروزه برنامهنویسان میتوانند در چرخههای سریع "قرمز-سبز-بازسازی" (Red-Green-Refactor) عمل کنند و به سرعت بازخورد بگیرند. این فرآیند سریع نیازمند تصمیمگیریهای سریع و دقیق است و این نیاز به تمرین را دوچندان میکند.
تمرین در هنرهای رزمی و برنامهنویسی
مارتین هنرهای رزمی را به عنوان مثالی برای تمرین مستمر در برنامهنویسی معرفی میکند. در هنرهای رزمی، جنگجویان با انجام تمرینهای تکراری و دقیق حرکات، مهارتهای خود را بهبود میبخشند. برنامهنویسان نیز باید مانند هنرمندان رزمی، تمرینهای تکراری را برای تسلط بر تکنیکها و روشهای برنامهنویسی انجام دهند.
کدنویسی دوجو (Coding Dojo)
یکی از روشهای مهم برای تمرین برنامهنویسی، "کدنویسی دوجو" است. در این روش، برنامهنویسان با هم یا به صورت فردی، به تمرین حل مسائل برنامهنویسی میپردازند. مارتین به تجربه خود در یک جلسه Coding Dojo در کنفرانس XP2005 اشاره میکند که در آنجا با دیگر برنامهنویسان برای نوشتن بازی Conway’s Game of Life با استفاده از TDD کار کردهاند. این روش تمرینی به برنامهنویسان کمک میکند تا تکنیکها و مهارتهای خود را در یک محیط تیمی تقویت کنند.
انواع تمرینها در دوجو (Types of Dojo Practices)
مارتین انواع مختلفی از تمرینها را معرفی میکند که برنامهنویسان میتوانند در دوجو انجام دهند:
گسترش تجربه و تنوع در مسائل (Broadening Your Experience)
مارتین تأکید میکند که برنامهنویسان باید تلاش کنند تا تجربههای خود را گسترش دهند و با مسائل و زبانهای مختلف برنامهنویسی کار کنند. او توصیه میکند که برنامهنویسان باید با شرکت در پروژههای متنباز (Open Source) و یادگیری زبانها و پلتفرمهای جدید، مهارتهای خود را تقویت کنند. این تنوع در تجربهها میتواند به آنها کمک کند تا در مواجهه با تغییرات در صنعت نرمافزار، آمادهتر باشند.
اخلاق تمرین (Practice Ethics)
مارتین معتقد است که تمرین باید به صورت شخصی و در زمان خود فرد انجام شود. او تأکید میکند که وظیفه کارفرما نیست که به شما کمک کند تا مهارتهای خود را بهبود بخشید؛ بلکه این وظیفه شماست که زمان و انرژی لازم را برای تمرین و یادگیری اختصاص دهید. او بیان میکند که تمرین باید به گونهای باشد که مهارتهای شما را تقویت کند و به شما کمک کند که در حرفه خود موفقتر و مطمئنتر عمل کنید.
این فصل از کتاب "The Clean Coder" به وضوح نشان میدهد که چرا تمرین مستمر و منظم برای برنامهنویسان حرفهای ضروری است. با تمرین و تکرار، برنامهنویسان میتوانند مهارتهای خود را بهبود بخشند، تصمیمگیریهای سریعتری انجام دهند و در حرفه خود به موفقیت بیشتری دست یابند.