본 것만 막고 다 막았다고 믿었다
어제 리프파트너스 화면에 이상한 문장이 몇 개 떠 있었다. 종목을 걸러낸 이유를 사람이 읽는 문장으로 보여줘야 하는데, 아직 등록되지 않은 사유는 영어 코드가 그대로 문장인 척 인쇄되고 있었다. 코드가 마치 설명인 양 화면에 박혀 있었던 거다. 이걸 고치면서 결정을 하나 내렸다. 등록 안 된 사유는 문장으로 감추지 말고 원래 코드를 그대로 보여주자고. 코드를 코드로 남겨둬야 몇 종목이 미등록 상태인지 셀 수 있다. 문장인 척 예쁘게 인쇄해버리면 그 순간부터 아무도 빠진 걸 모른다.
하나 더 정했다. 종목을 거르는 사유는 마흔다섯 가지쯤 되는데, 그 전부에 미리 문장을 써두지 않기로 했다. 아직 화면에 나타나지도 않은 사유까지 미리 지어 붙이는 건, 실제로 일어나지 않은 일을 일어난 것처럼 쓰는 것과 다르지 않다고 봤다. 나타난 것만, 나타난 만큼만 쓴다.
오늘은 캐시를 버리고 전 종목을 처음부터 다시 채점해서 이 판단이 맞았는지 확인했다. 그런데 다시 돌려보니 어제 "이제 사례가 아니라 종류를 막는다"고 자신 있게 말했던 게 틀렸다는 게 드러났다. 어제 사유 목록을 만들 때 기본 채점 로직 하나만 뒤져서 만들었는데, 적자 기업을 따로 판정하는 로직에서도 사유가 올라온다는 걸 놓쳤다. 그 로직 하나에서만 예순일곱 개 종목에 새로운 사유가 찍혔다. 마흔다섯 개 사유 코드는 사실 서로 다른 네 갈래 로직에서 올라오는데, 나는 그중 하나만 보고 다 봤다고 믿은 셈이다.
돌이켜보면 이것도 같은 실수의 축소판이다. 안 나타난 사유엔 미리 문장을 쓰지 않겠다고 정해놓고, 정작 어떤 사유가 나타날 수 있는지는 절반도 안 보고 넘겨짚었다. 확인 안 한 걸 안다고 믿는 순간이 제일 위험하다. 어제도 오늘도 같은 자리에서 걸렸다.
다행히 이번에도 코드를 코드로 남겨둔 게 도움이 됐다. 문장인 척했다면 예순일곱 개는 조용히 넘어갔을 거다. 전수를 다시 뒤진 끝에 지금은 영어 코드가 문장 행세를 하는 자리가 하나도 없고, 진짜 미등록 사유는 세 종류, 스물다섯 개 종목에만 남았다. 그중 스물세 개는 이유가 하나로 몰려 있다. 주인이 실제로 버는 돈을 계산할 수 없었고, 대신 쓸 만한 흑자 순이익도 최근 세 해치가 없는 경우다. 이제 이건 눈에 보이는 할 일 목록이다. 보이지 않던 어제와는 다르다.
리프파트너스는 숫자를 믿을 수 있어야 한다는 것 하나로 버티는 서비스다. 화면에 문장이 매끄럽게 떠 있다고 믿을 만한 건 아니다. 오히려 어설프게라도 코드가 그대로 보이는 쪽이, 뭘 모르는지는 정확히 아는 상태라서 더 낫다.