آسیبشناسی و چرایی نافرجامی پروژههای نرمافزاری در ایران
هومن حقانی - پروژههای نرمافزاری روز به روز گستردهتر شده و نیاز سازمانها و شرکتها و مردم هر روز به آنها بیشتر میشود. گرفتاریهای فراوانی گریبانگیر کارفرمایان و کاربران این نرمافزارها است، بهگونهای که این پروژهها یا در نیمهراه میمانند و به فرجام نمیرسند یا کارفرما پشیمان شده، دوباره به روشهای کاغذی باز میگردد.
اگرچه در حال حاضر بسیاری از پروژههای نرمافزاری در جهان به فرجام نمیرسند، اما در ایران شمار این نافرجامی بیشتر است. با توجه به گستردگی موضوع و آسیبهای فراوان آن کمتر پیش آمده در این زمینه بررسی موشکافانه انجام شده باشد. در این جستار بهطور مختصر به بررسی و ریشهیابی این مشکل و چرخهکاری پروژه نرمافزاری پرداخته شده است.
از اینرو با توجه به آمار فراوان شکست پروژههای نرمافزاری، ناکامی و هدررفت هزینه و زمان فراوان، مروری کوتاه به دلایل و پیشنهاد راهکارهایی برای پیشگیری از این مشکل شده است.
1- ناآشنایی کارفرمایان با نیازهای واقعی خود
عدم شناخت کارفرمایان به نیاز واقعی سیستم کاری خود و تغییر پی در پی پروژه که به افزایش زمان تولید و هزینه منجر میشود، از جمله رایجترین دلایل شکست پروژههای نرمافزاری در ایران محسوب میشود.
با آنکه متدولوژی چابکسازی و افزایش تعامل میان پیمانکارن و کارفرمایان Agile)) به کاهش آسیبهای پروژه کمک کرده اما همچنان تغییرات گسترده و ساختاری، گهگاه هزینه و زمان انجام پروژه را بهگونهای افزایش میدهد که موجب نارضایتی پیمانکار و تنشزایی میشود.
در همین حال، گاهی برخی از کارفرمایان باتجربه با گزینش پیمانکارانی که پروژههای مشابه انجام دادهاند از احتمال بروز مشکلات فراوان ناشی از برآورد اشتباه هزینه و زمان، بهصورت چشمگیری میکاهند و این موضوع اولویت تصمیمگیریشان در گزینش پیمانکار است. این روش برای پیشگیری از بروز مشکل، روش مناسبی است.
به این ترتیب، اگر کارفرمایان بکوشند نیازهای واقعی کاریشان را ببینند و رویکرد مشتریمحوری (در نظرگرفتن تنها نیازهای واقعی کاربران) داشته باشند و به هدف بیندیشند و نه ابراز سلیقه شخصی (گاهی سلیقههای شخصی تاثیر زیادی در طرح پروژه کارفرمایان دارد)، شاید بتوان گفت بخش قابل ملاحظهای از مشکل حل خواهد شد.
2- ابهام در تعهدات کارفرما و پیمانکار
روشن نبودن تعهدهای کارفرما و پیمانکار نسبت به هم و ضعف در نوشتن قرارداد احتمال بروز مشکل و تحمیل درخواستهای نابجا و خارج از قرارداد، دوره انجام پروژه را افزایش میدهد. از سوی دیگر، آشکار نبودن ریز به ریز تعهدها و مسوولیتهای دو طرف نسبت به هم، احتمال برداشتهای نابجا و غلط از بندهای قرارداد را بالا میبرد.
تا آنجا که دیده شده بیشتر اختلافها روی درک نادرست موضوع پروژه و گستردگی آن است که بجاست ریز به ریز پروژه و چگونگی کارکرد آن در قرارداد نوشته شود.
3- نگرانی کارفرمایان از افزایش دروغین هزینهها
بیاعتمادی در بازار ایران و نگرانی کارفرمایان از افزایش دروغین هزینه بهوسیله پیمانکارها و رقابت نابرابر و اختلاف برآورد هزینهای فراوان میان چند پیمانکار، از دیگر دلایل شکست پروژههای نرمافزاری در ایران تلقی میشود.
متاسفانه شرکتهای نرمافزاری ریز و درشت با هزینههایی با بازهای گسترده و باورنکردنی مواجه هستند، (گاهی اختلاف برآورد هزینه سقف و کف پیمانکاران 2 تا 20 برابر است!) که این برآورد هزینه گهگاه نه به اندازه بزرگی پروژه، که بر اساس حجم و بزرگی کارفرما برآورد میشود.
این روش برآورد هزینه موجب بیاعتمادی کارفرما و گاه تحمیل یک هزینه پایینتر به پیمانکاران دیگر میشود و این آغاز راه یک شکست پنهان است که خود را نشان نمیدهد.
4- فقدان یک سازمان فعال در ساماندهی این صنف
اگر سازمانی مانند سازمان نظام صنفی رایانهای شرکتها را ملزم به دریافت مجوز میکرد و این شرکتها اجازه فعالیت بدون مجوز را نداشتند و قرارداد با معیار قیمتگذاری لازم این سازمان یا سازمانهای مشابه انجام میشد، شاید این همه قراردادهای شکستخورده در کشور نداشتیم. تا زمانی که یک صنف صلاحیت شرکتها و نظارت بر پروژهها (داور اختلاف قراردادها) را بر عهده نگیرد، همچنان این مشکل ادامه خواهد داشت.
5- برآورد غلط پیمانکاران از زمان و هزینه پروژه
معمولا پروژههای نرمافزاری بیشتر از آنچه پیشبینی میشود زمانبر هستند. اما شرکتهای با تجربهتر بازه اطمینانی را برای آن در نظر میگیرند. اما مشاهده میشد که گاه چنان زمان برآورد اشتباه است که این بازه کارساز نیست و بحران زمان و نرسیدن پروژه به زمان تحویل، کارفرما را میآزارد؛ تا جایی که موجب فشار کارفرما به پیمانکار، افزایش استرس پیمانکار، تنش و در نتیجه شکست پروژه میشود.
6- ضعف تجربی و تکنیکی پیمانکاران نرمافزاری
بسیار پیش آمده طراحی نرمافزاری که در نگاه نخست شاید ساده بهنظر برسد و کارفرمایان و پیمانکاران را دچار اشتباه کند، کاری پیچیده است و بس دشوار. حال آنکه معماران نرمافزار باید دارای تجربه فراوان در پیادهسازی نرمافزار، بهویژه در پروژههای مشابه باشند.
7- پوسته فریبنده پروژههای نرمافزاری
پروژههای نرمافزار از فاز امکانسنجی و طراحی تا پیادهسازی، تست و پشتیبانی تا زمانیکه زیر بار برود و دوره گذار را سپری و رضایت کاربران را جلب کند، فرایندی است پیچیده با ظاهری ساده که پیمانکاران با تجربه را کمتر دچار اشتباه در این فرایند میکند.
اصطلاح رایجی که بارها در پیادهسازی پروژهها شنیده میشود: «اینکه کاری ندارد»، «سادهاس» و «یه کپیپیسته» پیمانکاران و کارفرمایان را در مواقع زیادی به دردسر میاندازد.
8- نبود قانون کپیرایت در کشور
بهکاربردن نرمافزارهای ارزان و رایگان خارجی ما را عادت داده که هزینهای برای نرمافزار نپردازیم و همیشه کمترین هزینهها در بخش نرمافزار را پیشبینی کنیم. این مورد، یعنی نبود قانون کپیرایت، یکی از موارد قدیمی آسیبرسان به پروژههای نرمافزاری در ایران است.
9- ضعف نگاه رایج فرهنگی به ارزش اندیشه و ذهن
باور رایج بسیاری از مردم این است که کار فکری بهویژه نرمافزار، کار نیست؛ چراکه برنامهنویسان در پشت لپتاپشان به تفریح و سرگرمی میپردازند! یا اینها که پول به مواد اولیه ندادهاند و کار خاصی نمیکنند.
و این باورناپذیری کارفرمایان که برنامهنویسی و طراحی نرمافزار کاری است تخصصی و بسیار سخت و پیچیده از دیگر مشکلات پروژههای نرمافزاری در ایران است.
البته این فرهنگ غلط که اندیشه و ذهن وطرح را بیارزش یا کمارزش میپندارند، تنها در زمینه نرمافزار نیست که به بروز مشکلهای زیادی منجر میشود.
10-پولبنیاد بودن به جای دانشبنیاد بودن
امروزه کسانی در این صنعت نفوذ کردهاند که دغدغهشان از راهاندازی شرکت تنها بهدستآوردن پول و سود بیشتر است. این دیدگاه نهتنها در کیفیت کار تاثیر چشمگیری دارد، بلکه موجب رکود صنعت نرمافزار در کشور در رقابت با بسیاری از کشورها شده است.
این در حالی است که پتانسیل و هوش و خلاقیت زیادی در این صنعت وجود دارد و میتوان ایران را با مدیریت درست به جایگاه شایسته خود در جهان رساند.
نتیجهگیری
به هر ترتیب، راهکارهای کاهش ریسک پروژه و اجرایی نشدن آن در ایران را میتوان به چند دسته بخش کرد.
بیشک این راهکارها همه آنچه میتواند از آسیبها بکاهد نیست و چکیده تجربه سالیان کاری نگارنده است.
- شناخت کارفرما از نیازهای واقعی خود و کاربرانش
- تجربه و تخصص پیمانکار و روشهای پیادهسازی آن
- تعامل فراوان و گام به گام کارفرما و پیمانکار
- حذف شرکتهای کمتجربه از فهرست پیمانکاران
- اولویت انتخاب پیمانکارانی با پیشینه پروژهایی مشابه
- سازگاری درخواستهای کارفرما با هزینههای پیادهسازی سیستم
- تایید صلاحیت پیمانکار و اجبار در دریافت مجوز از سازمان مربوط
- داشتن اتحادیه و صنف فعال برای سازماندهی
(منبع:عصرارتباط)