با سلام . با اینکه یک ماهی از استارت این تاپیک میگذره ولی مطالبی رو جاهایی خوندم که به نظرم جالب و مرتبط با موضوع هست و میتونه مکمل صحبتهای اساتید باشه .
امروزه برنامه نویسی تحت وب به زبان php به شدت گسترده شده و سیستم های open source مختلفی منتشر شدن که هر کدوم دانش و تجربه ی خاص خودشون رو می طلبن . در جواب این سوال که باید از کدوم شروع کرد cms یا framework باید گفت که هیچ کدوم انتخاب اشتباهی نیست ولی فاکتور های زیادی در این انتخاب دخیل هستند . البته طبق گفته ی اساتید شما میتونید php خام هم بنویسید . مساله ای که مهمه اینه که همه ی این سیستم ها در نهایت توسط php خام پیاده سازی شدن و ته تهش یه کد php کار رو تموم می کنه و این سیستم ها فقط واسه راحتی برنامه نویس و امنیت و استفاده مجدد از کد و هزار دلیل دیگه بوجود اومدن . یه برنامه نویس خوب کسیه که اینها رو از هم جدا کنه و level بندی کنه .
level بندی از نظر یه برنامه نویس بد () :
level 0 : در این سطح شما فقط از php خام استفاده می کنید و مستقیما و بدون هیچ واسطی شروع به کدنویسی می کنید و کل پروژه رو به اتمام می رسونید که معایبش پیچیدگی کار و زمان زیاد توسعه و سختی استفاده مجدد از کد و ... هست و مزایاش هم شاید کارآیی باشه (چونکه کد بدون واسطه اجرا میشه) . البته ممکنه شما تجربه ی خیلی زیادی در همه ی جنبه های کدنویسی نداشته باشید و با یه الگوریتم ضعیف کارآیی رو داغون کنید !
level 1 : در این سطح شما از یک framework استفاده می کنید (zend,ci,yii,...) . در این حالت معمولا کدنویسی مشکل تر هست و شما باید از یک سری قوانین تبعیت کنید (قوانینی که به نقع خودتونه) و در صورتی که تسلط کامل به api اون framework داشته باشید زمان توسعه بسیار کم میشه و میتونید با استفاده از module ها و ... از کدتون تو پروژه های بعدی استفاده کنید . وقتی از یک framework استفاده می کنید دستتون بازه و اگه بنا به دلایلی نمیخواید از بعضی توابع و کلاس های آماده اون framework استفاده کنید میتونید کتابخونه خودتون رو توسعه بدین و بهش اضافه کنید(که معمولا خودشون از اول خوب نوشتن و کمتر نیاز میشه این کار) .امنیت، سرعت توسعه زیاد، تمرکز بیشتر در پیاده سازی بهتر منطق نرم افزار، نظم، امکان کار تیمی و ... از مزایای این سطحه . و معایبش هم شاید پایین اومدن کارآیی و همون اجبار در تبعیت از قوانین دست و پا گیره . معمولا تو پروژه های بزرگ از یک framework شخصی یا عمومی استفاده میشه (به دلیل امکان کار تیمی و استفاده مجدد و...) . حالا این وسط شما میتونید بشینید یک framework حرفه ای بنویسید و تو پروژه هاتون ازش استفاده کنید که زحمت توسعه ی framework هم گردن خودتونه که این روش در صورتی توصیه میشه که تو شرکتتون نیروی انسانی کافی برای صرف وقت روی framework برای توسعه و نگه داری اون داشته باشید . در غیر این صورت توصیه میشه از عمومی ها استفاده کنید . یه framework بیشتر شبیه قطعات puzzle هست که اونا رو میتونید customize کنید و کنار هم بچینید و با سرعت زیاد پروژه رو تموم کنید . فلسفه ی وجودی framework ها جلوگیری از انجام dirty tasks یا کارهای اعصاب خورد کنه که همیشه هم بهشون نیاز دارید و framework ها سعی میکنن که برنامه نویس پروژه تمرکزش رو بزاره رو منطق نرم افزار تا انجام این dirty tasks ها تو هر پروژه .
level 2 : استفاده از سیستم مدیریت محتوا یا همون CMS . در واقع CMS پا رو فراتر از framework گذاشته و از سطح انتزاع بالاتری برخورداره و کاربران کم تجربه تر هم میتونن تو قالب این محیط ها پروژه بنویسن (مثلا wordpress که کابران زیادی داره) . در واقع میشه گفت که این سیستم ها framework های مهربونی هستند که زبون آدم سرشون میشه و کلیه کارها رو سعی میکنن آسون کنن . مثلا worpress رو وقتی نصب میکنید یه سایت کامل رو دارین فقط کافیه که قالب رو تغییر بدین و plugin نصب کنید و تمام . البته فراگیر شدن این سیستم ها به دلیل اینه که شما بازم دستتون بازه و میتونید همه چی رو طبق سلیقه خودتون تغییر بدین و کدی که شما دوست دارید اجرا بشه . مثلا تو wordpress باید بشینید plugin بنویسید و یه قابلیت به سایتتون اضافه کنید .
level 3 : اصلا کد نویسی رو فراموش کنید و برید بنگاه معاملات املاک یا ماشین بزنید سودش خیلی بیشتره باور کنید !(شوخی جدی)
نکته ی مهمی که من طبق تجربه ی خودم به اون رسیدم اینه که تو دنیای برنامه نویسی مخصوصا php راحتی در دل سختی بدست میاد . مثلا استفاده از یه framework میتونه خیلی کار شما رو راه بندازه و یه سایت تووپ حرفه ای بنویسید ولی به شرطه ها و شروطه ها !! شما اگه تجربه php خام نویسی نداشته باشید اصلا کم میارید تو این داستان و همون اولهاش گیر میکنید و اصلا قدم از قدم نمیتونید بردارید . چونکه customize نمیتونید بکنید و کتابخونه نوشتن بلد نیستید و خیلی چیزای دیگه که پیش شرط کار با framework هاست . یعنی اولش باید چند تا کار خام بزنید (حداقل واسه خودتون) و با مشکلات از نزدیک دست و پنجه نرم کنید بعدش از کار n ام به بعد برید سراغ framework ها . همچنین خوندن یه کتاب ساخت framework در کنار استفاده از یک framework رو شدیدا توصیه میکنم چونکه میفهمید کدتون در نهایت چطوری اجرا میشه و دانستن بهتر از ندانستن است !
در مورد cms هم که تکلیفش معلومه شما بازم دستتون بازه و زمان توسعه معمولا صرف نوشتن plugin میشه و برای پروژه های کوچیک خیلی خوبه (بستگی به cmsداره ، میگن jumla انعطاف پذیره و واسه پروژه های بزرگ هم فیته) .
پیشنهاد من : از level 0 شروع کنید و پروژه بزنید و بعدش برید level 1 و پروژه بزنید و بعدش برید level 2 و پروژه بزنید .هر سه تا رو تجربه کنید و باهاشون کار عملی بزنید . بعد n سال (بستگی به خودتون داره حدودا یک سال و نیم) که تجربه کار با هر سه روش رو دارید هزینه و زمان هر پروژه و خواست کارفرما (در صورتی که معقول باشه) رو بسنجید و یکی از روش ها رو انتخاب کنید . موفق باشید