کتابهایی که برای یادگیری برنامه نویسی به کار میاد (4)

اما توی قسمت چهارم معرفی کتابا (که دیگه ایشالا قسمت آخر باشه) ، این بار هم سراغ 3 تا کتاب مهم میریم که باز توی تغییر نگاه ما به حرفه برنامه نویسی و تبدیل مون از یه برنامه نویس خوب به یه مهندس نرم افزار یا یه junior به Senior حرفه ای نقش مهمی داره. ازونجایی که ممکنه خیلی از ما این کارو صرفاً یه جور کدزدن روزانه و تبدیل کدها به یه پروژه کوچیک ببینیم، خوندن این تیپ کتابا میتونن مارو با مفاهیم مهمتری که بخشی از فرایند تولید نرم افزار (به خصوص نرم افزارهای بزرگ) هستن آشنا کنه و راهمون رو برای ورود به پروژه های بزرگتر و پیچیده تر و تیم های خفن تر هموار کنه و البته یه انگیزه قوی برای ادامه این راه بهمون بده.حالا بریم برای کتاب اول:Code Complete: A practical handbook of software construction (Steve McConnell) قهوه س یا نوشابه؟ هرچی هست خیلی سیاهه :0این دفعه برای اینکه خودمم کمتر حرف بزنم، یه راست مقدمه خود کتابو میزارم که شامل جمله های آدمای مهم درمورد این کتاب و نویسنده ش میشه. به نظرم این خودش حق مطلبو ادا میکنه.“An excellent guide to programming style and software construction.” —Martin Fowler, Refactoring“Steve McConnell’s Code Complete . . . provides a fast track to wisdom for programmers. . . His books are fun to read, and you never forget that he is speaking from hard-won personal experience.” —Jon Bentley, Programming Pearls, 2d ed.“This is simply the best book on software construction that I've ever read. Every developer should own a copy and read it cover to cover every year. After reading it annually for nine years, I'm still learning things from this book!” —John Robbins, Debugging Applications for Microsoft .NET and Microsoft Windows“Today’s software must be robust and resilient, and secure code starts with disciplined software construction. After ten years, there is still no better authority than Code Complete.”—Michael Howard, Security Engineering, Microsoft Corporation; Coauthor, Writing Secure Code“A comprehensive examination of the tactical issues that go into crafting a well-engineered program. McConnell’s work covers such diverse topics as architecture, coding standards, testing, integration, and the nature of software craftsmanship.” —Grady Booch, Object Solutions“Steve McConnell’s seminal book Code Complete is one of the most accessible works discussing in detail software development methods. . . .” —Erik Bethke, Game Development and Production“A mine of useful information and advice on the broader issues in designing and producing good software.” —John Dempster, The Laboratory Computer: A Practical Guide for Physiologists and Neuroscientists“This is simply the best book on software construction that I've ever read. Every developer should own a copy and read it cover to cover every year. After reading it annually for nine years, I'm still learning things from this book!” —John Robbins, Debugging Applications for Microsoft .NET and Microsoft Windowsاما کتاب دوم : The Pragmatic Programmer: Your Journey to Mastery (Dave Thomas, Andy Hunt)کتاب بی نظیر دیگه ای که نیاز به معرفی داشت، Pragmatic Programmer یا برنامه نویس عملگراست. همونطور که از اسم کتاب هم مشخصه، اینجا قراره با راهکارها و نصیحت های بسیار به دردبخوری روبرو بشیم که توی این حرفه و مراحل مختلف کار باهاشون روبرو هستیم. این کتاب اساساً با رویکرد عملگرایی و تمرینا و مثالهای مختلفی که بهمون میده، سعی داره مارو با جنبه های مختلف این کار آشنا کنه و بهره وری مون رو بیشتر کنه. موضوعات کتاب از بهینه سازی کدها و نحوه کدنویسی اصولی، تا ارتباط با اعضای تیم و مدیریتش، تیم ورک، اهمیت مطالعه و بروز بودن و خیلی مسائل دیگه رو دربر میگیره و به خاطر نثر بسیار روون و گیراش، نکته های کلیدی زیادش که هنوز هم بعد سالها مصداق داره و و مثالهای گویایی که زده، سعی داره نشون بده که برنامه نویسی صرفاً یه امر ذهنی و فکری نیست و اصلا موقع تمرین و کار و رفع باگهاست که قابل یادگیریه. برای همین کل رویکرد کتاب بیشتر روی تمرینها میچرخه و ازین جهت، خیلی به دردبخوره و بیخود هم نیست که خیلیا خوندنشو توصیه کردن.Working Effectively with Legacy Code (Michael Feathers)و بالاخره کتاب آخر : چطور با کدهای Legacy بهتر سر و کله بزنیم. اگه پیش ازین توی سازمانتون با کدهای Legacy روبرو شدید و عزای اینو گرفتید که چطوری به سمت معماری جدید انتقالش بدید یا آپدیتش کنید، این کتاب دقیقاً خوراک شماست. ازونجایی که بحث بهینه کردن و بروز کردن کدهای قدیمی یکی از مهمترین مسائلیه که به عنوان یه برنامه نویس حرفه ای نیاز به یادگیریش داریم و یه جایی بالاخره یقه مون رو میگیره، کتاب دقیقاً دست روی این نقطه خاص گذاشته و با سرفصل های مختلفی که مرتبط با code refactoring, maintaining و سر و کله زدن با bug های قدیمی هست + مثالهای پرتعدادش، مثل یه مربی باتجربه مارو کمک میکنه.یکی از مفاهیم مهمی که اینجا معرفی میشه بحث code sensing ه، با این توضیح که چطوری درمورد کدهای قدیمی اطلاعات جمع کنیم و از ساختارش سردربیاریم تا بتونیم به کمک اونا نقاط شکست یا درزهایی که قابل تقسیم شدن به بخشهای کوچکتر هستن رو پیدا کنیم. چرا که اساساً چالش اصلی توی این فرایند، نحوه تقسیم بندی پروژه به سرویسهای کوچکتر و بخشهای مجزاست که کم از عمل جراحی قلب و عروق نداره. این کتاب خیلی فصل داره و پیشنهاد میکنم حتماً یه تورقی توش بکنید (چون اگه اینجا همه فصلهارو بزارم خیلی دیگه شلوغ میشه) و خلاصه که بسیار تحسین شده و از برنامه نویس جماعت تا معمار و لید و پروداکت تو کَفِش موندن. دیگه منم این مجموعه پست رو ادامه نمیدم، همینارو فعلا بخونیم بسه تا روز امتحان. (اگه تازه عمرمون کفاف بده اینارو تموم کنیم.)