چرا اپ ساختهشده با هوش مصنوعی شما دچار مشکل داده ناقص است (و چطور پیش از برخورد کاربران با آن، درستش کنید)
داده ناقص زمانی رخ میدهد که کاربران فیلدهای اختیاری را رد میکنند، فرمها را نیمهکاره رها میکنند، یا پاسخهای قبلی را فراموش میکنند — و پایگاه داده این خلأها را بیسروصدا ذخیره میکند. راهحل: فیلدهای الزامی را مشخص کنید، هر فیلد را همان لحظه تایپ اعتبارسنجی کنید، و در هر مرحله پاسخهای قبلی را تأیید بگیرید.
اپی ساختید، اولین کاربران واقعیتان شروع به استفاده کردند، و بعد متوجه چیز عجیبی شدید. بعضی رکوردها فیلدهای خالی داشتند. بعضی کاربران اطلاعاتی آپلود کرده بودند ولی ذخیره نشده بود. بعضی گردشکارها نیمهراه گیر کرده بودند چون یک فیلد الزامی، بعد از اولین باری که کسی از فرم استفاده کرده بود، از آن ناپدید شده بود. وقتی خودتان تست میکردید دادهها درست به نظر میرسیدند، اما چیزی در نحوهی استفادهی آدمهای واقعی از اپ، حفرههایی به جا میگذاشت.
این یکی از رایجترین لحظهها در زندگی یک اپ ساختهشده با هوش مصنوعی است، و تقریباً هیچکس انتظارش را ندارد. سازندهی شما اپ را درست ساخته. پایگاه داده هم درست تنظیم شده. اما کاربران، موجوداتِ دادهمحور هستند: فیلدها را رد میکنند، اپ را وسط کار میبندند، در سه دستگاه مختلف چیزها را پر میکنند، ماهها بعد برمیگردند و یادشان میرود قبلاً چه چیزی وارد کرده بودند. جایی در دل این واقعیت، حفرهها پدیدار میشوند.
در ادامه میبینیم دقیقاً چه اتفاقی میافتد، چرا یواشکی سراغتان میآید، و چه اقداماتی جلوی آن را میگیرد پیش از آنکه اپتان بهجای یک دارایی، به یک بدهی تبدیل شود.
چرا اپ من دادهی گمشده یا ناقص دارد؟
اپ شما به این دلیل دادهی گمشده یا ناقص دارد که کاربران فیلدهای اختیاری را رد میکنند، فرمهای چندمرحلهای را نیمهکاره رها میکنند، یا اطلاعات را در نشستها و دستگاههای مختلف پر میکنند — و پایگاه داده هرچه را که آنها جا گذاشتهاند، با تمام حفرههایش، ذخیره میکند. این نه خرابی پایگاه داده است و نه باگ سازنده. دادهای که هست، درست است. مشکل، دادهای است که نیست.
وقتی کاربری فرمی را پر میکند و میرود، یک رکورد از خود به جا میگذارد. اما «رکورد بهجا گذاشتن» با «رکورد را کامل کردن» فرق دارد. فرم ثبتنامی با هشت فیلد ممکن است پنج تای آن پر شده باشد و سه تای دیگر خالی مانده باشد، چون کاربر فکر نمیکرده الزامی است، یا نمیدانسته چه بنویسد، یا فردا برگشته و یادش رفته. اپ شما آن را پذیرفته. پایگاه داده آن را ذخیره کرده. و حالا گردشکار پاییندستی شما — همان بخشی که قرار است فاکتور بفرستد، یا وظیفهای اختصاص دهد، یا گزارشی بسازد — به یک فیلد خالی برمیخورد و یا خراب میشود، یا… همان بخش را انجام نمیدهد.
این با دادهی اشتباه فرق دارد. دادهی اشتباه را میبینید. دادهی ناقص موذیتر است: اپ بهظاهر دارد کار میکند. نام و ایمیل کاربر را نشان میدهد. تازه وقتی میخواهید آن رکورد را برای کاری پاییندستی به کار ببرید، متوجه میشوید شماره تلفن غایب است، و حالا نمیتوانید پیامک تأییدیه بفرستید، پس روند متوقف میشود.
چه چیزی باعث دادهی ناقص در یک اپ ساختهشده با هوش مصنوعی میشود؟
سه عادت این وضعیت را میسازد، و اگر هرکدام را دارید، هفتهها بعد از اینکه کاربرانتان از قبل با آن مواجه شدهاند، متوجه حفرههای دادهتان میشوید: فیلدهای اختیاری که باید الزامی باشند، فرآیندهای چندمرحلهای که چیزی را که قبلاً وارد شده به کاربر یادآوری نمیکنند، و فرمهایی که فقط در همان لحظهی آخر اعتبارسنجی میشوند.
اول: فیلدهای اختیاریای که باید الزامی باشند. فرمی ساختهاید و بعضی فیلدها را اختیاری علامت زدهاید چون فکر کردهاید «شاید آدمها نخواهند آن را بدهند». اما بعد اپ شما تلاش میکند از آن فیلد استفاده کند. برای فرستادن تأییدیه، به شماره تلفن نیاز دارد، یا برای ارسال، به آدرس، یا برای دریافت پول، به روش پرداخت. فرم اجازه داد کاربر آن را رد کند. حالا اپ کار نمیکند. هر فیلد اختیاری در اپ شما باید این آزمون را پس بدهد: «اگر این فیلد خالی باشد، آیا اپ من واقعاً کارکردش را حفظ میکند؟» اگر جواب نه است، آن را الزامی کنید. اگر جواب بله است، فیلد را حذف کنید.
دوم: فرآیندهای چندمرحلهای که در آنها مراحل بعدی، آنچه را کاربر قبلاً وارد کرده به او یادآوری نمیکنند. فرآیند ثبتنام پنجمرحلهای را تصور کنید که مرحلهی اول ایمیل میپرسد، مرحلهی پنجم میپرسد «فاکتورها به کجا ارسال شود؟» و این فیلد خالی میماند. کاربر آنچه دو دقیقه پیش وارد کرده بود را فراموش کرده. فرم آن را بهعنوان پاسخی جدید پذیرفته. حالا شما دو آدرس ایمیل دارید و نمیدانید کدام درست است. هر مرحله در یک فرآیند باید آنچه کاربر تاکنون گفته را به او یادآوری کند و فرصت اصلاحش را بدهد.
سوم: بدون اعتبارسنجی تا لحظهی آخر. فرمی با هشت فیلد که فقط هنگام کلیک روی ارسال اعتبارسنجی میشود، دعوتنامهای است برای دادهی گمشده. کسی هفت فیلد را درست پر میکند و روی ارسال میزند، و بعد سیستم میگوید «فیلد سوم نامعتبر است». حالا باید به بالا برگردد، به یاد بیاورد فیلد سوم چه بوده، و آن را اصلاح کند. یا — محتملتر — تب را میبندد. فرم ورودی ناقص را پذیرفت چون کاربر کلافه شد. فرمهای خوب هر فیلد را همان لحظهای که کاربر تایپاش را تمام میکند اعتبارسنجی میکنند، تا او هنوز درگیر است و متوجه مشکل میشود.
چطور دادهی ناقص را در یک اپ برطرف کنیم؟
دادهی ناقص را با در نظر گرفتنش بهعنوان بخشی از تجربهی کاربری، نه یک مسئلهی بکاند، برطرف کنید: فیلدهای الزامی را واضح کنید، هر فیلد را همزمان با تایپ کاربران اعتبارسنجی کنید، توضیح دهید چرا آن را میپرسید، و به کاربران یادآوری کنید که قبلاً چه چیزی به شما گفتهاند.
با صداقتِ کامل دربارهی آنچه واقعاً لازم دارید شروع کنید. بنشینید و برای هر فیلد به یک سؤال جواب دهید: «اگر این فیلد خالی باشد، آیا اپ من هنوز میتواند کارش را انجام دهد؟» اگر جواب نه است، آن را الزامی کنید. آن را روی خودِ فرم الزامی علامت بزنید — نه فقط در یک متن راهنمای ریز، بلکه بهطور واضح مشخصشده. بسیاری از کاربران فیلدی را رد میکنند مگر اینکه بهوضوح الزامی علامت خورده باشد. نمیتوانید فیلدهای الزامی را اختیاری جا بزنید و بعد امیدوار باشید کاربران خودشان حدس بزنند.
زود و مکرر اعتبارسنجی کنید. منتظر ارسال نمانید تا به کسی بگویید مشکلی هست. همانطور که ایمیلی تایپ میکند، بررسی کنید شبیه ایمیل هست یا نه. همانطور که تاریخی انتخاب میکند، بررسی کنید در گذشته نباشد. همانجا به او بگویید چه چیزی اشتباه است، تا بتواند وقتی هنوز حواسش به آن فیلد است، آن را اصلاح کند. پیام درونخطی مثل «به یک تاریخ در آینده نیاز داریم» یک کمک است. صبر کردن تا ارسال برای گفتنِ «ورودی نامعتبر» یک تله است.
نشان دهید با داده چه میخواهید بکنید. اگر به شماره تلفن کسی نیاز دارید، به او بگویید چرا: «از این برای فرستادن تأییدیهی ارسال به شما استفاده میکنیم.» اگر دلیلی ببینند، احتمال بیشتری هست که شمارهی واقعی بدهند تا اینکه رد شوند. اگر فقط یک فیلد خالی باشد، به چشم نویز میآید.
به آدمها یادآوری کنید چه چیزی را قبلاً وارد کردهاند. اگر اپ شما چند مرحله یا صفحه دارد، صفحهی دوم باید بگوید «ایمیل شما این بود: alice@example.com. درست است؟» این کار دو چیز را انجام میدهد: به کاربر ثابت میکند که آنچه وارد کرده دریافت شده، و فرصتی به او میدهد تا اشتباه تایپی را پیش از آنکه اهمیت پیدا کند اصلاح کند. بخش زیادی از دادهی ناقص در واقع اشتباه تایپی است — کاربر قصد داشته چیزی بنویسد و اشتباه درآمده، و حالا سیستم پاییندستی نمیتواند از آن استفاده کند.
برای فیلدهای اختیاری: دربارهی اینکه چرا اختیاریاند صادق باشید. اگر فیلدی واقعاً اختیاری است، فرم باید همین را بگوید: «تلفن (اختیاری — اگر نمیخواهید اعلانهای ارسال دریافت کنید، خالی بگذارید).» اگر کاربری این را بخواند و باز هم رد کند، شما دادهی واقعی دارید مبنی بر اینکه او نمیخواسته آن را بدهد. این تمیز است. جایگزینش یک فیلد خالی است و هیچ اطلاعی از اینکه او رد کرده یا فراموش کرده.
نمونهی واقعی: فرآیند ثبتنامی که چیزی را نگرفت
بنیانگذاری اپ رزرو نوبتی ساخت با فرمی دومرحلهای: مرحلهی اول ایمیل و نام میپرسید، مرحلهی دوم شماره تلفن و تاریخ ترجیحی. کنار فیلدها نوشته شده بود «الزامی» اما فرم واقعاً اعتبارسنجی نمیکرد — فقط اجازه میداد رد شوند. صدها نفر ثبتنام کردند. وقتی او تلاش کرد تأییدیههای پیامکی بفرستد، ۴۰ درصد برگشت خورد چون فیلد شماره تلفن خالی بود. اول فکر کرد اینها ثبتنامهای اسپماند. بعد یک کاربر واقعی را حین انجام فرآیند تماشا کرد: ایمیل و نام را در مرحلهی اول پر کرد، روی «بعدی» زد، و در مرحلهی دوم فیلد تلفن — بهخاطر چیدمان صفحه — کنار فیلد تاریخِ الزامی، اختیاری به نظر میرسید، پس رد کرد.
راهحل: فیلد تلفن را بهصورت بصری الزامی علامت زدند، پیش از اجازهی عبور آن را روی همان صفحه اعتبارسنجی کردند، و در مرحلهی دوم «ایمیل شما alice@example.com است» را نشان دادند تا کاربران بدانند دادهی مرحلهی اولشان ثبت شده.
رزروها احیا شدند، چون حالا فرم واقعاً ثابت میکرد دارد آنچه او نیاز داشت را جمع میکند.
به سازندهی هوش مصنوعیام چه بگویم تا این را درست کند؟
این دستورالعملها را مستقیم به سازندهتان بدهید — فیلدهای الزامی، اعتبارسنجی درونخطی، مراحل تأیید، توضیح فیلدهای اختیاری، و یک تست پیش از راهاندازی را پوشش میدهند:
- «تلفن و ایمیل را فیلد الزامی کن و روی فرم بهطور واضح الزامی علامت بزن.»
- «هر فیلد را همانطور که کاربر تایپ میکند اعتبارسنجی کن. پیامهای خطای درونخطی مثل «لطفاً ایمیل معتبر وارد کنید» را دقیقاً کنار همان فیلد نشان بده.»
- «در مرحلهی دوم، «ایمیل شما این بود: [ایمیل]. درست است؟» را نشان بده تا کاربران بتوانند تأیید یا اصلاح کنند.»
- «برای هر فیلد اختیاری، یک متن راهنما اضافه کن که توضیح دهد چرا اختیاری است، مثل «رد کردن این یعنی هشدارهای پیامکی برایتان نمیفرستیم.»»
- «این تست را اجرا کن: کل فرآیند را روی گوشیات انجام بده و هر فیلد اختیاری را رد کن. آیا اپ باز هم کار میکند؟»
چطور پیش از راهاندازی، دادهی ناقص را تست کنم؟
هر فرآیند را با حداقل داده اجرا کنید: فقط فیلدهای الزامی را پر کنید، هرچه اختیاری است را رد کنید، و ارسال بزنید. بعد پایگاه دادهتان را چک کنید. اگر رکورد قابلاستفاده است و اپتان میتواند کار بعدی را انجام دهد، آمادهاید. اگر هر خلأیی منطق پاییندستی را میشکند، یا آن فیلد را الزامی کنید یا حذفش کنید.
دادهی ناقص در اغلب اپها یک باگ نیست. وقتی به کاربران اجازهی انتخاب میدهید، حالت پیشفرض همین است. راهحل، صادق بودن دربارهی آنچه لازم دارید، واضح کردن آن نیاز، و اعتبارسنجی زودهنگام آن است.