تو که کامپیوتر میخونی تلگرام منو درست کن

خیلی سخته توی جمعی زندگی بکنی که شناخت درستی از رشته‌ی تحصیلی و حوزه‌ی حرفه‌ایت ندارن و تصور و انتظاراتشون ازت اشتباهه و گاهی اوقات حتی نمیخوان درستش رو هم بدونن و با همون تصور غلط نصیحتت هم می‌کنن و کلی قضاوت میشی.

ولی از اون بدتر اینه که خودت رشته‌ات رو به خوبی نشناسی و روزی بفهمی وارد چه رشته‌ای شدی و بدتر بفهمی بهش علاقه نداری که دیگه سال دوم سوم دانشگاهی. این اتفاق هرسال برای خیلی از دانشجوهای این رشته میفته!

به طور خاص اگر بخوام این موضوع رو روی رشته‌ی خودم (یعنی مهندسی کامپیوتر) بررسی کنم با چند تا نگرش زیر رو به رو هستیم:

  • نگرش خدماتی صرف: عامه‌ی مردم کلا «مهندس کامپیوتر» رو با «کامپیوتری» اشتباه می‌گیرن. حق هم دارن چون شما هیچوقت تو عمرت نمی‌بینی یه مهندسی کامپیوتر چی کاره است و تخصصش چیه. مگر این که دور و برت مهندسی کامپیوتر دیده باشی! ولی مهندس‌های دیگه رو شاید بیشتر تصور از کارشون داشته باشی و قطعا تو زندگیت خیلی بیشتر با یه «کامپیوتری» سر و کار داشتی و داری و البته خیلی وقتا هم شاهد این هستیم که فارغ‌التحصیل رشته‌ی کامپیوتر نهایتا میشه کامپیوتری یا اصلا چون خوب میتونسته کارای مربوط به کامپیوتری‌ها رو انجام بده وارد رشته‌ی مهندسی کامپیوتر شده! نتیجتا تعجبی نداره این دو تا با هم اشتباه بشن. خانواده‌ی من اما خوشبختانه این اشتباه رو نمی‌کنن ولی انتظارات اون خدمات رو دارن و این موضوع تقریبا بین همه‌ی بچه‌های کامپیوتر اپیدمیه.
منظور از کامپیوتری کسیه که خدمات فروش، نصب، راه‌اندازی و تا حدی تعمیرات مربوط به دستگاه‌های کامپیوتری و موبایل انجام میده و شغل شریفی هم هست اگر همراه با گرون‌فروشی و خالی‌بندی برای گرفتن پول بیشتر نباشه. قصد جسارت به کسی رو ندارم.
  • نگرش غیرصنعتی: سایر افراد که توی ادارات با مهندسین کامپیوتر دورادور آشنایی دارن دیدگاهشون به این رشته دیدگاه قرن بیستمه. یعنی ما یه مسئول آی تی داریم و یه برنامه‌نویس صرف. یعنی کسی که مهندسی کامپیوتر می‌خونی نهایتا یکی از این دو تا شغل رو توی یه شرکت صنعتی غیرکامپیوتری که مثلا هدفش تولیدات خودرو باشه یا توی یه سازمان دولتی دریافت می‌کنن.
