۲۵٪ تخفیف۲۵٪ تخفیف طراحی سایت

برنامه‌نویسی سفارشی: اتصال، اتوماسیون و پنل اختصاصی

برنامه‌نویسی سفارشی یعنی نوشتن همان تکه نرم‌افزاری که کسب‌وکار تو لازم دارد و هیچ محصول آماده‌ای دقیقاً آن را نمی‌سازد؛ و در بیشتر کسب‌وکارهای ایرانی، این تکه یک «اتصال» است. موجودی در نرم‌افزار حسابداری ثبت می‌شود ولی قیمت سایت دستی عوض می‌شود، سفارش‌های سایت هر شب دوباره در حسابداری وارد می‌شود، پیامک‌ها را کسی یکی‌یکی می‌فرستد و گزارش فروش از سه فایل اکسل سرهم می‌شود. این صفحه درباره‌ی همین کارهاست: وصل کردن سیستم‌هایی که داری، خودکار کردن کارهای تکراری و ساختن پنل و داشبوردی که با روال کار خودت جور است. می‌گوییم هر کدام در عمل چه دام‌هایی دارد، از کار واقعی خودمان چه نمونه‌ای هست، چه چیزی تحویل می‌گیری و کجا اصلاً لازمش نداری.

برآورد مکتوب با قیمت ثابتپرداخت مرحله‌ایسورس‌کد کامل به نام شمازیبال، اسنپ‌پی، ترب و پیامک در پروژه‌های واقعی
اتصال درگاه پرداخت، پیامک، حسابداری و سامانه‌ها به هم با برنامه‌نویسی سفارشی

اتصال نرم‌افزار حسابداری به سایت؛ از هلو و سپیدار تا سامانه مودیان

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

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

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

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

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

اتصال درگاه پرداخت و خرید اقساطی به سایت؛ جایی که هر خطا پول است

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

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

پیش‌نیازهایی که به کد ربطی ندارند. برای گرفتن درگاه پرداخت اینترنتی از شرکت‌های پرداخت زیر نظر شاپرک، اینماد لازم است و اگر هنوز نماد نداری، زمان‌بندی پروژه باید این را حساب کند. نکته‌ی دوم جای سرور است: بعضی شرکت‌های پرداخت درخواست سرور خارج از ایران را نمی‌پذیرند؛ مثلاً طبق گزارش‌های ۱۴۰۰، به‌پرداخت ملت دسترسی همه‌ی سرورهای خارجی را بسته است. پس سرویسی که به درگاه ایرانی وصل است، معمولاً باید روی میزبانی ایرانی یا با نشانی خروجی ایرانی اجرا شود. مقایسه‌ی درگاه‌ها و کارمزدشان را در راهنمای درگاه پرداخت اینترنتی نوشته‌ایم.

خرید اقساطی. سرویس‌های «الان بخر، بعداً بپرداز» مثل اسنپ‌پی و دیجی‌پی در عمل یک درگاه دیگرند، با قاعده‌های خودشان: ثبت‌نام جداگانه‌ی فروشنده، تأیید نهایی سفارش پس از پرداخت، و لغو یا مرجوعی که باید به خود سرویس اقساطی هم خبر داده شود. در فروشگاه آلادخت کنار درگاه زیبال، خرید اقساطی با اسنپ‌پی هم فعال است. این‌که اقساطی اصلاً برای فروشگاه تو می‌ارزد یا نه، سؤالی کسب‌وکاری است که در راهنمای پرداخت اقساطی در فروشگاه اینترنتی بررسی‌اش کرده‌ایم.

اتصال پنل پیامک به سایت؛ کد ورود، اطلاع‌رسانی و مرز پیامک تبلیغاتی

پیامک هنوز مطمئن‌ترین راه رسیدن به مشتری ایرانی است و اتصال پنل پیامک به سایت معمولاً برای سه کار است: کد یک‌بارمصرف ورود، خبر دادن وضعیت سفارش یا نوبت، و یادآوری. در آلادخت مشتری با کد پیامکی وارد می‌شود، بدون رمز عبوری که فراموش شود. کد ورود هم باید عمر کوتاه و سقف درخواست برای هر شماره داشته باشد تا کسی با آن اعتبار پنلت را خالی نکند.

