صنعت نرمافزار: دغدغهها و راهحلها
رضا دانش، مدیر عامل شرکت آرمان سامانه نوین و عضو هیات مدیره سازمان نظام صنفی رایانهای استان تهران است. او که در زمان انتخابات سازمان از ناشناخته ترین کاندیداها بود، توانست با ارایه برنامههای عملی رای اعتماد صنف را کسب کند.
وی اکنون با عضویت در کمیسیون نرمافزار در پی اجرای وعدههایش است. او البته منش عملگراییاش را از دست نداده و در یادداشت زیر، ضمن بررسی نرمافزار به عنوان صنعت، پیشنهادهای جالبی را برای بهبود این صنعت داده است. او همچنین در این یادداشت ریسکهای موجود در پروژههای نرمافزاری را بررسی کرده و راه حلهایی را هم پیشنهاد داده است.
1- نرمافزار یک صنعت است
اگر صنعت را تلفیق سرمایهگذاری، مدیریت، مهندسی و نیروی کار درنظر بگیریم که منجر به تولید محصول مشخصی میشود به راحتی میتوان استنتاج کرد که نرمافزار یک صنعت است لیکن جایگاه این صنعت در ایران به دلیل نقصانهایی که در هر یک از ارکان فوق وجود دارد، مطلوب نیست.
- میزان سرمایه گذاری انجام شده برای صنعت نرمافزار در مقایسه با سایر صنایع در حد صفر است که علت اصلی آن را میتوان در ناشناخته بودن صنعت برای سرمایه گذاران و نیز حاشیه سود بسیار پایین آن در کشور که در بسیاری از موارد زیان ده نیز میباشد جستوجو کرد.
- مدیریت جایگاه ویژهای در پیشبرد اهداف هر صنعتی دارد با توجه به اینکه در بحث مدیریت موضوع منابع و مدیریت آنها نقش بسزایی در توسعه کارها دارد باز هم به دلیل نوپا بودن صنعت نرمافزار و عدم آشنایی مدیران با منابع ذیربط و نیز تعداد بسیار پایین متخصصان نرمافزار که دارای توان مدیریتی مناسب باشند این رکن توسعه صنعت نیز غالبا در کشور مشکلات متعددی داشته است. این مطلب که مدیر یک مجموعه لزوما نباید متخصص زمینه فعالیت باشد صحیح است اما نمیتوان انکار کرد که داشتن مدیرانی متخصص در حوزه این صنعت موهبتی بزرگ محسوب میشود. ضمن اینکه همانطور که اشاره خواهد شد مهندسی نرمافزار، مدیریت را در بطن خود دارد.
- در تعریف مهندسی نرمافزار چنین آمده است: مهندسی نرمافزار علاوه بر جنبههای فنی خود که از علم کامپیوتر منشعب میشود نکات مدیریتی مانند هدایت تیمهای برنامهنویسی، زمانبندی و بودجهریزی را نیز شامل میشود.
حال نکته اینجا است که چرا عموما مهندسان نرمافزار ما با ابعاد مدیریتی رشته تحصیلی خود بیگانهاند که به نظر من بخش عمدهای از آن را باید در سیلابس درسهای دانشگاهی جستجو کرد که فهرستوار به بخشی از آنها اشاره میشود:
- توان هدایت تیمی، بودجه ریزی و زمانبندی همگی مهارتهایی هستند که ذیل سر فصل مبحث مدیریت پروژه مطرح میگردند. در حالی که چنین واحد درسی در رشته نرمافزار وجود ندارد.
- خلا بسیاری از دروس در دوره مهندسی نرمافزار بسیار محسوس است که از متولیان امور درخواست میشود نسبت به بازبینی این رشته مهندسی توجه ویژهای مبذول دارند که موارد زیربه نظر من اهمیت بسیاری دارند:
- درس تحقیق در عملیات به صورت اجباری
- جایگزینی مباحث بیشتر در آنالیز عددی و آمار به جای دروسی نظیر ریاضیات مهندسی یا معادلات دیفرانسیل که کاربرد اصلی آنها در رشتههای مهندسی گرایش برق و مکانیک است.
- توسعه زبان انگلیسی تخصصی و تشویق دانشجویان به مطالعه منابع اصلی.
- توجه ویژه به درس مهندسی نرمافزار و توسعه آن.
- توجه ویژه به درس پایگاه دادهها و مدیریت آنها و نیز ارایه واحدهای عملی بر روی یکی از بانکهای اطلاعاتی رایج در کشور.
- توجه ویژه به بحث مدیریت پروژه.
- توجه ویژه به بحث برنامه نویسی تحت وب و ارایه واحدهای درسی متناسب در آن حوزه.
- توجه خاص به بحث سیستمهای عامل روز دنیا و تدریس معماری یک سیستم عامل پر کاربرد در کشور مانند Windows و لینوکس پس از درس اصول سیستمهای عامل.
- توجه ویژه به درس شیوه ارایه مطالب و گسترش آن و نیز مجبور کردن دانشجویان به ارایه مستندات پروژههای سایر دروس بر اساس اصول آموخته شده در این درس.
بسیاری مطالب دیگر نیز وجود دارند که نیازمند توجه ویژه اساتید محترم دانشکدههای مهندسی نرمافزار میباشند و امید است به این موضوع به طور ویژه توجه کنند.
2- لازم است تعریف صحیحی از پروژههای ملی نرمافزاری ارایه شود
قرار گرفتن واژه ملی در کنار یک پروژه اهمیتی صد چندان به آن میدهد. بنابراین در تعریف پروژههای ملی میبایست به این نکته مهم توجه شود که پروژه ملی پروژهای است که پس از انجام آن عامه ملت و کشور از نتایج آن بهرهمند شوند. بنابراین در حوزه چنین پروژههایی لازم است به این نکته توجه شود که تعریف نادرست باعث زیان ملی خواهد بود برای مثال اگر بیاییم پروژهای با این عنوان تعریف کنیم که میخواهیم یک RDBMS ملی تهیه کنیم و بودجه کلانی نیز برای آن در نظر بگیریم چه اتفاقی خواهد افتاد؟ به نظر من که یک نظر شخصی است چنین پروژهای یعنی اتلاف بودجه، انرژی و زمان و به نحوی اختراع چرخ. لذا شایسته است چنین مقولههایی به عنوان تحقیقات دانشگاهی مطرح شوند و بودجههای مناسبی به طرحهای ملی نظیر سیستم جامع و Online تامین اجتماعی (مثلا هر بیمه شده بتواند با مراجعه به هر یک از شعب تامین اجتماعی در سراسر کشور دفترچه خود را تعویض کند و یا درخواست انتقال سوابق قدیم به شعب جدید از طریق این سیستم انجام شود)، سیستم جامع سازمان امور مالیاتی و... تخصیص داده شده و در اجرای آنها با کیفیت مناسب تعجیل شود.
3- ریسکهای موجود در پروژههای نرمافزاری
برحسب تجربه خود موارد زیر را به عنوان مهمترین ریسکهای پروژههای نرمافزاری در ایران مطرح میکنم:
- کارفرما تعریف دقیق و کاملی از پروژه ندارد و به عبارتی RFPها دقیق، جامع و مانع نیستند که عدم تخصیص بودجه کافی به RFP نویسی یکی از عوامل این مشکل است.
- پیمانکاران در تخمین زمان و هزینه پروژهها دقیق عمل نمیکنند. بخشی از این موضوع مربوط به ضعف RFPها و برخی دیگر به اشتیاق پیمانکاران برای برنده شدن در مناقصات و گرفتن کار تحت هر شرایطی بر میگردد که ناشی از شرایط بد اقتصادی بوده اما اثرات منفی خود را در مراحل بعدی پروژه نشان میدهد.
- پرداخت نشدن به موقع مطالبات پیمانکاران از سوی کارفرمایان.
- تغییر مدیریت در سازمان کارفرما و تبعات وخیم ناشی از آن.
- تغییرات مکرر قوانین، مقررات، آیین نامهها و روشهای اجرایی بدون هماهنگی با توانمندیهای نرمافزار.
- از دست دادن افراد کلیدی پروژهها در شرکتهای پیمانکار به دلیل تغییر محل کار، مهاجرت و...
- نداشتن مستندات کاربردی مناسب از پروژهها که تاثیرات آن بالاخص به هنگام پشتیبانی و توسعه امکانات سیستمها بروز میکند.
- مدیریت نکردن صحیح زمان، تغییرات، کارتیمی و هزینهها از سوی مدیران پروژه در شرکتهای پیمانکار.
- ایده آل گرایی غیر عملی کارفرما یا پیمانکار.
- ضعف تخصصی کارشناسان کارفرما یا پیمانکار.
یادآور میشوم که به نظر بنده کلید اصلی بقا و پویایی شرکتهای نرمافزاری در عصر حاضر حرکت کردن با تکنولوژی روز دنیا و توجه به امر مهم R&D است.
- ۸۷/۰۸/۲۲