تصمیم کبری: جانگو یا دات نت؟

اوایل ۲۰۱۵ بود که به طور جدی تصمیم گرفتم یک مقدار اوبونتو را امتحان کنم و به همان واسطه سعی کنم از دات نت به یک پلتفرم غیر مایکروسافتی مهاجرت کنم. با هر کدام از پلتفرم های رایج یک مقدار کار کردم تا دید بهتری پیدا کنم. اما هنوز بعد از دو سال و هشت ماه به دلایل مختلف نتوانسته‌ام به یک پلتفرم توسعه نرم‌افزار غیر دات‌نتی مهاجرت کنم. امروز با خودم فکر می‌کنم که آیا بهتر نیست که یک تصمیم کبری بگیرم و دوباره روی C# و دات‌نت متمرکز شوم؟

مهاجرت از ویندوز

تصمیم به مهاجرت از ویندوز و دات نت را زمانی گرفتم که عمدتا به شکل شرکت و Freelancer در حال انجام پروژه های سفارش مشتری بودم. به این نتیجه رسیده بودم که دات نت انتخاب خوبی برای یک محیط استارتاپی نیست. در بعضی از پروژه هایی که دریافت می کردم، استفاده از محصولات نیمه آماده و Open Source مثل وردپرس یا OTRS (نرم افزار تیکتینگ) توجیه بیشتری داشت. نگهداری و کانفیگ یک سرور لینوکسی به مراتب راحت‌تر و سریع‌تر از نگهداری یک سرور ویندوزی بود. توسعه MVP (کمینه محصول) که در فضای استارتاپی خیلی باب است با پلتفرم های غیر دات‌نتی مثل Ruby/Rails و Python/Django معقول تر به نظر می رسید.

Remote Working

یکی از گزینه های مد نظرم در آن سال‌هایی که از استخدام در شرکت های ایرانی زده شده بودم، کار به صورت Remote با شرکت های خارج از ایران بود. تصورم این بود که بیرون از ایران، این Ruby و Node.js و Python هستند که رواج بیشتری دارند. از طرفی هر چقدر که موقعیت های کاری Remote را مرور می‌کردم می‌دیدم که Rails و Django آمار خیلی بیشتری دارند. به همین خاطر دوست داشتم چیزی غیر از دات نت یاد بگیرم تا شانسم را در به دست آوردن کار بالاتر ببرم.

آیا به اندازه کافی به سی شارپ تسلط دارم؟

حین بعضی از این بررسی ها فرض را بر این گذاشته بودم که به اندازه کافی به C# و دات نت مسلط هستم و اگر یک موقعیت کاری مرتبط با آن‌ها پیش بیاید، مشکلی در جذب و استخدام نخواهم داشت. پس بهتر است که یک چیز دیگر غیر از دات نت هم یاد بگیرم که توی رزومه ام بنویسم هم به دات نت مسلط هستم هم به یک پلتفرم دیگر. اما شرکت در چند مصاحبه خارجی و ایرانی باعث شد که دیگر این‌قدر به این موضوع مطمئن نباشم.

دلایل دیگر

البته برای فرار از دات نت دلایل دیگری هم دارم. ویژوال استودیو ۲۰۱۷ بیش از ۲۰ گیگ حجم دارد. خود ویندوز خیلی کند تر از اوبونتو است. شرکت ها و تیم های دات نتی آنقدری که من دوست دارم فرز نیستند. ظواهر نشان می‌دهند که یک برنامه نویس C# معمولاً کمتر از یک برنامه نویس Node.js اهل ریسک، کنجکاوی و خلاقیت باشد. کلاً ویندوز و دات نت سنگین هستند. Backup گرفتن از یک ریپوی گیت در چند دقیقه قابل انجام است آن هم توسط یک فرد تازه کار. ولی Backup گرفتن و Restore یک Repo در TFS بسیار حجیم تر و کندتر است و فرد انجام دهنده باید اطلاعات خوبی راجع به TFS و MS-SQL داشته باشد. در دنیای مایکروسافت Integration بالا و خوبی وجود دارد ولی در عوض در همه چیز منحصر هستید به ابزارهایی که مایکروسافت خودش به شما می دهد. به تمام این‌ها موارد کپی رایت را هم اضافه کنید. از این همه ویندوز قفل شکسته خسته هستم واقعا. از این همه لپ تاپ بدون ویندوز، از این همه نرم‌افزار کرک. مایکروسافت به من ایرانی سرویس پشتیبانی نمی‌دهد من هم پول ویژوال استودیو و ویندوز را ندارم که بدهم.

شرایط جدید

اما حالا شرایط کمی فرق کرده است. من دیگر درگیر استارتاپ، شرکت داری و فریلسنری نیستم. در حال حاضر متمرکز هستم بر کار شرکتی. این مسئولیت شرکت است که ویندوز قانونی تهیه کند، ادمین برای نگهداری TFS استخدام کند و جوابگوی کندی تیم باشد.

