یکی از دغدغههای بزرگی که در طول آشناییم با دنیای برنامه نویسی پیدا کردم و دارم این هست که بالاخره به سمت چه زبان یا فریمورکی برم و چه حوزهای رو تخصصی دنبال کنم.
خب بعد از تحقیق کردن روی حوزه های مختلف و صحبت با افراد خبره توی این زمینه به نتایج مختلفی رسیدم که حس کردم نوشتن اونها بد نیست.
اولین چیزی که پیشنهاد میشه گوش کردن به پادکست های تولید شده توسط افراد شناخته شده توی دنیای نرمافزار هست که خداروشکر تعدادشون هم کم نیست و میتونه یک دید نسبتن کامل توی حوزههای مختلف بده. پادکست های رادیو گیک-جادی و رادیو فولاستک سکان آکادمی به نظرم از واجباته 🙂
جمع بندی که من در ادامه میگم مربوط به زمان نوشتن این پست هست و این مطالب به سرعت در گذر زمان تغییر میکنند و البته که این تحلیلها کاملن شخصی هستند.
این نکته رو هم بگم که این توضیحات صرفن گزینههایی هست که من انتخاب کردم و مطمعنن میتونه انتخاب کاملی نباشه و همچنین متغییر:)
در حال حاضر حوزه های بزرگی که توی برنامه نویسی مطرحاند به طور کلی شامل سه بخش هستند:
- برنامهنویسی تحت دسکتاپ
- برنامهنویسی تحت وب
- برنامهنویسی تحت موبایل
چیزی که الان گفته میشه اینه که حوزه برنامهنویسی تحت دسکتاپ کم کم داره از رده خارج میشه و تا چندسال دیگه تقریبن سرمایهگذاری توی این زمینه انجام نمیشه. پس نمیشه زیاد به این بخش دید تجاری بزرگی داشت و وقت آنچنانی صرفش کرد.
برنامهنویسی تحت وب و موبایل به طرز عجیبی در حال رقابت با همدیگه هستند. به طوری که میشه گفت تخصیص پروژه های تجاری در این دو حوزه ۵۵٪وب به ۴۵٪موبایل هست که تحت موبایل روز به روز با سرعت زیادی درحال پیشرفت هستش و البته حوزه وب هم داره به سمت وباپلیکیشنها پیش میره، پس منطقیه وارد این دو حوزه شد.
توی فضای برنامهنویسی تحت موبایل حداقل در ایران پروژههای تحت سیستمعامل اندروید بازار بیشتری رو به نسبت IOS اشغال کردند -> پس اندروید انتخاب شد:)
و خب قطعن برای برنامهنویسی سیستمعامل اندروید به صورت Native و به قولی آدموار 🙂 باید حتمن با زبان جاوا آشنا شد. (ولاغیر …)
حالا حوزه تحت وب که باز خودش شامل دو بخش بزرگ میشه:
- فرانتاند (Front-end)
- بکاند (Back-end)
همونظورم که از اسماشون معلومه بخش فرانتاند به ظاهر و چیزی که جلوی کاربر هست و باهاش در ارتباطه و میبینه یا همون بخش طراحی میگن و بکاند هم در واقع مغز داخلی اون سیستم هست که اعمال محاسباتی و سمت سرور شامل این بخش میشه. حالا به تفکیک بخش روی زبان ها و فریمورک های معروف و پرکاربرد در حال حاضر میریم.
در بخش اول یعنی فرانتاند سه چیز حیاتی و واجب داریم که بدون اینها عملن این بخش تعطیله. اون سه چیز HTML, CSS, JavaScript هستند.
HTML که میشه گفت سنگ بنای صفحات وب هست و عمومن تمام زبانهای تحت وب وابسته بهش هستند درواقع یک زبان به حساب نمیاد بلکه یک نوع زبان نشانهگذاری هست که از XML مشتق شده.
CSS یا همون Cascade Style Sheets هم برای استایل دادن صفحات و آبجکتهاست و در واقع مکملی برای زبان باستانی HTML هست و سعی کرده نقاط ضعفشو پوشش بده، به طوریکه با یکبار تعریف کردن استایل صفحات، هربار و به هرجا که خواستین اونهارو اعمال کنین.
اما جاوا اسکریپت که به نوعی داره محبوب دلها میشه و شاید شده:) یک زبان برنامه نویسی قدرتمند و نزدیک به خانواده زبانهای C هست که تقریبن باهاش در تمامی سه حوزهای که اول گفتم میشه برنامه نوشت. این زبان درون کدهای HTML قرار میگیره و بر روی مرورگر بازدیدکننده اجرا میشه. توسط این زبان ما میتونیم صفحات استاتیک و ساده خودمون رو به صفحات داینامیک یا پویا تبدیل کنیم.
قطعن چند فریمورک بسیار محبوب که هنوزهم جز برترینها و پرکاربردترینها هستند رو باید یادگرفت که شامل BootStrap که یک فریمورک بسیار محبوب CSS هست که برای ساخت صفحات واکنشگرا (Responsive) استفاده میشه و JQuery که یکی از قدیمیها و محبوب های جاوا اسکریپت هست و البته اگرم کسی بخواد تخصصی تو حوزه فرانتاند کار کنه، جاوااسکریپت فریمورک های زیاد و قدرتمندی داره که میشه ازشون استفاده کرد مثل: Angular.js, Backbone.js, Ember.js,…
حالا در بخش دوم یعنی بکاند ما دستمون بازتره و سلیقهها و تنوع بیشتری رو شامل میشه. انتخاب زبان و فریمورک در این قسمت کاملن میتونه سلیقهای باشه، چون نظرات خیلی زیادی روی هر زبان توسط افراد بزرگی داده شده و هرکس با توجه به پیشینه برنامه نویسی و علاقه فرد به سبک کدزنی در زبان، اونو انتخاب میکنه.
برای مثال اگر کسی قبلن با زبان جاوا کار کرده و علاقه هم بهش داره میشه گفت فریمورک asp.net برای امتحان گزینه مناسبیه. دلیلش هم به خاطر استفاده از زبان سیشارپه که شباهت زیادی به جاوا داره و اینکه بازار کار داتنت در ایران خیلی مناسبه و میشه گفت تقریبن همه ارگانهای دولتی روی این فریمورک سوار هستند. دلیل بعدیش اینه که یک محیط مجتمع توسعه(IDE) قدرتمند، باهوش و سبکی مثله ویژوالاستودیو داره که بینظیره.
انتخابای بعدی میتونه استفاده از PHP و خب توی اکثر مواقع به دنبالش فریمورک لاراول هست که اینم از بازار کار خوبی توی ایران برخورداره و سادگیه بیشتری نسبت به دات نت داره و البته رایگان هم هست و اکثر سرورهای ارزان ایرانی ساپورتش میکنن.
در نهایت انتخاب موجود بعدی جاوا اسکریپته با فریمورک های جدید و ساده خودش که داره کاربر هارو به سمت خودش میکشونه، اما نکتهای که هست، طبق گفته بزرگان این حوزه(۷۰٪) جاوا اسکریپت از لحاظ ساختار زبانی به اون قدرتمندی نیست که به فرض تا چند سال دیگه تنها با یادگیری یک زبان هم فرانتاند و هم بکاند کار کرد و این حرف یکمی دور از انتظاره و هنوز جاوا اسکریپت خیلی راه داره تا رسیدن به این فرض ایدهآل. اما این زبان شیرین طرفداران متعصب خودش رو هم داره که پاش وایسادن. البته یکی دیگه از مشکلاتش سخت بودن پیداکردن سروری که ازش پشتیبانی کنه و معمولن نگهداریش هزینه بیشتری به نسبت دو انتخاب قبلی داره و هنوز بازار کار بزرگی به نسبت دوتای قبلی پیدا نکرده.
گزینه های بیشتر دیگهای هم مثل استفاده از زبان روان پایتون و فریمورک Flask در ابتدا و در نهایت Django هم هستند، اما به دلیل نبود سرور درست درمون برای پشتیبانی، نبود بازار کار خیلی خوب، نمیشه بهشون به عنوان یک تخصص اصلی نگاه کرد و وقت روشون گذاشت.
قطعن تجربه کردن سایر زبانها در حد آشنایی به بهتر انتخاب کردنتون خیلی کمک میکنه و پیشنهاد میشه حتمن یک سری به هر کدوم از این زبانها و فریمورکها بزنید و بعد مسیر رو انتخاب کنید.
در نهایت من با توجه به پیشینه برنامهنویسیم، علاقه به سینتکس و سبک این زبان، ابزارهای قدرتمند موجود برای این زبان و بازار کار مناسبش، داتنت رو انتخاب کردم و وارد این دنیای بزرگ مایکروسافتی شدم و حتمن در آینده پستهای بیشتری در موردش مینویسم 🙂