خلأ بین دانشگاه و صنعت

یه وضعیتی هست که بین بازار و دانشگاه به‌وجود اومده و خیلی اذیتم می‌کنه. من بهش میگم خلأ بین آکادمی و صنعت. شاید جای دیگه اسمش فرق کنه. البته مختص کشور ما هم نیست ولی طبق معمول بدترین حالتش توی کشور ما اتفاق افتاده {فرهنگ؟}

این وضع باعث شده که بازاری ناهنجار و صنعتی عقب‌افتاده داشته باشیم. در مورد رشتهٔ خودم که مشکل رو با قد و قوارهٔ کاملش دارم می‌بینم. حدس می‌زنم بقیهٔ شاخه‌های مهندسی هم وضع مشابهی داشته باشن. و البته تا جایی که با دوستان‌مون که مکانیک و برق می‌خونن صحبت کردم؛ وضعیت اون‌ها هم دقیقاً مشابه وضع ماست.

توی این پست ظهر جمعه‌ای، می‌خوام این وضع رو بررسی کنم و چیزهایی رو که دیدم براتون تعریف کنم.

صورت‌مسأله

ما توی دانشگاه (همون آکادمی) درس‌های متعددی رو تو زمینه‌های مختلف یاد می‌گیریم. از تکنیک‌های مختلف هوش مصنوعی گرفته تا شبکه‌های عصبی، محاسبات نرم، طراحی کامپایلرها و کلی مباحث پیشرفته که توی دورهٔ فوق لیسانس آموزش داده میشه. اما وقتی وارد زندگی واقعی میشیم، از هیچکدوم از این‌ها استفاده نمی‌کنیم. توی بازار ما از تکنولوژی‌های متوسط به پایین استفاده می‌کنیم و دامنهٔ کاریِ ما محدود به همون تکنولوژی‌هاست. آخر سر همه میشینیم برنامه‌های حساب‌داری و یا مدیریتی می‌نویسیم، سایت طراحی می‌کنیم و غیره. و البته توی این روند هم به‌هیچ‌وجه از چیزی که تو درس هوش مصنوعی و یا نظریهٔ زبان و کامپایلر یاد گرفتیم استفاده نمی‌کنیم. این وضعیت یک گپ خیلی ناهنجار بین آکادمی و صنعت ایجاد می‌کنه. ممکنه بگید که خوب بازار کشش نداره و فیلان… بعضی‌ها هم میگن که نه، این‌طور نیست. مثلاً من رفتم فلان سازمان از دانش پیشرفتهٔ محاسبات برای حل کارهاشون استفاده می‌کردن… خوب بله. من هم کلی‌گویی می‌کنم، نه وضع قاعده.

روش غالب مهندسی نرم‌افزار در کشور ما: brute force

فرض کنید شما دارید روی یک موضوعی کار می‌کنید که با استفاده از تکنیک‌های برنامه‌ریزی هوش مصنوعی، و یا مدل‌سازی مسائل ارضای محدودیت، به‌راحتی قابل حل هست. کاری که می‌کنید چیه؟ شما می‌تونید توی متلب مدل‌سازی‌هاتون رو انجام بدید و نتایجش رو ببینید. اما وقتی قرار باشه برنامه روی کامپیوترهای یک سازمان نصب بشه، و یا روی یک سروری توی اینترنت، مسلماً بی‌خیال قضیه میشید. متلب قابل‌حمل نیست، و اصولاً برای توسعه ساخته نشده. هدف اصلی‌ش تحقیقات هست نه پیاده‌سازی. چه اتفاقی می‌افته؟ شما پروژه‌تون رو به بی‌شوعورانه‌ترین شکل ممکن (به‌صورت broute force) پیاده‌سازی می‌کنید و یا حتا در مواردی ویژگی موردنظر رو از کاتالوگ نرم‌افزارتون حذف می‌کنید.

نتایج

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

مثلاً نرم‌افزار سما رو در نظر بگیرید. خوب خیلی راحت میشه برنامه‌ریزی آموزشی رو با یه مدل‌سازی ارضای محدودیت به بهترین شکل ممکن پیاده‌سازی کرد. اما اگه شما اینو به توسعه‌دهنده‌های سما بگید بهتون می‌خندن. آخه CSP؟! حوصله داریا… بذار خود کارمند برنامه تنظیم کنه.

تفاوت بین حسن‌کچل و سیستم‌عامل

عکس این تأثیر هم وجود داره. یعنی بازار روی دانشگاه تأثیر مخرب می‌ذاره. خوب دانشجویی که تفاوت بین بازار و دانشگاه رو می‌بینه طبیعتاً دانشگاه رو هم خراب می‌کنه. عملاً انگیزه‌ای برای یاد گرفتن (≠ پاس کردن) دروسی مثل سیستم عامل و یا هوش مصنوعی باقی نمی‌مونه. چون می‌دونه که آخرسر قراره بشینه برنامهٔ پایگاه‌داده‌ای بنویسه و هیچ‌کدوم از چیزایی که می‌خونه به دردش نمی‌خوره. اگر بخواهیم واقع‌بین باشیم، باید بگیم دانشجوها به‌واسطهٔ این بی‌خیالی، تبدیل به یک سری ماشین زیراکس میشن. یعنی اگر فرضاً استاد درس سیستم‌عامل بیاد پای تخته قصهٔ حسن کچل تعریف کنه، دانشجوها همون قصهٔ حسن کچل رو توی جزوه‌هاشون کپی می‌کنن و بعد آخر ترم همونو توی ورقه‌ها. جالب اینه که بیست می‌گیرن و با معدل بالا فارغ‌التحصیل هم میشن. و دوباره این فارغ‌التحصیل‌ها وارد بازار کار میشن و همین سیکل معیوب تا ابد ادامه پیدا می‌کنه…

Comments

comments powered by Disqus