مسئول آی تی یعنی کسی که مدیر سیستم، مدیر شبکه، نصاب، تعمیرکار، تنظیم‌کار و فرشته‌ی نجات کارمندان شرکته و هر چیزی هم که خراب بشه تقصیر اونه
برنامه‌نویس یعنی کسی که فلوچارت و برنامه‌نویسی و کار با بانک‌های اطلاعاتی بلده و میتونه یک سری کارها رو توی سازمان/شرکت اتوماسیون کنه؛ یه برنامه بنویسه که خودش یه سری کارها رو انجام بده و کار کارمندها راحت‌تر بشه. اگر مشکلی پیش اومد قطعا خیلی بی‌سواده.

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

  • نگرش ساده‌پندارانه: این نگرش خون بچه‌های متخصص رو به جوش میاره! تو این نگرش تفکر افراد اینه که خب مهندسین کامپیوتر خیلی کارا میتونن بکنن ولی واقعا راحته چون همه‌شون تو اون کامپیوترشونه یه عالمه ابزار هم این روزا هست که میتونی خیلی راحت باهاش یه چیزی درست کنی « حتی منم برم کلاسشو میتونم انجام بدم ولی تو که رشته‌ات کامپیوتره نشستی هیچ کاری نمی‌کنی». این گروه از افراد تخصص‌های کامپیوتر خصوص توسعه‌ی نرم‌افزار رو با تولید محتوای چندرسانه‌ای اشتباه می‌گیرن. این نگرش مال اوناییه که رشته‌شون کامپیوتر نیست ولی معمولا تحصیلات دانشگاهی تو رشته‌های دیگه خصوصا مهندسی دارن و خوب بلدن با کامپیوتر «به عنوان یه کاربر» کار کنن! از نظرشون برای نوشتن یه اپ اندروید کافیه فقط برنامه‌نویسی بلد باشی (که همه‌مون خیلی خوب میدونیم که این کار علاوه بر یادگیری زبان و فریم‌ورک خاص خودش نیازمند اینه که یک سری استاندارد‌ها، ابزار‌ها و پایگاه داده هم بلد باشیم) و تصورشون از برنامه‌نویسی وب هم یه چیزی تو مایه‌های فوتوشاپ و مرحوم فرانت‌پیجه.
  • نگرش رئیس-خدمتکار: این نگرش زیر مجموعه‌ی نگرش قبلیه که با نگرش‌هایی که قبلتر مطرح کردم تلفیق شده. به این صورت که به مهندس کامپیوتر به چشم یه منشی حرفه‌ای نگاه میشه که باید همیشه برای خدمت‌گذاری حاضر باشه و خواسته‌های رئیس رو هرچقدر غیرممکن و دشوار در اولین زمان برآورده کنه، در غیر این صورت بهش برچسب تنبلی، نافرمانی و خلاصه بی‌خاصیت بودن میخوره. این نگرش معمولا بین مدیران ارشد شرکت‌ها خصوصا مدیران عامل شرکت‌های کوچیک که علاقمند به استفاده از فناوری اطلاعات برای ورود به فضای رقابتی تجارت الکترونیک هستن متداوله یا همون مدیران ارشد (احتمالا بازنشسته) در برخورد با یکی از اقوام خیلی نزدیک و جوان که کامپیوتر میخونه. معمولا قضیه به این شکله کار ندارن این کار چقدر مطالعه یا زمان یا دقت می‌خواد. باید انجام بشه و گرنه آدم بی‌کفایت یا تنبلی هستین! حوصله‌ی توضیحات شما رو هم ندارن و میذارنشون به حساب توجیه و حتی تمارض.

خب از این جا به بعد نگرش‌ها بیشتر متعلق به خود بچه‌های کامپیوتر یا فعال‌های این حوزه است.

  • نگرش کاسب‌مآبانه: این نگرش مخصوص اوناییه که توی یک حوزه‌ی به خصوص (مثلا طراحی و راه‌اندازی وبسایت) رفتن دوره دیدن و به مهارت لازم برای انجام کار رسیدن اگرچه خیلی از جزئیات فنی تکنولوژی‌هایی که توی کارشون ازش استفاده می‌کنن اطلاعی ندارن یا اگر هم دارن زیاد از اون دانششون مایه نمیذارن. در حقیقت مهارت خیلی خوبی تو برآورده کردن سریع نیاز مشتری دارن ولی خیلی به کیفیت بهایی نمیدن. مابقی مهارت‌هاشون بیشتر میره تو فن مذاکره (دقیق‌تر بگم چونه زدن با مشتری راجع به قیمت- خوش به حالشون کاش منم یاد بگیرم) و بعد از این که چند تا پروژه‌ی موفق انجام میدن و از این راه پول بدست میارن به شدت مغرور و از خودراضی میشن و روی ابزارهاشون تعصب پیدا می‌کنن و سایر افراد که از ابزارها و تکنولوژی‌های دیگه استفاده می‌کنن رو مورد تمسخر قرار میدن و اصرار دارن که هر کسی که میخواد موفق بشه باید راه اونا رو بره. این دسته از افراد میون دانشجوهای کامپیوتر همیشه با اساتید درگیری دارن و از نظرشون هر چیزی که تو دانشگاه میخونیم مزخرف و به‌درد نخوره (البته منکر این نیستم که درس‌های به‌دردنخور زیاد داریم یا حداقل به شکل به‌درد‌نخوری تدریس میشن) و من گاهی با خودم میگم خب کاری که اینا میخوان بکنن در نهایت نیاز به سواد آکادمیک نداره و من جای اونا بودم شاید عوض این که لیسانس کامپیوتر بگیرم میرفتم دیپلم و فوق دیپلمش رو میگرفتم یا اصلا میرفتم تو یه رشته‌ی دیگه و چند تا دوره‌ی آموزشگاهی میرفتم و خلاص. البته جا داره به این نکته هم تاکید کنم که این تفکر تو بازار کار ایران واقعا جواب میده! دلیلش هم واضحه:
