دانشگاه و صنعت و مهندسی نرمافزار
ایمان مطلب بسیار خوبی نوشته با عنوان “درد دلهایی در مورد رشته مهندسی نرمافزار“، علاوه بر توضیحی که در وبلاگ ایمان در مورد آن نوشتم، فکر کردم که بیشتر در مورد آن بنویسم
من هم پیش از این از ناکارآمدی تدریس رشته مهندسی نرمافزار در دانشگاههای ایران به مراتب سخن گفتهام و این نوشته به آن اختصاص ندارد. اما میخواهم به مشکل از طرف دیگر هم اشاره کنم و آن یکی از مشکلات صنعت نرمافزار کشور است. قبلا از کیفیت پایین نرمافزارهای ایرانی صحبت کرده بودم. یکی از ریشههای این مشکل کمبود حضور دانش مهندسی، در حوزه نرمافزار است. آیا در طراحی آلگوریتمهای خود توجهی علمی به هزینههای C.P.U و بار شبکه و سایر منابع سیستم داریم؟ آیا مسائلی مانند Partitioning و Clustering و … را در طراحی پایگاه داده رعایت میکنیم؟ آیا زمان کافی برای معماری نرمافزار و طراحی لایههای مختلف آن صرف میشود؟ مسئله اینجاست که مشتریان ایرانی پولی برای مهندسی نرمافزار (با برنامه اشتباه نشود) نمیپردازند. از نظر بسیاری از آنها چیزی که زیاد است برنامهنویس است(جملهای که زیاد شنیدهام) و برنامهای که آقا تقی و یا فلان تازه مهندس و یا حتی غیر متخصص در خانهاش مینویسد با برنامهای که یک شرکت واقعی مهندسی نرمافزار مینویسد تفاوت زیادی ندارد و فقط این شرکتها هستند که پول زیادی طلب میکنند و دستیابی به آنها مشکل است. این است که شرکتهای ایرانی نیز زمان و هزینه زیادی را برای مهندسی نرمافزار در حوزههای یاد شده خرج نمیکنند.(باید با آقا تقی برنامهنویس رقابت کنند) در نتیجه کمتر پیش میآید که این شرکتها از کارشناس خود به جای برنامهنویسی هر چند پیشرفته، مهندسی بخواهند(کاری هم نداریم که کارشناس از این توانایی برخوردار هست و یا نه). بر خلاف خیلیها من معتقد هستم که برخی از درسهای دوره کارشناسی و کارشناسی ارشد مهندسی کامپیوتر، دروسی هستند که باید در دانشگاه تدریس شوند و اینکه این دروس در بازار کار و صنعت انفورماتیک کشور کاربردی ندارند، مشکل آموزش عالی نیست، بلکه مشکل صنعت انفورماتیک کشور است. (البته دقت شود که تایید من مشتمل بر کیفیت و چگونگی تدریس نمیشود). نکته بسیار مهم دیگر که باید به آن اشاره کنم این است که اصولا نباید از دانشگاه انتظار آموزش عمیق تمام تخصصهای لازم برای یک مهندس را داشت. من فکر میکنم که یکی از کارکردهای دانشگاه، معرفی مقدماتی حوزههای مختلف دانش مهندسی میباشد و مهندس باید از توانایی “چگونگی” دستیابی به دانش برخوردار باشد و نه لزوما دانش عمیق. به یقین این توانایی شامل درک جدی مفاهیم مهندسی میباشد که باید با کیفیتی قابل قبول در دانشگاه تدریس شود که البته دانشگاههای ما در این حوزه ضعف جدی دارند. حلقه مفقوده ارتباط صنعت و دانشگاه به طور دقیق در همین قسمت وجود دارد. از میان مفاهیم مختلفی که در دانشگاه معرفی میشود، دانشآموختگان ما باید در تمام حوزهها دانش سطحی و در یک و یا دو حوزه تخصصی از دانش عمیقی برخوردار باشند که این تعمیق دانش میتواند در حین دوره تحصیل با شناخت علاقهمندیها و یا پس از آن و با شناخت زمینههای کاری صورت بگیرد.
نکته دیگری که وجود دارد این است که در کشورهای پیشرفته، مهندسین علاوه بر دارا بودن مدرک دانشگاهی که مادام العمر است، دارای مدارکی هستند که تاریخ انقضا دارند و توانایی آنها نه منحصرا بر اساس مدرک دانشگاهی که با توجه به مدارک نوع دوم سنجیده میشود. جایگاه چنین مدارکی که شرط لازم اشتغال به کار مهندسان میباشد در کشور ما بسیار خالی است.
ممنون بابت لینکی که به نوشته من دادید. مشکل بزرگی که این میان وجود دارد، همون طور که در متن اشاره کردین gap بسیار بزگ میان صنعت و محیط آکادمیک در کشورمان است. البته این به خیلی عوامل بستگی داره : نظام آموزشی، آموزش عالی، آموزش پروش ، اساتید و خود دانشجویان.
در مورد صنعت چیز زیادی نمیدونم چون هنوز به صورت جدی وارد بازار کار نشدم اما در مورد آموزش عالی تا جایی که من تجربه دارم مشکلات و ضعف های فراوانی وجود دارد. الان طوری شده که تمام دانشجویان که کمی سرشان می شود، واحدهای دانشگاهی را فقط برای پاس کردن میگذارنند نه برای یادگیری. این به نظرم ضعف بسیار بزرگیسیت.
با اجازه شما بعضی وقتها این فکر به من دست میدهد که چون کار برنامه نویسی در ایران کار جدی و مهمی نیست پس پیشرفت هم نمیکند و خیلی هم ربطی به دانشگاه و بازار کار ندارد. همه ما میدانیم اینجا همه چیز کپی و مجانی است. فقط در مورد نرم افزارهای مالی-اداری یا محلی سازی بعضی نرم افزارهای خاص مجبوریم به برنامه نویسی رو آوریم. در برنامههایی هم که مینویسیم همیشه تا دلتان بخواهد از کلاسها و کامپوننتهای دیگر استفاده میکنیم. اگر ما هم مجبور بودیم بخشی از ویندوز را بنویسیم یا اگر یک بازی را که ما مینویسیم در بازار خریدار داشته باشد ما هم میتوانیم امیدوار باشیم برنامه نویسی پیشرفت خواهد کرد.
کاش برای کامنتهای پستها هم فید میگذاشتید…
من دانشجوی ترم سوم مهندسی نرم افزار هستم . واقعا گیج هستم. چون نمی دانم چه کار باید بکنم. چه نرم افزار هایی را باید یاد بگیرم و در چه زمینه هایی اطلاعات کسب کنم؟. به گیم دیزاین علاقه زیادی دارم اما اصلا نمی دانم برای طراحی بازی باید چه کار کنم و اول چه چیز را بخوانم و در چه زمینه هایی قوی تر شوم. هدف من تحصیل در خارج از کشور است و دوست دارم مهارت های زیادی را کسب کنم اما در حال حاضر به جز نوشتن چند برنامه ساده با سی و کارکردن خیلی ساده با آفیس و چند تا نرم افزار نصف و نیمه هیچ چی بلد نیستم اما استعداد بسیار خوبی در یادگیری نرم افزار دارم فقط باید انگیزه کافی داشته باشم و بدونم برای چی باید این نرم افزار را یاد بگیرم. من به هوش مصنوعی هم علاقه زیادی دارم و از گذشته این علاقه در من بوده است. لطفا هر کار که باید برای موفقیت در کارم انجام بدم را به من بگو و در زمینه های بالا که گفتم هم راهنماییم کن . با ایمیل من در ارتباط باش و من را زیاد منتظر پاسخت از نزار. من حتما ایمیلم را چک می کنم . امید وارم راهنمایی شما انگیزه خوبی به من بده و در آینده حتما کار ارزشمند شما را جبران کنم. بدرود