این مقاله، یک بحث و جدل دیگر درباره این که PHP یا Java زبان بهتر یا بدتر نسبت به زبان مورد علاقه شما است، نمیباشد. در واقع، این مقاله درباره فناوری سازمانی است. برای مثال Java Enterprise، و این که چگونه میتواند استارتآپ بر پایه وب، یا کسب و کارهای کوچک یا متوسط بر پایه وب شما را از بین ببرد. به علاوه، درباره این که چگونه هیچ فناوریای مانند PHP (یا Ruby، پایتون، Perl و...) نمیتواند آن را نجات داده و به مرحله بعدی ببرد. میتوانستم هر زبان یا فناوریای را در هر سمت طیف انتخاب کنم، اما آن دو موردی را انتخاب کردم که بهتر میتوانند منظور من را برسانند.
این یک شرح فنی برای حرفهایها نیست؛ بلکه یک تصویر کسب و کاری و عملیاتی (برای افراد فنی غیر حرفهای) درباره این است که یک کسب و کار کوچک یا متوسط بر پایه وب، چه چیزی را نیاز دارد و چه چیزی میتواند آن را از بین ببرد.
چیزی که یک کسب و کار بر پایه وب کوچک نیاز دارد، بدون توجه به این که نهایتا چقدر بزرگ خواهد شد، LAMP است. برای کسانی که نمیدانند، LAMP مخففی است که سیستم عامل، وب سرور، دیتابیس و زبان برنامهنویسی شما را تعریف میکند. در این مورد، لینوکس، Apache، MySQL و PHP. اگر شما یک موسس یا یک رهبر ارشد غیر فنی با گرایش به کسب و کار هستید و به نصیحتهای بقیه درباره فناوری خود تکیه میکنید، احتمالا شنیدهاید که LAMP بی خود است، به اندازه کافی خوب نیست، بیش از حد ساده است و کارایی مورد نیاز شما را ندارد. اینها تمام دروغهایی بی معنی هستند. و اما حقایق:
- اکثر تجارتهای الکترونیک بزرگ، شبکههای اجتماعی و سایتهای ویکی، بر روی PHP شروع شده، و هنوز هم به طور گستردهای از آن استفاده میکنند. مانند Amazon، Facebook و Wikipedia. بیش از ۸۰ درصد از 10 میلیون وبسایت برتر، از PHP استفاده میکنند.
- PHP در مقابل Java، به نسبت 10 به 1، بازار کار و میزان کاربران را در اختیار دارد. (به یاد داشته باشید که ما فقط درباره وباپلیکیشنها صحبت میکنیم، نه برنامهنویسی عمومی)
- برنامهنویسان PHP فراوانتر و ارزانتر از Java هستند.
- PHP کارایی عالیای دارد، به طور مداوم بهتر میشود و در عمل به راحتی با زبانهای کمپایل شده رقابت میکند.
- مدت زمان مورد نیاز برای ارزه کردن برنامه PHP به بازار، تنها بخشی از مدت زمان مورد نیاز برای ارزه برنامههای EE در Java است.
- PHP یک زبان اسکریپتنویسی نیست؛ بلکه یک نیروگاه وب کاملا عملکردی و با گرایش به آبجکت است.
- PHP 7.x یک ارتقای عظیم نسبت به نسخههای قبلیاش است و نسخه 8.0 قول میدهد که از تمام انتظارات پیشی بگیرد.
- فریموورکها فراوان و قدرتمند هستند. قدرت، معروفیت و تسلط Symfony و Laravel غیر قابل انکار است.
- Word Press با تقریبا 60 درصد سهم در بازار، در واقع CMS حکمران است.
- PHP به سادگی برای وب ساخته شده است. هیچگونه سرور اضافی، پردازنده یا... دیگری مورد نیاز نیست. PHP به معنای واقعی با وب سرور شما یکی است.
- WooCommerce، Magneto، OpenCart، PrestsShop، ZenCart، Drupal، Joomla، OsCommerce و... همگی بر روی PHP هستند. Magneto و WooCommerce به تنهایی یک سوم بازار تجارت الکترونیک را در بر میگیرند.
فراتر از این حقایق، هر موسس و رهبر کسب و کار غیر فنیای باید این موارد را درباره زبانهای کدنویسی، راه حلهای شرکتی و گسترش بداند:
طراحی! معماری و طراحی سیستم، بسیار مهمتر از انتخاب شما برای زبان یا هر چیز دیگری هستند. اگر معماری سیستم بدی دارید، انتخاب زبان یا فناوری صحیح بی ارزش است. Java یک زبان کمپایل شده است و به همین صورت، سریعتر از PHP است. گرچه، PHP در عمل بر روی وب سریعتر است. زیرا PHP برای وب طراحی شده است. فریموورکهای PHP برای وب سازمانی طراحی شده است. راه حلهای سازمانی درباره معماری هستند، نه زبان یا فناوری. این که به یک نفر اجازه دهید تا بدون ارزیابی کامل و بحث کردن درباره معماری و طراحی شما را به یک زبان متمایل کند، به مانند این است که به یک املاکی اجازه دهید تا خانهای که هرگز ندیدهاید را به شما بفروشد؛ فقط به این دلیل که سازنده آن از آخرین مدل چکشها استفاده کرده است.
زبانها، ابزار هستند. شما ابزار را برای فعالیتهای در دست خود، و معماری و طراحی را برای هدف نهایی خود انتخاب میکنید. زبانها ابزار هستند. همین! گفتن این که یک زبان «سازمانی» نیست، مانند این است که بگوییم یک چکش برای ساخت آسمان خراشها استفاده نمیشود، زیرا برای ساخت خانهها از آن استفاده میکنند. من دیدهام که افراد متخصص در زمینه مدیریت کسب و کار، چرندهایی مانند «PHP برای ساخت فروشگاههای کوچک است.» را گفتهاند. اما اینطور نیست؛ بلکه طراحیهای ضعیف برای این هدف استفاده میشوند. PHP در دستان یک مهندس نرمافزاری که میداند چگونه به صورت سازمانی طراحی کند، به خوبی کار میکند. PHP هیچگونه کمبودی ندارد که از کاری جلوگیری کند و البته در زمینه وب، برتریهای زیادی نسبت به اکثر زبانها دارد.
اگر بر روی ابزار بیشتر از معماری تمرکز کنید، ممکن است در نهایت از یک منجه نیق (Java) برای کوبیدن میخ استفاده در کنید، در حالیکه یک چکش (PHP) هم برای این کار کافی بوده است. همچنین با سرمایهگذاری بر روی ابزار و خدمهای که ضروری نیستند، پول خود را هدر خواهید داد. اگر میخواهید یک آسمان خراش بسازید، پس یک آسمان خراش را طراحی کنید. راه حلهای سازمانی قدرتمند ساخته شدهاند تا با معماری و طراحی خوب کار کنند، نه یک زبان مشخص.
همه چیز را به شدت ساده نگه دارید. برای رساندن یک ایده به بازار، شما به یک راه حل ساده، سریع و ارزان نیاز دارید که در حال حاضر کار میکند، و بعدا مقیاسبندی میشود. هر چیز دیگری به ضرر شما است و میتواند در نهایت به راحتی به سقوط شما ختم شود. اگر قرار نیست وبسایتی داشته باشید که به محض شروع به اندازه وبسایت Amazon باشد، بهترین راه حل شما یک معماری قوی و PHP در یک محیط LAMP است؛ نه یک راه حل Java Enterprise عظیم.
در این لحظه برای مقیاس بسازید، اما مقیاسبندی اصلی را برای بعدا نگه دارید. نگذارید کسی به شما بگوید که فقط به این دلیل که بعدا به اندازه Amazon را Facebook خواهید بود، در حال حاضر باید با استفاده از ابزار دقیقی که بعدا نیاز خواهید داشت، بسازید. (که هر دوی آنها همچنان از PHP یا زبانهای مشابه به طور گسترده استفاده میکنند.) کاری که در حال حاضر باید انجام دهید، این است که بسیار خوب طراحی کرده، و از ابزار ساده و ارزان استفاده کنید. اگر طراحی خود را به طور صحیح انجام دادهاید، به سادگی خواهید توانست که مقیاسبندی کنید. Facebook با PHP شروع کرد و هنوز هم بر روی PHP است؛ و به نظر میرسد که افراد پشت آن کاملا به درستی مقیاسبندی کردهاند. همچنین Wikipedia هم دقیقا به همین صورت است.
کارهای ضروری برای موسسان و صاحبان کسب و کاری که کسب و کارهای بر پایه وب را مدیریت میکنند:
در ابتدا هزینههای خود را بر روی معماری صرف کنید. این یعنی اولین مستخدم شما یک برنامهنویس با تجربه، یا دوست خواهر شما که کارش با کامپیوترها خوب است، نمیباشد. یک فرد حرفهای در زمینه علوم کامپیوتر که به خوبی آموزش دیده است و تجربه دارد را پیدا کنید، که در ابتدا طراحی و معماری، و سپس کد و زبان را مد نظر دارد. هیچ چیزی از توسعه دهندهای که از روز اول شروع به کدنویسی میکند، برای پایداری بلند مدت پلتفرم ول شما فاجعه بارتر نیست. نمیتوانم به شما بگویم که چند بار شنیدهام که مدیران میگویند: که «اون یک توسعه دهنداه عالی است.» و وقتی که از آنها میپرسم چرا، میگویند: «زیرا در کار خود سریع است.» شما در ابتدا حس خوبی دارید و میگویید: «ببینید این شخص چه سرعتی در کار خود دارد.» سپس پس از گذشت یک سال، در بدهیهای فنی فرو میروید و این جادوگر وب مدت زیادی است که رفته است و دارد رویاهای یک شخص دیگر را خراب میکند.
با فناوری همتراز بمانید. من فاجعههای زیادی را در شرکتها و پروژهها دیدهام که سریعا به همراه گروهی از برنامهنویسان Java Enterprise وارد میشوند، زیرا یک نفر به جای این که وقت را بر روی صحبت درباره نیازها و منابع آنها صرف کند، سرعت و قابلیتهای سازمانی Java را به خورد آنها داده است. یکی از استارتآپهایی که من با آنها صحبت کردم، ۱۴ برنامهنویس Java را استخدام کردند تا شرکتشات را راه بیندازند. آنها متقاعد شده بودند که برای رقابت در فضای سازمانی، به Java نیاز دارند. یک گروه با این اندازه، هزینه ۲ میلیون دلاری در سال را در ایالات متحده دارد. آنها نتوانستند از پس این هزینه بر بیایند، پس این برنامهنویسان را در هند و با هزینه ۱۰۰ هزار دلاری در سال استخدام کردند. به طور خلاصه، حاصل این کار یک فاجعه پنج ساله بود که میلیونها دلار هزینه برای شرکت به جا گذاشت. حتی بدتر از این مسئله، این است که در هنگام پایان کار، آیا میدانید زبان مناسب جدید برای برنامهشان چه بود؟ پایتون! چیزی که نیاز داشتند، میتوانستند با دو توسعه دهنده LAMP خوب و یک معمار یا رهبر توسعه قوی انجام شود. این یک هزینه ۳۰۰ هزار دلاری در سال بود که میتوانست پروژه صحیح آنها را سریعا به بازار برساند تا بتوانند وقف یافته، و پیشرفت کنند.
افراد فنی خود را با دقت انتخاب کنید. هیچ چیز از این مسئله مهمتر نیست. من در ۲۰ سالی که در زمینه توسعه نرمافزار کار کردهام، برنامهنویسهایی را دیدهام که نابغه بودهاند، و دیگرانی را دیدهام که بسیار بد بوده، و فقط کنار هم مینشستند و با همان عناوین، همان مقدار درآمد کسب میکردند. هیچ مدیر غیر فنیای نیست که بتواند تفاوت موجود را بگوید، و واقعیت این است که گاهی مدیران فنی هم نمیتوانند. من برنامهنویسانی را دیدهام که «بهترین» خطاب شدهاند، فقط به خاطر این که در کار خود سریع بودند؛ اما وقتی که به کد آنها نگاه میکنید، یک گندکاری بزرگ را میبینید. اگر شما یک موسس غیر فنی یا رهبر کسب و کار هستید و باید برنامهنویسان را انتخاب کنید، به دنبال کمک بروید. شخصی که از آن نصیحت میخواهید، بی شک سه ویژگی را دارد: مدرکی در علوم کامپیوتر، تجربه گسترده در مهندسی نرمافزار و تجربه در رهبری مهندسان نرمافزار. هیچچیز کمتر از این را نپذیرید. به استخدام کنندگان فنی که در زمینه فناوری کار کردهاند، ولی هیچ وقت یک خط کد ننوشتهاند، یا سیستمی را طراحی نکردهاند قانع نشوید. آنها خوب صحبت میکنند، اما اگر یک حساب گیتهاب و Bitbucket پر از کد، و تحصیلاتی برای پشتیبانی آن ندارند، آنها کسی نیستند که بخواهید از آنها درخواست نصیحت کنید.
این پست واقعا درباره Java علیه PHP نیست. شما میتوانید این عناوین را با هر فناوری مشابهی که میخواهید جایگزین کنید. این مقاله درباره این است که به یاد داشته باشید تا بر روی عناصر اساسی تمرکز داشته باشید. این مقاله درباره این است که همتراز بمانید و به درستی طراحی کنید. به یاد داشته باشید که اگر میخواهید یک میخ را بکوبید، میتوانید از بلدوزرها و انفجارها استفاده کنید، اما بهتر است که فقط از یک چکش و هدفگیری خوب استفاده کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید