تا اونجا گفتم که به سال دوم رسیده بودم و به دریایی از کتاب های الکترونیکی دست پیدا کرده بودم. کتاب زیاد میخوندم اما بیشتر با این قصد که بتونم مشغول کار بشم. سال سوم اوضاع بهتر بود. درس مهندسی نرمافزار داشتیم و پایگاه دادهها و چندین درس جالب دیگه. شبکههای کامپیوتری داشتیم که استاد احسان ملکیان تدریساش میکرد و یکی از لذت بخش ترین کلاسهایی که در عمرم رفتهام کلاس ایشون بوده. از درس مهندسی نرمافزار ۱ چندان سر در نیاوردم. مهندسی نرمافزار ۲ نسبتاً اون چیزی بود باید نرمافزار ۱ میبود یعنی تجزیه و تحلیل سیستمهای نرمافزاری. بخش زیادی UML میخوندیم و روش طراحی شئگرا.
به سال چهارم رسیدم و درس زیبای امنیت اطلاعات دوباره با دکتر احسان ملکیان. اگرچه کلاس به دلیل شرایط ویژهاش در یک هفته از صبح تا شب برگزار شد و در روز پنج شنبه هم امتحانش رو دادیم اما باید بگم که واقعاً این کلاس حتی از شبکههای کامپیوتری هم بهتر بود. الگوریتمهای رمز گذاری و رمزگشایی، DES، AES، روش ها متقارن و نامتقارن، گواهی دیجیتال، امضای دیجیتال اون چیزی بود که ملکیان با همه جزییاتش میدونست و با همه توانش درس میداد. اونقدر این درس برام لذت بخش بود و اونقدر ملکیان استاد دوست داشتنی و نازینی بود که واقعا تصمیم گرفته بودم ادامه تحصیلم در رشته امنیت باشه. درسهای سال آخر بیشتر اختیاری بودند: امنیت دادها، داده کاوی و چند تا درس دیگه که اصلا یادم نمیآد چی بودند؛ شاید کامپایلر و اینها.
بر خلاف علاقه ای که به امنیت داشتم، پایان نامه کارشناسیام درباره تست نرمافزار بود. بحث جالبی بود و من فکر میکردم که این دیگه خیلی مهندسیِ. روی پایاننامه نسبتا خیلی کار کردم اما در عمل پایاننامه من ترجمه و چکیده چندین کتاب Software Testing بود. با این اوصاف اما استاد راهنمای من خیلی استقبال کرد از اینکه یک نفر واقعا روی موضوعی کار کرده که به مهندسی نرمافزار مربوط میشه و نه به علوم کامپیوتر.
درست تابستون سال آخر مشغول به کار شدم. برنامه نویس جاوا و اوراکل شدم و سیستمهای ERP مینوشتیم.
شرکت بد نبود، بچههای شرکت همه خوب بودند اما ما همیشه مشکل داشتیم. همیشه مشتری ناراضی داشتیم. مدیر پروژه من یکبار من رو مخاطب قرار داد و به من گفت “اصلاً میدونی من فکر میکنم کلا مهندسی نرمافزار چیز مزخرفیه.” با تعجب پرسیدم چطور؟ ادامه داد: “اگر کسی برنامه نویس باشه که با خوندن کد میتونه بفهمه برنامه قراره چیکار کنه دیگه من نمیفهمم که کامنت نوشتن چه سودی داره!” برای من چنین حرفی عجیب بود چون فکر نمیکردم که مهندسی نرمافزار تنها بخواد بگه که روی کد کامنت بگذارید و تمام. البته خودم فکر میکردم که مهندسی نرم افزار یعنی طراحی و معماری سیستم که خیلی مهم هست. اون وقتها کمی ذهنیتم نسبت به رشتهای که میخوندم تغییر کرده بود. Agile رو میشناختم، میدونستم People ware کتاب مهمی در مهندسی نرمافزار هست اما نخونده بودمش و نسبتا آشنایی با بحثهای غیر فنی مهندسی نرمافزار داشتم. منظورم از بحثهای غیر فنی اونجایی هست که بحث الزاماً بحث الگوریتم و ساختمان دادهها و برنامه نویسی و طراحی و این جور امور نیست.
با خودم فکر میکردم که این بحثهای مدیریت پروژهای و اینکه extreme programming کار کنیم خیلی علم نیست، فکر میکردم علم باید توش ریاضی داشته باشه، باید ساختارهای پیچیده دیتا بحث بشه و قس علی اینجور چیزا. علم باید هوش مصنوعی باشه، کامپایلر باشه داده کاوی باشه و یا نهایاتا باید software testing باشه یا معماری، UML و این جور چیزا.
شرایط کاری خیلی هم جالب نبود. با اینکه در عمل من از نظر به روز بودن علمم بیشتر از مدیر پروژه مون میدونستم و خیلی وقتهای بحثهای جدیدی مطرح میکردم که میتونست کلی در انجام کارها و تولید نرمافزار با کیفیت کمکمون کنه اما کسی اهمیتی نمیداد. یادمه یک بار برای اولین بار تو شرکت ایده اینکه برای داشتن کد بهتر به unit testing رو بیاریم رو مطرح کردم. اما تنها اتفاقی که افتاد این بود که یک سمینار فسقلی گذاشتم و بعدش تموم شد و رفت.
از اون شرکت امدم بیرون و رفتم جایی دیگه. در شرکت جدید با دات نت برنامه مینوشتیم و SQL Server. در این شرکت هم اوضاع بهتر از جای قبلی نبود و بیبرنامگی موج میزد. مدیر پروژهای داشتیم که اصالتاً سوئیسی بود و به ما میگفت که وقتی برنامه مینویسید یا کد شخص دیگه ای رو تست میکنید بعدش اگر اشکالی در برنامه وجود داشته باشه مقصر شما هستید! سرتون رو درد نیارم. اونجا اصلا نتونستم کار کنم و تصمیم گرفتم برای ادامه تحصیل به داشنگاهی برم که با گرفتن مدرک دیگه هر کسی نتونه به من بگه که چه کاری بکنم و چه کاری نکنم.
این شد که دیگه مشغول کار نشدم و به شدت رو آوردم به مطالعه زبان برای امتحان تافل. یه مدتی برای تافل خوندم و کلی دانشگاه رو بالا و پایین کردم. بین اینکه مهندسی نرمافزار بخونم یا علوم کامپیوتر مونده بودم اما ته دلم ترجیح میدادم نرمافزار بخونم. یکی از دانشگاههایی که براش اقدام کردم و خیلی دوست داشتم تا بتونم ازش پذیرش بگیرم و تونستم، موسسه تکنولوژی بلکینگ در سوئد بود که سابقه خیلی خوبی در مهندسی نرمافزار داشت.
سرفصل درسهاش رو از سایت دانشگاه دانلود کردم و بیصبرانه منتظر آغاز شدن درسها بودم. چه سرفصل خوبی: مدیریت پروژههای نرمافزاری، معماری نرمافزار و کیفیت، مهندسی نیاز سنجی، متریکهای نرمافزار، مدیریت کیفیت نرمافزار و چندین درس جالب و دوست داشتنی دیگه.
رفتم سوئد و درسها شروع شد.
اولین درس مدیریت پروژههای نرمافزاری.
و این داستان ادامه دارد...