خدماتی و تبلیغاتی، دو مسیر جدا. ارسال انبوه پیامک تبلیغاتی یا اطلاع‌رسانی بدون رضایت قبلی گیرنده ممنوع است. پیامک‌های اطلاع‌رسانی باید «لغو۱۱» را در انتها داشته باشند: گیرنده با فرستادن ۱۱ لغو می‌کند و با ۱۲ دوباره عضو می‌شود. از خط خدماتی هم نمی‌شود تبلیغ فرستاد؛ قوانین ملی‌پیامک همین مرز را دارد و الگوی پیامک خدماتی نباید تخفیف، پیشنهاد یا تبلیغ داشته باشد. این قاعده‌ها باید در خود برنامه نشسته باشند، نه در حافظه‌ی کسی که پنل را راه انداخته.

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

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

پنل مدیریت اختصاصی، داشبورد مدیریتی و اتوماسیون کارهای تکراری

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

نمونه‌ی واقعی: پنلی که خودمان هر روز با آن کار می‌کنیم. پنل مدیریت فراکو از نیاز خودمان ساخته شده: فهرست مخاطب با فیلتر، برچسب و ثبت انصراف؛ خروجی اکسل با قالبی که پنل پیامک می‌پذیرد؛ تابلوی مرحله‌ای «پیگیری فروش» که هر مشتری بالقوه را قدم‌به‌قدم دنبال می‌کند؛ و بخش «پشتیبانی سایت‌ها» که سررسید هزینه‌ی پشتیبانی و سرور هر مشتری را با تاریخ شمسی نگه می‌دارد و پیش از سررسید، روز سررسید و بعد از گذشتنش خودکار پیامک یادآوری می‌فرستد. هیچ‌کدام فناوری عجیبی نیست؛ ارزششان در این است که دقیقاً روال کار ما را دنبال می‌کنند.

اتوماسیون فرایندهای کسب‌وکار. بیشتر اتوماسیون‌هایی که واقعاً وقت آزاد می‌کنند ساده‌اند: فایل اکسلی که هر هفته دستی تایپ می‌شود و می‌تواند با یک دکمه وارد سیستم شود، با بررسی ردیف‌های تکراری پیش از ورود؛ گزارشی که هر شب خودش ساخته و فرستاده می‌شود؛ یادآوری‌ای که به‌جای حافظه‌ی یک نفر، به زمان‌بند سیستم سپرده می‌شود. کار زمان‌بندی‌شده هم باید راه‌اندازی دوباره‌ی سرور را تحمل کند: نه یک پیامک دو بار برود، نه یک یادآوری جا بیفتد.

دو جزئیات که در پنل‌های ایرانی زیاد خراب می‌شود. تاریخ شمسی باید در خود منطق برنامه درست باشد، نه فقط در نمایش؛ ماه‌های شمسی ۳۱، ۳۰ یا ۲۹ روزه‌اند و سررسید «ماهانه» باید این را بداند. و مجوز هر کار مدیریتی باید سمت سرور بررسی شود؛ پنهان کردن یک دکمه از کاربر عادی، دسترسی را نمی‌بندد.

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

طراحی وب سرویس، اتصال API و پایش قیمت

بخش بزرگی از برنامه‌نویسی سفارشی، وصل کردن سیستم تو به سرویس‌هایی است که API دارند: درگاه، پنل پیامک، سرویس اقساطی و موتورهای مقایسه‌ی قیمت. نمونه‌اش نمایش خودکار محصولات آلادخت در ترب است؛ قیمت و موجودی از خود فروشگاه خوانده می‌شود و کسی لازم نیست فهرست را دستی به‌روز کند. جزئیات و دام‌های این اتصال را در راهنمای اتصال فروشگاه اینترنتی به ترب نوشته‌ایم.

