کتاب Clean Coder

توسط سهیل کرمی, اسفند ۲۸, ۱۳۹۵

با سلام

کتاب Clean Coder

کتاب Clean Coder

کتابی که امروز مطالعه اش رو تموم کردم یکی از بهترین کتاب هایی بود که تا بحال خونده بودم و به نظرم حتما باید هر برنامه نویسی این کتاب رو مطالعه کنه،  کتاب Clean Coder  نوشته ی آقای Robert Cecil Martin ملقب به Uncle Bob در دنیای It هست،اکثر برنامه نویس های که من دیدم حداقل یکی از کتاب های ایشون رو مطالعه کرده اند،یکی از معروف ترین کتاب های ایشون  Clean Code هست. که واقعا توصیه می کنم تمام دوستان حتما این کتاب رو مطالعه کنند به طبق گفته ی دوست عزیزم هادی احمدی 

یکی از تاثیر گذارترین کتاب های ممکنه هست

و من هم کاملا با ایشون موافقم (صحبت در مورد کتاب Clean Code رو به بعد موکول می کنیم فعلا بر می گردیم به کتاب خودمون Clean Coder  و در مورد این کتاب با هم صحبت می کنیم)،در صفحات اولیه این کتاب، افراد مختلف مطالعه این کتاب رو توصیه کرده اند،و در اولین نقل قول موجود که  کاملا با نظر من بعد از مطالعه کامل کتاب یکی بود،این چنین گفته شده بود

‘Uncle Bob’ Martin definitely raises the bar with his latest book. He explains his
expectation for a professional programmer on management interactions, time
management, pressure, on collaboration, and on the choice of tools to use. Beyond
TDD and ATDD, Martin explains what every programmer who considers him- or
herself a professional not only needs to know, but also needs to follow in order to
.make the young profession of software development grow

نقل قول بالا به صورت اختصار گویای شرح کتاب هست و من اگه بخوام نقل قول بالا را در یک خط خلاصه کنم به این جمله بسنده می کنم

این کتاب رو هر برنامه نویسی باید مطالعه کنه و  بعد از مطالعه کامل کتاب باید به بند بند کتاب عمل کنه!

وقتی من این کتاب رو می خوندم تو اکثر فصل ها دقیقا اشاره به رفتار های غیر حرفه ای خودم در محیط کار،زمان کد زنی و… داشت،با مطالعه کتاب تمام اون موارد به صورت یک خاطره از جلوی چشمام عبور می کرد(می تونم بگم که اکثر شما دوستان هم در زمان مطالعه کتاب چنین تجربه ای خواهید داشت)

مورد خیلی مهمی که در مورد این کتاب باید بگم اینه که

شما به هیچ وجه در این کتاب یک تکنولوژی جدید یاد نمی گیرد.

پس لطفا با این پیش زمینه سمت کتاب نیاید لطفا!!!

آقای Robert Cecil Martin در این کتاب به تجربیات شخصیشون در برنامه نویسی می پردازن مشکلاتی که براشون پیش آمده و درس هایی که بعد از حل این موارد گرفته اند و دقیقا تمام این تجارب رو به صورت یک کتاب با نام Clean Coder در اختیار ما قرار دادند.

خوب بریم یکم در مورد فصل های کتاب صحبت کنیم و یک خلاصه ی خیلی سریع برای شما دوستان بدم

فصل اول : حرفه ای 

حرفه ای شدن به چه معنایی هست ؟ به کی باید گفت حرفه ای ؟ شاید خیلی از ماها،خیلی از افراد رو دیده باشیم که به خودشون می گن حرفه ای و این سئوال برای ما پیش می امد که واقعا حرفه ای هستن یا نه ؟! چه جوری به این نکته برسیم،با قاطعیت می گم که تمام دوران کاری من به عنوان برنامه نویس تا قبل از مطالعه ی این کتاب به هیچ وجه دوران حرفه ای نبوده چون به هیچ وجه به عنوان یک برنامه نویس، حرفه ای عمل نمی کردم و این موضوع رو بعد از مطالعه این کتاب و درک معنای برنامه نویس حرفه ای، و وظایف یک برنامه نویس حرفه ای  متوجه شدم.

اقای Robert Cecil Martin در همین فصل از کتاب می گن