مملکت ما الان مهندس و پژوهشگر و فلان و فلان نمی‌خواد. بیشتر نیروی کار چابک و همه‌چی‌بلد میخواد.

نگرش نمایشی یا خودخفن‌پندارانه: این دسته همونان که میان رشته‌ی کامپیوتر که هکر بشن. یه صحنه‌ی کدری تو ذهنم میاد که واقعا یادم نیست خودم دیده بودم یا کسی برام تعریف کرده بود. اون هم این بود که توی مدرسه مثلا کامپیوتر به پروژکتور وصل نمیشده، پسره اومده cmd باز کرده توش یه ping گرفته که بگه من خیلی خفنم. اینا همونان که بدون این که چیزی راجع به شبکه و سیستم عامل و خیلی چیزای دیگه بدونن میرن کالی نصب می‌کنن و کلاس «نفوذ و امنیت شبکه» ثبت نام می‌کنن. چار تا کار باحال حفظ می‌کنن که جلوی بقیه انجام بدن بدون این که بدونن پشتش چه خبره. بعضیاشون بعد از یه مدت از خر شیطون میان پایین بعضیاشون هم جدی ادامه‌اش میدن و بعد از این که سواد کافی به‌دست‌ آوردن متخصص‌های خوبی میشن. اما من بیشتر نگران اونایی هستم که میفهمن کلا با تفکر اشتباهی وارد داستان شدن. به این دسته ولی پیشنهاد می‌کنم حالا که تا این جا اومدن خیز بردارن برای مدیریت سیستم (System Administration) و از خودشون یه قهرمان بسازن.

نگرش مسابقه‌ای و نیمه‌آکادمیک: این خودش یه مقاله‌ی طولانی میخواد که من واقعا صلاحیت نوشتنش رو ندارم ولی ارتباط تنگاتنگی با بچه‌های سمپادی، المپیادی‌ها و بچه‌های رباتیک داره. در این مورد خاص اگر هم چیزی بخوام بنویسم بعدا راجع به انجمن‌های علمی می‌نویسم.

نگرش کهنه‌برنامه‌نویس‌ها: نوبت میرسه به استادامون! این نگرش مربوط میشه به مهندسی‌های قدیمی کامپیوتر؛ اونایی که شاید حتی قبل از این که رشته‌ای به اسم مهندسی کامپیوتر به وجود بیاد، با تحصیل توی رشته‌هایی مثل آمار یا ریاضیات وارد این حیطه شدن و خالق سیستم‌های انفورماتیک نسل قبل بودن که الان ما بهشون میگیم legacy و بعضا استاد دانشگاه شدن که الان دیگه تقریبا وارد دوران بازنشستگی‌ شدن. این دسته از متخصصین ریاضت‌ها کشیدن تا مهندس شدن. خیلی چیزها رو خودشون خوندن بدون هیچ فیلم آموزشی و کتاب درست حسابی. خیلی از سیستم‌ها رو خط به خط خودشون کد کردن و هیچ لایبرری آماده‌ای نبوده که کارشون رو راحت‌تر کنه و نهایتا نمی‌تونن قبول کنن که الان خیلی از کار‌ها دیگه به دشواری گذشته نیست و ابزارها و زبان‌های برنامه‌نویسی راحت رو نمی‌تونن بپذیرن. شاید هیچ زبانی به جز Pascal، Fortran، C، BASIC، COBOL و خود حضرت اسمبلی رو زبان نمی‌دونن و اکثرا مخالف سرسخت زبان‌هایی مثل پایتون هستن و به هیچ وجه حاضر نمیشن حتی امتحانش کنن و از نظرشون کسی که از این ابزارها استفاده می‌کنه مهندس نیست! جالبه بگم دیده شده وقتی این گروه از افراد به ناچار برای اولین بار با پایتون کد میزنن هر روز بیشتر از روز قبل عاشقش میشن ولی تا مدت‌ها با یه جور واکنش دفاعی از نوع فرافکنی با خودشون درگیرن تا بالاخره حقیقت رو قبول می‌کنن.

