در حال بارگذاری 0%
// منو.exe
خانه رزومه بلاگ تماس
English فارسی
~/blog / technology / why-we-open-phone

چرا گوشی را باز می‌کنیم و نمی‌دانیم چرا؟

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

# هدفی بدون هدف

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

# یک رفتار ساده را به کد تبدیل کنیم

فرض کنیم می‌خواهیم برنامه‌ای طراحی کنیم که کاربر به‌طور منظم به آن برگردد. ساده‌ترین حالت ممکن این است:
app.js
function showContent() {
    return getNewContent();
}
کاربر وارد برنامه می‌شود و محتوای جدید می‌بیند. اما این کافی نیست. اگر محتوای جدیدی وجود نداشته باشد چه؟ یا اگر کاربر دو دقیقه بعد برنامه را ببندد چه؟
پس سیستم شروع می‌کند به جمع‌آوری داده:
user_model.js
const user = {
    likes: [],
    watched: [],
    skipped: [],
    followed: [],
    sessionDuration: 0
};
حالا هر رفتار کاربر تبدیل به یک سیگنال می‌شود:
analytics.js
function trackInteraction(action, contentId) {
    analytics.track({
        action,
        contentId,
        timestamp: Date.now()
    });
}
کاربر روی یک ویدئو کلیک می‌کند: CLICK — تا آخر نگاه می‌کند: WATCH_COMPLETED — ویدئوی بعدی را رد می‌کند: SKIP — روی یک موضوع خاص مکث می‌کند: DWELL_TIME = 14s.
این داده‌ها به مرور به سیستم می‌گویند: این کاربر احتمالاً به این نوع محتوا علاقه دارد. حالا الگوریتم می‌تواند محتوای بعدی را بهتر انتخاب کند.
recommend.js
function calculateScore(post, user) {
    let score = 0;
 
    if (post.topic === user.favoriteTopic) {
        score += 20;
    }
 
    if (user.follows.includes(post.authorId)) {
        score += 30;
    }
 
    if (post.similarTo(user.recentlyWatched)) {
        score += 25;
    }
 
    return score;
}
در دنیای واقعی، سیستم‌های توصیه‌گر بسیار پیچیده‌تر از این هستند، اما منطق اصلی مشابه است:
Feedback Loop
1
رفتار شما
2
ثبت داده
3
تحلیل رفتار
4
پیش‌بینی علاقه
5
انتخاب محتوا
6
واکنش شما
داده جدید → تکرار حلقه
اینجا یک حلقه شکل می‌گیرد. و هر بار که شما از سیستم استفاده می‌کنید، حلقه اطلاعات بیشتری تولید می‌کند.

# مشکل از جایی شروع می‌شود که «باز کردن گوشی» دیگر نیاز به هدف ندارد

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

# Infinite Scroll؛ یک تغییر کوچک با یک نتیجه بزرگ

در اینترنت قدیمی، صفحات پایان داشتند. صفحه اول. صفحه دوم. صفحه سوم. اما با Infinite Scroll، ساختار تغییر کرد:
Feed vs Page
صفحه معمولی
محتوا → پایان → سیگنال توقف
Feed بی‌نهایت
محتوا → بیشتر → بیشتر → بیشتر → ...
بدون سیگنال توقف
از نظر برنامه‌نویسی، پیاده‌سازی آن چندان پیچیده نیست:
infinite_scroll.js
window.addEventListener('scroll', async () => {
    if (isNearBottom()) {
        const response = await fetch('/api/feed');
        const posts = await response.json();
 
        render(posts);
    }
});
شما به پایین صفحه نزدیک می‌شوید. API داده بیشتری می‌فرستد. DOM محتوای جدید را اضافه می‌کند. و صفحه دوباره پر می‌شود.
اما از نظر رفتاری یک اتفاق مهم افتاده است: دیگر نقطه‌ای وجود ندارد که سیستم به شما بگوید «تمام شد».
در یک صفحه معمولی: Content → End. اما در Feed: Content → More → More → More → ...
وقتی یک کتاب تمام می‌شود، پایان آن به شما سیگنال توقف می‌دهد. وقتی یک مقاله تمام می‌شود، می‌توانید صفحه را ببندید. اما Feed به‌صورت طبیعی نمی‌گوید: «خب، دیگر چیزی برای دیدن وجود ندارد.» چون هدفش دقیقاً این است که محتوای بعدی همیشه آماده باشد.