برنامه نویس حرفه ای شدن سختی هایی داره، و برای تبدیل شدن به یک برنامه نویس حرفه ای باید تلاش بسیاری کرد

من یکم جمله رو عامیانه تر گفتم،

فصل دوم :بگو نه!

شاید یکم گیچ کننده باشه، چیو بگم نه ، به کی بگم نه ، من دقیقا عنوان فصل خود کتاب رو انتخاب کردم و اینجا قرار دادم و به نظرم بهترین عنوان ممکنه هست، من معرفی این فصل کتاب رو با یک سئوال خلاصه می کنم.

رئیست پیش تو میاد و بهت می گه که آقا یا خانم x این ماژول رو باید طراحی کنیم تا کی آماده میشه ؟

و شما در جواب می گی ۱۰ روز دیگه!!!

رئیست می گه چه خبره اینو اینجوری می کنی و اونم اینجوری می کنی و حله دیگه سه روزه تمومش کن

(با فرض این که شما در بهترین حالت ۱۰ روز زمان برای اتمام کار نیاز دارید) شما چی جواب رئیستون رو می دید ؟!

تمام سعی ام رو می کنم ( جوابی که من همیشه می دادم و یه جورایی اگه اماده نمی شد هم می گفتم متاستفانه تمام سعی ام رو کردم و آماده نشد) یا می گید نه ماژول، تا اون موقع آماده نمیشه ؟ اونم به رئیستون که امکانش هست همون لحظه اخراجتون کنه ؟ تمام این فصل در مورد همین موضوع و شیوه ی بیان این موضوع هست.

فصل دهم : محاسبه

درسته این فصل دهم کتاب Clean Coder هست ولی مرتبط به فصل دوم هست که بالا خدمتون توضیح دادم ؟ به نظرتون اون ده روز رو چه جوری باید بدست بیاریم ؟ فصل دهم کتاب این شیوه ی محاسبه رو بهتون می گه، دقت کنید دقیقا نمیاد بگه که اگه کدت اینه اینقدر و انقدر و می گه خودت می دونی که اگه این کد رو تغییر بدی ۶ روز طول می کشه در حالت عادی (حالت عادی اینه که چششو دست می زنی پاش شل نشه) ولی خوب اگه غیر عادی باشه چی ؟ اصلا چی غیر عادیه ؟ تو خود کتاب اقای Robert Cecil Martin می گن

It should
include everything except hurricanes, nuclear war, stray black holes, and
other catastrophes