افراد با این نگرش نمی‌دونن که دیگه الان اگر هم قرار باشه ریاضت بکشیم، اون ریاضت توی پیاده‌سازی برنامه و سختی کد کردنش نیست و توی کانسپت‌های دیگه است!

توجه: چیزی که پایین‌تر قراره بخونین لزوما دقت علمی و تاریخی نداره و فقط قراره یه ایده‌ی کلی رو به شما بده تا به نتیجه‌گیری برسه. قطعا اشکالات زیادی در تقدم و تقدم موضوعات وجود داره اما نهایتا تاثیر زیادی در نتیجه‌گیری مورد نظر نخواهد داشت.

نیم‌نگاهی به نگرش نزدیک به حقیقت:

بعد از انقلاب صنعتی، انقلابی که اوج درخشش مهندسی مکانیک به عنوان کلیدی‌ترین حوزه‌ی مهندسی بود، لازم شد عده‌ای از مهندسین برای مدیریت تعلیم ببینن تا بتونن کارخونه‌ها رو به سامانه‌ای از انسان‌ها و ماشین‌ها تبدیل کنن که طبق یک سری قوانین، استانداردها و «فرآیند‌های» مشخص فعالیت کنن و به این ترتیب بشه زیر نظرشون گرفت و بهبودشون داد. این جا بود که مهندسی صنایع مطرح شد. این اصول و نظام‌مندسازی وارد سایر رشته‌های مهندسی شد و حوزه‌های تحقیقاتی بسیاری رو ایجاد کرد که خیلی زود به مطالعات بین رشته‌ای بدل شد.

از یه طرف مدت‌ها بود ریاضی‌دان‌ها روی مفاهیم جدیدی کار می‌کردن که اگه میشد به شکلی پیاده‌سازی بشه اون وقت میشد یک سری کار‌ها رو به صورت خودکار انجام بشه. این منجر به ساخت اولین خودکاره‌ها (یا همون automatonها که جمعش میشه automata) شد. اولین خودکاره‌ها به صورت مکانیکی پیاده شدن. بعد خودکاره‌های الکترومکانیکی بوجود اومدن. کم کم بار اصلی پیاده‌سازی این خودکاره‌ها روی دوش مهندس‌های برق قرار گرفت و با اختراع ترانزیستور و پدید اومدن علم الکترونیک، خودکاره‌های الکترونیکی پدید اومدن که من الان با یکی‌شون دارم این مطلب رو می‌نویسم. خودکاره‌ها در حقیقت پیاده‌سازی نظریه‌ی محاسبات «Computation Theory» هستند که فک کنم بگیم نظریه‌ی رایانش بهتر باشه.

خلاصه چیزی که بدست اومد یک ماشین بود که میتونست محاسبه انجام بده و از یه جا به بعد مفهوم برنامه‌نویسی وارد قضیه شد و عصای دست دانشمندها و مهندسین توی محاسباتشون شد و بعد کار با داده‌ها، ذخیره و بازیابی اطلاعات، آمارگیری و گزارشگیری چاشنی ماجرا شد. خب در این مرحله مهندس یه طرف مهندس برق داشتیم که درگیر «صنعت» ساخت این ماشین‌ها و تعمیر و نگهداریشون میشد و از طرف دیگه «دانشمندی» که برنامه‌نویسی بلده و میتونه از دستگاه چیزی که میخواد رو استخراج کنه یا یک «اپراتور». طبیعتا در این دوره تعداد ماشین‌های محاسبه‌گر (کامپیوتر) که تولید میشدن خیلی محدود بود و نرم‌افزار چیز پیچیده‌ای نبود؛ بخشیش که برای عملکرد خود ماشین بود که برعهده‌ی تولید کننده بود و باقی ماجرا هم اگر نیاز به برنامه‌نویسی (یا بهتر بگم برنامه‌ریزی) می‌داشت افرادی بودن که توی دپارتمان کامپیوتر شرکت/موسسه‌ی خریدار کار رو انجام میدادن.

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

