The Pragmatic Programmer, 2nd Edition
در دهه ۱۹۹۰، ما با شرکتهایی کار کردیم که پروژه هایشان مشکل داشت. بعد از مدتی به این نتیجه رسیدیم که به همهی آنها یک سری چیزهای یکسان را داریم میگوییم: شاید باید قبل از اینکه آن را تحویل میدادید، تستش میکردید؛ چرا کد فقط بر روی سیستم «ماری» بیلد میشود؟ چرا هیچکس از کاربران نمیپرسد؟
برای اینکه در ارتباط با مشتریان جدید خود وقت صرفه جویی کنیم، شروع به یادداشت برداری کردیم و آن یادداشتها تبدیل به کتابی به نام The Pragmatic Programmer شد. در کمال تعجب ما، به نظر میرسید که این کتاب درد مشترکی را بیان میکرد و در این ۲۰ سال گذشته نیز محبوب باقی مانده است.
اما ۲۰ سال در دنیای نرم افزار، به معنی چند بار زندگی کردن است. برای مثال یک توسعه دهنده را از سال ۱۹۹۹ بردارید و آن را امروز داخل یک تیم قرار دهید و خواهید دید که چگونه در این دنیای جدید عجیب و غریب تقلا میکند. اما دنیای دهه ۱۹۹۰ برای توسعه دهندگان امروزی کاملا بیگانه است. نسخه قبلی کتاب به چیزهایی مانند CORBA، CASE tools و indexed loops اشاره کرده بود که در بهترین حالت عجیب و گیج کننده بودند.
بنابراین وقتی زمان نوشتن ویرایش بیستمین سالگرد رسید، ما باید تصمیمی میگرفتیم. ما میتوانستیم تکنولوژی هایی که به آنها اشاره کرده ایم را به روز کنیم، یا با توجه به دو دهه تجربه دیگری که به دست آورده ایم، فرضیات پشت روشهایی را که توصیه کرده ایم مجددا بررسی کنیم. در نهایت ما هر دو کار را انجام دادیم.
در نتیجه، این کتاب چیزی از «کشتی تسئوس» است. تقریباً یک سوم مباحث موجود در کتاب کاملاً جدید است. بقیه مطالب، اکثریت به صورت کلی یا جزئی بازنویسی شده اند. هدف ما این بود که مطالب را واضحتر ، مرتبطتر و امیدوارم تا حدودی بدون تاثیر از زمان بکنیم.
ما با توجه به وفور فعلی سخت افزار موازی و کمبود راههای خوب برای کار با آن ها، موضوعات مرتبط به همزمانی را بازنویسی کردیم. در این ویرایش ما مطالبی را اضافه کردیم تا تغییرات در نگرشها و محیطها از جنبش چابک که ما در راه اندازی آن کمک کردیم تا افزایش پذیرش اصطلاحات برنامه نویسی تابعی و نیاز رو به رشد در نظر گرفتن حریم و خصوصی و امنیت را منعکس کنیم.
جالب اینجاست که، در مورد محتوای این نسخه، بحث و گفتگوی کمتری وجود داشت تا زمانی که نسخه اول آن را مینوشتیم. هر دوی ما احساس کردیم که چیزهای که مهم بودند آسانتر شناسایی شدند.
مطالبی که در ویرایش دوم کتاب «برنامه نویس عملگرا» یاد خواهید گرفت:
- مبارزه با فاسد شدن نرم افزار
- یادگیری مداوم
- دوری از دام دانش تکراری
- نوشتن کدهای انعطاف پذیر، پویا و سازگار
- تحت کنترل در آوردن قدرت ابزارهای اساسی
- دوری از برنامه نویسی بر حسب اتفاق
- یادگیری نیازمندیهای واقعی
- حل مسائل اساسی کدهای همزمان
- محافظت در برابر آسیب پذیریهای امنیتی
- ساختن تیمی از برنامه نویسهای عملگرا
- بر عهده گرفتن مسئولیت کار و حرفه خودتان
- تست کردن بی رحمانه و موثر، از جمله تست مبتنی بر ویژگی
- پیاده سازی Pragmatic Starter Kit
- خوشحال کردن کاربران خود
Table of Contents:
1. A Pragmatic Philosophy
2. A Pragmatic Approach
3. The Basic Tools
4. Pragmatic Paranoia
5. Bend, or Break
6. Concurrency
7. While You Are Coding
8. Before the Project
9. Pragmatic Projects
10. Postface