خانه / بلاگ / مهندس نرم افزار بشویم یا نشویم؟

مهندس نرم افزار بشویم یا نشویم؟

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

به این ترتیب که دانشگاه ها با بالاتر بردن میزان ظرفیت پذیرش خود در رشته های مختلف و پس از آن با آسان گرفتن شرایط تحصیل از نظر میزان بار علمی دانشجو باعث شده اند که این روزها شاهد مهندسان آی تی یا نرم افزاری در جامعه باشیم که حتی با مفاهیم اولیه این رشته هم آشنایی کافی ندارند در حالی که با استفاده از پروژه های آماده به سادگی به مرحله فارغ التحصیلی رسیده اند. به هر حال در کشوری که روی نیروی جوان خود قصد سرمایه گذاری داشته و به دنبال پرورش نیروهای متخصص است، این شرایط نمی تواند مناسب باشد.

در موضوع ویژه این هفته تصمیم بر این گرفته ایم که به شما بگوییم یک مهندس نرم افزار حرفه ای چه نکاتی را باید در حرفه خود رعایت کند تا به یک متخصص تبدیل شود و این که شرایط یک مهندس رایانه و به خصوص شاخه نرم افزار در کشور ما به چه صورتی است و اگر شما بعد از فارغ التحصیلی از دانشگاه وارد بازار کار می شوید چه توقعی باید از شغل و درآمد خود داشته باشید. آیا این درست است که دائما خودمان را با متخصصان کشورهای دیگر از نظر میزان دستمزدی که دریافت می کنند مقایسه کنیم در حالی که به آن اندازه دانش و تخصص نداریم؟

آیا برنامه نویس همان مهندس نرم افزار است؟

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

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

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

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

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

مهندسان نرم افزار از کجا آمده اند؟

شاید بد نباشد که در مورد عنوان – مهندسی نرم افزار- هم کمی توضیح دهیم. این عنوان برای اولین بار در سال ۱۹۶۸، برای تعریف هنر طراحی و پیاده سازی نرم افزارهای با کیفیت مطرح شد. اگر شما خودتان را یک مهندس نرم افزار می دانید و به دنبال شغل هستید حتما تا به حال به این نکته پی برده اید که بیشتر شرکت ها به دنبال یک مهندس نرم افزار حرفه ای هستند که بتواند سریع مشکل یابی کرده و نرم افزارهای با کیفیتی را تولید کند. بیشتر مشکلاتی که این روزها در صنعت تولید نرم افزار دیده می‌شود به دلیل نبود یک برنامه ریزی هماهنگ با بودجه و زمان و همچنین هماهنگ نبود افراد در پروژه و تولید نرم افزارهایی با کیفیت پایین است

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

از دیدگاه فرد دیگری با نام Sommerville، مهندسی نرم افزار در دهه ۱۹۶۰ در یک کنفرانس با نام بحران نرم افزار مطرح شده است و تا قبل از آن هر چیزی که بوده مربوط به فعالیت های گروهی عده ای از برنامه نویسان می شده است که فکر می کردند با رعایت قواعد مهندسی می توانند در زمینه تولید نرم افزار هم موفق عمل کنند. در نهایت باید گفت که مهندسی نرم افزار به هیچ وجه با برنامه نویسی هم ارز نیست بلکه باید گفت برنامه نویسی فقط جزئی از شاخه گسترده مهندسی نرم افزار است.

حرفه ای یا نابلد؟

به طور کلی باید گفت که شما زمانی می توانید در کارتان موفق ظاهر شوید که به صورت حرفه ای در آن فعالیت کنید. فردی که می خواهد به یک کارشناس حرفه ای تبدیل شود قبل از هر چیز باید بداند که به چه کسی حرفه ای گفته می شود. به صورت کلی باید گفت که به کسی حرفه ای می گوییم که بتواند بهترین کار را ارائه داده و در کارش به اندازه کافی مهارت داشته باشد. این چنین فردی مسئولیت پذیر است و در تعریف مسئولیت پذیری هم باید گفت که فردی مسئولیت پذیر است که بالاترین استاندارد را در کارش ارائه کند.

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

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