اتصال API یعنی پیش‌بینی خطا. وصل شدن به یک API معمولاً سخت نیست؛ سخت این است که وقتی سرویس مقصد کند شد، جواب نداد یا قالب پاسخش عوض شد، سیستم تو نخوابد: کار ناتمام در صف بماند و دوباره تلاش شود، و هر خطا جایی ثبت شود که کسی ببیند. اگر سرویس مقصد خارج از ایران است، قطعی‌های اینترنت بین‌الملل در ۱۴۰۴ و ۱۴۰۵ نشان داد چنین وابستگی‌ای می‌تواند یک فرایند را ماه‌ها از کار بیندازد؛ پس از اول باید روشن باشد اگر آن سرویس در دسترس نبود، چه می‌شود.

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

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

نمونه‌های واقعی از کار فراکو؛ بدون بزرگ‌نمایی

کار اصلی فراکو سایت است؛ سایت‌هایی که اتصال‌هایشان همان کارهایی است که در این صفحه آمد. نمونه‌ها را دقیق می‌نویسیم تا بدانی چه چیزی واقعاً ساخته شده و چه چیزی نه.

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

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

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

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

آنچه تحویل می‌گیری؛ قرارداد، مالکیت سورس‌کد و پرداخت مرحله‌ای

تحویلی‌ها. سورس‌کد کامل در مخزن کدی که خودت به آن دسترسی داری؛ ساختار پایگاه داده؛ راهنمای نصب و راه‌اندازی که برنامه‌نویس دیگری بتواند با آن پروژه را از صفر بالا بیاورد؛ مستندات API اگر پروژه وب سرویس دارد؛ و همه‌ی دسترسی‌ها و رمزها. حساب سرویس‌های بیرونی — درگاه، پنل پیامک، میزبانی و دامنه — به نام خودت است، نه سازنده.

مالکیت، طبق قانون و در قرارداد. طبق ماده‌ی ۶ قانون حمایت از حقوق پدیدآورندگان نرم‌افزارهای رایانه‌ای مصوب ۱۳۷۹، وقتی ساختن نرم‌افزار موضوع قرارداد است، حقوق مادی آن — از جمله حق تغییر و توسعه — با سفارش‌دهنده است، مگر در قرارداد خلافش توافق شود. حقوق معنوی، مثل نام پدیدآورنده، با سازنده می‌ماند و قابل انتقال نیست. ما این را به تفسیر رها نمی‌کنیم و در قرارداد صریح می‌نویسیم که کد و حق تغییر و توسعه‌اش مال توست. بندهای لازم را در مالکیت سورس کد سایت و یک نمونه‌ی قابل ویرایش را در نمونه قرارداد طراحی سایت گذاشته‌ایم؛ برای سایت نوشته شده‌اند، ولی همان بندها در هر پروژه‌ی برنامه‌نویسی به کار می‌آیند. این‌ها اطلاعات عمومی است، نه مشاوره‌ی حقوقی.

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

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

ادامه‌ی پروژه‌ی نیمه‌کاره‌ی برنامه‌نویسی؛ اول بررسی، بعد تصمیم

اگر برنامه‌نویس قبلی رفته و کار نیمه‌کاره مانده، اولین کار نوشتن کد نیست؛ نجات دسترسی‌هاست. دامنه، میزبانی، مخزن کد، پایگاه داده و حساب سرویس‌ها به نام کیست و رمزشان دست کیست؟ ترتیب درست کارها در این وضعیت را — از گرفتن نسخه‌ی پشتیبان تا مسیر حقوقی — در راهنمای طراح سایت جواب نمی‌دهد؟ قدم‌به‌قدم نوشته‌ایم؛ برای هر پروژه‌ی نرم‌افزاری نیمه‌کاره هم همان ترتیب درست است.

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

ادامه یا بازنویسی، صادقانه. گاهی ادامه دادن به‌صرفه است: کد مرتب است و فقط چند بخش مانده. گاهی بازنویسی ارزان‌تر تمام می‌شود، چون هر وصله روی کد بد، خطای تازه می‌سازد. گاهی هم راه میانه بهتر است: داده‌ها و ظاهر می‌مانند و منطق پشت صحنه از نو نوشته می‌شود. این را بر اساس خود کد می‌گوییم، نه بر اساس این‌که کدام برای ما پروژه‌ی بزرگ‌تری است؛ اگر بازنویسی لازم نیست، نمی‌گوییم لازم است.

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

