معمولاً دولوپرهای باتجربه دلایلی منطقی، حسابشده و موجهی برای اولاً انتخاب یک زبان برنامهنویسی ثانیاً انتخاب فریمورکها و لایبرریهای وابسته به آن دارند. به عبارتی، نیاز اپلیکیشن خود را میسنجند، آینده آن زبان و بازار کار فعلی آن را رصد کرده، به مقایسهٔ زبانهای مختلف میپردازند و با در کنار هم قرار دادن دیتایی از این دست، انتخاب میکنند که مثلاً آیا با Java کد بزنند یا Python.
اما دولوپرهای تازهکار خیلی از چنین الگوریتمی برای انتخاب یک زبان به عنوان زبان اصلی خود پیروی نمیکنند و من هم از این قاعده مستثنی نبودم! در حال حاضر، دولوپر PHP هستم و با ZF وب اپلیکیشن مینویسم اما انتخاب این دو داستان دارد که در ادامه با ذکر برخی جزئیاتی که به نظر لازم میآیند، توضیح خواهم داد که دلایل انتخابم چه بودهاند.
چه شد که زبان PHP را انتخاب کردم؟ (گریزی به سال 92)
معمولاً جزو مشتریان به اصطلاح Loyal (وفادار) هستم به طوری که مثلاً اگر مشتری یک سوپری باشم که پانصد متر از محل منزلم دورتر باشد و یهو یک سوپری در صد متری منزلم باز شود، ترجیح میدهم که در مواقع لزوم هشتصد متر بیشتر راه بروم تا اینکه لیبل Disloyal رویم بخورد.
در مورد شرکت هاستینگ هم دقیقاً این اتفاق افتاد. مشتری شرکت X بودم و از آنجا که در آن زمان با جاوا برای اندروید کد میزدم، دوست داشتم که وب اپلیکیشنم را هم با همین زبان بنویسیم. لذا زنگ زدم به شرکت X (که بعداً متوجه میشوید چرا نامش را نمیآورم!) و گفتم که داستان از چه قرار هست. در کمال ناباوری گفتن که ما این زبان رو ساپورت نمیکنیم در هاستهای اشتراکی و باید سرور اختصاصی (VPS) بگیری. هزینهٔ ویپیاس برایم زیاد بود و نمیتوانستم از عهدهاش برایم و ازشون خواستم که یک سولوشن پیش پایم بگذارند. آنها هم گفتند چرا نمیری سراغ PHP؟ اتفاقاً سایت خود ما هم با این زبان نوشته شده و بسیار زبان راهدستی است.
خب چند هفتهای ذهنم مقاوت میکرد چون روی یادگیری جاوا سرمایهگذاری کرده بودم و به نوعی یک «فیل سفید» شده بود برایم (برای آشنایی بیشتر با این اصطلاح، میتوانید به مقالهٔ فیل سفید چیست؟ مراجعه نمایید.) اما در نهایت چون اینقدر اون شرکت هاستینگ لعنتی رو دوست داشتم که نمیخواستم ترکشون کنم، عطای جاوا رو به لقایش بخشیدم و سوئیچ کردم به پیاچپی و این شد که کلاً مسیرم عضو شد و شدم دولوپر PHP (بماند که اون شرکت روز به روز بزرگتر شد و همچون الباقی سرویسهای ایرانی که وقتی بزرگ میشوند، به همون اندازه فرهنگشون بزرگ نمیشه و دیگه نمیتونن مشتری رو ساپورت کنن، کیفیت پشتیبانیشون پایین آمد و من هم ترکشون کردم و از اونجا که به هر حال روزی با هم نون و نمک خوردیم، به نظر منصفانه نمیرسه که به بدنامی ازشون یاد کنم و به برندشون، به سهم خودم، لطمه بزنم و به همین دلیل از جایگزین X در بالا استفاده کردم.)
چگونه به فریمورک Zend روی آوردم!
در پاسخ به این سؤال که با وجود فریمورک محبوبی همچون لاراول، چرا به سمت فریمورکی رفتم که در اکثر بنجمارکها ازش به سختی در یادگیری، سنگینی، مستندات گنگ، آموزشهای فوقالعاده کم در وب (خواه فارسی و خواه انگلیسی) و در یک کلام «فریمورکی مزخرف و کماستفاده» یاد میشه، باید بگم که این بار اصلاً ربطی به Loyalty نداشت بلکه بیشتر اجبار روزگار بود که در نهایت دست به انتخاب زِند بزنم.
پس از اینکه مدتی به صورت Pure کد زدم، شروع کردم با لاراول کار کردن (نسخهٔ ۴) و پس از مدتی نسخهٔ ۵ آمد که سریع مهاجرت کردم به نسخهٔ بالاتر تا اینکه در شرکتی نرمافزاری مشغول شدم که کارهای مختلفی انجام میدادم. وقتی که صحبت از ورود به دپارتمان توسعهٔ نرمافزار شد، خودم رو اینگونه پرزنت کردم:
- مدیرفنی: با PHP بلدی کار کنی؟
- من: بله
- مدیرفنی: چه خوب.
- من: ممنون.
- مدیرفنی: فریمورک چی؟
- من: بله. با لاراول نسخه آخرش (۵).
- مدیرفنی: ولی ما کل اپلیکیشنهامون روی زِند هست.
- من: خب اشکالی نداره. من با لاراول کد میزنم. اینجوری یک اکوسیستم جدید هم وارد شرکت میشه.
- مدیرفنی: امکاننداره. باید سوئیچ کنی به زِند!
- من: اگر نکنم چی؟
- مدیرفنی: نمیتونی وارد این دپارتمان بشی!
- من: باشه. گور پدر لاراول هم کردن سوئیج میکنم به زِند!
در پاسخ به این سؤال که چرا اینقدر سُستعُنصرانه عمل کردم، باید بگوییم که نیاز به اون کار داشتم و باید خود رو تطبیق میدادم از یکسو و همچنین همه اینها رو ابزاری دیدم که کار واحدی انجام میدن اما از شِگِردهای مختلف.
هیچی، هرچه لاراول یاد گرفته بودم رو از توی ذهنم Unlearn کردم و شروع کردم به Learn کردن زِند و برای اینکه بهتر و سریعتر یاد بگیریم، پروژههای خودم رو هم که با لاراول بالا آورده بودم، همه رو ریفکتور کردم با زِند که پروسهای بسیار سخت، زمانبر و زجرآور بود (برای درک بهتر مفاهیمی همچون Unlearn، توصیه میکنم به مقالهٔ مفهوم سواد در قرن ۲۱ام: برخورداری از مهارتهای Unlearn ،Learn و Relearn مراجعه کنید.)
کلام آخر
به نظرم در زندگی یک جاهایی اختیار است و یک جاهایی جبر که با کنار هم قرار دادن همهٔ تصمیمهایی که در گذشته گرفتهایم (خواه از روی اختیار و خواه از روی جبر) آیندهٔ زندگی ما، چه زندگی شخصی و چه زندگی کاری، رقم میخورد.
مثلاً شاید اگر شرکت هاستینگ X زبان جاوا رو ساپورت میکرد، الان کلاً مسیر Software Development من چیزی دیگر بود و یا اگر شرکت نرمافزاری که داخلش مشغول به کار شدم اجازه کدزنی با لاراول رو میداد، شاید امروز میتوانستم از فرصتهای بسیار زیاد برای کار روی پروژههای جالبی که نیاز به دولوپر لاراول دارند بهرهمند بشم اما ...
اما اساساً افسوس خوردن کاری از پیش نمیبرد و آدم باید مسئولیت تصمیمهایی که میگیره، بهخصوص تصمیمات نادرست، رو به عهده بگیره. لذا دَم شرکت هاستینگ X گرم که من رو سوق داد به زبان PHP که در حال حاضر (2018) پرکاربردترین زبان توسعهٔ وب در دنیاست و دَم مدیرفنی X گرم که مجبورم کرد سوئیچ کنم به ZF که طبق ادعای رسمی سایتش، نسخهٔ سوم این فریمورک:
- Zend Framework 3 runs up to 4x faster than version 2
- ZF3 memory usage is 50% lower in comparion with verision 2
برای یادگیری این فریمورک هم منبع زیر رو میتونید استفاده کنید که به صورت اپنسورس تألیف شده:
- https://olegkrivtsov.github.io/using-zend-framework-3-book/html
در لینک https://goo.gl/e597rm نویسندهٔ این کتاب، Oleg Krivtsov، به خاطر مشکلی که کتابش داشت و بهش گفتم ازم تشکر کرده!!!
ممنون که وقت گذاشتید. جای نظر، انتقاد و پیشنهاد شما در بخش کامنتینگ است.