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

P0 / P1 / P2 / Never: 인테이크 티어

~13 min · bounded-replacement, scope, roadmap, prioritization

Level 0릴 입문자
0 XP0/39 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"Unknown 은 출시 분류가 아니야."

거절할 줄 아는 로드맵

기능 요청은 죄다 똑같이 상냥한 얼굴로 와. "이거 있으면 좋지 않을까…" Bounded 도구는 그 상냥한 압력을 결정으로 바꿔주는 장치가 있어야 해. 없으면 그냥 파묻혀. Ashen Reel 의 장치는 티어 네 개고, 진짜 중요한 건 네 번째야.

  • P0 은 컷오버 필수. 이게 다 통과해야 아빠가 Movist 를 놓아줄 수 있어. 파일 열기, 정확한 Recall seek, 재생·정지·볼륨, 정직한 seek 모드, 자막·오디오 트랙 선택, resume, 전체화면, 스크린샷, A-B 루프. 증명하든가, 아니면 릴리스가 막히든가. 부분 점수는 없어.
  • P1 은 매일 쓰는 깊이 후보. 진짜 값어치 있지만, P0 가 돌아가고 실제 작업에서 아쉬움이 나올 때까지 기다려. 썸네일 스크럽, 자막 스타일, 로컬 북마크, 화면비 조절 같은 거.
  • P2 는 증거가 있어야 여는 특수 기능. 아빠가 진짜로 불편을 겪고, 지금 쓰는 것보다 확실히 나아질 때까지 손대지 마. 오디오 패스스루 매트릭스, EQ, 멀티트랙 합성, 통짜 단축키 프리셋 같은 거.
  • Never 는 일부러 거절. '나중' 이 아냐. 아예 안 해. SMB·FTP·WebDAV 브라우저, 웹 미디어 추출, 파일 삭제나 이름 변경, 트랜스코딩, 라이브러리 매니저, 자막 DB, Pippa 뇌.

Never 티어가 바로 핵심이야

보통 로드맵엔 P0 랑 P1 이 있고, P2 아이디어가 거절도 못 받고 썩는 '백로그' 라는 무덤이 있어. Ashen Reel 은 Never 티어를 대놓고 이름 붙여. '우린 네트워크 공유 브라우저 절대 안 만든다' 라고 적어두면 미래의 너한테 선물이 돼. 자꾸 튀어나오던 논쟁이 다시 시작되기 전에 끝나고, 코드 읽는 사람 누구든 벽이 어디 있는지 바로 알거든.

범위는 관찰된 불편이나 필수 실패에서만 넓어져. '경쟁사가 갖고 있어' 나 '쉬울 텐데' 로는 절대 안 넓어지고. 도구 만들 때 제일 위험한 말 두 개가 바로 이 규칙이 막는 그 둘이야.

같은 규칙을 코드로 옮기면 이래. 머릿속에 들어갈 만큼 작게.

행동을 'Unknown' 으로 놔두는 것 자체가 버그야. Movist 가 내놓는 모든 표면은 출시 전에 P0·P1·P2·Never 중 하나로 찍혀. 분류 안 한 기능은 다음에 요청 넣는 사람한테 몰래 떠넘긴 결정이야. 그럼 제일 중요한 게 아니라 제일 목소리 큰 요청이 이겨.

비대칭을 봐. 티어를 위로 올리려면 증거가 들지만, 기본 중력은 아래로 당겨. 애매하면 덜 거절이 아니라 더 거절 쪽이야. 그 편향 하나 덕에 Ashen Reel 이 넓게 퍼져 굼뜬 게 아니라 깊은 플레이어인 거야.

Code

인테이크 티어, 그리고 P2 를 승격시키는 유일한 것·swift
/// How a candidate behavior enters (or never enters) Ashen Reel's scope.
enum ParityTier {
    case p0     // required for Movist cutover: proven, or the release is blocked
    case p1     // daily-depth candidate: enters when an observed workflow asks
    case p2     // evidence-gated specialist: needs friction AND a positive delta
    case never  // deliberately refused: SMB browser, web extraction, source mutation
}

/// The gate. Note P2 needs BOTH signals, and `.never` ignores every argument.
func shouldSchedule(_ tier: ParityTier,
                    frictionObserved: Bool,
                    positiveDelta: Bool) -> Bool {
    switch tier {
    case .p0:    return true                     // already required
    case .p1:    return frictionObserved
    case .p2:    return frictionObserved && positiveDelta
    case .never: return false                    // no amount of "but it'd be cool"
    }
}

External links

Exercise

지금 하는 프로젝트에서 대기 중인 아이디어 다섯 개를 P0·P1·P2·Never 로 나눠봐. 규칙 하나. 아무것도 'Unknown' 으로 남기면 안 돼. 최소 하나는 Never 로 밀어넣고, 그게 왜 절대 안 만들어질지 한 문장으로 적어. 어떤 게 분류를 제일 버텼어? 보통 그게 네 범위가 슬금슬금 새는 지점이야.
Hint
P0 는 '이거 없으면 릴리스 못 냄' 이야. Never 는 '다른 도구나 다른 주인 몫' 이고. 전부 P1 에 떨어지면 아무것도 결정 안 한 거야. 그냥 우선순위 붙인 위시리스트 만든 거지.

Progress

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

댓글 0

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

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