یکی از بهترین عادتهایی که هر برنامه نویسی میتونه داشته باشه کتاب خوندنه. کتاب، علی رغم ظاهر ساده و محتوای نوشتاریش، هنوز هم کارایی داره و چه بسا، بهترین منبع برای یادگیری عمیق موضوعاتیه که آموزش های کمی براش وجود داره. کتاب میتونه مارو بی واسطه با خودش درگیر کنه و تجربه سالها فعالیت یه نویسنده رو در قالب جملات شُسته رفته و موجز بهمون برسونه.
و خب کتابهای حوزه نرم افزار هم همینطوره. کمتر آدم متخصص و معماری رو میشه پیدا کرد که توی مسیر یادگیریش حداقل یه بار گذرش به یه کتاب نیفتاده باشه.
اما این وسط، کتابهایی هم هستن که حکم جزوه درسی رو برای هر برنامه نویسی دارن و خوندنشون جزو اوجب واجباته. توی این مطلب که به زودی ادامه دار میشه، میخام با سه گانه معروف رابرت سی مارتین شروع کنم. آقای مارتین که بین اهل فن به عمو باب هم معروفه، یکی از بهترین مولفین و متخصصین حوزه نرم افزاره که بیش از 50 ساله داره با کتابها، مقاله ها و سخنرانیاش این حرفه رو پیش میندازه و اولین کسی هست که متدلوژی agile رو به ما معرفی کرده.
ایشون سه کتاب بسیار شناخته شده و پرخواننده داره که اینا هستن :
خوشبختانه، ما انقدر صبح تا شب با کدهای کثیف سر و کار داریم که کلا مفهوم کد تمیز از ذهنمون رفته. چه بسا اصن همه این سالها توی این توهم بودیم که خیلی کارمون درسته و کدی که زدیم، بهترین کد عالمه و کور شه هرکی نتونه ببینتش. اما عمو باب چه کرده؟ ایشون سالها قبل کتابی نوشته به اسم Clean Code یا کد تمیز : "کتابچه ای برای استادی در تولید نرم افزار های چابک" و توش ما رو با مهمترین اصول نوشتن کدهای خوانا، تمیز و حرفه ای آشنا کرده.
حالا کد تمیز چیه؟ اگه بخوایم به زبون ساده بگیم یعنی کدی که تر تمیزه، آدمو مجبور به فحش دادن نمیکنه، میشه برای برناه نویس غایبش یه فاتحه ای چیزی خوند، قابل تست و ویرایش، خوانا و بدون عیب و ایراده و خلاصه که از هر کدی که میشه نوشت، بهتره.
یا به قول استاد شب پره : این کدی که میگم کد نیست، این کد مثه اون کد نیست، اگه کده مثه اون کد نیست، هیچ کدی مثه این کد نیست
استاد مارتین اینجا میگه که اگه یه سری اصول رو موقع کدنویسی رعایت کنی میتونی به یه همچین دستاوردی برسی و طی فصل های مختلف، مارو با این اصول آشنا میکنه. فصلهای کتاب به صورت تیتروار میشن اینا :
به نظر من که این عنوانها خیلی هیجان انگیزن. ضمن اینکه میشه فهمید کتاب به مفاهیمی فراتر از کدنوشتن ساده میپردازه و به صورت کلی قراره مارو به درک کاملتری از تولید یه نرم افزار اصولی و برنامه خوب برسونه.
و اینکه این کتاب انقد مفید و کاربردیه و انقد به زبون ساده و روونی مفاهیم رو میگه که میشه چندین و چندبار خوند، بهش رجوع کرد و مثل یه دستور زبان، کنار دست خودمون قرار داد. خلاصه که اگه هنوز سراغش نرفتید، تا دیر نشده یه کمی شو بخونید و دیگه کم کم بهش معتاد میشید.
عمو باب که کلاً ول کن clean بازی نیست و گفته که میخاد تمام مفاهیم خلفت رو از منظر clean بودن به ما یاد بده و بعد ازین دنیا بره. لذا کتاب دوم درمورد معماری تمیزه. این کتاب هم خوشبختانه یکی از تأثیرگذارترین و مهمترین کتابهای این حرفه س و لذت خوندنش مثه لذت خوردن موزه.
این جا، استاد با یه نگاه وسیعتر به مبحث طراحی، راهکارهایی ارائه میده برای تولید نرم افزارهایی با ویژگیهای مهمی مثل maintainability، testability و separation of concerns (من کلا نمیدونم کِی باید این term هارو کِی ترجمه کرد و کِی نه. ضمن اینکه خودم همیشه حس کردم کتاب تخصصی اساساً به زبون اصلی معنا میده و ترجمه ش همیشه یه چیزایی رو خوب نمیرسونه. اما حالا معنای این کلمات به فارسی فک کنم بشه : استقرارپذیری، قابل تست بودن و دارای قابلیت جداسازی نگرانیها! – درمورد این آخری سرچ کنید نگرانی تون میره)
خلاصه که با خوندن این کتاب میتونیم یاد بگیریم که اصن چطور یه نرم افزار رو طراحی کنیم. فارغ از اینکه حالا زبون برنامه نویسی و فریمورک و این جور مسائل چی هستن.
فصلهای کتاب به ترتیب اینا هستن :
این یکی کتاب هم ازون مدلاس که میشه بدون ترتیب خوند. خلاصه که اگه دوست داری نگاه و تخصصت رو نسبت به این حرفه ارتقا بدی و به درجات بالاتری از عرفان برسی، بدون شک باید با مفاهیم معماری آشنا شی و شروع به یادگیریش کنی.
کتاب سوم، علی رغم شباهت زیاد عنوانش با کتاب اولی، دست گذاشته روی مفاهیم اخلاقی و حرفه ای کار ما به عنوان یه برنامه نویس. اینکه من به عنوان یه آدم این کاره، چه اصولی رو باید توی کارم بلد باشم تا بتونم خودمو حرفه ای نشون بدم. منظور از اصول هم، صرفاً مفاهیم تئوریک نیست، بلکه soft skill ها و مهارتهایی هست که مکمل اوناست.
لذا ازین لحاظ، کتاب میتونه بسیار مهم و تر و تازه باشه و یه تکون حسابی به تفکرات ما نسبت به این کار بده. (ازونجایی که خیلیها مثل خود من توی Soft skill ضعف دارن، بی نهایت میتونه کاربردی باشه)
عنوان های جذاب هر فصل اینطوریه :
این کتاب انقد مثالهای خوب و کاربردی توش داره که اصن حد نداره و مهمتر از همه اینا، میتونه نگاه مارو نسبت به شغلمون عوض کنه. اینکه اساساً حرفه ای بودن و اصولی کار کردن چه ویژگیهایی رو میطلبه.
همه این کتابها به سادگی از توی اینترنت قابل پیدا کردنه و پیشنهاد میکنم به قول استاد یه تورّقی توشون بکنید.
و اگر هم پیش ازین با این کتابها آشنا بودید، اولاً مارو حلال کنید، دوماً خوشحال میشم شما هم یه لیست از کتابهای مفیدتون رو برام بنویسید.