
Become a Better Coder by Learning How (Not) to Program
دنیای توسعه نرمافزار، دنیایی پرشتاب، پیچیده و به شدت رقابتی است. شما به عنوان یک برنامهنویس تازهکار یا فردی که در مسیر یادگیری و ارتقای مهارتهای کدنویسی قرار دارد، همواره با یک دغدغه اصلی روبرو هستید: چگونه میتوانم در سریعترین زمان ممکن به یک توسعهدهنده خلاق، سازنده و ارزشمند تبدیل شوم؟ ورود به بازار کار و پیوستن به تیمهای نرمافزاری، نیازمند آمادگی برای مواجهه با چالشهای واقعی است. شما در محیط کار با همکارانی روبرو خواهید شد که موفقیت پروژه و بدون باگ بودن کدها برای آنها در اولویت نخست قرار دارد. این همکاران متخصص، در واقع دروازهبانان کیفیت نرمافزار هستند. آنها کدهای شما را در جلسات بازبینی کد به دقت بررسی میکنند و مشارکتهای شما را بر اساس استانداردهای تیمی، یا میپذیرند یا رد میکنند. هدف نهایی تمام اعضای تیم این است که شما کدی بنویسید که از هر نظر بینقص، کارآمد و مطابق با بالاترین استانداردهای مهندسی باشد.
اما پرسش اساسی و حیاتی این است که چگونه باید برای رسیدن به چنین سطحی از مهارت برنامهریزی کرد؟ در نگاه اول، منطقیترین راهکار این است که به سراغ مطالعه بهترین شیوهها و الگوهای برتر برنامهنویسی بروید و سعی کنید آنها را در پروژههای خود پیادهسازی کنید. با این حال، واقعیت پنهان در صنعت نرمافزار این است که بحث بر سر اینکه «بهترین روش برنامهنویسی چیست»، یکی از حساسترین، بحثبرانگیزترین و پرچالشترین موضوعات در میان توسعهدهندگان است. این کتاب با درک عمیق از این چالش بزرگ، رویکردی کاملاً متفاوت و انقلابی را برای آموزش برنامهنویسی به شما پیشنهاد میدهد.
برای درک بهتر این موضوع، کافی است در یک جمع از برنامهنویسان باتجربه، سوالی درباره بهترین الگوهای کدنویسی بپرسید؛ این یکی از سادهترین راهها برای شعلهور کردن یک بحث طولانی و بیپایان در دنیای فناوری است. همانطور که در یک ضربالمثل قدیمی درباره اقتصاددانان گفته میشود که اگر از سه اقتصاددان یک سوال بپرسید، چهار پاسخ متفاوت دریافت خواهید کرد، در دنیای برنامهنویسی نیز وضعیت دقیقاً به همین شکل است. اگر از سه برنامهنویس ارشد درباره بهترین رویکرد در یک موضوع خاص سوال کنید، قطعاً سه پاسخ کاملاً متفاوت دریافت خواهید کرد و احتمالاً بحث به سرعت بالا خواهد گرفت.
سوالات معمولی که همواره باعث اختلاف نظر میشوند عبارتند از اینکه آیا استفاده از دستورهای پرش در کدنویسی مجاز است؟ بهترین سیاست و الگو برای نامگذاری متغیرها چیست؟ چه سطحی از پیچیدگی برای یک زیربرنامه یا تابع قابل قبول است؟ حداکثر اندازه استاندارد برای یک کلاس نرمافزاری چقدر باید باشد؟ یا اینکه دقیقاً چه حجمی از کدهای نوشته شده باید توسط تستهای خودکار پوشش داده شوند؟
در یک دنیای آرمانی و بینقص، ما پاسخهایی ساده، سرراست و قطعی برای تمام این پرسشها داشتیم. اما همانطور که نویسنده کتاب با ظرافت اشاره میکند، دنیایی که در آن پنج قسمت از مجموعه فیلمهای دزدان دریایی کارائیب ساخته میشود، فرسنگها با یک دنیای بینقص فاصله دارد. حقیقت محض این است که در هر موقعیت خاص نرمافزاری، ممکن است چندین راهحل کاملاً قابل قبول و منطقی وجود داشته باشد. به ندرت پیش میآید که یک الگوی برتر، در تمامی بسترها و پروژهها بدون نقص عمل کند. به همین دلیل است که تکیه صرف بر یادگیری الگوهای برتر، نمیتواند شما را برای رویارویی با تمام چالشهای دنیای واقعی آماده کند.
کلمات کلیدی:تجربه دههها توسعه نرمافزار ثابت کرده است که برنامهنویسان در مورد اینکه «چگونه نباید برنامهنویسی کرد»، بسیار سریعتر و راحتتر به توافق میرسند. این همان نقطه عطفی است که این کتاب استراتژی آموزشی خود را بر روی آن بنا کرده است. به جای تمرکز بر روی مفاهیم انتزاعی بهترین شیوهها، کافی است از جامعه برنامهنویسان بپرسید: آیا باید کدی بنویسم که مطلقاً هیچ توضیح و کامنتی نداشته باشد؟ آیا باید متغیرهای سراسری را به متغیرهای محلی ترجیح دهم؟ یا اگر احتمال دارد مقدار یک اشارهگر خالی باشد، آیا میتوانم از بررسی مقدار آن چشمپوشی کنم؟
در پاسخ به این پرسشها، شما شاهد یک اجماع نظر قدرتمند و یکپارچه خواهید بود: پاسخی قاطعانه، بلند و سرشار از مخالفت! تعداد بیشماری از الگوهای مخرب و شیوههای فاجعهبار در برنامهنویسی وجود دارند که رویارویی با آنها، چهره برنامهنویسان باتجربه را از خشم برافروخته میکند یا آنها را در ترسی عمیق فرو میبرد. حقیقت غیرقابل انکار این است که شما در طول مسیر حرفهای خود، به خصوص در سالهای اولیه یادگیری و کارآموزی، ناگزیر کدهایی خواهید نوشت که چنین واکنشهای شدیدی را در پی خواهد داشت.
کلید طلایی برای شتاب بخشیدن به روند توسعه فردی شما به عنوان یک برنامهنویس، این است که در سریعترین زمان ممکن بیاموزید کدام شیوهها و الگوها مخرب هستند و سپس با تمام توان از آنها دوری کنید. این اثر ارزشمند، به جای اینکه به شما دیکته کند چگونه باید کد بنویسید، با بهرهگیری از دههها تجربه عملی، به شما نشان میدهد که از چه کارهایی باید به شدت پرهیز کنید. دنیای برنامهنویسی به طور مداوم در حال تغییر و تکامل است؛ رویکردهای جدید کشف میشوند و تکنیکهای موجود بهبود مییابند. یک لیست از بهترین شیوهها، خیلی زود منقضی و قدیمی میشود. اما کدهای مخرب و اشتباهات بنیادین، همواره در طول زمان ثابت ماندهاند. ترکیب تجربه توسعهدهندگان ارشد و تحقیقات علمی نشان میدهد که چه کارهایی به شدت بد عمل میکنند و باید از آنها اجتناب کرد. دوری از این الگوهای فاجعهبار، محکمترین قدمی است که میتوانید برای تبدیل شدن به یک برنامهنویس سازنده و حرفهای بردارید.
یکی از بارزترین ویژگیهایی که این کتاب را از تمام منابع آموزشی دیگر متمایز میکند، سبک نگارش بسیار خاص، کنایهآمیز و طنزآلود آن است. نویسنده به جای استفاده از لحن خشک و آکادمیک، راهنماییهای خود را به گونهای ارائه میدهد که گویی خواننده به دنبال تبدیل شدن به یک شکستخورده تمامعیار در برنامهنویسی است! کتاب به شما میآموزد که چگونه به برنامهنویسی تبدیل شوید که تمام قوانین را زیر پا میگذارد، بدترین شیوهها را دنبال میکند و کدهایی مینویسد که همواره در جلسات بازبینی رد میشوند یا اگر به طور اتفاقی تایید شوند، باگهای وحشتناکی در نرمافزارهای سالم ایجاد میکنند.
این رویکرد روانشناختی معکوس، خواندن این کتاب را به تجربهای بینهایت لذتبخش، سرگرمکننده و در عین حال آموزنده تبدیل کرده است. شما در حین خندیدن به اشتباهات اغراقآمیز، عمیقترین مفاهیم مهندسی نرمافزار را در ذهن خود حک میکنید. البته در میان این توصیههای کنایهآمیز، گهگاه صدایی منطقی به گوش میرسد که با جدیت توضیح میدهد چرا جامعه برنامهنویسان یک رویه خاص را به شدت بد میدانند. این دلایل منطقی که ریشه در اجماع متخصصان یا تحقیقات تجربی دارند، در بخشهای ویژهای با عنوان نشانهای هشداردهنده ارائه میشوند تا تعادل کاملی میان طنز و آموزش تخصصی برقرار شود.
برای شروع درست یادگیری برنامهنویسی، ابتدا باید درک درستی از ماهیت آن داشته باشیم. نویسنده کتاب با بیش از دو دهه تجربه کار با نرمافزارها، برنامهنویسی را اساساً به عنوان فرایند حل مسئله تعریف میکند. به بیان ساده، کار یک برنامهنویس از نقطه آغازین با یک صورت مسئله شروع میشود و وظیفه او ترسیم مسیری به سوی هدف نهایی است؛ هدفی که در نهایت به شکل یک سیستم نرمافزاری برای حل آن مسئله با کیفیت قابل قبول نمود پیدا میکند.
این سفر از نقطه مبدا تا مقصد نهایی، ممکن است بسیار طولانی باشد و مراحل پیچیده بسیاری را در بر بگیرد. برای درک بهتر، نویسنده برنامهنویسی را به دو دسته کلی تقسیم میکند. نوع اول، برنامهنویسی در معنای محدود و تخصصی آن است که بسیاری از افراد آن را صرفاً با نام کدنویسی میشناسند. در این سطح، مسئلهها معمولاً شامل نرمافزارهای ناقص یا خراب هستند و راهحل، نوشتن کدی برای رفع این نواقص است.
نوع دوم، برنامهنویسی در معنای گستردهتر آن است که میپذیرد کدنویسی تنها بخش کوچکی از کار است. در این سطح که اغلب از آن با عنوان مهندسی نرمافزار یاد میشود، هدف ارائه یک راهحل جامع، با کیفیت بالا و کاملاً قابل قبول برای کاربر نهایی است. این فرایند شامل تحلیل نیازمندیها، طراحی معماری سیستم، تستهای پذیرش، و ارتباطات و همکاریهای گسترده درونتیمی و برونتیمی است. تمرکز اصلی و حیاتی این کتاب، بر روی برنامهنویسی در معنای محدود آن، یعنی هنر کدنویسی ناب است. دلیل این انتخاب هوشمندانه آن است که مخاطبان هدف این اثر، یعنی دانشجویان علوم رایانه، کارآموزان و توسعهدهندگان تازهکار، باید پیش از ورود به مباحث کلان مهندسی نرمافزار، در فعالیتهای مرتبط با کدنویسی به بالاترین سطح از تسلط و مهارت دست یابند.
با وجود تمرکز بر روی کدنویسی خالص، مفاهیم گستردهتر مهندسی نرمافزار به صورت گذرا در سراسر کتاب خودنمایی میکنند. به عنوان مثال، فصلهای پایانی کتاب به شکلی تخصصی به موضوع تست نرمافزار میپردازند؛ موضوعی که بحث را از کدنویسی صرف فراتر برده و به سمت خلق راهحلهایی که برای کاربران نهایی کاملاً پذیرفته و بدون نقص باشند، هدایت میکند. با مطالعه دقیق این اثر، شما نه تنها در نوشتن کدهای تمیز مهارت پیدا میکنید، بلکه پایههای تفکر مهندسی را نیز در ذهن خود پرورش میدهید.
یکی از مهمترین و جذابترین بخشهای ویرایش جدید این کتاب، پرداختن به بزرگترین انقلاب تاریخ معاصر برنامهنویسی است. از زمان انتشار ویرایش اول این اثر، هوش مصنوعی جهان فناوری را به تسخیر خود درآورده است. امروزه ما از ابزارهای هوش مصنوعی و چتباتها میخواهیم تا بخش عمدهای از تفکر تحلیلی را به جای ما انجام دهند؛ از توسعه استراتژیهای بهینهسازی موتورهای جستجو گرفته تا پیشنهاد دستور پخت غذا. هوش مصنوعی مولد به شکلی غافلگیرکننده و گاه شوکهآور خلاق است، و این موضوع باعث شده تا بسیاری از توسعهدهندگان نرمافزار این پرسش اساسی را مطرح کنند: آیا میتوانم از هوش مصنوعی بخواهم کدهای مرا برایم بنویسد؟
نویسنده در ویرایش دوم این کتاب، فصل کاملاً جدید و جامعی را برای پاسخ به این پرسش حیاتی اختصاص داده است. پاسخ کوتاه به این پرسش مثبت است، اما با یک هشدار بسیار بزرگ: شما باید نهایت احتیاط را به خرج دهید. همانند سایر فصلهای کتاب، این بخش جدید نیز به جای آنکه به شما بگوید چگونه از ابزارهای جدید استفاده کنید، به شما هشدار میدهد که از چه اقداماتی در تعامل با هوش مصنوعی باید اکیداً خودداری کنید.
راههای بیشماری وجود دارد که هنگام کمک گرفتن از هوش مصنوعی، ناخواسته به پروژه نرمافزاری خود آسیب وارد کنید. سرعت سرسامآوری که یک ربات هوشمند میتواند کدهای دردسرساز و پر از اشکال تولید کند، به این معناست که قدرت شما برای وارد کردن خطاهای بنیادین و الگوهای مخرب به سیستم، به شکل وحشتناکی افزایش یافته است. همانقدر که هوش مصنوعی به توسعهدهندگان وظیفهشناس قدرت خلق کدهای بینظیر را میدهد، به همان اندازه نیز به برنامهنویسان بیتجربه توانایی وارد کردن خسارتهای جبرانناپذیر را میبخشد.
در حال حاضر که هوش مصنوعی مولد هنوز در دوران جوانی خود به سر میبرد، الگوهای بیشماری در خصوص استفاده از آن در برنامهنویسی شکل گرفته است؛ الگوهایی که برخی از آنها خوب و بسیاری از آنها به شدت مخرب هستند. این فصل جدید و بینظیر، مهمترین این الگوها را پوشش داده و با همان سبک طنزآمیز و کنایهدار خاص خود، به شما میآموزد که چگونه از افتادن در تله کدهای فاجعهبار تولید شده توسط ماشینها جان سالم به در ببرید.
این کتاب تنها یک راهنمای تئوری نیست، بلکه یک ابزار کار روزانه برای برنامهنویسان است. داشتن این مرجع ارزشمند بر روی میز کارتان، به شما یادآوری میکند که پیش از ارسال هر قطعه کد برای بازبینی، آن را از فیلتر الگوهای مخرب عبور دهید. مطالعه عمیق این مفاهیم، نیازمند تمرکز و خطکشی زیر نکات کلیدی است تا در لحظات حساس توسعه نرمافزار، به صورت ناخودآگاه مانع از تایپ کدهای آسیبرسان شود. با تهیه این کتاب، شما در واقع یک مربی سختگیر اما خوشزبان را به تیم توسعه خود اضافه میکنید که همواره شما را از ارتکاب اشتباهات مرگبار نرمافزاری بازمیدارد.
نمونه چاپ کتاب موجود نیست.
نظرات کاربران (0)