본문 바로가기
C.W.K.
Stream
Lesson 03 of 04 · published

Urgency 장치 없음

~11 min · non-goals, anti-patterns, calm-changes, engagement

Level 0Open Gate
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"'지금 행동해' 라고 외치는 기능은 전부, 네 판단보다 네 반사신경이 돈이 된다는 베팅이야. Keep 는 그 반대편에 서."

non-goal 이 기둥이야

아키텍처 문서는 보통 뭘 만들지 나열하지. Keep 에서 제일 중요한 목록은 거꾸로야. 절대 안 만들 것들의 목록이거든. 요청 안 한 알림, 매수/매도 점수, 감정을 긁는 urgency 장치, 주문 입력, 자동 매매. 전부 그 목록에 들어가. '나중에 하자' 가 아니라 영구 경계야. 이렇게 소리 내서 못박아 두니까, 나중에 선의로 합류한 기여자가 "⚠️ 오늘 포트폴리오 3% 하락!" 배너를 '도움되겠지' 하며 신나게 붙이는 일을 막을 수 있어.

왜 하필 urgency 장치가 주적인가

'urgency 장치' 는 지금 당장 움직여야 할 것 같은 기분을 만드는 설계 요소를 통틀어 부르는 말이야. streak, 빨간 배지, 카운트다운 타이머, 'X명이 팔고 있어요', 두근대는 알림, 오늘의 무버 리더보드. 슬롯머신이랑 소셜 피드에서 그대로 빌려온 물건들이고, 실제로 잘 작동해. engagement 가 착실히 올라가거든. 근데 그게 바로 문제야. 포트폴리오 앱에서 engagement 가 오른다는 건 매매가 늘어난다는 뜻이고, 장기 보유자한테 잦은 매매는 거의 언제나 가치를 깎아 먹어. 게임 리텐션엔 명약인 장치가 투자 수익엔 독인 거지.

stronghold 한테 engagement 는 잘못 고른 지표야. 금융 도구를 체류 시간으로 최적화하면, 유저를 해치는 바로 그 행동, 그러니까 잦은 반사적 매매를 최적화하게 돼. 내 성공 지표와 유저의 성공이 반대 방향을 가리키면 지표 쪽을 버려야 해. Keep 는 정확함과 차분함으로 스스로를 재. 앱을 몇 번 열었는지로는 절대 안 재.

차분한 'changes' projection

Keep 에서도 뭐가 움직였는지 볼 수 있어. 아드레날린만 뺐을 뿐이야. changes 라는 projection 이 지금 상태를 직전 스냅샷과 비교해서 달라진 점을 보고해 줘. 여기서 동사를 잘 봐. 보고만 하지 절대 띄우지 않아. 넘으면 알림이 울리는 임계값도 없고, '유의미한 변동' 사이렌도 없어. 네가 보고 싶을 때 열어 보는 조용한 diff 야. '지난번이랑 달라진 건 이거야' 라는 사실만 있고, 그래서 뭘 하라는 압박은 없어.

제일 뿌리치기 어려운 제안: 'smart alert'. 언젠가 누군가는 꼭 말해. "중요한 일 생기면 아빠한테 알려만 주자. 그건 도움이잖아?" 근데 '중요하다' 는 판단 자체가 이 앱한테는 금지된 거고, 알림은 태생부터 요청 안 한 출력이야. 도움처럼 들리는 그 알림이 바로 이 윤리가 막으려는 것의 정체야. 올 때마다 거절해.
Keep 가 trading 앱으로 '크지' 않는 이유가 이거야. 알림 달자, 점수 달자, 원탭 매매 넣자는 압력은 어마어마해. 경쟁 앱은 다 하고 있고, engagement 지표는 확실히 올려 주고, 말할 때마다 그럴싸한 기능 요청처럼 들리거든. 그래서 영구 non-goal 로 이름 붙여 두는 거야. 이 윤리를 쓴 사람이 자리를 뜬 뒤에도 그 압력을 대신 버텨 주는 가드레일로.

Code

changes projection 은 보고만 해, 절대 안 띄워·python
def changes_since_last_snapshot(owner, as_of):
    now = current_snapshot(owner, as_of)
    prev = most_recent_prior_snapshot(owner, before=as_of)
    # 차분한 diff. 없는 게 포인트야: 임계값 없음, 알림 없음,
    # 'if delta > X: notify()' 없음. 차이를 말하고 거기서 멈춰.
    return {
        "prev_date": prev.date,
        "delta_value": now.value - prev.value,   # 사이렌이 아니라 사실
        "delta_by_position": diff_positions(now, prev),
    }

# 이 위에 alerting 레이어는 일부러 없어.
# '중요하다' 는 자동 표면이 내리면 안 되는 판단이니까.

External links

Exercise

아무 앱에서나 봤던 urgency 장치를 세 개 골라 봐. streak 든 빨간 배지든 카운트다운이든 '남들이 사고 있어요' 든 무버 목록이든. 하나씩 놓고 물어보자. 이 장치가 늘리려는 행동이 뭐지? 그 행동은 유저한테 좋은 걸까, 앱의 engagement 지표한테만 좋은 걸까? 그다음엔 차분한 대안을 설계해 봐. 행동 충동은 만들지 않으면서 같은 사실을 전달하는 버전으로.
Hint
urgency 장치를 가려내는 깔끔한 시험이 있어. 그걸 없앴을 때 유저가 잃는 게 정보야, 아니면 압박감뿐이야? 사실은 전부 그대로인데 아드레날린만 사라졌다면, 그 장치는 애초에 알려 주는 물건이 아니었던 거야. nudge 였던 거고, stronghold 는 그런 걸 잘라내.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.