یا این که چگونه مهندسان نرم افزار قادر هستند که از کیفیت خوب نرم افزارهای تولیدی خود اطمینان به دست آورند؟ اگر بخواهیم به صورت کلی در این رابطه صحبت کنیم باید گفت که از مهندسان حرفه ای نرم افزار این انتظار وجود دارد که از تمامی مسئولیت های خود به شکل کامل اطلاع داشته باشند ولی در حال حاضر شرایط کار در کشور ما به این گونه است که بیشتر مهندسان حرفه ای در هیچ گروه یا انجمن تخصصی ویژه ای عضویت ندارند و کسانی هم که خود را برنامه نویس حرفه ای می نامند، نمی توانند نرم افزارهای با کیفیتی را به مشتریان خود ارائه کنند. اگر کسی هم حرفی برای گفتن داشته باشد یا به قولی حرفه ای باشد، اخلاق حرفه ای ندارد و معمولا شرایط به این صورت است که یا محصول به خوبی پاسخگوی نیاز مشتری و کاربر نیست یا این که مهندس نرم افزار بسیار غیر حرفه ای رفتار کرده و با اخلاق و رفتار نامناسب خود مشتری را آزرده خاطر می کند. ب

اید بدانید که مهندسی نرم افزار یک رشته به نسبت جدید به حساب می آید و عمر این صنعت چیزی در حدود ۴۰ سال است. اما هیچ گاه شغل های مرتبط با این صنعت به خوبی تعریف نشده و افرادی که در این عرصه فعالیت می‌کنند به دلیل نداشتن یک شناخت کافی و صحیح از رشته خود، به یک آش شلغم شوربا تبدیل می شوند و همیشه هم از شرایط خود نا راضی هستند.

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

میوه‌فروش شویم یا مهندس نرم‌افزار؟

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

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

انجمن های تخصصی

در رشته فناوری اطلاعات و رایانه هم مانند هر رشته دیگری انجمن هایی هستند که به صورت حرفه ای و بین المللی فعالیت می کنند. این دسته از انجمن ها مکانی برای متخصصان کشورهای سراسر جهان هستند و از میان مهم ترین انجمن هایی که در این زمینه فعالیت می کنند می توان به ACM یا همان Association of Computing، IEEE یا British Computer Society اشاره کرد.

البته باید گفت که ساختار اصلی تمامی این انجمن ها مانند هم است اما هر کدام از آن ها قوانین و راهنمای رفتار حرفه ای و اخلاق حرفه ای مخصوص به خود را دارند. این راهنماها در ضمن این که می توانند حقوق و محدودیت های اعضای این انجمن ها را تعیین کنند باعث ایجاد رفتار حرفه ای اعضای خود می باشند به عنوان مثال به سراغ بررسی انجمن عالی رایانه بریتانیا یا همان BCS می رویم. این انجمن را می توانید با آدرس bcs.org پیدا کنید و اگر به آن وارد شده و پیوستید به این معناست که در دنیایی قرار گرفته اید که حرفه ای ها صاحب آن هستند. فردی که عضو این انجمن شود، می تواند با استفاده از امکاناتی که این انجمن در اختیار او قرار می دهد به یک حرفه ای به تمام معنا تبدیل شود.

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

اگر شما قصد دارید که به یک مهندس نرم افزار حرفه ای تبدیل شوید باید بدانید که مهم ترین اصل این است که همیشه از کیفیت بالای محصولی که تولید می کنید اطمینان داشته باشید و سعی بر افزایش کیفیت کارهای خود به صورت دائمی داشته باشید و برای این کار از سیستم مدیریت کیفیت Quality Management System استفاده کنید.

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

از طرف دیگر مهندسان نرم افزار حرفه ای از تخصص بسیار بالایی برخوردار هستند و با توجه به آموزش هایی که می بینند، کنفرانس ها و work shop هایی که شرکت می کنند، قادر هستند نرم افزارهای بهتری را با استفاده از نوآوری و تکنیک به روز خود تولید کنند.

درباره ی آریـان پــور

سلام . آریــان پور هستم . از نویسندگان میکروپـدیا .. علاقه مــند به برنامه نویسی و طراحی وب و شبکه ! دیدگاه ها و نظرات شما دوستان بررسی میشه و باعث دلگرمـی برای نوشتن مطالب بهتر و به روزتر . در تماس باشید با : aryanpour [at] micropedia [dot] ir با مـا همراه باشید ..

همچنین ببینید

فرد‌‌ا-فکنی ساخت‌‌یافته

بعضی از کسانی که وارد تحصیلات تکمیلی می‌شوند به خوبی می‌دانند که با توجه به …

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پاسخ عبارت زیر را وارد کنید: *