رابرت سی. مارتین در فصل اول کتاب "The Clean Coder"، مفهوم "حرفهایگری" در توسعه نرمافزار را معرفی کرده و به اهمیت مسئولیتپذیری در این حرفه میپردازد. او با زبانی ساده اما عمیق، راهنماییهایی را برای برنامهنویسان ارائه میدهد تا به توسعهدهندگان نرمافزاری حرفهای تبدیل شوند. در این فصل، او تجربیات شخصی و داستانهایی را از زندگی حرفهای خود به اشتراک میگذارد که به روشنی نشان میدهد چگونه حرفهایها باید در برابر اشتباهات خود پاسخگو باشند.
حرفهایگری چیست؟
حرفهایگری به معنای مسئولیتپذیری و انجام کار با استانداردهای بالاست. این به معنای افتخار به کار خود و همچنین تحمل مسئولیت خطاها و مشکلات است. یک فرد حرفهای در توسعه نرمافزار نه تنها به دلیل مهارتهای فنی خود، بلکه به دلیل تعهد به کار و مسئولیتپذیری در برابر مشتریان و همکارانش شناخته میشود.
مارتین توضیح میدهد که حرفهای بودن شامل افتخار و مسئولیت است، اما این دو همیشه با هم هستند. نمیتوان به چیزی افتخار کرد اگر مسئولیت آن را نپذیرفت. او به این نکته اشاره میکند که غیرحرفهایها تمایل دارند که مسئولیت نتایج کار خود را به کارفرما محول کنند. اما حرفهایها مسئولیت اشتباهات خود را میپذیرند و تلاش میکنند که آنها را اصلاح کنند.
مسئولیتپذیری و قبول اشتباهات!
مارتین تأکید میکند که حرفهای بودن به معنای قبول مسئولیت است، حتی زمانی که شرایط سخت میشود. او داستانی را بازگو میکند که در سال ۱۹۷۹، زمانی که برای یک شرکت به نام Teradyneکار میکرد، تجربه کرده بود. او مسئول نرمافزاری بود که خطوط تلفن را کنترل میکرد و به دلیل فشار برای تحویل بهموقع، یک بخش مهم از نرمافزار را بدون تست کافی به مشتریان ارسال کرد. نتیجه آن بود که مشتریان شبانه دادههای خود را از دست دادند و مدیران خدمات از او شکایت کردند.
مارتین از این تجربه به عنوان یک درس بزرگ یاد میکند. او متوجه شد که دلیل اصلی این اشتباه، تمرکز بر حفظ وجهه و تحویل به موقع نرمافزار بود، نه تمرکز بر مشتری و کیفیت کار. او تأکید میکند که حرفهایها باید همیشه آماده باشند تا در برابر مشکلات احتمالی که ممکن است به دلیل اشتباهاتشان به وجود آید، پاسخگو باشند.
قانون شماره 1 آسیب نزن (First, Do No Harm)
یکی از اصول کلیدی که مارتین بیان میکند، استفاده از قانونی مشابه با "سوگند بقراط" در پزشکی است: "آسیب نزن". این اصل به معنای این است که توسعهدهندگان نرمافزار باید مطمئن شوند که کدهای آنها به عملکرد یا ساختار نرمافزار آسیب نمیرساند. اگرچه ایجاد نرمافزاری بدون خطا ممکن است غیرممکن به نظر برسد، مارتین تأکید میکند که توسعهدهندگان باید مسئولیت خطاهای خود را بپذیرند و برای کاهش نرخ خطاها تلاش کنند.
او به اهمیت تست کردن کدها به طور مکرر اشاره میکند و تأکید دارد که همهی کدها باید تحت تستهای واحد (Unit Tests) قرار بگیرند. این تستها باید به گونهای طراحی شوند که هر خط کد را پوشش دهند. او بیان میکند که تست کردن به صورت خودکار و منظم، بخش ضروریای از حرفهایگری در توسعه نرمافزار است.
قانون شماره 2 آسیب نزدن به ساختار نرمافزار (Do No Harm to Structure)
حرفهایهای نرمافزار نه تنها به عملکرد صحیح نرمافزار توجه میکنند، بلکه به ساختار آن نیز اهمیت میدهند. مارتین تأکید میکند که تحویل عملکرد به قیمت از دست دادن ساختار خوب، یک اشتباه است. او بیان میکند که اگر ساختار نرمافزار به درستی نگهداری نشود، هزینههای تغییر و نگهداری نرمافزار در آینده بسیار بالا خواهد بود.مارتین توصیه میکند که توسعهدهندگان باید به طور مداوم کد خود را بازنگری کنند و بهبود دهند. او این فلسفه را "بازسازی بیرحمانه" (Merciless Refactoring) مینامد و به "قانون پیشآهنگی" اشاره میکند.
قانون شماره 3 اخلاق کاری (Work Ethic) و تعهد به یادگیری مداوم
یکی از بخشهای مهم به اخلاق کاری و تعهد به یادگیری مداوم اختصاص دارد. مارتین تأکید میکند که حرفهایها باید بخشی از زمان خود را به بهبود مهارتهایشان اختصاص دهند. او توصیه میکند که توسعهدهندگان حداقل ۲۰ ساعت در هفته را برای یادگیری، تمرین و بهبود مهارتهای خود صرف کنند، جدا از ۴۰ ساعت کاری که برای کارفرما انجام میدهند.
مارتین بیان میکند که انتظار نداشته باشید که کارفرمای شما مسئول توسعه مهارتهای شما باشد. شما باید خودتان در این زمینه فعال باشید، کتاب بخوانید، به کنفرانسها بروید و در گروههای مطالعه شرکت کنید. این تعهد به یادگیری مداوم به شما کمک میکند که در حرفهی خود به روز بمانید و از دیگران پیشی بگیرید.
قانون شماره 4 تمرین و همکاری (Practice and Collaboration)
مارتین معتقد است که حرفهایها باید به طور مداوم تمرین کنند تا مهارتهای خود را بهبود بخشند. او به مفهوم "کاتا" اشاره میکند که در هنرهای رزمی استفاده میشود و آن را به توسعه نرمافزار منتقل میکند. او پیشنهاد میکند که برنامهنویسان میتوانند با حل مسائل ساده برنامهنویسی به صورت منظم، مهارتهای خود را تقویت کنند.همچنین، همکاری با دیگران یکی از بهترین روشهای یادگیری است. مارتین تأکید میکند که توسعهدهندگان حرفهای باید به صورت تیمی کار کنند، کدنویسی کنند، طراحی کنند و برنامهریزی کنند. این نوع همکاری به یادگیری و بهبود مستمر کمک میکند.
قانون شماره 5 شناخت حوزه کاری (Know Your Domain) و تواضع (Humility)
مارتین بر اهمیت شناخت کافی از حوزهای که در آن کار میکنید تأکید میکند. او معتقد است که توسعهدهندگان نرمافزار باید درکی از صنعت و زمینهای که برای آن نرمافزار مینویسند داشته باشند. این دانش به آنها کمک میکند که تصمیمات بهتری بگیرند و خطاهای احتمالی در مشخصات را شناسایی کنند.
در پایان، او به اهمیت تواضع در حرفهی توسعه نرمافزار اشاره میکند. برنامهنویسی یک عمل خلاقانه و در عین حال بسیار مغرورانه است. حرفهایها باید بدانند که ممکن است اشتباه کنند و آماده باشند که با فروتنی این اشتباهات را بپذیرند و از آنها درس بگیرند.
این فصل از کتاب "The Clean Coder" تأکید زیادی بر اهمیت حرفهایگری، مسئولیتپذیری، و یادگیری مستمر دارد. این مفاهیم برای هر برنامهنویس حرفهای که به دنبال بهبود خود و ارتقای حرفهایگری در صنعت نرمافزار است، حیاتی هستند.