روند کار و آنچه هزینه‌ی برنامه‌نویسی سفارشی را تعیین می‌کند

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

زمان. اتصال‌های ساده — مثل وصل کردن پنل پیامک یا یک درگاه به سایتی که درست ساخته شده — معمولاً چند روز طول می‌کشد؛ پنل‌های اختصاصی و اتصال‌های چندطرفه معمولاً چند هفته تا چند ماه. زمان دقیق هر پروژه در برآورد نوشته می‌شود.

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

چرا عدد عمومی منتشر نمی‌کنیم. دو پروژه با یک اسم، مثلاً «اتصال حسابداری به سایت»، ممکن است از نظر حجم کار هیچ شباهتی به هم نداشته باشند و هر عدد ازپیش‌نوشته‌ای گمراهت می‌کرد. به‌جایش بعد از گفت‌وگو قیمت ثابت می‌دهیم و هزینه‌های جاری — میزبانی، اعتبار پیامک، کارمزد درگاه — را هم در همان برآورد جدا می‌نویسیم.

کِی برنامه‌نویسی سفارشی لازم نداری، و چه کارهایی را قبول نمی‌کنیم

برنامه‌نویسی سفارشی سرمایه‌گذاری است و همیشه جواب درست نیست. در این حالت‌ها احتمالاً لازمش نداری، و در گفت‌وگوی اول هم همین را از ما می‌شنوی:

وقتی محصول آماده همان کار را می‌کند. اگر سایتت ووکامرس است و نرم‌افزار حسابداری‌ات ماژول اتصال آماده دارد، اگر افزونه‌ی رسمی درگاه یا پنل پیامک نیازت را پوشش می‌دهد، یا اگر یک CRM آماده‌ی ایرانی روال فروش تو را از قبل دارد، همان را بخر. ارزان‌تر است و نگهداری‌اش با سازنده‌ی خودش است.

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

وقتی روال کار هنوز ثابت نشده. اگر روش فروش یا پیگیری‌ات هر ماه عوض می‌شود، اول با اکسل و ابزارهای ساده پیدایش کن. خودکار کردن روالی که هنوز معلوم نیست، یعنی دو بار پول دادن.

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

قیمت و روند کار

قیمت ثابت ندارد؛ ولی روندش کاملاً شفاف است

یک ربات ساده‌ی پاسخ‌گو و یک سامانه‌ی چندکاربره با اتصال به حسابداری، هر دو «پروژه‌ی برنامه‌نویسی» نام دارند ولی اندازه‌شان قابل مقایسه نیست. برای همین عدد را بعد از شنیدن نیازت می‌گوییم — مکتوب و ثابت.

  1. گفت‌وگوی کوتاه و رایگانمی‌گویی چه مشکلی را می‌خواهی حل کنی، چه کسانی با آن کار می‌کنند و به چه سامانه‌هایی باید وصل شود. هنوز هیچ تعهدی در کار نیست.
  2. برآورد مکتوب با قیمت ثابتدامنه‌ی کار، قابلیت‌ها، مراحل، زمان تحویل و قیمت هر مرحله را مکتوب می‌گیری. اگر چیزی مبهم باشد، پیش از قیمت‌دادن می‌پرسیم، نه وسط کار.
  3. قرارداد و پرداخت مرحله‌ایکار به چند مرحله‌ی قابل‌دیدن تقسیم می‌شود و پرداخت همراه پیشرفت است؛ جلوتر از کاری که انجام شده، پرداختی نداری.
  4. تحویل مرحله‌ای و آزموندر پایان هر مرحله نسخه‌ای قابل‌استفاده می‌بینی و آزمایش می‌کنی. تغییرِ خارج از برآورد، پیش از انجام، جداگانه قیمت می‌گیرد؛ غافلگیری ته کار نداریم.
  5. سورس‌کد، مستندات و پشتیبانی اختیاریسورس‌کد کامل و دسترسی‌ها به نام خودت تحویل می‌شود. پشتیبانی و توسعه‌ی بعدی اختیاری است؛ ماندنت به کیفیت کار بسته است، نه به قفل.
