لطفا جاواسکریپت مرورگر خود را فعال سازید!

نحوه فعال سازی در کروم
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
نحوه فعال سازی در فایرفاکس
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
نگاهی کوتاه به کتاب The Pragmatic Programmer: From Journeyman to Master

نگاهی کوتاه به کتاب The Pragmatic Programmer: From Journeyman to Master

کتاب The Pragmatic Programmer: From Journeyman to Master یا «برنامه‌نویس عملگرا: از متخصص به حرفه‌ای» توسط اندرو هانت و دیوید توماس نگاشته و در سال 1999 توسط انتشارات Addison-Wesley Professional منتشر شد (واژۀ Pragmatic از واژۀ لاتین Pragmaticus -به‌معنای خبره در تجارت- گرفته شده و این واژه، خود از یک واژۀ یونانی به‌معنای «عمل کردن» نشأت گرفته است.) پس به‌طور خلاصه می‌توان گفت که این کتاب اصلاً تئوریک نیست. در مقدمهٔ این کتاب آمده که این کتاب به شما کمک خواهد کرد تا برنامه‌نویس بهتری شوید. مهم نیست تنها کار ‌کنید، عضوی از تیم توسعۀ یک پروژۀ بزرگ باشید و یا این‌که به‌عنوان مشاور در آن واحد با مشتریان زیادی سروکار داشته باشید چراکه در هر صورت این کتاب به شما کمک خواهد کرد تا به‌عنوان یک «دولوپر»، بهتر کار کنید. محتوای این کتاب صرفاً تئوری نیست بلکه سعی شده تا بیشتر بر روی مباحث عملی و استفاده از تجربیات نویسندگانش در دستیابی به تصمیمات آگاهانه‌تر، تمرکز شود. 

برنامه‌نویسی یک هنر است. در ساده‌ترین حالت، برنامه‌نویسی به عملی اطلاق می‌شود که در طی آن شما کاری می‌کنید تا کامپیوتر کاری که شما می‌خواهید را انجام دهد.

شخصیت یک برنامه‌نویس از یک بخش شنونده، یک بخش مشاور، یک بخش مفسر و یک بخش فرمانده تشکیل شده است. یک برنامه‌نویس سعی می‌کند تا نیازهای خود یا دیگران را بشناسد و آن‌ها را به‌نحوی که برآوردن آن‌ها برای یک ماشین به‌راحتی قابل انجام باشد تعریف نماید.

او سعی می‌کند کار خود را مستند کند تا برای دیگران قابل فهم باشد و کار خود را مهندسی کند تا دیگران بتوانند آن‌را پایۀ کارهای بعدی قرار دهند. از همه مهم‌تر این‌که یک برنامه‌نویس همۀ این کارها را در حالی انجام می‌دهد که تیک‌تاک بی‌امان ساعت، نزدیک شدن به لحظۀ پایانی تحویل پروژه را به او یادآور می‌شود. یک برنامه‌نویس هر روز معجزه‌ای تازه می‌آفریند که چنین کاری اصلاً ساده نیست.

در این میان، افراد زیادی مدعی هستند که می‌خواهند کار را برای شما ساده‌تر کنند؛ تولیدکنندگان ابزار‌ها و نرم‌افزارهای کمکی، همواره از کارایی محصولات خود دم می‌زنند. گروه‌های مشاورۀ تجاری ادعا می‌کنند که تکنیک‌های پیشنهادی آن‌ها قطعاً نتیجه‌بخش خواهد بود. هرکسی معتقد است که زبان برنامه‌نویسی او بهترین زبان ممکن است و هر سیستم‌عاملی مدعی است که به همۀ نیازهای کاربران پاسخ داده است.

بدیهی است که هیچ‌کدام از این ادعاها درست نیستند؛ یک راه‌حل واحد همیشه نمی‌تواند بهترین باشد. یک زبان برنامه‌نویسی خاص، یک ابزار خاص، یک سیستم‌عامل خاص و ... نمی‌تواند همیشه بهترین پاسخ برای همۀ نیازها را ارائه دهد. در این عرصه، بحثِ همیشه بهترین بودن مطرح نیست بلکه بحث اصلی این است که هر ابزار، زبان، نرم‌افزار و ... در شرایط خاصی می‌تواند مناسب‌ترین گزینه باشد.