خودم هم به اندازه کافی با لینوکس آشنا شده‌ام که کارهای ضروری ام را با آن انجام بدهم. روی لپ تاپ خودم به اوبونتو و لیبره آفیس عادت کرده‌ام و می‌توانم زندگی‌ام را با همان‌ها بچرخانم.

مایکروسافت Open Sourceتر شده. .Net Core پیشرفت خیلی خوبی داشته. هم کاملاً Open Source است و هم خیلی خوب روی اوبونتو کار می کند.

برداشت جدیدی که از بازار کار در کشورهای استرالیا و کانادا پیدا کرده‌ام این است که دات نت هم جایگاه بدی در بازار کار ندارد. مثلاً شرکت Readify در استرالیا یک شرکت دات نتی حساب می شود.

دوباره دات نت

این مدتی که تصمیم گرفته بودم دات نت را کنار بگذارم تمرکزم را روی جنگو و پایتون گذاشته بودم و داشتم سعی می‌کردم آن‌ها را یاد بگیرم. واقعاً هم از سبک بودن و باز بودن Community آن‌ها لذت می بردم. البته توی کار روزمره همچنان توی ویندوز و دات نت بودم. چون بازار کار داخل ایران تمرکز زیادی روی دات نت دارد. اما چه چیزی محرک من شده برای فکر کردن به بازگشت دوباره به دات نت سنگین و بی هیجان؟

دلیل اول

اولین دلیل، احتمال مهاجرت است. کسانی که به طور جدی به دنبال مهاجرت هستند می‌دانند که بزرگ‌ترین چالش پیش روی مهاجران پیدا کردن کار است. کسی که سال‌ها دات نت کار کرده می‌تواند تمرکز بیشتری روی آن کرده و احتمال پیدا کردن کار را بالاتر ببرد. اما کسی که مثلاً تازه با پایتون و جانگو شروع کرده در‌ واقع در حال انجام یک جور ماجراجویی است. چون در آن واحد هم می‌خواهد با مشکلات مهاجرت کنار بیاید و هم اینکه به یک پلتفرم جدید مهاجرت کند.

از طرف دیگر آن وقتی که برای تسلط به پایتون صرف می‌شود را می‌توان صرف یاد گرفتن زبان کرد که در کشور جدید لنگ نماند. خلاصه اینکه با وجود هیجان بیشتر جانگو، بهتر است کمی محافظه کار تر بوده و مسیر مطمئن تری را برای ادامه مسیر انتخاب کرد.

دلیل دوم

دلیل دوم بازگشت دوباره به دات نت این است که به این نتیجه رسیدم که در همین بازار کار ایران هم نیاز دارم که تسلطم را به دات نت و سی شارپ بالاتر ببرم. درست است که حداقل از نظر خودم درک خوبی از C# و Object Oriented دارم ولی وقتی که در یک مصاحبه از من می‌خواهند که تفاوت Association و Composition و Aggregation را همانجا بدون کمک StackOverflow بیان کنم و من هم با شک و تردید جواب می‌دهم به این نتیجه می‌رسم که آنچنان که باید، به موضوع مسلط نیستم.

قبول دارم که این‌جور سؤالات زیادی تئوری هستند و شرکت ها باید راه‌های بهتری برای استخدام افراد پیدا کنند، ولی وقتی که اثبات توانایی در جلسات مصاحبه کار ساده‌ای نیست پس چاره دیگری هم جز تن دادن به این بازی وجود ندارد. دالایی لاما می‌گوید: اگر می‌خواهی قواعد بازی را عوض کنی اول آنها را بیاموز. از طرف دیگر هیچ تضمینی وجود ندارد که روال مصاحبه در شرکت های کانادایی یا استرالیایی هم همین‌طوری نباشد.

