عمر سایتهایی مثل آمازون و فیس بوک و ... به این زودی ها تموم نمیشه ،
اما مسلما کدی که برای نوشتن اونها استفاده شده بارها باز نویسی شده .
سایت فیس بوک الان روی کدی که زاکربرگ در سال 2003 در دوران دانشجویی نوشته کار نمی کنه.
فیس بوک با PHP پیاده شده . اما PHP که در حال حاضر مورد استفاده ی این شرکت است با نسخه ی که برنامه نویسان از سایت PHP دانلود میکنند کاملا متفاوت است.
با توجه به درآمد زیاد این سایت یک تیم اختصاصی در اختیار دارد که با باز نویسی قسمتهای زیادی از PHP یک نسخه ی اختصاصی جدید تهیه کرده است و فیس بوک روی آن سوار است.
در سایتهایی که عنوان کردید تنها چیزی که ثابت مانده ایده است و کدها و تکنولوژی های پشت آن بارها و بارها تغییر کرده اند.
مثلا سایت netflix قبلا از Silverlight برای نمایش ویدیوی استفاده میکرد.در حال حاضر این تکنولوژی جایش را به HTML5 داده است.
حتی محصولاتی که مایکروسافت ارائه میدهد نیازمند نسخه های جدید ، بروز رسانی و حتی باز نویسی مجدد است. وقتی چند سال پیش بخشی از سورس کد ویندوز XP (که یکی از محبوب ترین و پر استفاده ترین سیستم عاملهای تاریخ است) لو رفت برنامه نویسان از میزان کدهای بدی که در آن بود (سمبل کردن ها) حیرت کردند.
خیلی از سایتهایی که محبوب شده اند کارشان را با Ruby On Rails که یک فریم ورک تولید سریع وبسایت هست آغاز کرده اند.
تویتر ، اینتساگرم ، کوپون و ... زمان ارائه ی نسخه ی اولیه ی هیچکدام از این پروژه ها بیشتر از یک ماه نبوده .
همه چیز با کد سازها و ابزار آماده انجام شده و تحویل شده است.
بعد از اینکه موفقیت نسبی بدست آوردند با درآمد حاصل شده از نسخه ی اولیه برای نسخه های سرمایه گذاری کرده اند.
اگر قرار بود تمامی امکانات و قابلیت های امروزشان را روز اول پیاده سازی کرده و بعد شروع کنند ریسک بزرگی بود. ممکن بود بعد از سرمایه کذاری و صرف وفت زیاد کاربرها آز آن استقبال نکنند و چیزی جز ضرر حاصل نمیشد.
نباید بیش از حد به آینده ی پروژه فکر کرد.این به معنی سمبل کردن نیست بیشتر به معنی بهینه کار کردن است.
اگر کسی مزایا و معایب استفاده از یک روش را نمی داند حتما به آن نیاز پیدا نکرده و دلیلی هم ندارد تا وقتی به مشکل نخورده به دنبال پیاده سازی آن برود.
چون این روشها زیاد هستند و این اقیانوس ته ندارد.
اگر پروژه ی شما به اندازه ی کافی بزرگ باشه به لایه هایی مثل Repository نیاز پیدا میکنید. حتی چند لایه ی دیگر مانند کش و مولتی تنت , ... هم لازم است.
آیا این به این معنی است که روز اول کار باید ساختار آن ها را در پروژه پیاده کنیم ؟
این ابزارها و روشها برای کمک به نوشتن کدهای راحت تر و بهتر طراحی شده اند. اگر کسی فکر میکند با استفاده از یک روش لقمه را دور سرش میچرخواند و جز اینکه یک اصل در برنامه نویسی باشد کمکی به او نمیکند نباید از آن روش استفاده کند.
بعضی از ابزار مانند DI , AutoMapper و لایه سرویس آنقدر خاصیت دارند که در هر پروژه ای لازم هستند اما بعضی دیگر فقط باعث پیچیده شدن کد و سر درگمی برنامه نویس میشوند و فایده ی دیگری ندارند.
کدهایی که می نویسیم روزهای پنج شنبه به رای گیری پیامکی نمیرود که یکیمان حذف شود
یا به بهترین کدی که نوشته شده است نوبل کد نویسی نمیدهند و موسسه ای هم نیست که مهر استاندارد زیر آن بزند.
آنچه از درون کدها بیرون می آید اهمیت دارد.