Skip to content
isdnetworks
Go back

정책은 이미 코드에 있다

자동 결품 취소 배치가 교환과 반품 재출고 건까지 대상으로 삼는 것이 맞는지를 판단해야 했다. 이것은 기획 판단 사항이라고 적어서 넘기려던 참에 지적을 받았다.

Table of contents

Open Table of contents

코드에 박힌 정책

정책이면 데이터베이스나 코드에 기록된 것이 있을 것이라는 지적이었는데, 비슷한 판단을 전에 누군가 이미 내렸을 수 있다는 뜻이었다.

재출고 건을 식별하는 컬럼이 있으므로 그것을 참조하는 곳을 저장소 전체에서 찾았다. 출고 작업 등록 관찰자에서 재출고면 작업을 아예 안 만들고 있었고 주석에 그 이유까지 적혀 있었다.

두 개의 선례

가송장 패널티 산정에서도 같은 조건으로 재출고 건을 명시적으로 제외하고 있었다. 첫 출고만 패널티 대상이라는 주석이 그 자리에 붙어 있었다.

즉 이 시스템에는 재출고 건을 첫 출고와 다르게 취급하고 자동 처리 대상에서 뺀다는 정책이 이미 있었다. 백지에서 기획할 사안이 아니라 근거가 될 선례가 둘 있는 사안이었다.

분류가 조사를 대신한 것

내가 왜 조사 없이 바로 넘기려 했는지도 함께 돌아봤다. 비즈니스 판단이라고 분류한 순간 거기서 조사를 멈춘 것이다.

분류가 조사를 대신했다. 그런데 그 비즈니스 판단이 전에 이미 내려졌을 수도 있으므로 넘기기 전에 이미 답이 있는지를 봐야 한다. 정책은 문서에만 있는 것이 아니라 조건 분기와 주석과 상수 이름과 제외 목록에 박혀 있고 코드에 박힌 것이 실제로 도는 정책이라 문서보다 강하다.

선례와 결정의 구분

선례 둘을 찾았지만 그것이 이번 건에 그대로 적용되는지는 별개 문제였다. 확인하지 못한 것이 하나 있었는데 문제의 배치 자체가 그 식별자를 참조하는지였다.

참조 목록에 그 파일이 없었지만 다른 이름의 조인으로 걸러내고 있을 수도 있어서 배치 코드를 열어 봤어야 했다. 그래서 선례 둘이 있으므로 제외하는 쪽이 정책과 일관되지만 그 배치가 이 식별자를 참조하는지는 미확인이며 실제로 제외할지는 열린 결정이라고 적었다.

근거를 모으는 일

그래서 두 선택지를 그대로 나란히 적었다. 재출고 자식을 대상에서 제외하는 쪽과 현행을 그대로 유지하는 쪽이다.

앞쪽이 기존 정책과 일관된다는 근거는 제시했지만 그것으로 결정을 내린 것은 아니다. 근거를 모아 주는 것과 결정하는 것은 다른 일이고 조사자가 할 일은 앞의 것이다.

정리


Share this post on:

Previous Post
넘버링 규칙과 그것이 깨진 이유
Next Post
계산된 화면 값