Comments

  1. senaps

    البته اگر این موضوع که جنگو یه فریم‌ورکه و سی‌شارپ یه زبان برنامه نویسی رو کنار بذاریم، می‌رسیم به اینکه بهتره همیشه تمرکز رو روی یک چیز بذاریم…

    برای مثال، یا پایتون، کم کم کار کردن با دیتابیس ها و لینوکس‌ و گیت و فایروال‌ها و حتی یه روزی می‌بینی اونقدری که با ویم داری کد میزنی پای IDE ات نیستی! یعنی یه استک کامل. بعضی از ماها که پایتون کار میکنیم، گاها حتی به زبان سی هم سلام می‌دیم و توی کارهامون استفاده میکنیم…
    دوستانی که در زمینه وب با پایتون کار میکنن، باید دانش مناسبی از تکنولوژی های وب داشته باشن که با سرعت برق و باد داره پیشرفت میکنه! یه قلم جاوااسکریپت و فریم‌ورک‌هاش، تا این یکی رو یاد میگیری می‌بینی توی کامیونتی دیگه قدیمی شده و یکی دیگه اومده!!! یا ورژن جدیدش اومده با کلی تغییرات ساختاری…

    حالا یه عده مثل من بدبخت هستن و با وب و کور همزمان سر و کار دارن و توی یه پروژه، از سی و سی‌پلاس و پایتون گرفته تا کوری‌های خشن اس‌کیو‌ال و جاوااسکریپت و HTML/CSS در هم قاطی میشه تا پروژه در بیاد! 🙂

    در مقابلش، سی‌شارپ یه استک کامل با تکنولوژی های خودش و غول بی‌شاخ و دمش، ویژوال استودیو هستش… یعنی دو دنیای کاملا متضاد با هم…
    برای یاد گرفتن و ادامه در یکی، باید استک دیگه رو کاملا رها بکنی… همونطور که عرض کردم، در دنیایی که ما سیر میکنیم، حتی یه زبان بخصوص ممکنه برای سولوشن های مختلفش استک‌های مختلفی داشته باشه… مثل رفقای وب‌کار و نتورک‌کار و هوش‌مصنوعی کارمون در پایتون…

    خوب، قطعا من تجربه خیلی کمتری نسبت به افشار محبی دارم که بخوام رفاقتی یه پیشنهاد بکنم، ولی این رو برا خواننده های وبلاگش میکنم، شاید دیالوگی هم شکل گرفت!
    واقعیت اینه که شما باید یه زبان و استک‌اش رو بگیری و بری….

    همراه جنگو، دیتابیس میاد، همراهش لینوکس و گیت، همراهش تنظیم فایروال‌ها و کانفیگ دیتابیس‌ها، همراهش HTML/CSS و جی‌کیوری و جاوااسکریپت… یه استک کامل! پس اگر میخوایم جنگو کار کنیم، همین الانش هم یه استک از تکنولوژی ها جلمون هستش که روز استخدام لازمه که باهاشون اشنا باشیم…

    من شخصا روزی که استخدام می‌شدم در مصاحبه استک‌ام مشخص شد:

    پایتون – > متوسط
    فلکس -> متوسط
    اشنایی با زبان انگلیسی – > خیلی خوب
    HTML/CSS -> متوسط
    git -> متوسط
    ++C/C -> کمی(خوندن و ویرایش کد)
    جاوااسکریپت(جی‌کیوری – کمی، انگولار- کمی، ریکت- کمی…) در حد خوندن و ویرایش کد!
    لینوکس- گیت -> متوسط…
    شبکه، امنیت، و … -> کمی
    دیتابیس ها( پستگرس – کمی، مای‌اس‌کیو‌ال- خوب، NOSQL- خوب)
    و…

    در حالی که شرکت مربوطه به دنبال یه نیروی حرفه‌ای میگشت، ولی چون دو سه نفر دیگه‌ای که برای استخدام از دانشگاه شریف و علم و صنعت اومده بودن و بینشون من که اصلا تحصیلات دانشگاهیم نه معدل خوبی داره نه اسم دانشگاه مناسبه، استخدام شدم…
    چرا؟ چون کل استک رو در حدی که کارم رو راه بندازم بلد بودم و این چیزیه که مهمه! بلد باشی، بتونی کارت رو راه بندازی با سرچ کردن…

    ممکنه شخصی بیاد که یکی یا دوتا از بخش‌های این استک رو در سطح عالی داشته باشه، ولی نمی‌تونه کاری از پیش ببره چون کل استک برای تولید محصول نهایی و همراهی با تیم نیاز هست…

    بهترین کار این هستش که ادم استک خودش رو پیدا کنه و درش به سطح مناسبی برسونه خودش رو…. من ۴ ماهه که توی شرکت فعلی کار میکنم و به شدت وضعیت دانشم نسبت به تکنولوژی هایی که گفتم به شدت افزایش پیدا کرده! در صورتی که هنوز برخی مباحث اولیه و مقدماتی که توی کارم بهشون بر نخوردم و لازمم نبوده رو دوستان می‌پرسن، هیچ ایده‌ای ندارم!! یعنی نیاز نیست همه چیز یه زبان رو بلد باشی… کافیه استک‌ات رو پیدا کنی و بلدش باشی! 🙂

    1. Post
      Author
      افشار محبی

      سلام.

      من اینجا نمی خواستم بین دات نت و ASP.NET و C# با جانگو و پایتون مقایسه ای انجام بدم. من هم اگر آزادی عمل داشتم دوست داشتم از جانگو و امثالهم استفاده کنم.

      اینجا صحبت بازار کار است و اجبارهایی که در انتخاب پلتفورم وجود دارند.

      همین طور صحبت کمبود وقت برای تسلط به پلتفرم های جدید…

    1. Post
      Author
      افشار محبی

      سلام امید.

      من خودم هم پایتون و لینوکس را خیلی دوست دارم. هیجان خوبی داره.

      ولی خوب چه میشه کرد. در بازار کار ایران و حتی کشورهایی مثل آمریکا و کانادا، با دات نت و سی شارپ راحت تر میشه پول در آورد!

       

  2. Reza

    سلام – چرا جاوا رو امتحان نمیکنید ، جاوا هم دنیای جالبی داره و هم بسیار بزرگ و متنوع با فریم ورکهای قوی- برای پروژه های وب و انترپرایز فریم ورک اسپرینگ و جی باس سیم فوق العاده قوی هستش و هم چنین ORM های جاوا مانند هایبرنیت ، مای بتیس و… فوق العاده خوب و قوی هستن – من فکر میکنم شما چون دات نت کار هستید و به نوعی #C هم از روی جاوا درست شده است و همچنین بعضی از فریم ورکهای آن مانند Nhibernate از hibernate جاوا الگو گرفته اند شما بتونید سریع تر روی جاوا مهاجرت کنید ، و همچنین جاوا هم توی کشورهای غربی خصوصا آمریکا وا کانادا و اروپا بسیار پرکاربرد هستش .

    1. Post
      Author
      افشار محبی

      سلام. اتفاقا جاوا را هم خیلی دوست دارم. ولی واقعیت اینه که هیچ وقت برام پیش نیومده که توی یک تیم جاوایی کار کنم. انگار که در ایران (و شاید کشورهای دیگه) این طوریه که هر کس روز اول یک پلتفرم را انتخاب کرد باید برای همیشه در اون بمونه مگر این که اون پلتفرم مثل فاکس پرو و دلفی بمیره که شخص مجبور بشه به یک چیز جدید مهاجرت کنه.

      حتی یک زمانی سعی می کردم چیزهایی که در جاوا هست را در نظر بگیرم و با معادل دات نتی اونها کار کنم. مثل Hibernate در جاوا و NHibernate در دات نت که تا قبل از ظهور EF خیلی رایج بود.

  3. فربد

    سلام
    راستش من خیلی از جو ضد مایکروسافتی که وجود داره و گاها آدم احساس می کنه یه جور خودنمایی هم باهاش همراه میشه خوشم نمیاد. به خصوص الان که همینطور که خودتون هم گفتید مایکروسافت هم تو روش هاش تحولاتی بوجود آورده و به نظرم تو مسیر خوبی داره پیش میره.
    می دونم که خودتون سالها تجربه دارید و من مدتهاست که وبلاگ شما رو می خونم. بابت درد دل موارد زیر رو عرض میکنم.
    اینکه یه کاری رو آدم بابت تست انجام بده، یا به طور تفریحی یه ابزار خوب با تکنولوژی ها و فریم ورک های جدید تهیه کنه یه بحث هستش، اینکه واقعا یه نرم افزاری تهیه بشه که سالها امکان پشیبانی داشته باشه و نیروی فنی به تعداد مناسب هم براش باشه یه بحث دیگه.
    می دونم که شما هم وبسایت آقای وحید نصیری رو می خونید و دیدم که کامنت هم گذاشتید. واقعا بعضی پست های ایشون، چه در زمینه دات نت و چه غیر دات نتی، خیلی سطح بالا و عمیق هستش. کی می تونه بگه مثلا ایشون چون با دات نت کار میکنه کارشون سطح پایین هستش. منظورم اینه که تهیه نرم افزار با کیفیت، بیشتر از اینکه به زبان و تکنولوژی مورد استفاده مربوط باشه به دید و دانش فرد از مفاهیم برنامه نویسی و توسعه نرم افزار بستگی داره، و البته اینکه توی تکنولوژی انتخابیش روش درست استفاده از ابزارها رو بلد باشه.
    تو چند مورد بین خودم و شما شباهت می بینم. اینکه سالها با سی شارپ و دات نت کار کردید (البته می دونم که شما تجربه و دانش تون خیلی از من بیشتر هستش) علاقه دارید با تکنولوژی های غیر مایکروسافتی هم کار کنید. احساس می کنم دارید شرایط رو برای مهاجرت به خارج از کشور بررسی می کنید .
    من واسه خودم این مسیر رو در نظر گرفتم: تو تکنولوژی های سمت سرور همچنان روی دات نت تمرکز می کنم. سعی دارم asp.net core رو هم بعد از مدتی دنبال کنم. اما اولویت اولم مهارت تو زمینه توسعه سمت کلاینت هست. به این ترتیب اون علاقه به مهارت تو تکنولوژی های غیر مایکروسافتی هم برآورده میشه. تو این زمینه در حال مطالعه angular هستم.
    در مورد مهاجرت هم من خیلی استرالیا رو بررسی کردم. در مورد خیلی از رشته ها که قبلا اوضاع خوب بوده ( مثلا معدن یا عمران و …)، الان شرایطشون مناسب نیست. چون در حال تغییر فضای کار و حرکت به سمت تکنولوژی های جدید هستن. اما با چند تا از برنامه نویس های ایرانی که تو استرالیا مشغول هستن صحبت کردم(به طور اینترنتی البته)، میگن اوضاع برای کار نرم افزار خوب هست. همونطور هم که خودتون گفتید خیلی از شرکت هاشون هم با دات نت کار می کنن. عمده شرکت های نرم افزاری هم تو سیدنی هستن. البته میگن اگه هم به سمت سرور هم به سمت کلاینت مسلط باشید، احتمال اینکه کار بهتری گیر بیارید بهتر میشه.
    ببخشید که اینقدر پر حرفی کردم.

    1. Post
      Author
      افشار محبی

      سلام فربد عزیز،

      حرفهات را به طور کامل درک می کنم. جوهای ضد مایکروسافتی که بیشتر از روی احساسات هست تا از روی حساب کتاب را همه دات نتی ها باهاش آشنا هستند. تقریبا اکثر برنامه نویس های با تجربه قبول دارند که نقطه قوت هر برنامه نویسی نوع نگاه او به مهندسی نرم افزار و توانایی ها او در توسعه نرم افزار هستش نه تکنولوژی و پلتفرمی که استفاده می کنه.

      در ایران پیدا کردن نیروی برنامه نویس برای دات نت خیلی خیلی ساده تر از پیدا کردن نیروی برنامه نویس برای روبی یا اسکالا یا گو هستش. حالا پایتون چون زبان دانشگاهی هستش یک مقدار اوضاع بهتره ولی باز هم پیدا کردن نیروی برنامه نویس در اون کار خیلی سختی است. تازه اینها که گفتم در تهران هستش. فکر نمی کنم در شهرهای دیگه مثل مشهد یا اصفهان و شیراز برنامه نویسی غیر از دات نت، PHP و جاوا پیدا بشه اصلا. وقت هایی که در مورد برتری این پلتفرم به اون پلتفرم صحبت میشه به این موضوع دقت کافی نمیشه. برعکس این حالت هم وجود داره. شرکت هایی که نیاز به برنامه نویس غیر از پلتفرم های رایج داشته باشند هم خیلی کم هستند. شما اگر یک روبی کار یا اسکالا کار خیلی حرفه ای هم که باشی فکر می کنی چند تا شرکت باشند که نیاز به مهارت شما داشته باشند؟

      در مورد مهاجرت درست حدس زدید. تا وقتی که در ایران هستیم شرایط به همین شکل است. ولی وقتی که احتمال مهاجرت هست پس باید شرایط کشور مقصد را هم بررسی کرد. تنوع پلتفرم در سیدنی یا مثلا در تورنتو بالاتر از تهران هست. از آنجا که پیدا کردن کار در بدو مهاجرت یک challenge خیلی جدی هستش، خیلی خوبه که قبل از رفتن این موضوع به طور جدی بررسی بشود.

      وب سایت وحید نصیری کیفیت بالایی داره و واقعا یک رفرنس خیلی خوب هست. خیلی جاها می بینم که از مطالب اون استفاده می شه.

  4. Shohreh

    با سلام
    همکاران واقعیت اینه که با صحبت تقای محبی موافق ترم
    از سال ۸۳ برنامه نویسم و پا به پای مایکروسافت دویدم
    و چه زمانهایی که برای مطالعه تکنولوژیهای جدیدی صرف کردم که خیلی سریع عوض شده و عمرمو هدر دادم. ولی تا قبل دوستان جاوا کار خیلی بهتر پیشرفت کردند. چون مایکروسافت واقعا نمیذاره تو عمق بری ولی جاوا کارها با صرف زمانی مطالعه کمتر از من معمار پروژه های بزرگ هستند . چون اصلا دات نت برای پروژه های بسیار بزرگ شرکتی حرفی برا گفتن نداره و اخرش دات نت کار به حساب میایییم. اما بالینوکس و اپن سورس و جاوا و جدیدا پایتون واقعا احساس مهندس کامپیوتر میکنم. برا اثبات حرفم اینکه خیلی شرکتهای قوی اجازه نمیدن نیروی دات کاری حتی جاوا کور بلده و اوراکل و … را بجای جاوا کار استخدام کنن ، چون یه پیشرفت بزرگه . ولی جاوا کار را راحت تو پروژهای دات نتی میارن و استقبال میکنن .
    الان نه شرکت پایتونی منو استخدام میکنه چون سن بالایی دارم و ترجیح میده با اطلاعات مشابه من یه فرد دو سال سابقه کار پایتون و خیلی جوان بیاره نه خودم تمایلی به کار روی پروژه و شرکت دات نتی دارم.چون خیلی کم مدیر فنی و با سواد پیدا میشه و اکثر دات نت کارها واقعا سطحی هستند .چون اگه بخوان خیلی عمیق بشن اصلا از بازار کار دور میفتن .

    1. Post
      Author
      افشار محبی

      این مطلب دو سال پیش نوشته شده و از اون وقت تا حالا چیزهای زیادی عوض شده، هم در مایکروسافت و هم در من. .Net Core مسیر طولانی و پر نوسانی رو طی کرده. این مسیر باعث تفرقه بین دو شاخه دات نت فول فریم ورک و دات نت کور شده و از طرف دیگر سی شارپ در حال از دست دادن محبوبیتش است. دو سال پیش، چشم امید همه به دات نت کور بود. اما الان این جاوا اسکریپت و پایتون هستند که در حال برنده شدن رقابت هستند.
      من هم در این مدت مطمئن تر شدم که مسیر شغلی ما فقط زبان برنامه نویسی و پلتفرم نیست، بلکه انواع و اقسام مهارت های توسعه نرم افزار از جمله تست، طراحی الگوریتم، مدیریت پروژه، ارتباط با همکاران، طراحی، ریفاکتورینگ و یاد گیری مداوم هم هست. علاوه بر این، بخش زیادی از وقت ما به تحلیل سیستم ها و طراحی محصول می گذرد.

    2. Post
      Author
      افشار محبی

      نکته دوم این که برای یاد گرفتن هیچ وقت دیر نیست. الان که هیچی، بیست سال دیگه هم می تونید پایتون یاد بگیرید و بهش مسلط بشید. شما کلی مهارت دیگه دارید که با سویچ کردن بین پلتفرم ها از بین نمی روند.
      اگه شرکتی شما را استخدام نمی کند به خاطر شرایط سنی، به این نکته دقت نکرده که در حال از دست دادن یک کاندیدا با ده سال تجربه کاری است. شاید هم اون شرکت پول به اندازه کافی برای استخدام یک برنامه نویس با تجربه نداره و به همین دلیل به دنبال استخدام یک برنامه نویس تازه کار هستش.

    3. shahram

      شرکتهای باپدر و مادر به عمق سواد و تجربه کاری کاندیدا بیشتر اهمیت میدن تا به تکنولوژی هایی که بلده ، کسی که چندسال برنامه نویسی کرده ، پیور پایتون و جانگو رو میتونه توی سه ماه یاد بگیره ، خصوصا سینتکس پایتون واقعا راحته و در مقابل سینتکس جاوا و اسکالا , ++C … هیچی نداره .

      1. Post
        Author
        افشار محبی

        به نظر من هم منطقی این است که شرکت ها به دیگر مهارت های افراد هم توجه کافی بکنند. مثل تکنیک های حل مسئله، خلاقیت، طراحی الگوریتم، کار تیمی و مطالعه مداوم داشتن. در واقع، شرکت ها باید بیش از آن که به تکنولوژی های شما اهمیت بدهند به مهارت ها و توانایی های که مثال زدم اهمیت بدهند. اما خوب، مسئله این است که درصد قابل توجهی از شرکت های تولید نرم افزار، عملا در حال تولید نرم افزار نیستند که بخواهند از این الگو ها استفاده کنند. نه این که کارشان بی ارزش باشد، به هیچ وجه. بلکه اونها بیشتر در حال شناخت منطق تجاری و خوراندن آنها به ابزارهای نیمه آماده آماده هستند. خیلی از شرکت های ما تولید کننده نرم افزارهای مالی اداری موسوم به LOB (Line of business) هستند. در این طور نرم افزارها، تعداد زیادی فرم شبیه به هم برای ورود اطلاعات داریم و کار سیستم سر و کله زدن با یک عالمه رکورد در دیتابیس است. گزارشات و خیلی insert ها معمولا به شکل Stored Procedure ها نوشته می شود. در این خط تولید، تکیه بیشتر بر شناخت منطق تجاری است تا تولید نرم افزار به معنای واقعی اش.
        شرکت های ما بیشتر وقت ها نرم افزارهایی می نویسند که تعداد بسیار محدودی کاربر دارد، در فضای عمومی اینترنت قرار ندارد، تیم های توسعه نرم افزار خیلی کوچکی دارند و چون خود شرکت قوام کافی ندارد، خیلی به آینده فکر نمی کنند که بخواهند نگران Unit Test و این طور چیزها باشند.

        اگر شرکت ها واقعا مجبور باشند که نرم افزار با کیفیت در حوزه های متنوع تولید کنند، آن وقت سراغ برنامه نویسی خواهند رفت که سواد و تجربه عمقی داشته باشد نه این که صرفا با پلتفرم ها آشنا باشد. این است که شرکت پدر و مادر کمیاب است.

        اما حالا که یک جوالدوز به شرکت ها زدیم خوبه که یک سوزن هم به برنامه نویس ها بزنیم. برنامه نویسی که برنامه نویسی را به معنای واقعی کلمه یاد گرفته باشد نباید خیلی نگران عوض کردن تکنولوژی و پلتفرم باشد. وقتی که شما HTTP و Request و انواع Verb و خطرات امنیتی فضای وب و API و REST و SOAP را خوب بشناسید، پس نباید خیلی سخت تان باشد که ASP.NET را با Django یا Rails عوض کنید. قبول داریم که سویچ کردن بین تکنولوژی ها سرعت آدم را می گیرد، اما فقط سرعت را کم می کند نه این که غیر ممکن باشد.

  5. ا ز

    سلام
    اولا که asp.net core سریع ترین پلتفرم جهان برای وب شد(بر طبق آزمایش های انجام شده)
    دوما اصلا زبان برتری وجود ندارده و با هر کدوم میشه درآمد کسب کرد

    1. Post
      Author
  6. آرش

    سلام، گفته بودید از اینکه دات نت و #C رو انتخاب کردید پشیمون هستید، الان که dotent core اومده و دات نت هم پیشرفت های زیادی داره ازش آیا راضی هستید؟ به نظرتون همون جاوا رو من ادامه بدم بهتره یا دانت رو، چون جدیدا خیلی ها دات نت کور را تعریف میکنن.

    1. Post
      Author
      افشار محبی

      الان الان که اوایل ۲۰۲۱ هستیم از دات نت کور استفاده می کنم. بازار کار خوبی داره و روی لینوکس هم کار می کنه. اما توصیه اکید من به همه این است که در کنار هر پلتفرمی که الان مسلط هستند، حالا چه دات نت و جاوا چه پی اچ پی و پایتون، یک پلتفرم دیگه هم یاد بگیرند و مسلط بشوند. بازار کارا با آدم های پلی گات سازگاری بیشتری داره.

  7. محمد جواد

    سلام خیلی دوست دارم از از دات نت به CPP غیر از vs مایکروسافت مهاجرت کنم و وب نویسی رو با cgi انجام بدم، اما KDE هایی که استفاده کردم حتی یک دونه کتابخانه پارسر XML هم نداشت! پیدا کردن یک دونه تقویم فارسی در C هم کار سختی هست، حالا اوپن سورس هست، تجاری هست، رفرنس میشه تو پروژه یا نه!

    یک سری دیگه هم مثل کیوت، اون قدر موقع دانلود از سایت مرجع اذیت می کنند که کلا آدم از مهاجرت به CPP ناامید میشه

    کار هم واقعا در زبان C سخت هستش و هرگز نمیشه به اندازه #C روش مانوور داد

    استفاده از کتابخانه های گیت هاب و سورس فورگ و … هم به نظر بهینه نمیان و کار می دن دست برنامه تا حدی که ممکنه زبان کامپایل شونده C، سرعت اجراش به حد php تنزل پیدا کنه

    JSP هم فریم ورک جالب توجهی نیست و مهاجرت از دات نت به جاوا، بیرون آمدن از چاله مایکروسافت، و افتادن در چاه اوراکل هست

    همون php کارها خیلی به نظرم از بقیه جلوتر هستند چون مشکل مفسری بودنشون با نیرنگ فیسبوک حل شده.

    به صورت عادی هم مفسرهای php به شدت بهینه شدند و پایتون و پرل در مقابل php بسیار کند عمل می کنند و راه زیادی برای بهبود تفسیر در این زبان های مفسری وجود داره

    واقعا تصمیم مهاجرت به زبان برنامه نویسی دیگه خیلی سخت هست، مخصوصا برای کسی که با زبان شیرین #C مدت های زیاد کدنویسی کرده

    خوش به حال اون شخصی که در C استاد شده و روی پروژه های C می تونه خوب مانوور بده و حالا می خواد به #C یا نود js هم رجوع کنه. کار این آدم خیلی ساده هستش، ولی کار ما سخت و پیچیده هست.

    مشکل بزرگ این هست که اگر پشت یک KDE یا فریم ورک یا زبان برنامه نویس یا هرچی دوست دارید اسمش رو بزارید، یک تیم قدرتمند مثل مایکروسافت نباشه، کار برای برنامه نویس بسیار سخت میشه. نمونش رو می تونید مقایسه ای بین Code::Blocks با VS داشته باشید تا ضعف های این ابزار ضعیف آشکار بشه.

    تو خود eclips هم راه اندازی ابزار برنامه نویسی C پیچیده هستش. متاسفانه مایکروسافت همه چیز رو لقمه کرده و آماده گذاشته تو دهن ما، و ما اون اوایل خیلی خوشحال بودیم، اما حالا می فهمیم چه کلاه گشادی سرمون رفته.

    به هر حال امیدوارم در هر دو مهاجرتتون موفق باشید.

    1. یاشار

      سلام، jsp فریم ورک نیستش، بلکه یک تمپلیت جاوا هستش که سالیان درازیه که منسوخ شده، الان توی جاوا خیلیا با اسپرینگ بوت کار میکنن که بسیار عالی هستش و از دات نت مایکروسافت به نظرم خیلی جلوتره، ،مباحثی رو که اسپرینگ ده سال پیش مطرح کرده بود، تازه یه سری از پلتفرمها دارن پیادش میکنن،رفتن سمت جاوا ربطی به اوراکل نداره، شما میتونید از OpenJdk آمازون استفاده کنید، کما اینکه خیلی از شرکتهای غربی رو openJdk هستن. الان خیلی از سیستم های بانکی و تجارت الکترونیک با جاوا نواشته شدن. اگه هم از جاوا خوشتون نمیاد از زبان های jvmای دیگه ای مثل کلوژر یا اسکالا میتونید استفاده کنید که به شدت قوی هستن.

  8. امیر

    با سلام
    اساتید و دوستان من یه مدت زیادی دات نت کار کردم از 6 ماه پیشم رفتم سراغ جنگو
    ولی الان یه نفر از دوستام میگه برگردیم بریم دات نت
    دیگه خیلی سردرگم شدم
    علتی که هم میگه Asynchronous نبودن drf جنگو هستش
    من به نظرتون چه خاکی بریزم تو سرم با حرف همین دوستم 6 ماه پیش رفتم پایتون – جنگو الانم میگه برگرد دات نت کور لطفا لطفا کمک کنید

  9. Amir fa

    سلام جناب محبی حالا که از نوشتن مقاله تا الان 5 سال گذشته و نمیدونم ایران هستید یا خارج، نظرتون درباره عمیق شدن در سی شارپ چیه؟
    جاوا رسما برای پروژه های بزرگ خوبه( یک تیمی که شامل چندین جاوا کار هستش)و برای کسی که میخواد هر روز خودش رو به چالش بکشه و پیشرفت کنه مناسبه، ارتقای شغلی یا هرچیزی
    پایتون توی ایران جزوی از ترند هاست ، از بحث استارت آپ و غیره که بگذریم یادگیری پایتون به عنوان یک ابزار جانبی قطعا معقولانست و حرفی درش نیست اما این که صرفا فقط روی پایتون تمرکز بشه نظرم مخالفه ، پایتون جهت راحت تر کردن برخی کارها فوق العادست، یک جور مکمله
    و اما سی شارپ و دات نت، خوبیه دات نت اینه که یه ابزار کامل داره یعنی هر چیزی رو که بخواین داره و کار رو راه میندازه، اما جاوا همون ابزار رو داره ولی از همون یه ابزار انواع مختلفی رو به خودش اختصاص داده برای هر کاری کتابخانه های مختلفی داره یادگیری هر کدومش ماه ها زمان میبره، پس به خاطر همین هر مهندس نرم افزار روی یه کدوم از اون کتابخانه ها متمرکز میشن تا با کار تیمی بتونن بهترین خروجی داشته باشن، اما کسی که فقط دات نت بلده میتونه هر کاری رو انجام بده چه توی تیم باشه و چه به صورت شخصی کار کنه، پایتون هم همانند جاوا هستش هزاران کتابخانه دارن، همانند شیرجه زدن وسط اقیانوس
    و خب البته مهمترین مسئله که خیلی ها بهش توجه نمیکنن بحث مهم عیب یابی ، کنترل و توسعه پروژه هستش که سی شارپ با ide قدرتمندش به نام ویزال استودیو تمامی این کار هارو به شکل فوق العاده عالی انجام میده و از این بابت خیالتون کاملا راحته
    سینتکس سی شارپ قانون مند تره بحث oop به خوبی توی سی شارپ انجام میشه، از طرفی ویژوال استودیو برخی کار های سخت دیگه رو هم انجام میده، دیگه چی میخواین
    دات نت کور هم که اومد دیگه نور علی نور شد، توی سال 2022 هستیم تقاضای کار برای .net به حدی رسیده که در حال رقابت با php هستش
    باقی چیز ها هم بماند
    پایتون و جاوا امکانات زیاد و قدرتمندی دارن اما کیه که همشونو یاد بگیره و از همشون استفاده کنه توی استخر هم میشه شناگر خوبی بود.
    تمامی حرف های بالا به کنار، این حرف که یک برنامه نویس نتونه الگوریتم بنویسه یا ندونه چطور و کجا از اون الگوریتمی که طراحی کرده استفاده کنه تا به یک خروجی به بهینه ترین حالت اجرا برسه از نطر من یک برنامه نویس نیست
    ممنون از مطالعه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *