هزینه ساخت نرمافزار اختصاصی به چه چیزهایی بستگی دارد؟
چرا قیمت طراحی نرمافزار اختصاصی را نمیشود پشت تلفن گفت، چه عواملی هزینه و زمان را تعیین میکنند، و چطور با شروع از یک نسخه حداقلی، ریسک و هزینه پروژه را کم کنید.
«ساخت یک نرمافزار مثل فلان چقدر هزینه دارد؟» این سؤال را زیاد میشنوم و جواب صادقانهاش این است که بدون دانستن جزئیات نمیشود عدد داد. نه به این دلیل که میخواهم طفره بروم؛ به این دلیل که دو نرمافزار با یک اسم میتوانند ده برابر با هم فرق داشته باشند. در این مقاله عواملی را توضیح میدهم که واقعاً هزینه و زمان ساخت را تعیین میکنند، تا وقتی با هر برنامهنویس یا شرکتی صحبت میکنید، بدانید چه چیزی را باید روشن کنید و چه برآوردی قابل اعتماد است.
چرا «یک نرمافزار حسابداری» یک قیمت ندارد
فرض کنید دو نفر هر دو میگویند «نرمافزار حسابداری و انبار میخواهم». اولی یک فروشگاه با چند صد کالای ساده و یک انبار است. دومی پخشکنندهای با چند انبار، کالاهای چندبعدی، نمایندگان فروش و اتصال به فروشگاه اینترنتی. اسم هر دو یکی است، اما حجم کار دومی چند برابر اولی است.
برآوردی که بدون پرسیدن این جزئیات داده شود، یا خیلی بالاست (چون فروشنده ریسک ناشناخته را در قیمت گذاشته) یا خیلی پایین (و بعداً با «این در قرارداد نبود» بالا میرود). هر دو برای شما بد است.
عامل ۱: تعداد و پیچیدگی فرایندها
مهمترین عامل، تعداد فرایندهایی است که نرمافزار باید پوشش دهد و پیچیدگی هر کدام. «ثبت فاکتور فروش» ساده است؛ «ثبت فاکتور فروش با تخفیف پلکانی، فروش امانی، برگشت جزئی و تسویه با چک» چند برابر کار دارد. معمولاً بیشترین هزینه نه در حالت عادی، بلکه در استثناها پنهان است: برگشت، اصلاح، لغو، و حالتهایی که «فقط گاهی پیش میآید».
به همین دلیل در جلسه شناخت، بیشتر از حالت عادی درباره استثناها میپرسم. یک فهرست کامل از استثناها، دقیقترین ورودی برای برآورد است.
عامل ۲: اتصال به سیستمهای دیگر
هر اتصال، یک پروژه کوچک جداگانه است: درگاه پرداخت بانکی، سامانه پیامک، فروشگاه اینترنتی، سامانههای دولتی، API یک تأمینکننده یا حتی یک دستگاه. هزینه اتصال به کیفیت مستندات طرف مقابل هم بستگی دارد؛ اتصال به سرویسی که API مرتب و محیط تست دارد، خیلی ارزانتر از سرویسی است که فقط یک فایل PDF قدیمی دارد.
یک تجربه واقعی: در فروشگاه عینکسازی، ترمینال درگاه بانکی به IP سرور گره خورده بود و فقط از سرور داخل ایران کار میکرد. همین یک محدودیت، معماری کل سیستم را تعیین کرد. این چیزها را باید قبل از برآورد بدانید، نه وسط پروژه.
عامل ۳: دادههای قبلی
اگر از نرمافزار یا اکسل دیگری میآیید، انتقال داده خودش بخشی از پروژه است: استخراج، پاکسازی، تطبیق کالاها و طرفحسابها و کنترل ماندهها با گزارشهای قبلی. داده تمیز و مرتب انتقال سادهای دارد؛ دادهای که سالها بدون قاعده وارد شده، ممکن است به اندازه یک ماژول کامل کار داشته باشد. اگر داده قبلی دارید، نمونهای از آن را در همان جلسه اول نشان دهید.
عامل ۴: کاربران، دسترسیها و گزارشها
نرمافزاری که فقط یک نفر از آن استفاده میکند با سیستمی که دهها کاربر با نقشهای مختلف دارد فرق میکند: سطح دسترسی، تأیید چندمرحلهای، لاگ تغییرات و اعلانها هر کدام کار اضافه دارند. گزارشها هم همینطورند؛ چند گزارش استاندارد سادهاند، اما داشبورد مدیریتی با فیلترهای متنوع و خروجی اکسل کار جدی میخواهد.
عامل ۵: کیفیت و نگهداری
دو نرمافزار با یک ظاهر میتوانند از نظر کیفیت پشت صحنه کاملاً متفاوت باشند: تست خودکار، پشتیبانگیری، امنیت، مستندات و سرعت. اینها روز اول دیده نمیشوند، اما تعیین میکنند که سیستم بعد از یک سال هنوز قابل اعتماد و قابل توسعه است یا نه. ارزانترین پیشنهاد معمولاً از همین بخشها صرفهجویی کرده است.
بعد از تحویل هم نرمافزار هزینه دارد: سرور، بهروزرسانی، رفع اشکال و قابلیتهای تازه. این هزینه را از اول در محاسبه بگذارید.
چطور هزینه و ریسک را کم کنیم: نسخه حداقلی
بهترین راهی که برای کنترل هزینه میشناسم، شروع از یک نسخه حداقلی است: کوچکترین بخشی از سیستم که بهتنهایی ارزش واقعی ایجاد میکند. مثلاً بهجای کل سیستم حسابداری، اول فقط انبار و کاردکس کالاهای خاص؛ یا بهجای اتوماسیون کامل پشتیبانی، اول فقط پاسخ به سؤالهای قیمت و موجودی.
این کار سه فایده دارد. نتیجه را زود روی داده واقعی میبینید. اگر چیزی در فهم اولیه اشتباه بوده، زود معلوم میشود و ارزان اصلاح میشود. و تصمیم برای مرحله بعد را بر اساس تجربه واقعی میگیرید، نه بر اساس حدس. به همین دلیل برآوردهایم را همیشه مرحلهبهمرحله و با زمان و هزینه جدا برای هر مرحله مینویسم.
قبل از درخواست برآورد، اینها را آماده کنید
هرچه این اطلاعات دقیقتر باشد، برآوردی که میگیرید دقیقتر است، از هر کسی که بگیرید:
نکات کلیدی
- الان کار چطور انجام میشود و کجایش وقت یا پول هدر میدهد.
- چه کسانی از سیستم استفاده میکنند و هر کدام چه کاری انجام میدهند.
- چه اتصالهایی لازم است (درگاه، پیامک، فروشگاه، سیستمهای دیگر).
- داده قبلی کجاست و در چه وضعی است.
- کدام بخش از همه فوریتر است.
- محدودیت زمانی یا بودجهای مشخص دارید یا نه.
جمعبندی
هزینه نرمافزار اختصاصی را پنج عامل تعیین میکند: پیچیدگی فرایندها (بهویژه استثناها)، اتصال به سیستمهای دیگر، دادههای قبلی، کاربران و گزارشها، و کیفیت و نگهداری. برآورد قابل اعتماد فقط بعد از شناخت اینها ممکن است، و شروع از نسخه حداقلی مطمئنترین راه برای کنترل هزینه و ریسک است. اگر میخواهید برای پروژهتان برآورد مرحلهبهمرحله بگیرید، شرح کار را از اینجا بفرستید. برای آشنایی با نوع کارهایی که انجام میدهم، صفحه خدمات و نمونهکارها را ببینید.