سؤال‌های پرتکرار

هر چیزی که درباره‌ی برنامه‌نویسی سفارشی می‌پرسند

سورس‌کد برنامه‌ای که سفارش می‌دهم مال کیست؟

طبق ماده‌ی ۶ قانون حمایت از حقوق پدیدآورندگان نرم‌افزارهای رایانه‌ای (۱۳۷۹)، وقتی ساخت نرم‌افزار موضوع قرارداد است، حقوق مادی و حق تغییر و توسعه با سفارش‌دهنده است، مگر خلافش توافق شود. ما این را صریح در قرارداد می‌نویسیم و کد را در مخزنی تحویل می‌دهیم که خودت به آن دسترسی داری.

قیمت برنامه‌نویسی سفارشی ثابت است یا ساعتی؟

بعد از یک گفت‌وگوی کوتاه و روشن شدن دامنه‌ی کار، قیمت ثابت می‌دهیم، نه بازه. هر تغییری بیرون از آن دامنه پیش از انجامش جداگانه برآورد می‌شود. برای کارهای باز و پیوسته که دامنه‌ی ثابتی ندارند، می‌شود درباره‌ی قرارداد ماهانه هم حرف زد.

پرداخت چطور انجام می‌شود؟

مرحله‌ای و همراه پیشرفت کار. مرحله‌ها و مبلغ هر کدام در برآورد کتبی نوشته می‌شود و کار هر مرحله را پیش از پرداختش روی نسخه‌ی آزمایشی می‌بینی؛ جلوتر از کاری که انجام شده، پرداختی نداری.

در پایان پروژه چه چیزهایی تحویل می‌گیرم؟

سورس‌کد کامل و ساختار پایگاه داده، راهنمای نصب و راه‌اندازی، مستندات API اگر پروژه وب سرویس دارد، و همه‌ی دسترسی‌ها و رمزها. حساب درگاه، پنل پیامک، میزبانی و دامنه هم به نام خودت است، نه ما.

بعد از تحویل اگر خطایی پیدا شد چه می‌شود؟

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

پروژه‌ی نیمه‌کاره‌ی برنامه‌نویس دیگری را ادامه می‌دهید؟

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

برنامه‌نویسی سفارشی چقدر طول می‌کشد؟

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

نرم‌افزار حسابداری ما هلو یا سپیدار است؛ به سایت وصل می‌شود؟

معمولاً بله؛ یا از راه ماژول و وب‌سرویس خود سازنده‌ی نرم‌افزار، یا با یک برنامه‌ی واسط که کنار حسابداری اجرا می‌شود و موجودی و قیمت را به سایت می‌فرستد. اگر سایتت ووکامرس است و ماژول آماده‌ی همان نرم‌افزار نیازت را پوشش می‌دهد، اول همان را امتحان کن.

سایتم روی سرور خارج از ایران است؛ درگاه پرداخت ایرانی به آن وصل می‌شود؟

بعضی شرکت‌های پرداخت درخواست سرورهای خارجی را نمی‌پذیرند، پس سرویسی که با درگاه ایرانی کار می‌کند معمولاً باید روی میزبانی ایرانی یا با نشانی خروجی ایرانی اجرا شود. پیش‌نیاز دیگر اینماد است که بدون آن درگاه پرداخت اینترنتی داده نمی‌شود.

چه کارهایی را قبول نمی‌کنید؟

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

برآورد رایگان

بگو چه می‌خواهی، قیمت ثابت بگیر

چند خط درباره‌ی کاری که باید انجام شود بنویس — حتی اگر هنوز نمی‌دانی دقیقاً چه چیزی لازم داری. بقیه‌اش را در گفت‌وگوی کوتاه با هم روشن می‌کنیم.

  • گفت‌وگوی اول رایگان است و تعهدی نمی‌آورد
  • برآورد مکتوب: دامنه‌ی کار، مراحل، زمان و قیمت ثابت هر مرحله
  • پرداخت مرحله‌ای و تحویل سورس‌کد کامل به نام خودت