# حالا بیایید اعلان را وارد ماجرا کنیم

فرض کنید برنامه هیچ کاری با شما ندارد. شما هم کاری با برنامه ندارید. پس احتمال بازگشت کم می‌شود. اینجا Notification وارد می‌شود.
از نظر نرم‌افزاری، اتفاق بسیار ساده‌ای است:
notification.js
sendNotification({
    title: "New Activity",
    body: "Someone interacted with your post"
});
اما Notification یک ویژگی مهم دارد: شما را از جایی که هستید جدا می‌کند و توجه‌تان را به جای دیگری می‌برد.
مثلاً شما در حال برنامه‌نویسی هستید. یک Notification می‌آید. ذهن شما با یک سؤال مواجه می‌شود: چه کسی پیام داده؟ حتی اگر گوشی را باز نکنید، این سؤال چند لحظه در ذهن ایجاد شده است.
حالا اگر پیام این باشد: You have 3 new notifications. — اطلاعاتی درباره محتوا به شما نمی‌دهد. فقط می‌گوید: چیزی وجود دارد که هنوز ندیده‌اید. و این دقیقاً همان چیزی است که می‌تواند شما را به سمت باز کردن گوشی سوق دهد.

# الگوریتم همیشه دنبال چیزی نیست که دوست دارید

فرض کنید یک شبکه اجتماعی یک میلیارد محتوای مختلف دارد. طبیعی است که نمی‌تواند همه را نشان دهد. بنابراین یک مسئله فنی دارد: از بین این همه محتوا، کدام را الان به این کاربر نشان دهم؟
اینجا سیستم می‌تواند یک تابع هدف داشته باشد:
objective.txt
# Maximize:
# - Watch Time
# - Engagement
# - Return Rate
در ساده‌ترین حالت:
scoring.js
score = (
    0.4 * predicted_watch_time +
    0.3 * predicted_like +
    0.2 * predicted_share +
    0.1 * predicted_return
)
مدل آموزشی — سیستم واقعی نیست: این صرفاً یک مدل فرضی و ساده برای نمایش مفهوم است. سیستم‌های توصیه‌گر واقعی از مدل‌های بسیار پیچیده‌تر با صدها ویژگی، یادگیری عمیق و تست A/B بلادرنگ استفاده می‌کنند.
سیستم فقط نمی‌پرسد: «این محتوا را دوست داری؟» بلکه می‌تواند بپرسد: «احتمال اینکه روی این کلیک کنی چقدر است؟» یا: «احتمال اینکه این را تا آخر ببینی چقدر است؟» و حتی: «بعد از دیدن این محتوا، احتمال دارد محتوای بعدی را هم ببینی؟»
اینجا هدف از «انتخاب بهترین محتوا» می‌تواند به «پیش‌بینی بهترین محتوای بعدی برای حفظ تعامل» نزدیک شود. این تفاوت ظریفی است. و همین تفاوت است که باعث می‌شود Feed شما لزوماً نماینده تمام چیزهایی که دوست دارید نباشد. بلکه نماینده چیزهایی باشد که سیستم پیش‌بینی کرده احتمالاً به آن‌ها واکنش نشان می‌دهید.

# پس چرا گوشی را بدون دلیل باز می‌کنیم؟

اینجا می‌توانیم یک مدل ساده بسازیم. فرض کنیم P(Open Phone) احتمال باز کردن گوشی باشد. این احتمال می‌تواند تحت تأثیر چند عامل قرار بگیرد:
probability_model.txt
P(Open Phone) =
    Habit
  + Notification
  + Boredom
  + Expectation
  + Social Feedback
  + Easy Access
البته این یک معادله علمی واقعی نیست؛ یک مدل مفهومی است. اما نکته مهم اینجاست که همه این عوامل می‌توانند هم‌زمان وجود داشته باشند.
مثلاً: بیکار هستم + گوشی جلوی من است + دقایقی است آن را چک نکرده‌ام + ممکن است پیام جدیدی آمده باشد.
هیچ‌کدام به‌تنهایی خیلی مهم نیستند. اما کنار هم، احتمال برداشتن گوشی را بالا می‌برند. و با تکرار این اتفاق، رفتار به مرور خودکارتر می‌شود.

