قانون دوازدهم، یعنی آخرین قسمت از 12 قانون یادگیری بهتر برنامهنویسی اینجاست. قراره یه مروری کنیم به اینکه چطوری میتونیم از کدهای دیگران برای ارتقا دانش فعلی خودمون استفاده کنیم، چه یه تکه کد کپی شده از Stack overflow باشه، چه یه پروژه اپن سورس و چه یک پروژه که از طریق مهندسی معکوس بهش رسیدیم.
یکی از مهم ترین مراحل تبدیل شدن از برنامه نویس تازه کار، به یک برنامه نویس همه فن حریف، توانایی شما در کمک گرفتن هست. همه نیاز به کمک گرفتن دارن، حتی کسانی که اونها رو به عنوان خدایان برنامه نویسی میشناسیم.
اما کاری که شما با کمکهای در دسترستون انجام میدین، نشون خواهد داد که شما به عنوان یه برنامه نویس، چقدر پیشرفت خواهید کرد. به عنوان مثال، وقتی داریم دنبال جواب یه سوال میگردیم و کدی رو توی استک اورفلو میبینیم، اولین کاری که میکنیم، احتمالا copy و paste کردن اون کد هست.
خب اگه کار رو به همین جا ختم کنیم و وقتی دیدیم برنامه طبق انتظارمون پیش میره، بریم سراغ ادامه کار، اولین اشتباه رو انجام دادیم. به این خاطر که از این فرصت، برای یادگیری بیشتر استفاده نکردیم. تنها چیزی که اینجا یاد گرفتیم، اعتماد به گوگل، استک اورفلو و کدهای یه فرد ناشناس هست.
در ادامه اگه به مشکل مشابهی برخورد کنیم، ولی جواب قبلی، دیگه کار ما رو راه نندازه، چه کاری خواهیم کرد؟ تا چیزمان میریم تو گل، تا کمر...
این جا هست که یه قانون در برنامه نویسی به ما کمک میکنه، اون هم اینه که "هیچ وقت کدی رو که خودت نمیفهمی رو copy و paste نکن". بنابراین اگه به یک بلوک کد رسیدیم که کار ما رو راه میانداخت ولی ما بعضی قسمتهاش رو متوجه نمیشدیم، چه کاری انجام بدیم؟
بهترین کار، اینه که اون کد رو خراب کنیم و دوباره بسازیمش. برای این کار میتونیم از روش زیر استفاده کنیم:
یکی از بزرگترین لذتها هنگام برنامه نویسی اینه که چیزی که انتظار داریم ببینیم، با چیزی که واقعا توی خروجی میبینیم، با هم یکی باشن.
مثل وقتی که قبلا به دوستتون چیزی گفتید، و بعدا بهتون میگه: "آره تو درست میگفتی". این هم همین طوره، ولی خیلی بهتر!
۶. ترتیب بعضی از خطها رو تغییر بدید.
آیا همون خروجی قبلی رو با تغییر دادن ترتیب کدها هم مشاهده میکنید یا یه چیزهایی تغییر کرده؟ چرا کدها به اون ترتیب قبلی نوشته شده بودن؟
با شکستن کدها و تغییر اونها به صورت خط به خط، شما دقیقا میفهمید که اون خط از کد چه کاری میکنه و چرا اونجا نوشته شده. این روش، خیلی کمک میکنه کدی رو که خودمون ننوشتیم و قبل از این هم نمیتونستیم بنویسیم رو، بهتر درک کنیم و کم کم بتونیم نوشتن همچین کدی رو به جعبه ابزار ذهنمون اضافه کنیم.
وقتی تونستید تکه کدهای مورد نیازتون رو از توی stack overflow یاد بگیرید و به جایی رسیدید که احساس کردید برای مرحله بعدی آمادهاید، وقتشه برید سراغ خراب کردن پروژههای دیگران؛ و برای این کار، چه جایی بهتر از GitHub؟ توی گیت هاب میتونید دنبال clone نرم افزارهای مختلف بگردید و با تغییر کدهاشون به این روش، نحوه کارکرد اون رو یاد بگیرید.
در صورتی که پروژه بزرگی پیدا کردید، به ساختار برنامه نگاه کنید، به کلاسها، constant ها و طرز استفاده از اونها در برنامه. جاهای مختلف کد رو تغییر بدید. آیا برنامه طبق انتظار کار میکنه یا جایی از برنامه از کار افتاده؟ به Error ها نگاه کنید. آیا میتونید با استفاده از Error مورد نظر، ایرادی که به وجود اومده رو برطرف کنید؟
بعد از اینکه توی شکستن کدهای پروژه دیگران، به مرحله خودکفایی رسیدید! وقتشه برید سراغ مهندسی معکوس. یعنی برید دنبال پیدا کردن یه پروژه کوچیک که توسط یه برنامه نویس معروف توسعه داده شده یا تعداد نصب یا استار بالایی داره. یه مقدار با عملکرد کلی برنامه آشنا بشید و برای پیاده سازی اون پروژه توسط خودتون آماده بشید.
در این مرحله باید اون پروژه رو از صفر، تا جایی که در حد دانش فعلیتون هست، خودتون بالا بیارید و بعد از تموم شدن، کدهای خودتون رو با کدهای پروژه اصلی مقایسه کنید. آیا جایی هست که از ایده طرف مقابل استفاده کنید و کدهای خودتون رو بهتر کنید؟ یا حتی بهتر، آیا جایی هست که از ایدههای خودتون استفاده کنید و پروژه اصلی رو ارتقا بدید؟ در این صورت شما به یه توسعه دهنده اپن سورس تبدیل خواهید شد که خودتون میدونید این گونه reputation چقدر میتونه در آینده شغلی شما تاثیر داشته باشه.
اگه مثل من، جاواسکریپت زبانی هست که بیشتر وقتتون را باهاش سپری میکنید، یکی از روشهایی که میتونید ببینید یه پکیج معروف چجوری توسعه داده شده، استفاده از www.npmjs.com هست. به این صورت، میتونید از قسمت versions، نسخههای مختلف یک پکیج رو پیدا کنید و از طریق تب Code، کدهای داخلش رو بررسی کنید.