"브라우저 람다로 쓴 점수 규칙은 저장도 서빙도 감사도 안 된다."
돌아가던 판본
합성 지표가 프론트엔드에 살았어. 게이지 행을 받아서, 지표마다 점수 매기고, 범주 안에서 평균 내고, 가중치 걸고, 숫자를 그려. 페이지 로드마다 페이지가 이미 갖고 있는 데이터로 다시 계산됐고.
맞았어. 빨랐고. 아무도 못 찾은 버그가 없었어. 기능에 보통 대는 모든 시험 기준으로 멀쩡했지. 그리고 그 사실을 좀 붙들고 있을 값어치가 있어. 이건 결함 이야기가 아니거든. 맞는 코드가 틀린 자리에 있었다는 이야기고, 그건 알아채기가 훨씬 어려운 종류야.
결과 둘
그 모듈 자기 독스트링이 이름을 대고, 둘 다 정확성이 아니라 도달 범위에 관한 거야.
다른 아무것도 그걸 못 읽었어. 커맨드라인도. 위임 지시서도. 어시스턴트 표면도. 제품 전체의 대표 수치가 렌더링 과정 안에서만 존재했어. 그러니까 대시보드 옆에 도킹돼서 같은 페이지를 보고 있는 어시스턴트가, 사람이 보고 있는 그 숫자를 못 봤다는 뜻이야.
흔적을 안 남겼어. 로드마다 새로 계산되고 아무 데도 저장 안 되고. 그래서 자세 요약이 부르는 질문은 하나야. 이 바늘이 어디 있었지? 거기에 답이 아예 없었어. 대략적인 답도 아니고 비싼 답도 아니고. 없음.
이게 마지막 레슨의 밑밥인 이유
이 퀘스트 틀이 이미 두 번 나왔어. 자기 한계를 못 밝히는 측정은 측정이 아니라 주장이다. 누구 달력인지 안 밝힌 날짜. 창이 얼마나 긴지 안 밝힌 백분위.
여기서 마지막 형태로 도착해. 한 층 위에서. 아무것도 들여다볼 수 없는 데서 계산된 숫자는 화면 보고 있는 사람 말고는 누구한테도 자기 한계를 못 밝혀. 이 제품이 지은 정직함 장치는 전부 브라우저 아닌 뭔가가 그걸 받을 수 있다는 걸 전제해. 행에 실린 창, 기준 플래그, 제일 오래된 입력, 가정을 실은 출처 문자열, 하나도 빠짐없이. 감사 가능성은 정직함이랑 별개 관심사가 아니야. 정직함의 배송 수단이야.
프론트엔드가 이미 행을 갖고 있었어. 점수 계산을 쓰기에 자연스러운 자리였고, 첫 시도에 돌아갔어. 쓰는 동안 뭐 하나 이상하게 느껴진 게 없었고, 그 diff 를 본 리뷰어라면 아무도 멀쩡한 파일 안 멀쩡한 함수를 문제 삼지 않았을 거야. 이걸 드러낸 건 코드 냄새가 아니었어. 아무도 답 못 하는 질문이었지. 이 바늘이 어디 있었지? 결함은 코드 안에서는 안 보였고, 누가 코드한테 코드가 못 듣는 걸 묻는 순간 뻔해졌어.