# آیا الگوریتم سلیقه شما را کشف کرد یا در ساختنش نقش داشت؟

فرض کنید یک اپلیکیشن را باز می‌کنید. الگوریتم چیزی به شما نشان می‌دهد. شما روی آن کلیک می‌کنید. سیستم یاد می‌گیرد. دفعه بعد محتوای مشابه بیشتری می‌دهد. شما دوباره کلیک می‌کنید. سیستم دوباره یاد می‌گیرد. بعد از مدتی Feed شما شخصی‌سازی شده است.
اما حالا سؤال این است: آیا الگوریتم فقط سلیقه شما را کشف کرده، یا در ساختن آن هم نقش داشته است؟
مثلاً فرض کنید ابتدا فقط به سه موضوع علاقه دارید:
interests.dat
Programming
Technology
Games
سیستم از رفتار شما متوجه این موضوع می‌شود. اما بعد از چند ماه، بخش بزرگی از Feed شما درباره همین موضوع‌هاست. در نتیجه شما دائماً همان اطلاعات را می‌بینید. و چون دائماً آن‌ها را می‌بینید، احتمال اینکه روی همان موضوع‌ها کلیک کنید بیشتر می‌شود. پس سیستم دوباره محتوای بیشتری از همان موضوع‌ها نشان می‌دهد.
حلقه اکو کمبر (Echo Chamber)
سلیقه شما
الگوریتم الگو را تشخیص می‌دهد
توصیه
محتوای مشابه بیشتر
مواجهه
دوباره کلیک می‌کنید
توصیه بیشتر → تکرار حلقه
حالا تشخیص اینکه «من واقعاً این را دوست دارم» و «من به دیدن این عادت کرده‌ام» همیشه ساده نیست.

# و حالا برگردیم به همان سؤال اول

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

# شاید باید قبل از باز کردن گوشی یک تست ساده داشته باشیم

نه برای ترک گوشی. نه برای حذف شبکه‌های اجتماعی. فقط یک تست:
test.sh
$ why
 
# قبل از Unlock کردن:
"Why am I opening this?"
اگر پاسخ واضح است: I need to reply to a message. بسیار خوب. کار را انجام بده و تمام.
اما اگر پاسخ این است: I don't know. — شاید همین‌جا متوجه یک چیز مهم شده باشید. ممکن است شما گوشی را برای انجام یک کار باز نکرده باشید؛ ممکن است فقط منتظر باشید گوشی چیزی برای انجام دادن به شما پیشنهاد کند.
و این تفاوت، به نظرم، مهم‌ترین بخش کل داستان است.

# جمع‌بندی

گوشی هوشمند فقط یک ابزار نیست. داخل آن، مجموعه‌ای از سیستم‌ها کنار هم کار می‌کنند:
system_architecture.txt
Notification
    +
Recommendation
    +
Infinite Scroll
    +
Personalization
    +
Social Feedback
    +
Low Friction
هرکدام به‌تنهایی یک قابلیت عادی هستند. اما وقتی کنار هم قرار می‌گیرند، یک سیستم بسیار قدرتمند ساخته می‌شود: سیستمی که می‌داند چگونه شما را دوباره وارد خودش کند.
این الزاماً به معنی بد بودن تکنولوژی نیست. همین سیستم‌ها می‌توانند باعث شوند یک آموزش خوب را پیدا کنیم، یک خبر مهم را ببینیم یا با کسی که کیلومترها دورتر است ارتباط برقرار کنیم.
اما دانستن اینکه این سیستم چگونه کار می‌کند، یک تفاوت مهم ایجاد می‌کند. چون حالا هر بار که گوشی را باز می‌کنید، می‌توانید یک سؤال ساده از خودتان بپرسید:
«من الان چیزی می‌خواستم، یا فقط می‌خواستم ببینم چه چیزی منتظر من است؟»
و شاید مرز بین استفاده کردن از یک ابزار و عادت کردن به یک ابزار دقیقاً همین‌جا باشد.
takeaway.txt
قبل از اینکه گوشی را باز کنیم، یک سؤال ساده بپرسیم: برای چه؟ اگر جواب مشخصی نداریم، شاید چیزی که قرار است اجرا شود، یک اپلیکیشن نیست؛ یک عادت است.