فکر نکنم بیشتر از این نیاز به توضیح باشه، با این شرایط و این دو عدد و یه عدد سومی که با مطالعه کتاب متوجه میشید چی هست، می تونید زمان بندی رو ارائه کنید (البته اکثر ما ایرانیا همیشه میایم عدد حالت غیر عادی رو می گیم، و با خودمون هم می گیم که اگه پروژه رو زود تر تمام کردم که کردم اگه هم نه که زمان هست و تمومش می کنم، غافل از این موضوع که بقا و رشد شرکت به همین تصمیم های کوچیک ما وابسته هست و بازهم اشاره به همین کتاب

هممون در یک قایق سوار هستیم

فصل سوم : بگو بله! 

راستش یه جورایی تو توضیح فصل دوم توضیحش دادم و مطمئن هستم بعد خوندن این دو فصل کتاب متوجه اشاره من به طور کامل می شید.

فصل چهارم : امادگی ذهنی موقع کد زدن 

اسمی که من به این فصل دادم با اسمی که مؤلف دادن یکم متفاوته،این فصل در مورد این موضوع صحبت می کنه که قبل از کد زدن حتما تمرکز داشته باشید و می گه چی کار کنیم این تمرکز وجود داشته باشه،و از این قبیل موارد یکی از قسمت های جالب این فصل اسمش هست کد زدن ساعت سه صبح فکر کنم خطاب صحبت اقای Robert Cecil Martin دقیقا شخص خوده من بوده و نتونستن بگن سهیل منظورم خودته بگیر بخواب(الان که دارم این مقاله رو برای شما دوستان می نویسم ساعت ۲:۱۱ دقیقه ی صبح هست) البته من بعد خوندن این فصل درسته هنوز این ساعت نمی خوابم (تمرکز کافی برای کار کردن تو روز کاری بعدی رو ندارم ) ولی خوب این موقع هم کد نمی زنم. اینجا که رسید لازمه یک جمله از دوست عزیزم آقای ولایتی بگم ایشون وقتی متوجه شیوه ی رفتاری من یعنی ۳ صبح خوابیدن و ۷ صبح بیدار بودن شدن جمله ی قشنگی به من گفتن با این مضمون

الان شما(من) کار می کنی که در سن های بیشتر برداشت کنی، نه این که در اون سن به فکر درمان بیماری هایی باشی که از رفتار غلطت در این دوران بوجود آمدن

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

فصل پنجم : TDD

از اسم فصل کاملا مشهوده که در مورد چی قراره صحبت بشه، نکته ای که داخل این فصل نظر من به خودش رو جلب کرد این بود که آقای Robert Cecil Martin شخصی به این بزرگی و سر شناسی، وقتی متوجه میشه موضوعی رو بلد نیست به راحتی قبول می کنه و می گن رفتم پیشه اقای Kent Beck و به ایشون گفتم که این مورد رو به من یاد بده و به این موضوع در کتابشون هم اشاره می کنن، واقعا چنین رفتار هایی هست که باید از این بزرگان یاد بگیریم.

فصل ششم : من به عنوان یه برنامه نویس چطوری تمرین کنم ؟ اصلا تمرین نیازه ؟ یا فقط باید کد بزنم ؟ تمرین چجوریه ؟ 

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

فصل هفتم : کی می تونم بگم پروژه اماده ی تحولیه ؟ 

بازهم نامگذاری من با خود کتاب متفاوت هست ولی اگر فصل رو مطالعه کنید متوجه منظور من میشید، درسته خیلی کم به لغت Done پرداخته شده و بیشتر جنبه های  Acceptance Test پرداخته شده. ولی به نظر من این جمله خلاصه ای از این فصل می تونه باشه.

فصل هشتم :چجوری برنامه ای که نوشتم رو تست کنم ؟

یادمه اولین برنامه ای که نوشتم و تحویل مشتری  دادم با این که n بار تست کرده بودمش ولی بازم مشکلی هایی مشتری بر می خورد که من اصلا ندیده بودمش! و تغییراتی که می دادم هم مشکلات رو بیشتر می کرد(طراحی اشتباهی که برنامه داشت ) این فصل شیوه ی پیاده سازی و نوشتن تست ها رو به صورت خلاصه در اختیار ما قرار می ده(البته فصل پنجم هم می تونه همگام با این فصل در نظرش گرفت )

یکی از قسمت های جالب این فصل این جمله هستش

QA Is PART OF THE TEAM

یکی از دوستانم همیشه می گفت

ای کاش می شد  یکی از همکارام رو خفه کنم

(دقیقا درست حدس زدید اون بنده خدا یا در آینده مقتول یکی از اعضای تیم تست بود که با این دوست من به طور مستقیم کار می کرد) با شناختی که من از دوستم دارم خدا بهش رحم کنه (و مطمئن هستم به من حق می دید که چرا به اسم دوستم به طور مستقیم اشاره نکردم)

 

فصل نهم :مدیریت زمان 

این فصل هم به طور کامل مشهود هست که در مورد چه موضوعی صحبت می کنه، ولی یک قسمت جالب این فصل این هست که می گه اخه برادر من یا خواهر من وقتی جلسه ای می دونی برای شما و کارت منفعت نداره چرا می ری اخه ؟! (تو ایران ما که خیلی هست)

فصل دهم : قبلا گفتم دیگه بعد فصل دو 

فصل یازدهم :مدیرت فشار ها و یا استرس های کاری و غیر کاری 

در اول این فصل یک مثال می بینیم با این شرح

فرض کنید در زمان عمل جراحی شما از بدنتون خارج شده اید و می تونیم عمل جراحی رو مشاهده کنید،حالا به عنوان بیمار دوست دارید دکتر چه رفتاری داشته باشه؟

من به عنوان یک برنامه نویس در مواجه با فشار کاری چه رفتاری باید داشته باشیم،چه جوری جلوگیری کنیم از فشار کاری زیاد و …

فصل دوازدهم :همکاری

یکی از قسمت های جالب این فصل به علایق من اشاره می کنه، یک سیستم بهم بدن با خوراک روزانه بفرستنم تو یک اتاق و هر روز هم لیست وظایفمو بهم بدن (این زندگی ایده آلی به نظر میاد البته فقط از نظر کاری ) ولی…

فصل سیزده ام :همگام شدن با تیم و تحویل پروژه 

تیم باید مثل ژل باشه ؟!!!!!! چی می گن اقای Robert Cecil Martin ؟ اگه این فصل رو مطالعه کنید مطمئن هستم که به جواب این سئوالتون خواهید رسید

فصل چهارده ام : یادگیری،یاد دادن 

اقای Robert Cecil Martin مثال جالبی در این فصل می زنن که چجوری اولین برنامه ی خودشون رو نوشتن و داستان پرداخت یک دلاری (اخه با یک دلار می شه چی کار کرد ) و این که چجوری یاد گرفتن و پیشرفت کردن

یک بخش جالبی داره کتاب و باز هم منو به یاد اولین برنامه ای که نوشتم (برنامه ی تستی) و شادی پس از اون و از اون روز به بعد یک برنامه نویس شدم .

پیوست :ابزارها

من به شخصه همیشه دوست داشتم بدونم فلان برنامه نویس از چه ابزاری استفاده می کنه و یا این که الان برای این کار ایا ابزاری هست ؟ و این فصل کتاب  اقای Robert Cecil Martin  از ابزار هایی که خودشون استفاده می کنن و ابزار های مشابه برامون می گن، (با معرفی کوتاهی از علاقه ی خودم در خط اول همین پارگراف مطمئن هستم حدس زدید چقدر خوشحال شدم از خودندن این فصل)

 

من برداشت خودم از هر بخش کتاب را بعد از مطالعه به صورت مختصر برای شما دوستان در این مقاله نوشتم، تا شما دوستان بعد از خواندن این مقاله شناختی جزئی و انگیزه ای صد چندان از قبل برای مطالعه ی کتاب Clean Coder  داشته باشید.برای دانلود کتاب Clean Coder نیز می توانید از لینکی که در ادامه قرار داده شده است استفاده کنید.

دانلود کتاب Clean Coder

و در آخر امیدوارم مطالعه ی این مقاله برای شما دوستان مفید بوده باشه.

سهیل کرمی

 

  1. سروناز گفت:

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

  2. سجاد گفت:

    با سلام
    بسیار ممنونم بابت معرفی این کتاب خوب تا فصل سه کتاب خوندم و واقعا عالی بوده .بسیار سپاسگذارم

  3. jamali گفت:

    ممنون که کتابی که به نظرتون مفید هست رو با دیگران به اشتراک میزارید
    به نظر من این کار باعث پیشرفت سطح برنامه نویسی در کشورمون میشه

  4. hossein گفت:

    سلام
    این کتاب خوشبختانه توسط دو نفر از بچه های برنامه نویس ترجمه شده. و نسخه چاپ شده کتاب در سایت زیر در دسترس هست.
    zerobook.ir

    • در پاسخ به این کامنت لازمه ذکر کنم که من ترجمه ی دوستان مطالعه نکردم و اگاهی از چگونگی ترجمه و کیفیت ترجمه نداشته .
      فقط به دلیل احترام به دوست عزیزمون اقا حسین که داخل سایت نظر گذاشته بودن نظر رو تایید کردم

  5. vahid گفت:

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

  6. Mahboube گفت:

    من دنبال کتاب clean code که آقای هادی احمدی بهم معرفی کردن بودم که سر از اینجا درآوردم :)))).
    فک کنم خوندن این یکی کتاب و بزارم اولویت تر تا اون یکی کتاب

  7. Maryam programmer گفت:

    خیلی خیلی ممنونم واقعا پیش زمینه ی خوبی بود.

  8. فهیمه گفت:

    سلام مرسی بابت ترجممه ای که گذاشتین . من قبلا اینجا مطالعه کرده بودم و کتاب رو خوندم . و دوباره اینجا به جمع بندی رسیدم

  9. بهزاد پیروزی گفت:

    اقای کرمی کتاب به زبان اصلی است لینک ترجمه شده را قرار نداده ای!!!!!!!!۱

  10. محسن گفت:

    جالب بود، ممنون

  11. عالی بود با تشکر با تشکر هادی احمدی

دیدگاه شما

( الزامي )

(الزامي)