حق های برنامه نویسی (قسمت سوم)

در ادامه دو پست قبلی، حالا توی قسمت سوم با چندتا جمله مهم دیگه از آدمای مهم دیگه روبرو میشیم. ممکنه پیش از این با این جمله ها روبرو شده باشید اما من سعی کردم به یه شکل جدید بهشون نگاه کنم و جالبه که مرور اینا، برای خودمم هربار شکل و معنای کاملتری پیدا میکنن. خلاصه که این جملات پایان بازی داره و انقد موجز و پر نکته س که میشه همیشه بهشون رجوع کرد و ازشون یاد گرفت. نظر شما چیه؟سورس کد مثل یه جوک میمونه، اگه مجبور به توضیحش شدید، پس اصلا خوب نوشته نشده. (کوری هاوس)آقا سورس کد که توضیح دادن نمیخواد. اگه کار میکنه که بزار کار کنه، اگر هم ایراد داره که برو درستش کن. والا!اما به جز این، حتما دیدین تیکه کدهایی رو که کار هم میکنه اما هرچقدر سر و تهشو میگردی نمیفهمی اصن چه اتفاقی توش افتاده. اسم متغیرها بد انتخاب شده (که این خیلی رومخه)، کدها ترتیب مشخصی نداره، کامنت نخورده و اصلا یه چیزه شخمی و درهم برهمه. بعد به اونی که اینا رو پیاده کرده میگی این چیه؟ میگه نگران نباش. داره کار میکنه اگر هم نفهمیدی بگو من برات توضیح میدم (که این خودش از فحش بدتره).عزیزم لازم نکرده. به قول بزرگ دیگری leave the code better than you found itلذا وظیفه داریم همیشه بهترین و کاملترین نسخه ای رو که در توان داریم (درحد سوادمون یعنی) پیاده کنیم و کارو گردن یکی دیگه نندازیماگه به کامپایلر دروغ بگید، بعدا انتقامش رو ازتون میگیره! (هنری اسپنسر)دروغ که کلا چیز بدیه o: ولی اینکه چطوری میشه به کامپایلر دروغ گفت خودش بحث جداییه و مفصلی که میشه جداگونه درمورش حرف زد. اما به طور خلاصه، استاد داره هشدار میده که آقا از اول کارتو درست انجام بده. اینکه بخای با اما و اگر و قسم و آیه‌ یه برنامه رو جلو ببری و تستارو شانسی رد کنی یه جا کارت گیر میفته و دیگه هیچی.. باید از اول هی برگردی عقب ببینی کجارو گند زدی و همه چیو درست کنی.گفتنش ساده س ولی اِنقدر زیاد، اِنقدر زیاد این معضل توی تیم های برنامه نویسی دیده میشه که حد نداره. و حتی اکثر اوقات، فرد نابلدی که به اشتباه یا با پارتی بازی یا هرچیزی توی یه موقعیت حساس قرار گرفته، با این سبک کار کردن و سهل انگاریش کل زحمت بقیه رو به باد داده و ما کِی اینو می‌فهمیم؟ وقتی که طرف از تیم جدا میشه و به اصطلاح فلنگو میبنده و میره.یه برنامه نویس خوب کسیه که وقتی میاد از یه خیابون یه طرفه عبور کنه، هردو طرف رو نگاه میکنه (داگلاس لیندر)اگه فکر میکنی برنامه نویس خوبی هستی، برو یه خیابون شلوغ یه طرفه تو شهرت پیدا کن و بعد صبر کن ببین غریضه ت چیکار میکنه.اگر یه طرفو نگاه میکنی که باید روی خودت کار کنی و تو یه بیسوادی :) اگه دوطرفو نگاه میکنی که روحت به همراهت استاد قرین رحمت و شیر پدر، نان مادر حلالتاما اگه مثل عده کثیری اصن نگاه نمیکنی و همین که احساس میکنی دور و برت خلوته، زارت از خیابون رد میشی، واقعا چطور حوصله کردی تا قسمت سوم رو بخونی؟ برگرد به زندگیت آقا جان.اما واقعا، این داستان توی کارِ ما هم صدق میکنه. رجوع میدم به همون داستان تست نویسی و تست کردن مداوم برنامه که فقط آدمهای اهل دل حالِ انجامشو دارن. و یا کلی کار کوچیک دیگه که درنهایت به کاهش احتمال خطا کمک میکنه و کلی ثواب داره. آدمای این شکلی همونایی هستن که به طور حتم دوطرف خیابون رو هم نگاه میکنن و استاد این جمله رو به اونها تقدیم کرده.صحبت کردن رو ولش کن. کدت رو نشون بده (لینوس توروالدز)محبوب ترین جمله من از بین تمام این جملات، همین یه دونه س که استاد بزرگ، خالق لینوکس، مردی از خطه نیویورک، گفتن و همه مارو به تفکر واداشتن.ضمنا پیشنهاد میکنم هر تیم لید، مدیرپروژه یا هر مدیری که قراره با برنامه نویسهای زیردستش سر و کله بزنه، یه دونه بنر ازین جمله درست کنه و بچسبونه پشت سرش که هرکی خواست بیاد سراغش حساب کار دستش بیاد.و خطاب به برنامه نویس جوون، اگه گند زدی تو کد و به مشکل خوردی، باز این جمله رو سرلوحه کارت کن. حرف زدن رو ولش کن، برو تو خود کد.من برنامه نویس توپی نیستم. من فقط یه برنامه نویس خوبم که عادت‌های توپی داره (کنت بک)به به. چقدر تواضع و فروتنی در این جمله ریخته. پر از حکمت و لطافت و طبع والا و توانمندی.لابد درمورد اهمیت عادت‌ها شنیدید و کم نیستن کتاب‌های خوب و بدی که درمورد عادت‌ها حرف زدن. عادت همه چیو تو یه آدم می‌سازه و حتی فکر کردن و ایده پردازی و کارهای انتزاعی و خلاقانه ای که به نظر از دل یه الهام یا لحظه خاص به ذهنمون میرسه حاصل همین عادت‌هاس. اما برای برنامه نویس جماعت، که هرروز باید یه کار مشخص و از قبل تعیین شده رو انجام بده عادت چندبرابر مهم تر هم میشه. اینکه چقدر به پیشرفت خودش فکر کنه، دانشش رو هرروز، حتی در حد 2 صفحه مطالعه بیشتر کنه و سعی کنه اشتباهات قبلی شو کمتر انجام بده، راس ساعت مشخصی کار رو شروع و تموم کنه، تمرکزش رو برروی تسکها بزاره و کلی عادت ریز و بسیار ساده دیگه، میتونه بعد از مدتی اونو به یه غول واقعی مبدل کنه.و جالبه که وقتی توی سبک زندگی آدمهای خبره هم ریز میشیم میبینیم که دقیقا همینه. اونا کارای عجیبی نمیکنن، بلکه فقط کارهای ساده رو به شکل عجیبی تکرار میکنن.اول مشکل رو حل کنید، بعد کد بزنید (جان جانسون)از انیشتین نقل شده که :اگه بخام مشکلی رو حل کنم که 1 ساعت برای حلش زمان نیاز باشه، 55 دقیقه شو صرف فکر کردن به مشکل و 5 دقیقه روصرف فکر کردن به راه حل میکنم.ازین بابت، میشه این جمله رو به این معنا هم تفسیر کرد که درک کامل مسئله‌، پیش از شروع پیاده سازیش، میتونه خیلی خیلی زیاد، مفید و مهم باشه و خروجی کار رو توی زمان کمتر و به شکل بهینه تری به ما بده. چه بسا که خیلی ازاوقات، مشکل ما حین پیاده سازی یه ویژگی، ناشی از کمبود دانش یا تجربه مون نیست و بیشتر به خاطر اینه که هنوز خوب مسئله رو درک نکردیم. یا حتی بدتر ازون، گاهی به خاطر همین کم توجهی و شتاب بیش از حد، باگی رو به وجود آوردیم که ممکنه چندماه بعد خودشو نشون بده و در اون زمان، رفع و رجوعش چندین و چندبرابر زمان بیشتری رو بطلبه.لذا درک این موضوع و تبدیلش به یه عادت همیشگی بی نهایت اثرگذاره. همونطور که انيشتين هم پیشنهاد کرده. (دیگه انیشتین شوخی نیست که)