در حال حاضر مهندسی کامپیوتر و فناوری اطلاعات نه تنها هیچی از یک رشته‌ی صنعتی کم نداره بلکه خودش به تنهایی روز به روز مفاهیم جدیدی رو وارد مهندسی صنایع و مدیریت صنعتی می‌کنه که در حوزه‌های دیگه استفاده میشن

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

یه مهندس نرم‌افزار به طور خاص میتونه سراغ هر کدوم از این کارها بره:

  • میتونه بشه توسعه‌دهنده‌ی نرم‌افزار. خودش انواع و اقسام داره.
  • میتونه بشه متخصص تست نرم‌افزار (و منظور dummy user نیست!)
  • میتونه بشه تحلیلگر یا طراح نرم‌افزار (منظور طراحی گرافیک نیست!)
  • میتونه بشه مدیر پروژه یا در حوزه‌ی مدیریت کیفیت کار کنه.
  • میتونه مدیر سیستم باشه.
  • میتونه مدیر پایگاه داده باشه.
  • میتونه اصلا تخصصش بهینه‌سازی پایگاه داده باشه!
  • میتونه بره سراغ نقش‌های نسبتا جدیدتری مثل طراحی رابط کاربری یا مدیریت محصول که البته به نظر من بیشتر به درد کسانی میخوره که تحصیلاتشون در حوزه‌ی هنر، مدیریت یا روابط عمومیه و یک سری دوره درباره‌ی توسعه‌ی نرم‌افزار دیدن.
  • و البته خیلی نقش‌های دیگه وجود داره که خیلی خلاصه به یکی از هیجان‌انگیز‌ترین‌هاشون اشاره می‌کنم.

صنعت همیشه نیاز به سرعت بیشتر و اتوماسیون داره. کامپیوتر به صنایع مختلف کمک کرد که خیلی از کارهاشون رو خیلی راحت به کمک یک ماشین قابل برنامه‌ریزی انجام بدن. همین خدمت رو هم به ادارات و سازمان‌ها کرد. اما اگر خود این صنعت برای کار خودش نیاز به اتوماسیون داشته باشه چی؟ اخیرا شاهد اتفاقات جالبی تو صنعت نرم‌افزار هستیم! به طور اصولی یک نرم‌افزار از زمان تحلیل تا تحویل باید مراحل مختلفی رو طی کنه. در ۲۰ ساله گذشته که مفهوم مهندسی نرم‌افزار مطرح شده، نرم‌افزارهای مختلفی با عنوان CASE (به معنی مهندسی نرم‌افزار به کمک کامپیوتر) ایجاد شدن که گذار از هر فاز به فاز بعدی رو راحت‌تر می‌کنن. مثلا نتایج تحلیل تحلیلگران راحت‌تر و سریع‌تر به یه چیز قابل استفاده برای طراح نرم‌افزار تبدیل میشه و حاصل زحمات طراح به سادگی تبدیل به زیربنایی برای کار توسعه‌دهنده‌ی نرم‌افزار میشه و به همین صورت ادامه پیدا می‌کنه. چند سالیه که تست نرم‌افزار خیلی بیشتر از گذشته اهمیت پیدا کرده و بر این اساس ابزارها، متدلوژی‌ها و استاندارد‌های جدیدی وارد بازی شدن و منطقا نیازهای جدیدی هم وارد صحنه شده. نیاز به یک فرآیند به‌هم‌پیوسته، سریع و مستمر برای پیمایش مراحل «پیاده‌سازی نسخه‌ی جدید»، «آزمایش» و اگه آزمایش جوابش مثبت بود «استقرار نسخه‌ی جدید» در تمام جاهایی که باید این اتفاق بیفته. اینجا بود که نقش جدیدی آفریده شد به اسم DevOps. این دسته از متخصصین معمولا یا توسعه‌دهنده‌هایی بودن که به نقش آفرینی در عملیات مستقرسازی علاقمند شدن یا SysAdminهایی بودن که به برنامه‌نویسی و scripting علاقه داشتن و وارد این حوزه شدن.


اگه تا این جا مطالعه کردین (که خودم تعجب می‌کنم اگه کرده باشین) حتما نظرتون رو بنویسین. اگه دوستش داشتین منتشرش کنین.


اگه دانشجوی کامپیوتر هستی اینو برای تو نوشتم:

https://virgool.io/@ashkantaravati/common-mistakes-among-computer-engineering-students-kpfdtqm7e4oq