اینجا است که پای عمل‌گرایی به میان می‌آید؛ لزومی ندارد به یک تکنولوژی خاص وفادار بمانید بلکه لازم است پس‌زمینۀ ذهنی خود را تقویت نموده و با تکنولوژی‌های متنوع تجربیاتی داشته باشید تا در شرایط خاص بتوانید تصمیمات درست‌تری بگیرید. درک شما از اصول علم کامپیوتر، پس‌زمینۀ ذهنی شما را شکل می‌دهد و تجربۀ شما از حضور در پروژه‌های متعدد ناشی می‌شود و بدین صورت است که تئوری و عمل در کنار یکدیگر، شما را قدرتمندتر می‌کنند.

با تکیه بر دانش و تجربۀ خود، هر بار که با موقعیت جدیدی روبه‌رو می‌شوید، رویکرد خود را باتوجه به شرایط و محیط تغییر می‌دهید و در مورد اهمیت نسبی تک‌تک عوامل مؤثر بر پروژه قضاوت نموده و بهترین راه‌حل را پیدا می‌کنید. این دقیقاً همان کاری است که برنامه‌نویسان عمگرا انجام می‌دهند.

چه کسانی باید این کتاب را بخوانند؟
اگر گاهی احساس سرخوردگی دارید و حس می‌کنید که به توانایی بالقوۀ خود دست پیدا نکرده‌اید، اگر وقتی به همکاران خود نگاه می‌کنید متوجه می‌شوید که آن‌ها در مقایسه با شما از ابزارهای بهتر و کاربردی‌تری استفاده می‌کنند و اگر از تکنولوژی‌های قدیمی استفاده می‌کنید و می‌خواهید با ایده‌های جدید در زمینۀ کاری خود آشنا شوید، این کتاب برای شما است. گروه هدف این کتاب همۀ برنامه‌نویسانی هستند که می‌خواهند نقش مؤثرتر و سازنده‌تری در حرفۀ خود داشته باشند.

نویسندگان این کتاب نه ادعا می‌کنند که در این کتاب به همۀ (و یا اکثر) سؤالات پاسخ داده‌ و نه می‌گویند که ایده‌هایشان در همۀ موقعیت‌ها کارساز است. تنها ادعای آن‌ها این است که اگر از روش ایشان پیروی کنید، در زمان کوتاه‌تری تجربیات بیشتری به‌دست می‌آورید، کارایی شما افزایش می‌یابد، به بخش‌های مختلف مرتبط با کار خود مسلط‌تر می‌شوید و می‌توانید نرم‌افزارهای بهتری بنویسید.

در ادامهٔ مقدمهٔ کتاب The Pragmatic Programmer: From Journeyman to Master آمده:
هر دولوپری، شخصیتی منحصربه‌فرد دارد که مانند هر شخص دیگری علائق و ترجیحاتی دارد؛ درست مانند نحوۀ پوشش، مدل مو، طرز صحبت کردن و ... که زندگی روزمرۀ یک فرد را می‌سازند، علائق و ترجیحات شخصی یک دولوپر نیز در طول زمان بر برنامه‌هایی که می‌نویسد تأثیرگذار بوده و به آن‌ها شکل می‌دهد. به‌طور‌کلی، ویژگی‌های مشترک میان دولوپرهای عملگرا در دسته‌های زیر تقسیم‌بندی می‌شوند:

علاقه‌مندی به تکنولوژی‌های جدید: آن‌ها به یک تکنولوژی خاص وفادار نمی‌مانند. این افراد غریزه و کشش خاصی به تکنولوژی‌ها و تکنیک‌های جدید داشته و دوست دارند که همه چیز را تجربه کنند. هنگامی که با چیز جدیدی روبه‌رو می‌شوند، به‌راحتی می‌توانند آن‌را درک نموده و تجربۀ حاصل از آن‌را با دانش قبلی خود ترکیب نمایند.

کنجکاوی: آن‌ها همیشه و در مورد همه چیز سوال می‌پرسند و جستجو می‌کنند؛ گاهی به‌نظر می‌رسد که سؤالات آن‌ها تمامی ندارد اما واقعیت این است که آن‌ها با یافتن پاسخ هر سؤال، تغییری هرچند اندک در روند تصمیم‌گیری خود ایجاد می‌کنند.

