از اونجایی که ما مردمی هستیم که دست به انتقادمون ملسه! و کلا در زندگی مسئولیت هیچ اشتباهی رو قبول نمیکنیم، اولین چیزی که فارغ التحصیلان بیکار دانشگاه ها برای توجیه بیکاریشون اعلام عمومی می کنن و یه جورایی اپیدمی هم شده، اینه: تو دانشگاه که چیزی یادمون ندادن!
راستش خودم هم تقریبا تا یکسال بعد از دانشگاه تقریبا به این موضوع اعتقاد داشتم. در طول تحصیل برام همیشه جای سوال بود که چرا در سال 2007 و 2008 و الی آخر، به جای زبان های برنامه نویسی به روزی مثل php و C# و امثالهم، میان زبان قدیمی مثل سی و سی پلاس و اسمبلی! آموزش میدن که تقریبا هیچ کاربردی لااقل در کشور ما به اون صورت نداره؟؟ اصلا نظریه زبان و ماشین، اصول طراحی کامپایلر، طراحی الگوریتم به چه دردی میخوره؟ و سوالاتی از این دست که میدونم هنوز هم سوال بسیاری از دانشجویان گروه کامپیوتره. رشته های دیگه هم قطعا از این دست سوالات و ابهامات دارن، منتها چون من تخصصی ندارم، کاری ندارم.
واقعیتش اینه که خیلی دنبال جواب ای سوالات رفتم. خیلی. از اساتید که می پرسیدی، همه میگفتن ما هم قبول داریم که این درس ها به درد شما نمیخوره!!! خیلی جالبه! بیای چیزی درس بدی که بدونی به هیچ دردی نمیخوره! اونایی هم که جواب رو نمیدونستن، ولی نمیخواستن کم بیارن، میگفتن دیگه باید بلد باشید! یا الان شما متوجه نمیشید به چه دردی میخوره این درس ها و از این جواب هایی که خودشونم بهش اعتقادی نداشتن. از اساتید و پاسخشون که چیزی دستگیر من نشد. لاجرم خودم افتادم دنبالش.
چیزی که دستگیر من شد اینه. دانشگاه، همونطور که اینجا عرض شد،اصلا قرار نیست نیروی کار تربیت کنه. اصلا قرار نیست شما دانشجوی کامپیوتر رو برنامه نویس کنه. برنامه نویسی یه مهارت حرفه ایه و مهندسی کامپیوتر،یه عنوان علمی. مثل اینه که رشته عمران، بنا تربیت کنه، مهندسی برق، سیم کش ساختمان تربیت کنه، مهندسی مکانیک، مکانیک خودرو تربیت کنه و امثال اینا.
همه می پرسیم چرا زبان C؟؟ دلیلش اینه که بسیاری از کتب الگوریتم و کامپیوتر، قطعه کدها رو به زبان C به عنوان زبان مرجع و مادر نوشتن. دلیل آموزش زبان C هم همینه که دانشجو بتونه اون کتاب ها رو مطالعه کنه، نه برنامه نویس بشه. اصلا مگه میشه تو یه ترم که عملا 2 ماهش مفیده و اونم هفته ای یه جلسه اس، برنامه نویسی یاد گرفت؟!!
طراحی الگوریتم و CLRS رو میخونیم تا بفهمیم چه عظمتی پشت یک نرم افزار کامپیوتریه. مسلما انقدر سخت افزار ها و لایبرری های نرم افزاری پیشرفته شدن و تعدادشون زیاد هست که نه درگیر کمبود حافظه بشیم، نه وقت زیادی برای طراحی برنامه ای بذاریم که سریع اجرا بشه، در حالی که از قبل نوشته شده. ولی اینکه از دید علمی بهش نگاه کنیم، وظیفه مای مهندس نرم افزاره.
نظریه زبان ماشین رو میخونیم، که با رگولار اکسپرشن ها آشنا بشیم. مثلا بدونیم که چرا یک کامپایلر یا مفسر، دوتا اسلش رو کامنت درنظر میگیره. چطور ایرادات نحوی رو مشخص میکنه و مثل اینا.
در کل، دانشگاه جای یادگیری مهارت نیست. مهلت یادگیری مهارت هست، ولی جاش نیست. مهارت رو باید خودمون یاد بگیریم. دانشگاه، گاه دانشه. دانش با مهارت فرق داره.