بررسی ارزش رفتن به دانشگاه برای تبدیل شدن به یک برنامه نویس، تفاوت مهندس نرم افزار با برنامه نویس و اهمیت درسهای مهندسی کامپیوتر
دانشگاه و مهندسی کامپیوتر چیه! بجاش بشین یوتیوب و کورس ببین! ۴ سال میری درس بخونی برنامه نویسی یاد بگیری؟! کورس پایتون جادی رو بخر ۲ ماهه برنامه نویس شو!
بله.برنامه نویسی «یکی» از دروسی هست که شما در دانشگاه یاد میگیرید (مبانی برنامهسازی و برنامه نویسی پیشرفته) ولی هدف دانشگاه و رشته مهندسی کامپیوتر، تحویل برنامه نویس به جامعه «نیست» بلکه تربیت «مهندس نرمافزار» هست.
برنامه نویس، صرفا با مهارتی که روی یک یا چند ابزار داره میتونه سیستمی رو برنامهریزی کنه. مثلا یه اپ اندروید بسازه.اما مهندس نرمافزار ، برنامه نویسی هست که میتونه یک سیستم رو از صفر «طراحی» ، «اجرا» و «نگهداری» کنه اگه بخوام مثال بزنم، مهندس نرمافزار مثل طراح یک ساختمون هست، ولی برنامه نویس، مثل پیمانکاری هست که وظیفه پیادهسازی اون طرح رو داره همه مهندسهای نرم افزار، از برنامه نویسی شروع کردند و یاد گرفتند. چون تا کد نزده باشن محدودیت های سیستم رو درک نمیکنن و تبدیل به طراح نمیشن.
از لحاظ آکادمیک شما با داشتن لیسانس، یک مهندس نرمافزار هستید ولی از دید بازارکار، شما زمانی میتونید خودتونو مهندس نرمافزار خطاب کنید که بتونید محصول بسازید. مثلا بتونید یک ایده نرمافزاری رو از صفر طراحی، پیادهسازی و نگهداری کنید.
تو ادامه این پست، با بررسی درسهای تخصصی رشته کامپیوتر، ارتباطشون رو با تخصصهای موردنیاز بازار براتون توضیح میدم. کلا دانشگاه مثل دبیرستان نیست مو به مو بهتون همه چیو بگه. راه رو بهتون نشون میده و ادامهاش با خودتونه... .
بریم سراغ درسها...
رشته مهندسی کامپیوتر کلا ۱۴۶ واحد هست. در کل ۸۴ واحد تخصصی و پایه و ۱۵ واحد اختیاری. بغیر از درسهای پایه (۲۱ واحد ریاضیات و غیره)، ۲۶ واحد دروس عمومی داریم که جز زبان انگلیسی و ادبیات بقیهاش بولشت محضه. و حالا درسها و کاربردشون و چطور باید خودتونو برای بازارکار اماده کنید:
این درس به شما یاد میده چطور یه تیکه کد ساده بنویسید و خروجی بگیرید. اجزا اولیه هرزبان رو معرفی میکنه. بعد از این درس میتونید کدها و اسکریپتهای کوچیکی بنویسید.
یکی از مهمترین و مرتبطترین درسها با بازارکار. توی این دوره با یک زبان شئیگرا آشنا میشید و OOP رو یاد میگیرید.
الگوریتم های هوش مصنوعی، سرچ انجین، گرافیک کامپیوتری، شبکه، رمزنگاری و… با جبرخطی و ریاضیات گسسته مدل میشن! با یادگیری مفاهیم این درس، کاربردشون رو تو طراحی الگوریتم میتونید ببینید.
این درس باعث میشه شما بتونید اتفاقاتی که برای کد سطح بالاتون میفته رو بفهمید. بعد کامپایل هر کدی، به زبان ماشین تبدیل میشه. همچنین برای برنامه نویسی cpu و میکروکنترلرها دونستن این درس نعمته.
خمیرمایه اولیه تمام مفاهیمی هست که قراره هرروز ازشون استفاده کنید: مثل array، queue، stack، tree، linked list... الگوریتم sort و search بنویسید و با Redisهم کار کنید: دیتا تایپ های ردیس رو کامل یاد بگیرید هم تخصص بازاره هم کامل این درس رو میفهمید
فرق یه مهندس نرم افزار عالی با معمولی اینه که اولی متن زبان اصلی رو میتونه مثل زبان مادریش بخونه و درک کنه!
اگه به سخت افزار علاقه دارید و این درس رو خوب بخونید، میتونید بردهای و سخت افزارهای خودتونو طراحی کنید و بسازید! البته نه صرفا با خوندن
اگه درس مدار الکتریکی و مدارمنطقی اینارو پاس کردید و عشق سخت افزار بدید، این درس رو کامل بفهمید.
اگه درس ساختمان داده و گسسته رو مسلط باشید و چیزایی که براشون گفتمو انجام بدید، این درس جزو شیرینترین درسهاتون میشه چون همه اون مفاهیمو کاملتر براتون مرور میشه!
با مفاهیم thread، concurrency ، scheduler ، کرنل و.. آشنا میشید. بعنوان یه برنامه نویس باید بدونید سیستم عاملی که قراره کدتونو اجرا کنه چطور کار میکنه.
جهان ما برروی شبکه ساخته شده. از موبایل تا وایفای، اینترنت، سرورها.
این درس کلا درباره optimization هست. شاید بگید به چه دردی میخوره! اما دیدی که تو این درس باید دنبالش باشید اینه که تا میتونید کدهاتون رو برای سیستم عامل بهینه کنید.
درباره متدولوژیهای پیاده سازی نرم افزار صحبت میکنه. تو این درس یاد میگیرید چطور یه پروژه رو پلن کنید و از چطور اجراش کنید. همه میتونن اسکریپت بنویسن ولی نرم افزار نوشتن اینطوری نیست! کار این درس آموزش این مهارت به شماست!
حالا اینها فقط بحث درس بود: تو این مدت تا میتونید با همکلاسی ها و کساییکه همفاز خودتون هستن دوست بشید. یکی از دلایلی که اکثر جامعه IT ایران و برنامه نویس ها همدیگرو میشناسن اینه که هم دانشگاهی هستن یا از طریق دانشگاه دوست مشترک دارن! بزرگترین مزیت دانشگاه، محیط علمیشه.
اون نکاتی که بهتون گفتم رو خودتون ادامه بدید اتوماتیک تکنولوژی های روز رو یاد میگیرید. مثلا وقتی یه RESTful API نوشتید، بعدش باید رو سروری چیزی بالا بیاریدش!کانفیگ سرور لینوکس و دیپلوی کردن و حتی داکر رو هم میتونید اونجا یاد بگیرید. یا براش بخواید اپ بنویسید راهتون مشخصه!
هیچ کورسی به شما این مهارت هارو نمیتونه یاد بده: چون با زمان، آموزش مستمر و تو محیط بودن بدست میاد. کورس و دوره فقط برای یادگیری مهارت هست. محیطه که مهمه!
اینو هم اضافه کنم که اگه شما فقط «برنامه نویس» باشید و صرفا با نداشتن دید مهندسی، یه زبان رو یاد بگیرید، خودتونو محدود به یک ابزار کردید. مهندس نرم افزار دید بازتری داره و براساس نیاز، ابزارشو انتخاب میکنه! از برد سخت افزاری تا اپ موبایل میتونه دیزاین کنه چون مفاهیمو مسلطه.
خب راستش من این مطلب رو توی توویتر دیدم و چون خودم هم کنکوری هستم واقعا به نظرم خوب اومد و نسبتا مطلب کاملی بود.
ممنون که این پست رو هم خوندین :))