تفکر انتقادی: این افراد اهل چالش هستند و علاقه‌ای ندارند که چیزی را بدون آگاهی و دلیل بپذیرند.

واقع‌گرایی: آن‌ها سعی می‌کنند به ماهیت آنچه که خود را در چهرۀ یک مشکل نشان داده پی ببرند؛ این واقع‌گرایی به آن‌ها کمک می‌کنند تا دید گسترده‌تری نسبت به مشکلات پیدا کرده و در مقابل آن‌ها عملکرد قوی‌تری داشته باشند.

همه فن حریف بودن: آن‌ها دائماً در تلاشند تا با مجموعۀ گسترده‌ای از تکنولوژی‌ها و محیط‌های برنامه‌نویسی جدید آشنا شده و همواره از تحولات جدید آگاه شوند. آن‌ها در کار خود خبره هستند؛ به محیط، ابزار و یا زبان خاصی وابسته نبوده و در صورت نیاز می‌توانند در شرایطی کاملاً جدید به کار خود ادامه دهند.

ساختار این کتاب چگونه است؟
کتاب The Pragmatic Programmer در 8 فصل مجزا نوشته شده است؛ برای خواندن این کتاب نیازی نیست تا آن‌را از اول به آخر بخوانید زیرا هر فصل از این کتاب موضوع خاصی را پوشش داده و خواندن هیچ فصلی پیش‌نیاز فصل‌های دیگر نیست.

در جاهای مختلف کتاب، ممکن است به مسائل مهمی بربخورید که در قالب یکسری نکات شماره‌گذاری شده در کادرهای مشخصی مطرح شده‌اند. در ضمن مجموعه‌ای از همۀ نکات مهم نیز در یک کارت جداگانه به‌همراه این کتاب در اختیار شما قرار می‌گیرد.

همچنین این کتاب شامل ۲ پیوست است؛ پیوست اول -کتاب شناسی- آدرس سایت‌های منبع و فهرستی از نشریات، کتاب‌ها و سازمان‌های حرفه‌ای توصیه شده مرتبط با بحث کتاب را دربرمی‌گیرد و در بخش‌های مختلف کتاب، تمرینات و چالش‌های متناسب با موضوع مورد بحث گنجانده شده است.

تمرین‌ها، پاسخ‌های ساده و مشخصی دارند درحالی‌که چالش‌های برنامه‌نویسی مطرح شده گسترده‌تر بوده و پاسخ‌های متنوعی برای آن‌ها امکان پذیر است. برای این‌که ایده‌ای برای فکر کردن در اختیار شما قرار گیرد، پاسخ تمرینات در پیوست دوم ذکر شده است (دقت داشته باشید که در اکثر موارد بیش از یک پاسخ درست وجود دارد.) چالش‌ها می‌توانند به‌عنوان موضوع بحث‌های گروهی و یا در سطوح پیشرفته‌تر، به‌عنوان موضوعی برای نگارش یک مقاله مد نظر قرار گیرند.

سخن پایانی
هر چند کتاب The Pragmatic Programmer: From Journeyman to Master کتاب جدیدی نیست و سال‌ها از اولین انتشار آن می‌گذرد، اما نظرات متنوعی در تحسین این کتاب از سوی افراد مختلف مطرح شده است که از آن جمله می‌توان به Martin Fowler نویسندۀ کتاب Refactoring and UML Distilled اشاره کرد که در مورد این کتاب چنین گفته است:

یک نسخه از اون رو می‌خرم، ۲ بار می‌خونمش و سپس به همۀ همکارانم می‌گویم که برن و یک نسخه از اون رو برای خود بخرن. این کتابیه که هیچ‌وقت اون رو به کسی قرض نخواهم داد زیرا ممکنه دیگه برنگردوننش!

آیا پیش از این کتاب The Pragmatic Programmer: From Journeyman to Master را مطالعه کرده‌اید؟ آیا با مقدمه‌ای که در مورد این کتاب نوشته شده است موافقید؟ نظرات و دیدگاه‌های خود را با ما و سایر کاربران سکان آکادمی به اشتراک بگذارید.

منبع


رائفه خلیلی