چیزهایی که دانشگاه به من یاد داد!

به قلم مهدی فولادگر ورودی ۹۲ و ۹۶ کارشناسی و ارشد نرم‌افزار صنعتی اصفهان و ورودی ۹۸ دکتری نرم‌افزار دانشگاه تهرانادیت شده توسط تیم فرامتن به مدیر مسئولی رسول بوسعیدیورود به دانشگاه یکی از آرزوهای هر بچه دبیرستانیه و سال‌های سال براش تلاش می‌کنه و از غول کنکور می‌گذره تا به دانشگاه برسه و یه نفس راحت بکشه که «آخیش راحت شدم!». اما زهی خیال باطل! این تازه اول ماجراست و با رد شدن از زیر سردر دانشگاه وارد یک دنیای جدید کاملا متفاوت می‌شه، دغدغه‌های جدیدی پیدا می‌کنه؛ مسئولیت‌پذیری، استقلال، آینده، تشکیل زندگی و …. حالا فرض کنید توی این مسیر پر از تلاطم پیدا کردن هدف، یکی بیاد توی گوشتون دائم زمزمه کنه که:«دانشگاه هیچ چیزی به آدم یاد نمی‌ده و چیزی که توی دنیای صنعت هست اصلا هیچ ربطی به دانشگاه نداره»«این چیزایی که تو دانشگاه یاد می‌دن به درد نمی‌خوره و خودم می‌تونم یک ساله بخونم و یاد بگیرم»«چرا من مهندس کامپیوتر باید ریاضی-فیزیک بخونم؟»و خیلی جمله‌های این شکلی دیگه!اما آیا واقعا این حرف‌ها درسته؟ من چهار سال از مهم‌ترین برهه از زندگیم را صرف چیزی کردم که به هیچ دردی نخورده؟ من مهدی فولادگر دانشجوی ورودی ۹۲ کامپیوتر دانشگاه صنعتی هستم که توی این مقاله از چیزهایی صحبت می‌کنم که دانشگاه به من یاد داد!فارغ التحصیلی ۹۲اولین و به نظرم مهم‌ترین ارزش دانشگاه رفتن یادگیری قدم به قدم چیزهاست. وقتی که وارد دانشگاه شدم کسی ازم انتظار آپولو هوا کردن نداشت و همه می‌دونستن که من قراره قدم به قدم از یادگیری برنامه‌نویسی شروع کنم و آروم آروم پیش برم تا تبدیل بشم به یک مهندس کامپیوتر، اما در مقابل با ورود به فضای کار قرار نبود که کسی به من چیزی یاد بده و اتفاقا خیلی سریع ازم می‌خواستن که به بهره‌وری برسم و بتونم قسمتی از کسب و کار که مربوط به من هست را به تنهایی بگردونم. این پیشرفت ملایم و آروم (خصوصا یکی دو ترم اول) برای کسایی که از قبل با فضای کامپیوتر آشنا بودن و توی دبیرستان برنامه‌نویسی کرده بودن (از جمله من) باعث شده بود که سریع توهم بزنیم که خب دانشگاه همین بود؟!؟!؟! «اینا را که خودم هم می‌تونستم یاد بگیرم که!». این همون گردابیه که خیلی‌ها توش می‌افتن و بعضی‌ها هم هیچ وقت ازش در نمیان :(!چیز دیگه‌ای که دانشگاه خیلی خوب می‌تونه یاد بده تعامل صحیح با بقیه‌ست در جامعه و محیط کار و ...؛ در این مورد هم وقتی که یک بچه دبیرستانی وارد دانشگاه می‌شه، آروم آروم یاد می‌گیره که چه شکلی باید با بقیه صحبت کنه. شاید یکی از واضح‌ترین نتایج حضور در دانشگاه یاد گرفتن نحوه تعامل صحیح یک دختر با پسر و یک پسر با دختره که به تدریج یک دانشجوی صفری را از یک فضای جو زده سوق می‌ده به یک تعامل سازنده همکار با همکار. یا در موارد دیگه دانشگاه به من یاد داد که باید صبر کرد، احترام گذاشت، اخلاق حرفه‌ای را رعایت کرد، همیشه حق با مشتری است و …. این موضوعات هم برای ورود به محیط صنعت و کار خیلی مهمه، قرار نیست کسی این چیزها را وقتی که وارد محیط کار شدید به شما یاد بده و انتظار می‌ره که شما کاملا با اخلاق حرفه‌ای آشنا باشید.نوبتی هم که باشه نوبت موضوعات فنی و آکادمیک هست که شاید بیشتر وقت یک دانشجو را توی زندگی تحصیلیش بگیره و اتفاقا شاید کم‌اهمیت‌ترین اتفاق در این برهه از زندگی و شکل‌گیری شخصیتی اون باشه (چه قدر دوستی‌ها و اتفاقات در دوران دانشجویی میافته که اینجا جاش نیست در موردش صحبت کنیم!). توی دوره لیسانس یک دانشجوی مهندسی کامپیوتر قراره الفبای فهمیدن کامپیوتر و رفتار درست با اون را یاد بگیره. آدمی که تحصیلات آکادمیک نداره و فقط با گذراندن یکی دو تا درس برنامه‌نویسی توی فلان موسسه می‌خواد به عنوان برنامه‌نویس در یک شرکت مشغول به کار بشه ممکنه هیچ وقت یاد نگیره که چقدر مهمه که کوئری‌های پایگاه داده‌ش باید efficient باشه، ساختمان‌های داده‌ای که استفاده می‌کنه نباید سربار زیادی به سرور تحمیل کنه، معماری service-oriented چیه، چرا مهندسی و طراحی نرم‌افزار مهمه، تست نرم‌افزار یعنی چی و خیلی باید‌ها و نبایدهای دیگه. که خب این طبیعتا قراره در محیط کار اون رو به یک فردی تبدیل کنه که خیلی راحت قابل جایگزینیه و به هیچ وجه قرار نیست رشد کنه. پس دانشگاه قراره الفبای این موضوعات را به ما یاد بده و ما را برای استفاده از اون‌ها در محیط کار آماده کنه. حالا سوال اینجاست که چقدر دانشگاه در آموزش این الفبا به من در محیط کار موفق بوده و من چه چیزهایی از دانشگاه یاد گرفتم که اگر تحصیلات آکادمیک نداشتم شاید هیچ وقت حتی نمی‌دونستم وجود دارن:من حجم زیادی از زندگی شغلی‌ام را درگیر مسائل امنیت اطلاعات بودم (بلاک‌چین، رمزنگاری و ...)، اگر دانشگاه نبود شاید هیچ وقت وارد این حوزه جذاب شغلی نمی‌شدم. کمتر کسی اهمیت دانش حداقلی امنیت اطلاعات را توی توسعه برنامه‌های تجاری انکار می‌کنه و متاسفانه من بسیار دیده‌ام کسایی را که به دلیل جدی نگرفتن دروس دوران تحصیل و سهل‌انگاری استفاده از الگوریتم‌های رمزنگاری و روش‌های رمزنگارانه یک محصول تجاری را از عرش به فرش میارن! می‌تونیم نمونه این اتفاقات رو در زندگی روزمره بشماریم، چقدر زیادند اطلاعاتی که از سایت‌های مطرح درز می‌کنند و زندگی خیلی‌ها را مختل می‌کنند.چقدر زیادند نرم‌افزارهایی که به خاطر دانش کم برنامه‌نویس‌هاشون در مورد الگوریتم و ساختمان داده‌ها منابعی چندین برابر منابع مورد نیازشون مصرف می‌کنند. این کار هزینه‌های هنگفتی را به سازمان‌ها و شرکت‌ها تحمیل می‌کنه. در این چند سال هر جایی که برای ارائه محصولاتمون رفتیم، بدون اغراق اولین سوال پس از ارائه اینه که خب این محصولی که گفتی چقدر منابع مصرف می‌کنه.برنامه‌های عظیمی هست که تعداد کاربران زیادی دارند در حد چند صد هزار نفر تا چند میلیون نفر، مدیریت پایگاه‌داده‌های این نرم‌افزارها نیازمند تجربه و تخصص است و در صورتی که این پایگاه‌های داده به درستی طراحی و پیاده‌سازی نشوند و یا از Indexگذاری‌های اصولی در طراحی آن‌ها استفاده نشود به سادگی و با هجوم چند ده هزار نفر این نرم‌افزارها دیگر نمی‌توانند جواب‌گوی کاربران خود باشند. درس پایگاه‌های داده ۱، ۲ و پیشرفته به من نحوه طراحی پایگاه‌داده‌ها و دغدغه‌های موجود در آن‌ها را آموزش داد. من سیستم‌هایی را در این چند سال کار دیده‌ام که ماهانه در حد چند ده ترابایت لاگ تولید می‌کنند.پردازش صوت و تصویر هم از کاربردی‌ترین حوزه‌های رشته‌های مهندسی برق و کامپیوتر است. من با آن که در دنیای شغلی‌ام با هیچ یک از این‌ها سر و کار نداشته ام اما دیده‌ام بسیاری که با اندکی دانش ریاضی، سیگنال و فیزیک بدن در دنیای صنعت چه کاربردهایی که برای دانش خود نیافته‌اند.شاید فکر کنید که درس‌هایی مانند نظریه زبان‌ها و ماشین، کامپایلر و زبان‌های برنامه‌سازی در ایران کاربردی نیستند، اما در سال اخیر من در دوره دکتری درگیر پروژه‌هایی شده‌ام که بدون دانستن این دروس حتی ذره‌ای نمی‌توان در این پروژه‌ها پیشرفت کرد. پروژه‌هایی که با جان انسان‌ها در زندگی روزمره آن‌ها سر و کار دارند. تا به حال به این موضوع فکر کرده‌اید که چگونه انسان‌ها جان خود را در اختیار یک سیستم مانند هواپیما، باطری قلب، ترمز خودرو، فضاپیما، ماهواره و … با برنامه‌های چند صد هزار خطی (احتمالا پر از باگ‌) می‌سپارند؟شاید نتونید تصویر کنید که من به عنوان یک مهندس نرم‌افزار چرا باید دروسی مانند ریزپردازنده، دیجیتال و ... را یاد بگیرم و پاس کنم. اما در دنیای واقعی شما ممکن است پس از ثبت سفارش یک سری بورد مربوط به کار خود به سال نو چینی‌ها برخورد کنید و با یک ماه تاخیر به وجود آمده در دریافت بوردها تخمین شما یک ضرر چند هزار دلاری باشد. در چنین شرایطی ممکن است شما مجبور شوید با مهندسی معکوس نمونه خارجی، بوردها را خودتان تولید کنید. در این شرایط است که می‌فهمید بوردهای با ضخامت مد نظر شما در ایران موجود نیست و شما مجبورید از سیم‌های اضافه برای افزایش تحمل بوردها استفاده کنید.درس‌های مدیریت‌پروژه، مهندسی نرم‌افزار ۱ و ۲، تجارت الکترونیک و … چی؟ اینا که دیگه واقعا به هیچ دردی نمی‌خورن! یه مشت درس حفظی به درد نخور! :) در یکی دوسال اخیر من خیلی به این درس‌ها ارادت داشته‌ام، باور نمی‌کنید که خط به خط هر یک از کتاب‌های مرجع این دروس یا حتی این یک کلمه از یکی از این کتاب‌ها می‌تونه جلوی ضررهای چند صد میلیونی را توی یک کسب و کار بگیره! تا حالا چند تا استارتاپ دیدید که چند سال بدون شناختن بازارشون پیش رفتن و بعد از سه چهار سال فقط هزینه کردن با کله خوردن زمین؟ چه بسیارند پروژه‌هایی که با انتخاب متدلوژی نرم‌افزاری و طراحی نرم‌افزاری غلط یا نداشتن مستندات درست و درمون دیگه اسمی ازشون نیست و کاملا نابود شدن.این صحبت‌ها مشتی بود نمونه خروار ارزش‌های دانشگاه و تحصیلات آکادمیک، این طور شد که من هر وقت کسی را می‌بینم که مثل منِ قدیم جمله «دانشگاه به هیچ دردی نمی‌خوره» را تکرار می‌کند با لبخند از کنار او می‌گذرم و امیدوارم که روزی او هم به راه راست هدایت شود :). درس‌هایی در دانشگاه هست که شاید هیچ وقت از آن‌ها استفاده نکنیم (که به نظرم خیلی نادره) اما حداقل فایده این درس‌ها باز شدن ذهنمون هست، توی این چند سال خیلی از ایده‌هایی که در پیچیده‌ترین مسائل زندگی کاری یا آکادمیک من بهترین راه‌حل بوده، از یکی از همین درس‌های به ظاهر غیر کاربردی بوده. به نظرم هر قسمت از هر کدوم از درس‌ها ممکنه روزی قسمتی از مهم‌ترین مسائل دنیای صنعت رو حل کنه.دانشگاه خیلی چیزها به من یاد داد!